# Documentation (/) Welcome to Agent Serve, the AI workspace where teams build, deploy, and manage AI agents. Create agents visually with the workflow builder, conversationally through Chat, or programmatically with the API — connected to your business tools and the major LLM providers. ## Quick Start [#quick-start] Learn what you can build with Agent Serve Build your first agent in 10 minutes Learn about the building blocks Explore the integration catalog ## Work alongside AI [#work-alongside-ai] AI teammates that take jobs and hand back finished work Docs and whiteboards your team writes together, with Chat beside you Add Chat commands, menu actions, and background work in one install Charts, KPIs, reports, and governed sharing Score call transcripts against your checklist Data sources, metrics, semantic model, rules, and monitors Query your data sources in SQL or plain English ## Build on Agent Serve [#build-on-agent-serve] Install and open the apps your team runs inside the workspace Build web apps that run inside the workspace Build, deploy, and manage from the terminal Reach tables, workflows, Relays, and Chat from an app Build a version on every push from GitHub or GitLab ## Core Concepts [#core-concepts] Understand how data flows between blocks Work with workflow and environment variables Inspect workflow runs and diagnose failures Start agents via API, webhooks, or schedules ## Advanced Features [#advanced-features] Set up workspace roles and permissions Connect external services with Model Context Protocol Integrate Agent Serve into your applications --- # Choosing what to use (/agents/choosing) When you build an agent, several features overlap: a deterministic block and an agent tool can run the same integration, and a custom tool, an MCP tool, and a workflow-as-tool can all give an agent the same action. This page lays out the differences so you pick the right one. They vary along three lines: whether the action is **deterministic** (always runs) or **model-decided** (an agent chooses), whether it lives in one workflow or is **reusable** across your workspace, and whether it comes from Agent Serve or an **external** provider. The running example is a workflow that scores inbound sales leads. It reads a new lead, enriches it, decides on a score, logs the result, and notifies the team. Each option below builds part of it: {/* VISUAL: decision tree. Always happens? → deterministic block. Else agent chooses? → agent tool. Reuse across workspace? → custom tool. External toolset? → MCP. Whole workflow? → workflow-as-tool. Reusable instructions? → skill. */} ## Deterministic block [#deterministic-block] A **block** is a single step that runs at a fixed point on the path, with no model deciding whether to. It always runs when the workflow reaches it. Use one when the action must happen every time: an API call, a data transform, a branch. In the lead scorer, a [Google Sheets](/integrations) block always appends the scored lead to a tracking sheet, and a [Function](/workflows/blocks/function) block always reshapes the enrichment response into the fields the next step expects. The block runs at that point in the graph; an execution error can still stop it. Most steps in a workflow are blocks. Reach for the kinds below only when you want a model to decide, or you want to reuse something. ## Agent tool [#agent-tool] An **agent tool** is an action you hand to an [Agent](/workflows/blocks/agent) block. The agent reads the task and decides whether and when to call it. The same catalog of [integrations](/integrations) that exist as standalone blocks can also be attached to an agent as tools. In the lead scorer, the Agent has a Search tool and a Send Email tool. For a lead with a thin profile it runs Search to gather context; for a strong lead it calls Send Email. A thin, obvious lead might trigger neither. The agent chooses per run. Each tool carries a `usageControl` setting. **Auto** lets the model decide (the default). **Force** makes the agent call the tool every run, for actions that should never be skipped, like always logging the decision. **None** removes the tool from that agent. A block and an agent tool can be the same underlying integration. The difference is who decides. A block runs because the path reached it. An agent tool runs because the agent chose it. ## Custom tool [#custom-tool] A **custom tool** is a tool you define once with an object schema and a JavaScript function body, then reuse across your workspace. It needs no external account. Use one when you have logic that several agents or workflows would otherwise duplicate. In the lead scorer, a `normalizeCompanyDomain` custom tool cleans a raw website into a canonical domain. The same tool serves the lead scorer, a deduplication workflow, and a reporting agent. Define it in the workspace, then pick it from any Agent block's tool list. ## MCP server [#mcp-server] **MCP** (Model Context Protocol) is a standard for connecting an external tool provider. Connect an [MCP server](/agents/mcp) and its tools appear in the agent's tool list as a set. Use it to bring in a complete toolset that Agent Serve does not provide natively, rather than wiring each action by hand. In the lead scorer, your CRM vendor ships an MCP server. After you connect it once, the agent can read accounts and update records through the vendor's own tools. The difference from a custom tool is who maintains it: a custom tool is code you wrote, while an MCP server is a toolbox someone else maintains. ## Workflow-as-tool [#workflow-as-tool] A **workflow-as-tool** is a whole workflow handed to an agent as one callable tool. You pick the workflow in the [Agent](/workflows/blocks/agent) block's tool list; the agent decides when to call it and supplies the inputs, which arrive at the child's [Start](/workflows/triggers/start) trigger, and the child's result comes back as the tool's output. Use it when a multi-step procedure should be at the agent's disposal, not on the path. In the lead scorer, the agent has a `Deep Enrich` workflow as a tool — its own five-step procedure. For a thin lead, the agent calls it to fill out the profile before scoring; for a complete lead, it never runs. The agent weighs a whole procedure the same way it weighs a single action. A workflow can also run as a fixed step: the [Workflow](/workflows/blocks/workflow) block calls a child workflow because the path reached it. Same child workflow, same Start trigger — the difference, as with blocks and agent tools, is who decides. The Enrich step in the diagram is that deterministic case. ## Skill [#skill] A **skill** is reusable instructions, a written playbook an agent can follow. Each skill has a short name and description that are always visible to the agent, plus a longer body the agent loads only when it decides the skill applies. Use one to capture how something should be done, separate from the tools that do it. In the lead scorer, a `lead-scoring-rubric` skill spells out the bands and disqualifiers. The agent sees the skill's name and description on every run, and when a lead is ambiguous it loads the full rubric and applies it. The distinction is simple: a tool is an action the agent takes, and a skill is guidance the agent reads. Manage skills in your [workspace](/agents/skills). | Feature | Who decides it runs | Where it lives | How you author it | | -------------------- | ------------------- | ------------------ | --------------------------------------- | | **Block** | The path | The workflow | Drag in and configure | | **Agent tool** | The agent | On the Agent block | Pick from the integrations | | **Custom tool** | The agent | The workspace | Write the code once | | **MCP server** | The agent | An external server | Connect it | | **Workflow-as-tool** | The agent | Its own workflow | Build it, then pick it in the tool list | | **Skill** | The agent | The workspace | Write the instructions | --- # Custom Tools (/agents/custom-tools) Custom tools let you write your own JavaScript functions and make them available as callable tools in Agent blocks. This is useful when you need functionality that isn't covered by Agent Serve's built-in integrations — for example, calling an internal API, performing a custom calculation, or transforming data in a specific way. ## How Custom Tools Work [#how-custom-tools-work] A custom tool has two parts: 1. **Schema** — A JSON definition describing the tool's name, description, and parameters (using the OpenAI function-calling format). This tells the AI agent what the tool does and what inputs it expects. 2. **Code** — A JavaScript function body that runs when the agent calls the tool. Parameters defined in the schema are available as variables in your code. When an Agent block has access to a custom tool, the AI model decides when to call it based on the schema description and the conversation context — just like built-in tools. ## Creating a Custom Tool [#creating-a-custom-tool] ### Open Custom Tools settings [#open-custom-tools-settings] Navigate to **Settings → Custom Tools** in your workspace and click **Add**. ### Define the schema [#define-the-schema] In the **Schema** tab, define your tool using JSON in the OpenAI function-calling format: ```json { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a city", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "The city name" }, "units": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature units" } }, "required": ["city"] } } } ``` You can use the AI wand button to generate a schema from a natural language description of what the tool should do. ### Write the code [#write-the-code] Switch to the **Code** tab and write the JavaScript function body. Parameters from your schema are available directly as variables: ```javascript const response = await fetch( `https://api.openweathermap.org/data/2.5/weather?q=${city}&units=${units === 'celsius' ? 'metric' : 'imperial'}&appid={{OPENWEATHER_API_KEY}}` ); const data = await response.json(); return { temperature: data.main.temp, description: data.weather[0].description, humidity: data.main.humidity }; ``` For a secret used as a complete JavaScript expression, prefer the unquoted form, such as `const apiKey = {{OPENWEATHER_API_KEY}};`. Quoted and embedded forms remain supported, including the placeholder embedded in the URL above, `"Bearer {{KEY}}"`, template literals, and JavaScript regex literals. The value is bound separately when the tool executes rather than pasted into its source, so its exact string contents are preserved. You can also use the AI wand to generate code from a description. Environment variables are referenced with `{{KEY}}` syntax. ### Save [#save] Click **Save** to create the tool. It's now available to use in any Agent block across your workspace. ## Using Custom Tools in Workflows [#using-custom-tools-in-workflows] Once created, custom tools appear alongside built-in tools when configuring an Agent block: 1. Open an Agent block 2. Click **Add Tools** 3. Find your custom tool in the tool list 4. The agent will call the tool when it determines it's relevant to the task ## Code Environment [#code-environment] ### Available Features [#available-features] * **Async/await** — Your code runs in an async context, so you can use `await` directly * **fetch()** — Make HTTP requests to external APIs * **Node.js built-ins** — Access to `crypto`, `Buffer`, and other standard modules * **Environment variables** — Use `{{KEY}}` syntax to bind secrets at execution time without placing plaintext in source code ### Limitations [#limitations] * **No npm packages** — External libraries like `axios` or `lodash` are not available. Use built-in APIs instead * **Parameters by name** — Schema parameters are available directly as variables (e.g., `city`), not via a `params` object ### Returning Results [#returning-results] Return a value from your code to send it back to the agent: ```javascript const result = await fetch(`https://api.example.com/data?q=${query}`); const data = await result.json(); return data; ``` The returned value becomes the tool output that the agent sees and can use in its response. ## Managing Custom Tools [#managing-custom-tools] From **Settings → Custom Tools** you can: * **Search** tools by name, function name, or description * **Edit** any tool's schema or code * **Delete** tools that are no longer needed Deleting a custom tool removes it from all Agent blocks that reference it. Make sure no active workflows depend on the tool before deleting. ## Permissions [#permissions] | Action | Required Permission | | -------------------- | --------------------------------- | | View custom tools | **Read**, **Write**, or **Admin** | | Create or edit tools | **Write** or **Admin** | | Delete tools | **Admin** | --- # Agents (/agents) An **agent** is a [workflow](/workflows) that reasons and acts on its own. It reads an input, decides what to do, and carries it out, calling tools and using your data along the way. You build a custom agent in Agent Serve by composing a workflow whose thinking runs through one or more [Agent blocks](/workflows/blocks/agent). An **Agent block** is the reasoning step inside that workflow: a model reads the values available to it, decides, and returns a result that later blocks read by reference. A simple agent is a single Agent block; a larger one wires several together with other blocks. The Agent block is where the model thinks; the rest of the workflow is what it acts on and through. The example throughout is an agent that scores inbound sales leads. ## The Agent block [#the-agent-block] You set up the reasoning step by giving the Agent block a **model** and a **prompt**. The model is the LLM that powers it; you pick one from the available providers, and the default is `claude-sonnet-4-6`. The prompt is a system message that defines who the agent is and how it should behave, plus a user message that carries the input, usually a reference like ``. When it runs, the Agent block reasons, calls any tools it needs, and stores its result under its own name. By default that result is free text in `content`, read by a later block as ``, alongside run details like the model used, token counts, tool calls, and cost. Every setting and output field is in the [Agent block reference](/workflows/blocks/agent). ## What you give an agent [#what-you-give-an-agent] On its own, an Agent block can only reason and write text. You extend it so it can act, follow your rules, use your data, remember, and return results other blocks can rely on. Each feature maps to something you'd want an agent to do. ### Take an action: tools [#take-an-action-tools] To let an agent do something in the world, give it **tools**. A tool is an action the agent can call, like sending an email, searching the web, updating a CRM record, or running another workflow. You attach tools to the Agent block, and the agent decides which to call for the task in front of it. In the lead scorer, the agent has a search tool to gather context on a thin profile and an email tool to reach out to a strong lead. Tools come from a few places: * **[Integrations](/integrations)** are the catalog of external services: Gmail, Slack, Airtable, Linear, and hundreds more. * **[Custom tools](/agents/custom-tools)** are tools you define once with a schema and a snippet of code, then reuse. * **[MCP tools](/agents/mcp)** come from an external provider you connect through the Model Context Protocol. * **[Workflow-as-tool](/workflows)** makes another workflow callable, so the agent runs a whole procedure as one step. The same integration can run two ways. As a [block](/workflows#blocks) it runs because the path reached it. As an agent tool it runs because the agent chose it. Per-tool usage controls (force a tool, or disable one) are in the [Agent block reference](/workflows/blocks/agent). ### Follow a procedure: skills [#follow-a-procedure-skills] To give an agent instructions it can follow, write a [skill](/agents/skills). A skill is a reusable playbook with a short name and description the agent always sees, plus a longer body it loads only when the skill applies. In the lead scorer, a `lead-scoring-rubric` skill spells out the bands and disqualifiers, and the agent reads the full rubric only when a lead is ambiguous. A tool is an action the agent takes; a skill is guidance it reads. ### Use your documents: knowledge [#use-your-documents-knowledge] To let an agent answer from your own content, connect a [knowledge base](/knowledgebase). The agent searches it and grounds its answers in what it finds, instead of relying only on the model's general training. Give the lead scorer a knowledge base of past deals and it can compare a new lead against ones you've closed before. ### Remember across runs: memory [#remember-across-runs-memory] To let an agent reuse information from one run to the next, give it [memory](/workflows/blocks/agent#memory), which stores and recalls values keyed to a conversation. Without it, each run starts fresh; with it, an agent in a chat carries what was said earlier into later messages. ### Return a usable result: structured output [#return-a-usable-result-structured-output] To make an agent's result something later blocks can act on, give it a **structured output**: a typed object you define instead of free text. In the lead scorer, the agent returns `{ score, tier, reason }`, and a later [Condition](/workflows/blocks/condition) block reads `` to branch. See [how blocks pass data](/workflows/data-flow) for reading fields. ## Choosing what to use [#choosing-what-to-use] Start with one Agent block and a prompt, then add only what the task needs: a tool when the agent should act, a skill when it needs written guidance, a knowledge base when it should answer from your documents, memory when it should remember, and a structured output when a later block has to read its result. --- # Using MCP tools (/agents/mcp) The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) is an open standard for connecting AI to external tools and data. Add an MCP server to your workspace and its tools become available to your agents — a way to integrate services Agent Serve doesn't have a built-in integration for. ## Adding an MCP Server as a Tool [#adding-an-mcp-server-as-a-tool] MCP servers provide collections of tools that your agents can use. To add one: 1. Navigate to **Settings → Tool connections**
The Tool connections settings page with one connected MCP server, DeepWiki, and its three tools
2. Click **Add server** to open the configuration modal 3. Enter a **Server Name** and **Server URL** 4. Add any required **Headers** (e.g. API keys) 5. Click **Add server** to save
The Add MCP server modal with a server name, server URL, header fields, and Advanced settings
You can also configure MCP servers directly from the toolbar in an Agent block for quick setup. ### Server Configuration Options [#server-configuration-options] | Field | Description | | ------------- | ---------------------------------------------------- | | **Name** | Display name for the server | | **URL** | The MCP server endpoint | | **Transport** | Currently supports `streamable-http` | | **Headers** | Key-value pairs for authentication or custom headers | | **Timeout** | Connection timeout in milliseconds (default: 30,000) | ### Environment Variables in Configuration [#environment-variables-in-configuration] Server URLs and headers support environment variable substitution using `{{VAR_NAME}}` syntax. This keeps sensitive values like API keys out of the server configuration. ``` URL: https://api.example.com/mcp Authorization: Bearer {{MCP_API_TOKEN}} ``` When you type `{{` in the URL or header fields, a dropdown appears showing available workspace environment variables. When a saved secret is successfully substituted this way, exact occurrences of its value are masked in stored MCP tool-call traces. The real URL or header value still reaches the MCP server unchanged. See [Execution log protection](/platform/credentials#execution-log-protection) for the exact scope and limitations. ### Testing and Validation [#testing-and-validation] Click **Test Connection** before saving to verify the server is reachable and discover available tools. The test response shows the number of tools found and the protocol version. After saving, each server displays its available tools with parameter names, types, and required flags. If a server's tools change (e.g., after a server update), click **Refresh** to fetch the latest schemas. This automatically updates any agent blocks using those tools. Tool validation badges appear on servers with issues — for example, if a tool was removed from the server but is still referenced in a workflow. Click the badge to see which workflows are affected. ### Domain Allowlisting [#domain-allowlisting] Self-hosted deployments can restrict which MCP server domains are allowed by setting the `ALLOWED_MCP_DOMAINS` environment variable (comma-separated list). When set, only servers on approved domains can be added. When unset, all domains are allowed. This governs which domains may be used. It is separate from where those domains are allowed to resolve: an MCP server on a private address is reached by naming it in `EGRESS_ALLOWED_HOSTS` or `EGRESS_ALLOWED_IP_RANGES`, described in [Security](/platform/self-hosting/security#the-ssrf-boundary). Both checks apply. The allowlist covers the server URL itself. If the server requires OAuth, any endpoint its metadata names on a *different* origin than the server you configured is treated as content rather than as configuration, so that one has to be publicly routable. Endpoints on the server's own origin keep the server's reachability. ## Using MCP Tools in Agents [#using-mcp-tools-in-agents] Once MCP servers are configured, their tools become available within your agent blocks:
The Agent block's Add tool menu listing Create Tool, Add MCP Server, the DeepWiki MCP server, and built-in tools
1. Open an **Agent** block 2. In the **Tools** section, click **Add tool…** 3. Under **MCP Servers**, click a server to see its tools
The DeepWiki server's tools in the Add tool menu, with Configure operations access and three individual tools
4. Select individual tools, or choose **Configure operations access** for a dynamic server attachment 5. The agent can now access these tools during execution If you haven't configured a server yet, click **Add MCP Server** at the top of the dropdown to open the setup modal without leaving the block. ## Standalone MCP Block [#standalone-mcp-block] Use the MCP block to discover operations or run one operation with explicit inputs:
A standalone MCP block running the ask_wiki_question operation on the DeepWiki server, with its arguments mapped from the Start block
Choose an **Action**: * **List operations** discovers authorized operation names, descriptions, and input schemas without executing provider operations. Filter by name or description, set a page size from 1 to 100, and pass `nextCursor` into the next request while `hasMore` is true. An authorized list can be empty. * **Run operation** executes one exact operation name. Configured operations keep their generated argument fields. For an operation name resolved at runtime, supply a JSON arguments object; Agent Serve validates it against the operation's discovered schema before execution. **MCP Server** takes one shared-server ID or managed-connection ID. Agent Serve resolves a managed connection's parent server internally and verifies workspace and credential access. Both actions accept the same ID; List operations returns that ID as `serverId`, alongside the discovered `operations` and pagination metadata. The standalone block's Basic fields select a configured connection and discovered operation. Advanced fields accept literal IDs/names or upstream references. A runtime server reference requires JSON arguments. Listing hides the operation and argument fields. ### Operations access [#operations-access] The **MCP Server (Advanced)** Agent attachment takes a server/connection ID or upstream reference in a plain input. Its **Tool IDs** field accepts exact MCP tool names, such as `search_docs`, entered directly. These are the names returned by List operations, without an Agent Serve server prefix. Neither field uses a server or operation catalog picker. Agent attachments have three access modes: | Mode | Behavior | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Only selected** | Allows only selected exact operation names. An empty selection allows nothing. Newly discovered names stay excluded. | | **All except selected** | Denies selected exact names. An empty selection allows everything otherwise permitted. Denied names stay saved if they temporarily disappear. | | **All permitted** | Allows every operation available to the authorized credential. | New restricted configurations start with an empty explicit selection. Existing saved workflows retain their prior access through normalization, while current organization and credential authorization still apply. Operation restrictions are saved in workflow state on the Agent attachment. Tool IDs are literal configuration, not upstream references or model arguments. An operation must be available to the resolved, authorized connection and permitted by the saved restriction. The standalone block runs its explicitly specified operation and has no separate access policy. Discovery filters the tools exposed to the Agent. Execution checks the actual server, connection, and saved restriction again before calling the provider. Missing or forbidden operations, unverifiable schemas, malformed arguments, and incorrect connection scopes fail the call. An Agent attachment with no permitted operations fails clearly. Policies match exact, case-sensitive MCP tool names on whichever authorized connection resolves at runtime. They do not inspect operation arguments: allowing a generic `execute_sql` operation does not limit which SQL it can execute. ## When to Use MCP Tool vs Agent [#when-to-use-mcp-tool-vs-agent] | Feature | **Agent with MCP tools** | **MCP Tool block** | | -------------- | -------------------------------- | -------------------------------------- | | **Execution** | AI decides which tools to call | Deterministic — runs the tool you pick | | **Parameters** | AI chooses at runtime | You set them explicitly | | **Best for** | Dynamic, conversational flows | Structured, repeatable steps | | **Reasoning** | Handles complex multi-step logic | One tool, one call | ## Permission Requirements [#permission-requirements] MCP functionality requires specific workspace permissions: | Action | Required Permission | | ---------------------------- | --------------------------------- | | Create or update MCP servers | **Write** or **Admin** | | Delete MCP servers | **Admin** | | Use MCP tools in agents | **Write** or **Admin** | | View available MCP tools | **Read**, **Write**, or **Admin** | | Execute MCP Tool blocks | **Read**, **Write**, or **Admin** | MCP servers run with the permissions of the user who configured them — only connect servers you trust, and review a server's tools before handing them to agents. --- # Playbooks (agent skills) (/agents/skills) Playbooks are reusable packages of instructions that give your AI agents specialized capabilities. The app calls them **Playbooks**; inside the workflow builder and the open format they are called **skills**, and this page uses both words for the same thing. Based on the open [Agent Skills](https://agentskills.io) format, skills let you capture domain expertise, workflows, and best practices that agents can load on demand. ## How Skills Work [#how-skills-work] Skills use **progressive disclosure** to keep agent context lean: 1. **Discovery** — Only skill names and descriptions are included in the agent's system prompt (\~50-100 tokens each) 2. **Activation** — When the agent decides a skill is relevant, it calls the `load_skill` tool to load the full instructions into context 3. **Execution** — The agent follows the loaded instructions to complete the task ## Creating Skills [#creating-skills] Playbooks live next to Integrations: click **Chat** in the left rail, choose **Integrations** in the Chat pane, then switch to the **Playbooks** tab (you can also open **Playbooks** from the [command palette](/workspace/command-palette)). It lists every playbook in the workspace, searchable by name and filterable by **All playbooks**, **Created by me**, **Custom**, and **Built-in**. Click a playbook to open its detail page, where you edit, share, and delete it. Click **Create playbook** to open the **New playbook** page. It takes three fields: | Field | Description | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Name** | A kebab-case identifier (e.g. `sql-expert`, `code-reviewer`). Max 64 characters. | | **Description** | A short explanation of what the skill does and when to use it. This is what the agent reads to decide whether to activate the skill. Max 1024 characters. | | **Content** | The full skill instructions in markdown. This is loaded when the agent activates the skill. | The description is critical — it's the only thing the agent sees before deciding to load a skill. Be specific about when and why the skill should be used. ### Importing skills [#importing-skills] Bring in an existing skill in the open [SKILL.md](https://agentskills.io/specification) format two ways: * **Import** — the **Import** action on the create page takes a `.md` file with YAML frontmatter, or a `.zip` containing a `SKILL.md`. * **Paste content** — paste the `SKILL.md` straight into **Content**. The frontmatter carries the `name` and `description`; the markdown body is the content. Integration pages suggest **curated skills** for their service — open one (HubSpot, for example) and add a suggested skill with one click. ### Writing Good Skill Content [#writing-good-skill-content] Skill content follows the same conventions as [SKILL.md files](https://agentskills.io/specification): ```markdown # SQL Expert ## When to use this skill Use when the user asks you to write, optimize, or debug SQL queries. ## Instructions 1. Always ask which database engine (PostgreSQL, MySQL, SQLite) 2. Use CTEs over subqueries for readability 3. Add index recommendations when relevant 4. Explain query plans for optimization requests ## Common Patterns ... ``` **Recommended structure:** * **When to use** — Specific triggers and scenarios * **Instructions** — Step-by-step guidance with numbered lists * **Examples** — Input/output samples showing expected behavior * **Common Patterns** — Reusable approaches for frequent tasks * **Edge Cases** — Gotchas and special considerations Keep skills focused and under 500 lines. If a skill grows too large, split it into multiple specialized skills. ## Skill Editors [#skill-editors] Everyone in the workspace sees and uses every skill — including members who join later. Nobody needs to be added to a skill to use it. Each skill has an explicit **editors** list. Editors can edit the skill, delete it, and manage the editors list. Workspace admins can always do this too — they are editors of every skill automatically and cannot be removed from the list. Whoever creates a skill becomes an editor. Open a playbook from the Playbooks tab to manage it. The detail page has the editable fields, a **Share** action for adding editors from your workspace members, and the **Skill Editors** list at the bottom. The editors list controls who can edit a skill — it never affects who can see, use, or run it. A workflow that references a skill always executes it, no matter who runs the workflow. Treat skill content as shared team instructions, not as a secret. ## Using Skills in Chat [#using-skills-in-chat] Skills work in Chat too. Type `/` in the message box to open the skills menu, then pick a skill — or keep typing to filter by name. The skill appears in your message as a tag, e.g. `/format-markdown`. Tagging a skill loads its full instructions into the conversation, so Agent Serve follows them for that request — no waiting for Agent Serve to decide the skill is relevant on its own. ## Adding Skills to an Agent [#adding-skills-to-an-agent] Open any **Agent** block and find the **Skills** dropdown below the tools section. Select the skills you want the agent to have access to. Add Skill Selected skills appear as cards that you can click to edit or remove. ### What Happens at Runtime [#what-happens-at-runtime] When the workflow runs: 1. The agent's system prompt includes an `` section listing each skill's name and description 2. A `load_skill` tool is automatically added to the agent's available tools 3. When the agent determines a skill is relevant to the current task, it calls `load_skill` with the skill name 4. The full skill content is returned as a tool response, giving the agent detailed instructions This works across all supported LLM providers — the `load_skill` tool uses standard tool-calling, so no provider-specific configuration is needed. ## When to use a skill [#when-to-use-a-skill] Use a skill for reusable procedures or knowledge shared across agents, such as a company style guide or a debugging checklist. Keep task-specific instructions in the Agent block. ## Best Practices [#best-practices] **Writing Effective Descriptions** * **Be specific and keyword-rich** — Instead of "Helps with SQL", write "Write optimized SQL queries for PostgreSQL, MySQL, and SQLite, including index recommendations and query plan analysis" * **Include activation triggers** — Mention specific words or phrases that should prompt the skill (e.g., "Use when the user mentions PDFs, forms, or document extraction") * **Keep it under 200 words** — Agents scan descriptions quickly; make every word count **Skill Scope and Organization** * **One skill per domain** — A focused `sql-expert` skill works better than a broad `database-everything` skill * **Limit to 5-10 skills per agent** — More skills = more decision overhead; start small and add as needed * **Split large skills** — If a skill exceeds 500 lines, break it into focused sub-skills **Content Structure** * **Use markdown formatting** — Headers, lists, and code blocks help agents parse and follow instructions * **Provide examples** — Show input/output pairs so agents understand expected behavior * **Be explicit about edge cases** — Don't assume agents will infer special handling **Testing and Iteration** * **Test activation** — Run your workflow and verify the agent loads the skill when expected * **Check for false positives** — Make sure skills aren't activating when they shouldn't * **Refine descriptions** — If a skill isn't loading when needed, add more keywords to the description ## Learn More [#learn-more] * [Agent Skills specification](https://agentskills.io) — The open format for portable agent skills * [Example skills](https://github.com/anthropics/skills) — Browse community skill examples * [Best practices](https://agentskills.io/what-are-skills) — Writing effective skills --- # Authentication (/api-reference/authentication) The Agent Serve API accepts API keys and, when enabled by your deployment, OAuth access tokens. API keys support automation and the SDKs. OAuth lets the CLI and registered applications act on your behalf with permissions you approve. Agent Serve supports two types of API keys — **personal keys** and **workspace keys** — each with different billing and access behaviors. ## Key Types [#key-types] | Feature | **Personal Keys** | **Workspace Keys** | | --------------- | ------------------------------------------ | --------------------------- | | **Billing** | Workspace payer for workspace-hosted usage | Workspace payer | | **Scope** | Across workspaces you have access to | Shared across the workspace | | **Managed by** | Each user individually | Workspace admins | | **Permissions** | Must be enabled at workspace level | Require admin permissions | Personal keys identify the user making a request; they do not select who pays. Hosted usage is billed to the workspace's organization or personal billing account and, for organizations, is attributed to the actor's member cap. Workspace admins can disable personal API key usage for their workspace. If disabled, only workspace keys can be used. ## Generating API Keys [#generating-api-keys] To generate a personal key, open **Account settings** → **Agent Serve API keys**. Workspace administrators can create shared keys from **Workspace settings** → **Agent Serve API keys**. API keys are only shown once when generated. Store your key securely — you will not be able to view it again. ## Using API Keys [#using-api-keys] Pass your API key in the `X-API-Key` header with every request: ```bash curl -X POST https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/execute \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"input": {}}' ``` ```typescript const response = await fetch( 'https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/execute', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.AGENT_SERVE_API_KEY!, }, body: JSON.stringify({ input: {} }), } ) ``` ```python import requests response = requests.post( "https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/execute", headers={ "Content-Type": "application/json", "X-API-Key": os.environ["AGENT_SERVE_API_KEY"], }, json={"input": {}}, ) ``` ## Where Keys Are Used [#where-keys-are-used] API keys authenticate access to: * **Workflow execution** — run deployed workflows via the API * **Logs API** — query workflow execution logs and metrics * **MCP servers** — authenticate connections to deployed MCP servers * **SDKs** — the [Python](/api-reference/python) and [TypeScript](/api-reference/typescript) SDKs use API keys for all operations ## OAuth access tokens [#oauth-access-tokens] Use `agentserve login` to authorize the CLI in your browser, or `agentserve login --read-only` to request read access. The CLI stores the login locally and refreshes access tokens automatically. See [CLI authentication](/cli/authentication) for profiles, sign-in, and sign-out. Registered OAuth applications send access tokens in the `Authorization` header: ```bash curl https://agentserve.valnoraelric.com/api/v2/workspaces \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` | Scope | Access | | ---------------- | ---------------------------------------------------------------------------------------------------- | | `api:read` | Read operations, including searches sent as POST requests | | `api:write` | Includes `api:read`, plus mutations and execution, including operations that can start external work | | `offline_access` | Refresh tokens for continued access after the access token expires | Scopes limit what an application may do; your current workspace membership and role still apply. Each endpoint documents its required scope. Some GET endpoints that perform external discovery require `api:write`, so HTTP method alone does not determine the permission. Manage grants in **Settings** → **General** → **Authorized apps**. Revoking an application signs out all of its logins. `agentserve logout` revokes the current CLI login and removes it from your machine. The Python and TypeScript SDKs currently use API keys; they do not manage OAuth sign-in or refresh tokens. ## Security [#security] * Keys use the `sk-as-` prefix and are encrypted at rest * Keys can be revoked at any time from the dashboard * Use environment variables to store keys — never hardcode them in source code * For browser-based applications, use a backend proxy to avoid exposing keys to the client Never expose your API key in client-side code. Use a server-side proxy to make authenticated requests on behalf of your frontend. --- # Getting Started (/api-reference/getting-started) ## Base URL [#base-url] All API requests are made to: ``` https://agentserve.valnoraelric.com ``` ## OpenAPI specification [#openapi-specification] Download the [complete OpenAPI 3.1 specification](/openapi.json) as JSON for client generation, request validation, and API tooling. ## Quick Start [#quick-start] ### Get your API key [#get-your-api-key] Open **Account settings** → **Agent Serve API keys** to create a personal key, or **Workspace settings** → **Agent Serve API keys** for a workspace key. These examples and the SDKs use API keys; the CLI also supports browser sign-in with `agentserve login`. See [Authentication](/api-reference/authentication) for key types and OAuth permissions. ### Find your workflow ID [#find-your-workflow-id] Open a workflow in the Agent Serve editor. The workflow ID is in the URL: ``` https://agentserve.valnoraelric.com/workspace/{workspaceId}/w/{workflowId} ``` You can also use the [List Workflows](/api-reference/workflows/listWorkflows) endpoint to get all workflow IDs in a workspace. ### Deploy your workflow [#deploy-your-workflow] A workflow must be deployed before it can be executed via the API. Click the **Deploy** button in the editor toolbar, or use the dashboard to manage deployments. ### Make your first request [#make-your-first-request] ```bash curl -X POST https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/execute \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"input": {}}' ``` ```typescript const response = await fetch( `https://agentserve.valnoraelric.com/api/v2/workflows/${workflowId}/execute`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.AGENT_SERVE_API_KEY!, }, body: JSON.stringify({ input: {} }), } ) const data = await response.json() console.log(data.data.output) ``` ```python import requests import os response = requests.post( f"https://agentserve.valnoraelric.com/api/v2/workflows/{workflow_id}/execute", headers={ "Content-Type": "application/json", "X-API-Key": os.environ["AGENT_SERVE_API_KEY"], }, json={"input": {}}, ) data = response.json() print(data["data"]["output"]) ``` ## Sync vs Async Execution [#sync-vs-async-execution] By default, workflow executions are **synchronous** — the API blocks until the workflow completes and returns the result directly. For long-running workflows, use **asynchronous execution** by passing `async: true`: ```bash curl -X POST https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/execute \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"input": {}, "async": true}' ``` Keyed callers can optionally provide `X-Run-Id: my-run-123` to choose the run ID. Run IDs cannot be reused; a duplicate returns `409`. This returns immediately with a `runId` and `statusUrl`: ```json { "data": { "runId": "c7a92e15-3f4b-4d8c-a1e6-9b0d5f2c8e74", "statusUrl": "https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/runs/c7a92e15-3f4b-4d8c-a1e6-9b0d5f2c8e74" } } ``` Poll the run status endpoint until the status is terminal: ```bash curl https://agentserve.valnoraelric.com/api/v2/workflows/{workflowId}/runs/{runId}?includeOutput=true \ -H "X-API-Key: YOUR_API_KEY" ``` Execution status transitions follow: `queued` → `running` → `completed`, `failed`, `cancelled`, or `paused`. The `data.output` field is populated for completed executions when `includeOutput=true`. ## Response Format [#response-format] Successful v2 responses wrap the run resource in `data`: ```json { "data": { "runId": "c7a92e15-3f4b-4d8c-a1e6-9b0d5f2c8e74", "workflowId": "{workflowId}", "status": "completed", "output": { "result": "Hello, world!" }, "error": null, "durationMs": 842 } } ``` ## Error Handling [#error-handling] The API uses standard HTTP status codes. v2 errors include a stable code and human-readable message: ```json { "error": { "code": "NOT_FOUND", "message": "Workflow not found" } } ``` | Status | Meaning | What to do | | ------ | -------------------------- | --------------------------------------------------- | | `400` | Invalid request parameters | Check the `details` array for specific field errors | | `401` | Missing or invalid API key | Verify your `X-API-Key` header | | `403` | Access denied | Check you have permission for this resource | | `404` | Resource not found | Verify the ID exists and belongs to your workspace | | `429` | Rate limit exceeded | Wait for the duration in the `Retry-After` header | ### Unrecognized fields are rejected [#unrecognized-fields-are-rejected] Every v2 endpoint validates the request against its published schema — path parameters, query string, and body — and answers `400` for any field it does not declare. A misspelled parameter is an error rather than a silent no-op, so `?limt=20` fails instead of quietly returning an unbounded list. This holds for endpoints that declare no query parameters at all. Do not append tracking tags, cache busters, or other extra parameters to a v2 URL; send only what the endpoint documents. ```json { "error": { "code": "BAD_REQUEST", "message": "Invalid request", "details": [ { "code": "unrecognized_keys", "keys": ["limt"], "path": [], "message": "Unrecognized key: \"limt\"" } ] } } ``` Use [Get Billing Status](/api-reference/billing/getBillingStatus) to inspect current credit and storage usage. ## Rate Limits [#rate-limits] Rate limits depend on your subscription plan and apply separately to synchronous and asynchronous executions. When rate limited, the API returns a `429` response with a `Retry-After` header indicating how many seconds to wait before retrying. ## Pagination [#pagination] List endpoints (workflows, logs, audit logs) use **cursor-based pagination**: ```bash # First page curl "https://agentserve.valnoraelric.com/api/v2/logs?limit=20" \ -H "X-API-Key: YOUR_API_KEY" # Next page — use the nextCursor from the previous response curl "https://agentserve.valnoraelric.com/api/v2/logs?limit=20&cursor=abc123" \ -H "X-API-Key: YOUR_API_KEY" ``` The response includes a `nextCursor` field. When `nextCursor` is absent or `null`, you have reached the last page. --- # Python (/api-reference/python) Use the Python SDK to execute workflows from Python applications. The Python SDK supports Python 3.8+ with async execution support, retry helpers with exponential backoff, and usage tracking. ## Installation [#installation] Install the SDK using pip: ```bash pip install agentserve-sdk ``` ## Quick Start [#quick-start] Here's a simple example to get you started: ```python from agentserve import AgentServeClient # Initialize the client client = AgentServeClient( api_key="your-api-key-here", base_url="https://agentserve.valnoraelric.com" # optional, defaults to https://agentserve.valnoraelric.com ) # Execute a workflow try: result = client.execute_workflow("workflow-id") print("Workflow executed successfully:", result) except Exception as error: print("Workflow execution failed:", error) ``` ## API Reference [#api-reference] ### AgentServeClient [#agentserveclient] #### Constructor [#constructor] ```python AgentServeClient(api_key: str, base_url: str = "https://agentserve.valnoraelric.com") ``` **Parameters:** * `api_key` (str): Your Agent Serve API key * `base_url` (str, optional): Base URL for the Agent Serve API #### Methods [#methods] ##### execute\_workflow() [#execute_workflow] Execute a workflow with optional input data. ```python result = client.execute_workflow( "workflow-id", input={"message": "Hello, world!"}, timeout=30.0 # 30 seconds ) ``` **Parameters:** * `workflow_id` (str): The ID of the workflow to execute * `input` (dict, optional): Input data to pass to the workflow * `timeout` (float, optional): Timeout in seconds (default: 30.0) * `stream` (bool, optional): Enable streaming responses (default: False) * `selected_outputs` (list\[str], optional): Block outputs to stream in `blockName.attribute` format (e.g., `["agent1.content"]`) * `async_execution` (bool, optional): Execute asynchronously (default: False) * `execution_timeout_seconds` (int, optional): Optional server-side async execution cap from 1 to 604800 seconds. Requires `async_execution=True` and cannot extend the account policy. **Returns:** `WorkflowExecutionResult | AsyncExecutionResult` When `async_execution=True`, returns immediately with a `run_id` and `status_url` for polling. Otherwise, waits for completion. ##### get\_workflow\_status() [#get_workflow_status] Get the status of a workflow (deployment status, etc.). ```python status = client.get_workflow_status("workflow-id") print("Is deployed:", status.is_deployed) ``` **Parameters:** * `workflow_id` (str): The ID of the workflow **Returns:** `WorkflowStatus` ##### validate\_workflow() [#validate_workflow] Validate that a workflow is ready for execution. ```python is_ready = client.validate_workflow("workflow-id") if is_ready: # Workflow is deployed and ready pass ``` **Parameters:** * `workflow_id` (str): The ID of the workflow **Returns:** `bool` ##### get\_workflow\_run() [#get_workflow_run] Get the status and optional outputs of a workflow execution. ```python status = client.get_workflow_run("workflow-id", "run-id", include_output=True) print("Status:", status["status"]) # 'queued', 'running', 'completed', 'failed' if status["status"] == "completed": print("Output:", status["output"]) ``` **Parameters:** * `workflow_id` (str): The workflow ID * `run_id` (str): The run ID returned from async execution * `include_output` (bool, optional): Include the final output for completed executions * `selected_outputs` (list\[str], optional): Block output selectors to include **Returns:** `Dict[str, Any]` **Response fields:** * `runId` (str): The run ID * `workflowId` (str): The workflow ID * `status` (str): One of `'queued'`, `'pending'`, `'running'`, `'paused'`, `'completed'`, `'failed'`, `'cancelled'` * `startedAt` / `endedAt` (str): Execution timestamps * `durationMs` (int, optional): Duration in milliseconds * `output` (any, optional): The workflow output when requested for a completed execution * `blockOutputs` (dict, optional): Requested block outputs * `error` (dict, optional): Structured failure details with `code`, `message`, and optional `details` ##### get\_job\_status() [#get_job_status] Get the status of a job created through the legacy async execution endpoint. New integrations should use `get_workflow_run()` with the run ID instead. ```python status = client.get_job_status("legacy-job-id") ``` ##### execute\_with\_retry() [#execute_with_retry] Execute a workflow with automatic retry on rate limit errors using exponential backoff. ```python result = client.execute_with_retry( "workflow-id", input={"message": "Hello"}, timeout=30.0, max_retries=3, # Maximum number of retries initial_delay=1.0, # Initial delay in seconds max_delay=30.0, # Maximum delay in seconds backoff_multiplier=2.0 # Exponential backoff multiplier ) ``` **Parameters:** * `workflow_id` (str): The ID of the workflow to execute * `input` (dict, optional): Input data to pass to the workflow * `timeout` (float, optional): Timeout in seconds * `stream` (bool, optional): Enable streaming responses * `selected_outputs` (list, optional): Block outputs to stream * `async_execution` (bool, optional): Execute asynchronously * `max_retries` (int, optional): Maximum number of retries (default: 3) * `initial_delay` (float, optional): Initial delay in seconds (default: 1.0) * `max_delay` (float, optional): Maximum delay in seconds (default: 30.0) * `backoff_multiplier` (float, optional): Backoff multiplier (default: 2.0) **Returns:** `WorkflowExecutionResult | AsyncExecutionResult` The retry logic uses exponential backoff (1s → 2s → 4s → 8s...) with ±25% jitter to prevent thundering herd. If the API provides a `retry-after` header, it will be used instead. ##### get\_rate\_limit\_info() [#get_rate_limit_info] Get the current rate limit information from the last API response. ```python rate_limit_info = client.get_rate_limit_info() if rate_limit_info: print("Limit:", rate_limit_info.limit) print("Remaining:", rate_limit_info.remaining) print("Reset:", datetime.fromtimestamp(rate_limit_info.reset)) ``` **Returns:** `RateLimitInfo | None` ##### get\_usage\_limits() [#get_usage_limits] Get current usage limits and quota information for your account. ```python limits = client.get_usage_limits() print("Sync requests remaining:", limits.rate_limit["sync"]["remaining"]) print("Async requests remaining:", limits.rate_limit["async"]["remaining"]) print("Current period cost:", limits.usage["currentPeriodCost"]) print("Plan:", limits.usage["plan"]) ``` **Returns:** `UsageLimits` **Response structure:** ```python { "success": bool, "rateLimit": { "sync": { "isLimited": bool, "limit": int, "remaining": int, "resetAt": str }, "async": { "isLimited": bool, "limit": int, "remaining": int, "resetAt": str }, "authType": str # 'api' or 'manual' }, "usage": { "currentPeriodCost": float, "limit": float, "plan": str # e.g., 'free', 'pro' } } ``` ##### set\_api\_key() [#set_api_key] Update the API key. ```python client.set_api_key("new-api-key") ``` ##### set\_base\_url() [#set_base_url] Update the base URL. ```python client.set_base_url("https://my-custom-domain.com") ``` ##### close() [#close] Close the underlying HTTP session. ```python client.close() ``` ## Data Classes [#data-classes] ### WorkflowExecutionResult [#workflowexecutionresult] ```python @dataclass class WorkflowExecutionResult: success: bool output: Optional[Any] = None error: Optional[str] = None logs: Optional[List[Any]] = None metadata: Optional[Dict[str, Any]] = None trace_spans: Optional[List[Any]] = None total_duration: Optional[float] = None status: Optional[str] = None ``` `success` is `True` only for the `completed` and `paused` statuses. `status` carries the server's terminal status verbatim, so a cancelled run (`success=False`, `error=None`) is distinguishable from a failed one. ### AsyncExecutionResult [#asyncexecutionresult] ```python @dataclass class AsyncExecutionResult: success: bool run_id: str status_url: str message: str = "" async_execution: bool = True ``` ### WorkflowStatus [#workflowstatus] ```python @dataclass class WorkflowStatus: is_deployed: bool deployed_at: Optional[str] = None needs_redeployment: bool = False ``` ### RateLimitInfo [#ratelimitinfo] ```python @dataclass class RateLimitInfo: limit: int remaining: int reset: int retry_after: Optional[int] = None ``` ### UsageLimits [#usagelimits] ```python @dataclass class UsageLimits: success: bool rate_limit: Dict[str, Any] usage: Dict[str, Any] ``` ### AgentServeError [#agentserveerror] ```python class AgentServeError(Exception): def __init__(self, message: str, code: Optional[str] = None, status: Optional[int] = None): super().__init__(message) self.code = code self.status = status ``` **Common error codes:** * `UNAUTHORIZED`: Invalid API key * `TIMEOUT`: Request timed out * `RATE_LIMIT_EXCEEDED`: Rate limit exceeded * `USAGE_LIMIT_EXCEEDED`: Usage limit exceeded * `EXECUTION_ERROR`: Workflow execution failed ## Examples [#examples] ### Basic Workflow Execution [#basic-workflow-execution] Set up the AgentServeClient with your API key. Check if the workflow is deployed and ready for execution. Run the workflow with your input data. Process the execution result and handle any errors. ```python import os from agentserve import AgentServeClient client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def run_workflow(): try: # Check if workflow is ready is_ready = client.validate_workflow("my-workflow-id") if not is_ready: raise Exception("Workflow is not deployed or ready") # Execute the workflow result = client.execute_workflow( "my-workflow-id", input={ "message": "Process this data", "user_id": "12345" } ) if result.success: print("Output:", result.output) print("Duration:", result.metadata.get("duration") if result.metadata else None) else: print("Workflow failed:", result.error) except Exception as error: print("Error:", error) run_workflow() ``` ### Error Handling [#error-handling] Handle different types of errors that may occur during workflow execution: ```python from agentserve import AgentServeClient, AgentServeError import os client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def execute_with_error_handling(): try: result = client.execute_workflow("workflow-id") return result except AgentServeError as error: if error.code == "UNAUTHORIZED": print("Invalid API key") elif error.code == "TIMEOUT": print("Workflow execution timed out") elif error.code == "USAGE_LIMIT_EXCEEDED": print("Usage limit exceeded") elif error.code == "INVALID_JSON": print("Invalid JSON in request body") else: print(f"Workflow error: {error}") raise except Exception as error: print(f"Unexpected error: {error}") raise ``` ### Context Manager Usage [#context-manager-usage] Use the client as a context manager to automatically handle resource cleanup: ```python from agentserve import AgentServeClient import os # Using context manager to automatically close the session with AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) as client: result = client.execute_workflow("workflow-id") print("Result:", result) # Session is automatically closed here ``` ### Batch Workflow Execution [#batch-workflow-execution] Execute multiple workflows efficiently: ```python from agentserve import AgentServeClient import os client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def execute_workflows_batch(workflow_data_pairs): """Execute multiple workflows with different input data.""" results = [] for workflow_id, input_data in workflow_data_pairs: try: # Validate workflow before execution if not client.validate_workflow(workflow_id): print(f"Skipping {workflow_id}: not deployed") continue result = client.execute_workflow(workflow_id, input_data) results.append({ "workflow_id": workflow_id, "success": result.success, "output": result.output, "error": result.error }) except Exception as error: results.append({ "workflow_id": workflow_id, "success": False, "error": str(error) }) return results # Example usage workflows = [ ("workflow-1", {"type": "analysis", "data": "sample1"}), ("workflow-2", {"type": "processing", "data": "sample2"}), ] results = execute_workflows_batch(workflows) for result in results: print(f"Workflow {result['workflow_id']}: {'Success' if result['success'] else 'Failed'}") ``` ### Async Workflow Execution [#async-workflow-execution] Execute workflows asynchronously for long-running tasks: ```python import os import time from agentserve import AgentServeClient client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def execute_async(): try: # Start async execution result = client.execute_workflow( "workflow-id", input={"data": "large dataset"}, async_execution=True # Execute asynchronously ) # Check if result is an async execution if hasattr(result, 'async_execution') and result.async_execution: print(f"Run ID: {result.run_id}") print(f"Status endpoint: {result.status_url}") # Poll for completion status = client.get_workflow_run( "workflow-id", result.run_id, include_output=True ) while status["status"] in ["queued", "pending", "running"]: print(f"Current status: {status['status']}") time.sleep(2) # Wait 2 seconds status = client.get_workflow_run( "workflow-id", result.run_id, include_output=True ) if status["status"] == "completed": print("Workflow completed!") print(f"Output: {status['output']}") print(f"Duration: {status['durationMs']}") elif status["status"] == "paused": print("Workflow is paused and waiting for input or resumption.") elif status["status"] == "cancelled": print("Workflow was cancelled.") else: print(f"Workflow failed: {status['error']}") except Exception as error: print(f"Error: {error}") execute_async() ``` ### Rate Limiting and Retry [#rate-limiting-and-retry] Handle rate limits automatically with exponential backoff: ```python import os from agentserve import AgentServeClient, AgentServeError client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def execute_with_retry_handling(): try: # Automatically retries on rate limit result = client.execute_with_retry( "workflow-id", input={"message": "Process this"}, max_retries=5, initial_delay=1.0, max_delay=60.0, backoff_multiplier=2.0 ) print(f"Success: {result}") except AgentServeError as error: if error.code == "RATE_LIMIT_EXCEEDED": print("Rate limit exceeded after all retries") # Check rate limit info rate_limit_info = client.get_rate_limit_info() if rate_limit_info: from datetime import datetime reset_time = datetime.fromtimestamp(rate_limit_info.reset) print(f"Rate limit resets at: {reset_time}") execute_with_retry_handling() ``` ### Usage Monitoring [#usage-monitoring] Monitor your account usage and limits: ```python import os from agentserve import AgentServeClient client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def check_usage(): try: limits = client.get_usage_limits() print("=== Rate Limits ===") print("Sync requests:") print(f" Limit: {limits.rate_limit['sync']['limit']}") print(f" Remaining: {limits.rate_limit['sync']['remaining']}") print(f" Resets at: {limits.rate_limit['sync']['resetAt']}") print(f" Is limited: {limits.rate_limit['sync']['isLimited']}") print("\nAsync requests:") print(f" Limit: {limits.rate_limit['async']['limit']}") print(f" Remaining: {limits.rate_limit['async']['remaining']}") print(f" Resets at: {limits.rate_limit['async']['resetAt']}") print(f" Is limited: {limits.rate_limit['async']['isLimited']}") print("\n=== Usage ===") print(f"Current period cost: ${limits.usage['currentPeriodCost']:.2f}") print(f"Limit: ${limits.usage['limit']:.2f}") print(f"Plan: {limits.usage['plan']}") percent_used = (limits.usage['currentPeriodCost'] / limits.usage['limit']) * 100 print(f"Usage: {percent_used:.1f}%") if percent_used > 80: print("⚠️ Warning: You are approaching your usage limit!") except Exception as error: print(f"Error checking usage: {error}") check_usage() ``` ### Streaming Workflow Execution [#streaming-workflow-execution] Execute workflows with real-time streaming responses: ```python from agentserve import AgentServeClient import os client = AgentServeClient(api_key=os.getenv("AGENT_SERVE_API_KEY")) def execute_with_streaming(): """Execute workflow with streaming enabled.""" try: # Enable streaming for specific block outputs result = client.execute_workflow( "workflow-id", input={"message": "Count to five"}, stream=True, selected_outputs=["agent1.content"] # Use blockName.attribute format ) print("Workflow result:", result) except Exception as error: print("Error:", error) execute_with_streaming() ``` The streaming response follows the Server-Sent Events (SSE) format: ``` data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":"One"} data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":", two"} data: {"event":"done","success":true,"output":{},"metadata":{"duration":610}} data: [DONE] ``` **Flask Streaming Example:** ```python from flask import Flask, Response, stream_with_context import requests import json import os app = Flask(__name__) @app.route('/stream-workflow') def stream_workflow(): """Stream workflow execution to the client.""" def generate(): response = requests.post( 'https://agentserve.valnoraelric.com/api/v2/workflows/WORKFLOW_ID/execute', headers={ 'Content-Type': 'application/json', 'X-API-Key': os.getenv('AGENT_SERVE_API_KEY') }, json={ 'input': {'message': 'Generate a story'}, 'stream': True, 'selectedOutputs': ['agent1.content'] }, stream=True ) for line in response.iter_lines(): if line: decoded_line = line.decode('utf-8') if decoded_line.startswith('data: '): data = decoded_line[6:] # Remove 'data: ' prefix if data == '[DONE]': break try: parsed = json.loads(data) if 'chunk' in parsed: yield f"data: {json.dumps(parsed)}\n\n" elif parsed.get('event') == 'done': yield f"data: {json.dumps(parsed)}\n\n" print("Execution complete:", parsed.get('metadata')) except json.JSONDecodeError: pass return Response( stream_with_context(generate()), mimetype='text/event-stream' ) if __name__ == '__main__': app.run(debug=True) ``` ### Environment Configuration [#environment-configuration] Configure the client using environment variables: ```python import os from agentserve import AgentServeClient # Development configuration client = AgentServeClient( api_key=os.getenv("AGENT_SERVE_API_KEY"), base_url=os.getenv("AGENT_SERVE_BASE_URL", "https://agentserve.valnoraelric.com") ) ``` ```python import os from agentserve import AgentServeClient # Production configuration with error handling api_key = os.getenv("AGENT_SERVE_API_KEY") if not api_key: raise ValueError("AGENT_SERVE_API_KEY environment variable is required") client = AgentServeClient( api_key=api_key, base_url=os.getenv("AGENT_SERVE_BASE_URL", "https://agentserve.valnoraelric.com") ) ``` ## Getting Your API Key [#getting-your-api-key] Create a key in **Account settings → Agent Serve API keys**, or use a workspace key if your administrator requires one. See [Authentication](/api-reference/authentication) for key types and permissions. Deploy the workflow before calling it through the SDK. Keep the key in a server-side environment variable. ## Requirements [#requirements] * Python 3.8+ * requests >= 2.25.0 --- # TypeScript (/api-reference/typescript) Use the TypeScript SDK to execute workflows from server-side JavaScript or TypeScript. For browser applications, call the SDK through your authenticated backend. The TypeScript SDK provides full type safety, async execution support, retry helpers with exponential backoff, and usage tracking. ## Installation [#installation] Install the SDK using your preferred package manager: ```bash npm install @agentserve/sdk ``` ```bash yarn add @agentserve/sdk ``` ```bash bun add @agentserve/sdk ``` ## Quick Start [#quick-start] Here's a simple example to get you started: ```typescript import { AgentServeClient } from '@agentserve/sdk'; // Initialize the client const client = new AgentServeClient({ apiKey: 'your-api-key-here', baseUrl: 'https://agentserve.valnoraelric.com' // optional, defaults to https://agentserve.valnoraelric.com }); // Execute a workflow try { const result = await client.executeWorkflow('workflow-id'); console.log('Workflow executed successfully:', result); } catch (error) { console.error('Workflow execution failed:', error); } ``` ## API Reference [#api-reference] ### AgentServeClient [#agentserveclient] #### Constructor [#constructor] ```typescript new AgentServeClient(config: AgentServeConfig) ``` **Configuration:** * `config.apiKey` (string): Your Agent Serve API key * `config.baseUrl` (string, optional): Base URL for the Agent Serve API (defaults to `https://agentserve.valnoraelric.com`) #### Methods [#methods] ##### executeWorkflow() [#executeworkflow] Execute a workflow with optional input data. ```typescript const result = await client.executeWorkflow('workflow-id', { message: 'Hello, world!' }, { timeout: 30000 // 30 seconds }); ``` **Parameters:** * `workflowId` (string): The ID of the workflow to execute * `input` (any, optional): Input data to pass to the workflow * `options` (ExecutionOptions, optional): * `timeout` (number): Timeout in milliseconds (default: 30000) * `stream` (boolean): Enable streaming responses (default: false) * `selectedOutputs` (string\[]): Block outputs to stream in `blockName.attribute` format (e.g., `["agent1.content"]`) * `async` (boolean): Execute asynchronously (default: false) * `executionTimeoutSeconds` (number): Optional server-side async execution cap from 1 to 604800 seconds. Requires `async: true` and cannot extend the account policy. **Returns:** `Promise` When `async: true`, returns immediately with a `runId` and `statusUrl` for polling. Otherwise, waits for completion. ##### getWorkflowStatus() [#getworkflowstatus] Get the status of a workflow (deployment status, etc.). ```typescript const status = await client.getWorkflowStatus('workflow-id'); console.log('Is deployed:', status.isDeployed); ``` **Parameters:** * `workflowId` (string): The ID of the workflow **Returns:** `Promise` ##### validateWorkflow() [#validateworkflow] Validate that a workflow is ready for execution. ```typescript const isReady = await client.validateWorkflow('workflow-id'); if (isReady) { // Workflow is deployed and ready } ``` **Parameters:** * `workflowId` (string): The ID of the workflow **Returns:** `Promise` ##### getWorkflowRun() [#getworkflowrun] Get the status and optional outputs of a workflow run. ```typescript const status = await client.getWorkflowRun('workflow-id', 'run-id', { includeOutput: true }); console.log('Status:', status.status); // 'queued', 'running', 'completed', 'failed' if (status.status === 'completed') { console.log('Output:', status.output); } ``` **Parameters:** * `workflowId` (string): The workflow ID * `runId` (string): The run ID returned from async execution * `options.includeOutput` (boolean, optional): Include the final output for completed executions * `options.selectedOutputs` (string\[], optional): Block output selectors to include **Returns:** `Promise` **Response fields:** * `runId` (string): The run ID * `workflowId` (string): The workflow ID * `status` (string): One of `'queued'`, `'pending'`, `'running'`, `'paused'`, `'completed'`, `'failed'`, `'cancelled'` * `startedAt` / `endedAt` (string): Execution timestamps * `durationMs` (number, nullable): Duration in milliseconds * `output` (any, nullable): The workflow output when requested for a completed execution * `blockOutputs` (object, nullable): Requested block outputs * `error` (object, nullable): Structured failure details with `code`, `message`, and optional `details` ##### getJobStatus() [#getjobstatus] Get the status of a job created through the legacy async execution endpoint. New integrations should use `getWorkflowRun()` with the run ID instead. ```typescript const status = await client.getJobStatus('legacy-job-id'); ``` ##### executeWithRetry() [#executewithretry] Execute a workflow with automatic retry on rate limit errors using exponential backoff. ```typescript const result = await client.executeWithRetry('workflow-id', { message: 'Hello' }, { timeout: 30000 }, { maxRetries: 3, // Maximum number of retries initialDelay: 1000, // Initial delay in ms (1 second) maxDelay: 30000, // Maximum delay in ms (30 seconds) backoffMultiplier: 2 // Exponential backoff multiplier }); ``` **Parameters:** * `workflowId` (string): The ID of the workflow to execute * `input` (any, optional): Input data to pass to the workflow * `options` (ExecutionOptions, optional): Same as `executeWorkflow()` * `retryOptions` (RetryOptions, optional): * `maxRetries` (number): Maximum number of retries (default: 3) * `initialDelay` (number): Initial delay in ms (default: 1000) * `maxDelay` (number): Maximum delay in ms (default: 30000) * `backoffMultiplier` (number): Backoff multiplier (default: 2) **Returns:** `Promise` The retry logic uses exponential backoff (1s → 2s → 4s → 8s...) with ±25% jitter to prevent thundering herd. If the API provides a `retry-after` header, it will be used instead. ##### getRateLimitInfo() [#getratelimitinfo] Get the current rate limit information from the last API response. ```typescript const rateLimitInfo = client.getRateLimitInfo(); if (rateLimitInfo) { console.log('Limit:', rateLimitInfo.limit); console.log('Remaining:', rateLimitInfo.remaining); console.log('Reset:', new Date(rateLimitInfo.reset * 1000)); } ``` **Returns:** `RateLimitInfo | null` ##### getUsageLimits() [#getusagelimits] Get current usage limits and quota information for your account. ```typescript const limits = await client.getUsageLimits(); console.log('Sync requests remaining:', limits.rateLimit.sync.remaining); console.log('Async requests remaining:', limits.rateLimit.async.remaining); console.log('Current period cost:', limits.usage.currentPeriodCost); console.log('Plan:', limits.usage.plan); ``` **Returns:** `Promise` **Response structure:** ```typescript { success: boolean rateLimit: { sync: { isLimited: boolean limit: number remaining: number resetAt: string } async: { isLimited: boolean limit: number remaining: number resetAt: string } authType: string // 'api' or 'manual' } usage: { currentPeriodCost: number limit: number plan: string // e.g., 'free', 'pro' } } ``` ##### setApiKey() [#setapikey] Update the API key. ```typescript client.setApiKey('new-api-key'); ``` ##### setBaseUrl() [#setbaseurl] Update the base URL. ```typescript client.setBaseUrl('https://my-custom-domain.com'); ``` ## Types [#types] ### WorkflowExecutionResult [#workflowexecutionresult] ```typescript interface WorkflowExecutionResult { success: boolean; output?: any; error?: string; logs?: any[]; metadata?: { duration?: number; runId?: string; [key: string]: any; }; traceSpans?: any[]; totalDuration?: number; } ``` ### AsyncExecutionResult [#asyncexecutionresult] ```typescript interface AsyncExecutionResult { success: boolean; runId: string; statusUrl: string; message: string; async: true; } ``` ### WorkflowStatus [#workflowstatus] ```typescript interface WorkflowStatus { isDeployed: boolean; deployedAt?: string; needsRedeployment: boolean; } ``` ### RateLimitInfo [#ratelimitinfo] ```typescript interface RateLimitInfo { limit: number; remaining: number; reset: number; retryAfter?: number; } ``` ### UsageLimits [#usagelimits] ```typescript interface UsageLimits { success: boolean; rateLimit: { sync: { isLimited: boolean; limit: number; remaining: number; resetAt: string; }; async: { isLimited: boolean; limit: number; remaining: number; resetAt: string; }; authType: string; }; usage: { currentPeriodCost: number; limit: number; plan: string; }; } ``` ### AgentServeError [#agentserveerror] ```typescript class AgentServeError extends Error { code?: string; status?: number; } ``` **Common error codes:** * `UNAUTHORIZED`: Invalid API key * `TIMEOUT`: Request timed out * `RATE_LIMIT_EXCEEDED`: Rate limit exceeded * `USAGE_LIMIT_EXCEEDED`: Usage limit exceeded * `EXECUTION_ERROR`: Workflow execution failed ## Examples [#examples] ### Basic Workflow Execution [#basic-workflow-execution] Set up the AgentServeClient with your API key. Check if the workflow is deployed and ready for execution. Run the workflow with your input data. Process the execution result and handle any errors. ```typescript import { AgentServeClient } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function runWorkflow() { try { // Check if workflow is ready const isReady = await client.validateWorkflow('my-workflow-id'); if (!isReady) { throw new Error('Workflow is not deployed or ready'); } // Execute the workflow const result = await client.executeWorkflow('my-workflow-id', { message: 'Process this data', userId: '12345' }); if (result.success) { console.log('Output:', result.output); console.log('Duration:', result.metadata?.duration); } else { console.error('Workflow failed:', result.error); } } catch (error) { console.error('Error:', error); } } runWorkflow(); ``` ### Error Handling [#error-handling] Handle different types of errors that may occur during workflow execution: ```typescript import { AgentServeClient, AgentServeError } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function executeWithErrorHandling() { try { const result = await client.executeWorkflow('workflow-id'); return result; } catch (error) { if (error instanceof AgentServeError) { switch (error.code) { case 'UNAUTHORIZED': console.error('Invalid API key'); break; case 'TIMEOUT': console.error('Workflow execution timed out'); break; case 'USAGE_LIMIT_EXCEEDED': console.error('Usage limit exceeded'); break; case 'INVALID_JSON': console.error('Invalid JSON in request body'); break; default: console.error('Workflow error:', error.message); } } else { console.error('Unexpected error:', error); } throw error; } } ``` ### Environment Configuration [#environment-configuration] Configure the client using environment variables: ```typescript import { AgentServeClient } from '@agentserve/sdk'; // Development configuration const apiKey = process.env.AGENT_SERVE_API_KEY; if (!apiKey) { throw new Error('AGENT_SERVE_API_KEY environment variable is required'); } const client = new AgentServeClient({ apiKey, baseUrl: process.env.AGENT_SERVE_BASE_URL // optional }); ``` ```typescript import { AgentServeClient } from '@agentserve/sdk'; // Production configuration with validation const apiKey = process.env.AGENT_SERVE_API_KEY; if (!apiKey) { throw new Error('AGENT_SERVE_API_KEY environment variable is required'); } const client = new AgentServeClient({ apiKey, baseUrl: process.env.AGENT_SERVE_BASE_URL || 'https://agentserve.valnoraelric.com' }); ``` ### Node.js Express Integration [#nodejs-express-integration] Integrate with an Express.js server: ```typescript import express from 'express'; import { AgentServeClient } from '@agentserve/sdk'; const app = express(); const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); app.use(express.json()); app.post('/execute-workflow', async (req, res) => { try { const { workflowId, input } = req.body; const result = await client.executeWorkflow(workflowId, input, { timeout: 60000 }); res.json({ success: true, data: result }); } catch (error) { console.error('Workflow execution error:', error); res.status(500).json({ success: false, error: error instanceof Error ? error.message : 'Unknown error' }); } }); app.listen(3000, () => { console.log('Server running on port 3000'); }); ``` ### Next.js API Route [#nextjs-api-route] Use with Next.js API routes: ```typescript // pages/api/workflow.ts import { NextApiRequest, NextApiResponse } from 'next'; import { AgentServeClient } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); export default async function handler( req: NextApiRequest, res: NextApiResponse ) { if (req.method !== 'POST') { return res.status(405).json({ error: 'Method not allowed' }); } try { const { workflowId, input } = req.body; const result = await client.executeWorkflow(workflowId, input, { timeout: 30000 }); res.status(200).json(result); } catch (error) { console.error('Error executing workflow:', error); res.status(500).json({ error: 'Failed to execute workflow' }); } } ``` ### Browser Usage [#browser-usage] Keep the Agent Serve API key on your server. A browser application should call an authenticated backend endpoint that checks which workflow the user can run, then calls the SDK. The [Next.js API Route](#nextjs-api-route) example shows where the server-side SDK call belongs; add your application authentication and authorization before executing a workflow. ### File Upload [#file-upload] File objects are automatically detected and converted to base64 format. Include them in your input under the field name matching your workflow's API trigger input format. The SDK converts File objects to this format: ```typescript { type: 'file', data: 'data:mime/type;base64,base64data', name: 'filename', mime: 'mime/type' } ``` Alternatively, you can manually provide files using the URL format: ```typescript { type: 'url', data: 'https://example.com/file.pdf', name: 'file.pdf', mime: 'application/pdf' } ``` Run file uploads on your backend after authenticating the caller and validating the upload. For example, in Node.js: ```typescript import { AgentServeClient } from '@agentserve/sdk'; import { readFile } from 'node:fs/promises'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); const fileBuffer = await readFile('./document.pdf'); const file = new File([fileBuffer], 'document.pdf', { type: 'application/pdf' }); const result = await client.executeWorkflow('workflow-id', { documents: [file], query: 'Summarize this document' }); ``` ### Async Workflow Execution [#async-workflow-execution] Execute workflows asynchronously for long-running tasks: ```typescript import { AgentServeClient, AsyncExecutionResult } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function executeAsync() { try { // Start async execution const result = await client.executeWorkflow('workflow-id', { data: 'large dataset' }, { async: true // Execute asynchronously }); // Check if result is an async execution if ('async' in result && result.async) { console.log('Run ID:', result.runId); console.log('Status endpoint:', result.statusUrl); // Poll for completion let status = await client.getWorkflowRun('workflow-id', result.runId, { includeOutput: true }); while (status.status === 'queued' || status.status === 'pending' || status.status === 'running') { console.log('Current status:', status.status); await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds status = await client.getWorkflowRun('workflow-id', result.runId, { includeOutput: true }); } if (status.status === 'completed') { console.log('Workflow completed!'); console.log('Output:', status.output); console.log('Duration:', status.durationMs); } else if (status.status === 'paused') { console.log('Workflow is paused and waiting for input or resumption.'); } else if (status.status === 'cancelled') { console.log('Workflow was cancelled.'); } else { console.error('Workflow failed:', status.error); } } } catch (error) { console.error('Error:', error); } } executeAsync(); ``` ### Rate Limiting and Retry [#rate-limiting-and-retry] Handle rate limits automatically with exponential backoff: ```typescript import { AgentServeClient, AgentServeError } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function executeWithRetryHandling() { try { // Automatically retries on rate limit const result = await client.executeWithRetry('workflow-id', { message: 'Process this' }, {}, { maxRetries: 5, initialDelay: 1000, maxDelay: 60000, backoffMultiplier: 2 }); console.log('Success:', result); } catch (error) { if (error instanceof AgentServeError && error.code === 'RATE_LIMIT_EXCEEDED') { console.error('Rate limit exceeded after all retries'); // Check rate limit info const rateLimitInfo = client.getRateLimitInfo(); if (rateLimitInfo) { console.log('Rate limit resets at:', new Date(rateLimitInfo.reset * 1000)); } } } } ``` ### Usage Monitoring [#usage-monitoring] Monitor your account usage and limits: ```typescript import { AgentServeClient } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function checkUsage() { try { const limits = await client.getUsageLimits(); console.log('=== Rate Limits ==='); console.log('Sync requests:'); console.log(' Limit:', limits.rateLimit.sync.limit); console.log(' Remaining:', limits.rateLimit.sync.remaining); console.log(' Resets at:', limits.rateLimit.sync.resetAt); console.log(' Is limited:', limits.rateLimit.sync.isLimited); console.log('\nAsync requests:'); console.log(' Limit:', limits.rateLimit.async.limit); console.log(' Remaining:', limits.rateLimit.async.remaining); console.log(' Resets at:', limits.rateLimit.async.resetAt); console.log(' Is limited:', limits.rateLimit.async.isLimited); console.log('\n=== Usage ==='); console.log('Current period cost: $' + limits.usage.currentPeriodCost.toFixed(2)); console.log('Limit: $' + limits.usage.limit.toFixed(2)); console.log('Plan:', limits.usage.plan); const percentUsed = (limits.usage.currentPeriodCost / limits.usage.limit) * 100; console.log('Usage: ' + percentUsed.toFixed(1) + '%'); if (percentUsed > 80) { console.warn('⚠️ Warning: You are approaching your usage limit!'); } } catch (error) { console.error('Error checking usage:', error); } } checkUsage(); ``` ### Streaming Workflow Execution [#streaming-workflow-execution] Execute workflows with real-time streaming responses: ```typescript import { AgentServeClient } from '@agentserve/sdk'; const client = new AgentServeClient({ apiKey: process.env.AGENT_SERVE_API_KEY! }); async function executeWithStreaming() { try { // Enable streaming for specific block outputs const result = await client.executeWorkflow('workflow-id', { message: 'Count to five' }, { stream: true, selectedOutputs: ['agent1.content'] // Use blockName.attribute format }); console.log('Workflow result:', result); } catch (error) { console.error('Error:', error); } } ``` The streaming response follows the Server-Sent Events (SSE) format: ``` data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":"One"} data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":", two"} data: {"event":"done","success":true,"output":{},"metadata":{"duration":610}} data: [DONE] ``` For browser streaming, have your authenticated backend forward the Agent Serve SSE response. Keep the Agent Serve API key on the backend, check the upstream response status, and parse complete SSE events across network chunks. See [streaming responses](/workflows/deployment/api#streaming) for the event format. ## Getting Your API Key [#getting-your-api-key] Create a key in **Account settings → Agent Serve API keys**, or use a workspace key if your administrator requires one. See [Authentication](/api-reference/authentication) for key types and permissions. Deploy the workflow before calling it through the SDK. Keep the key in a server-side environment variable. ## Requirements [#requirements] * Node.js 16+ * TypeScript 5.0+ (for TypeScript projects) --- # Workflow imports and workspace sync (/api-reference/workflow-sync) An automated client exports or inspects the source, previews destination choices, applies the reviewed request, and polls its operation. The [CLI workflow guide](/cli/workflow-sync) follows this same v2 protocol; the server owns authorization, remapping, atomic writes, and durable completion for both surfaces. ## CLI and HTTP interfaces [#cli-and-http-interfaces] Paths below are relative to `/api/v2`. `{workspaceId}` is the explicitly selected current workspace. | CLI command | HTTP request | | --------------------------------------------------------- | ---------------------------------------------------------------------------------- | | `workflows export --include-references` | `GET /workflows/{workflowId}/export?includeReferences=true` | | `workflows import-preview` / `workflows import` | `POST /workflows/import/preview` / `POST /workflows/import` | | `workspaces fork-availability` / `lineage` | `GET /workspaces/{workspaceId}/fork/availability` / `.../fork/lineage` | | `workspaces children` / `fork-resources` | `GET /workspaces/{workspaceId}/fork/children` / `.../fork/resources?kind=tables` | | `workspaces fork-preview` / `fork` | `POST /workspaces/{workspaceId}/fork/preview` / `.../fork` | | `workspaces push-preview` / `push --yes` | `POST /workspaces/{workspaceId}/fork/push/preview` / `.../fork/push` | | `workspaces pull-preview` / `pull --yes` | `POST /workspaces/{workspaceId}/fork/pull/preview` / `.../fork/pull` | | `workspaces mappings get` / `mappings update` | `GET` / `PUT /workspaces/{workspaceId}/fork/mappings` | | `selectors list` / `selectors get` | `POST /selectors/list` / `POST /selectors/get` | | `workspaces operations get ` / `operations wait ` | `GET /workspaces/{workspaceId}/operations/{operationId}`; wait polls this endpoint | | `workspaces operations list` | `GET /workspaces/{workspaceId}/operations` | The generated [sync preview reference](/api-reference/workspace-sync/previewWorkspacePull) documents every field; its sidebar includes rollback, unlink, and exclusion endpoints. Children, resource discovery, mappings, and operations are paginated; follow `nextCursor` without changing the query's scope or filters. ## Permissions [#permissions] Send a personal API key in `X-API-Key`, or an OAuth access token in `Authorization: Bearer …`. Existing workspace policies, credential access, permission groups, Enterprise/self-hosting gates, and workspace creation limits still apply. | Operation | Required access | | ------------------------------------------ | ------------------------------------------------------------------------------------------------- | | Export | Workflow read access | | Import preview and apply | Destination write access; binding credentials also requires an acting user with credential access | | Fork discovery, preview, and creation | Source workspace admin | | Sync preview/apply and mapping read/update | Admin on both workspaces on a direct fork edge | | Rollback / unlink | Target admin / acting-side admin, respectively | | Selector discovery | Read access in the discovery workspace and access to the selected credential | | Operation get/list | Read access in the receipt workspace | Workspace API keys can import where existing authoring policy allows, but cannot bind credentials, administer forks, or execute selectors. Do not substitute a key owner for an acting user. OAuth import/fork/sync previews require `api:write`, even though preview does not commit changes. Export, fork discovery, mapping reads, selectors, and operation reads use `api:read`. ## Portable imports [#portable-imports] Default exports remain sanitized. `includeReferences=true` adds a versioned manifest of registered resource IDs and source occurrences, including nested tools. It does not include secret values. Imported provenance and source IDs are labels; they never grant access to an alleged source workspace. Set `BASE_URL` to your deployment, and use an authorized key for each workspace. Raw HTTP returns `{ "data": ... }`; the CLI unwraps single-resource results. Extract the export payload before saving it: ```sh curl -sS --fail-with-body \ -H "X-API-Key: $SOURCE_API_KEY" \ "$BASE_URL/api/v2/workflows/$WORKFLOW_ID/export?includeReferences=true" \ | jq '.data' > workflow.json ``` Save destination mappings as `import-mappings.json`, replacing the example IDs with manifest and destination resource IDs: ```json [ { "kind": "credential", "sourceId": "source-connection", "targetId": "destination-connection" }, { "kind": "sandbox", "sourceId": "source-sandbox", "targetId": "destination-sandbox" } ] ``` `mappings` applies to every occurrence of a resource's `kind` and `sourceId`. For older exports, `bindings` can address individual registered occurrences. Its entries are flat objects, without `sourceId` or an `occurrence` wrapper: ```json [ { "kind": "credential", "blockId": "source-agent", "subBlockKey": "tools", "valuePath": [0, "params", "oauthCredential"], "encoding": "scalar", "targetId": "destination-connection" } ] ``` A top-level field uses `valuePath: []`. Other registered encodings are `array`, `csv`, `files`, and `environment`; multi-value occurrences can include `positions`. Use the actual registered occurrence, rather than inventing paths. Conflicting instructions for one occurrence are rejected. `targetId: null` requests clearing; it cannot satisfy a required binding. Destination type, provider, and parent-child compatibility are validated. Build one request file and preview it: ```sh jq -n --arg workspaceId "$DESTINATION_WORKSPACE" \ --slurpfile workflow workflow.json --slurpfile mappings import-mappings.json \ '{workspaceId: $workspaceId, workflow: $workflow[0], mappings: $mappings[0]}' \ > import-request.json curl -sS --fail-with-body -H "X-API-Key: $DESTINATION_API_KEY" \ -H 'Content-Type: application/json' --data @import-request.json \ "$BASE_URL/api/v2/workflows/import/preview" > import-preview.json ``` Inspect `data.unresolvedBindings`, `data.configuration`, `data.unresolvedConfiguration`, and `data.discovery`. Dependent choices use a different shape from bindings: ```json [ { "blockId": "source-agent", "subBlockKey": "tools[0].folder", "value": "destination-label" } ] ``` Add these as `dependentValues` to `import-request.json` and preview again. For a field with `multiSelect: true`, `value` is a comma-separated string of selected IDs. For credential-backed selectors, discover options in the import's destination workspace using the returned `selectorKey` and `context`: ```sh curl -sS --fail-with-body -H "X-API-Key: $DESTINATION_API_KEY" \ -H 'Content-Type: application/json' \ --data "$(jq -n --arg workspaceId "$DESTINATION_WORKSPACE" \ '{workspaceId: $workspaceId, selectorKey: "gmail.labels", context: {oauthCredential: "destination-connection"}, limit: 50}')" \ "$BASE_URL/api/v2/selectors/list" ``` Selector lists return `{ "data": [...], "nextCursor": null, "truncated": false }`; check both pagination and truncation. Detail uses `/selectors/get` with the same scope/context and an `id`. MCP tools use `mcp.tools` with `mcpServerId`. A missing OAuth connection can require human authorization; changing a resource ID cannot create that connection. When `data.ready` is true, save a stable request ID and apply the exact reviewed choices: ```sh jq --arg requestId "$IMPORT_REQUEST_ID" \ --arg fingerprint "$(jq -er '.data.previewFingerprint' import-preview.json)" \ '. + {requestId: $requestId, previewFingerprint: $fingerprint}' \ import-request.json > import-apply.json curl -sS --fail-with-body -H "X-API-Key: $DESTINATION_API_KEY" \ -H 'Content-Type: application/json' --data @import-apply.json \ "$BASE_URL/api/v2/workflows/import" > import-result.json ``` Mapped import creates a draft, its graph, variables, required inline custom tools, and receipt atomically. Remapping precedes graph ID regeneration; the result includes `idMap`. Plain imports without mapping options retain their earlier behavior and return no operation receipt. Supplying mapping options, even empty arrays, requires `requestId` and `previewFingerprint`. ## Fork and sync [#fork-and-sync] Fork preview and apply share `{ "name": "Review environment", "copy": { "tables": ["source-table"] } }`. Apply adds `requestId` and the preview's fingerprint. Eligible deployed source workflows become child drafts; resource copies must be selected explicitly. Push sends deployed workflows from the current workspace to `otherWorkspaceId`. Pull sends them from `otherWorkspaceId` to the current workspace. Either endpoint works from either side of the direct parent/child edge. For example, save this as `sync-request.json` for a pull into the workspace in the URL: ```json { "otherWorkspaceId": "source-workspace", "mappings": [ { "resourceType": "oauth_credential", "sourceId": "source-connection", "targetId": "destination-connection" } ], "dependentValues": [ { "sourceWorkflowId": "source-workflow", "sourceBlockId": "source-agent", "subBlockKey": "tools[0].folder", "value": "destination-label" } ], "copyResources": { "tables": ["source-table"] } } ``` Sync mappings use edge `resourceType` names, such as `oauth_credential`, `service_account_credential`, `knowledge_base`, `custom_tool`, or `sandbox`; imports use `kind`, such as `credential`, `knowledge-base`, or `custom-tool`. Sync workflow identity is system-managed. Pick a knowledge document through its parent KB's dependent selector instead of writing a `knowledge_document` edge mapping. Mapping inspection requires `otherWorkspaceId` and `direction` in its query. Read rows also contain a storage `id`; write requests accept only `resourceType`, `sourceId`, and `targetId`. Project a page with `jq '[.data[] | {resourceType, sourceId, targetId}]'` before reusing its mappings, and follow `nextCursor` to collect further pages. Preview never saves inline mappings. Apply persists them with the sync transaction. Dependent overrides use source workflow/block/field identities, including original nested tool indices. Omission reuses saved choices; providing `dependentValues` replaces those choices for affected workflows, and `[]` clears them. Target draft values alone are not saved sync configuration. ```sh curl -sS --fail-with-body -H "X-API-Key: $AGENT_SERVE_API_KEY" \ -H 'Content-Type: application/json' --data @sync-request.json \ "$BASE_URL/api/v2/workspaces/$CURRENT_WORKSPACE/fork/pull/preview" > sync-preview.json jq --arg requestId "$SYNC_REQUEST_ID" \ --arg fingerprint "$(jq -er '.data.previewFingerprint' sync-preview.json)" \ '. + {requestId: $requestId, previewFingerprint: $fingerprint, confirm: true}' \ sync-request.json > sync-apply.json curl -sS --fail-with-body -H "X-API-Key: $AGENT_SERVE_API_KEY" \ -H 'Content-Type: application/json' --data @sync-apply.json \ "$BASE_URL/api/v2/workspaces/$CURRENT_WORKSPACE/fork/pull" > sync-result.json ``` Review `unresolvedBindings`, `configuration`, planned workflow actions, and retiring trigger URLs before apply. Use each configuration field's `discoveryWorkspaceId` for `/selectors/list` or `/selectors/get`: source when its parent will be copied, destination when mapped. Pass its returned context and re-preview any changed choices. A ready preview is not a deployment-readiness report. `triggerSlots` lists stable `sourceWorkflowId` and `sourceBlockId` identities, `ownPath`, `adoptablePaths`, and `defaultAdoptPath`. A slot with `ownPath` preserves that URL and accepts no override. For an arriving trigger, `triggerMappings` can select an offered retiring path or `null` to request a new URL. Include the same choices on preview and apply: ```json [ { "sourceWorkflowId": "source-workflow", "sourceBlockId": "source-trigger", "adoptPath": "retiring-trigger-path" } ] ``` Unknown source identities, duplicate choices, and paths outside that slot's candidates are rejected. Adoption candidates stay within the same target workflow and provider; do not construct them from a different workflow's URL. Copy selections use `copy` for fork creation and `copyResources` for sync. Fork `copy.files` contains workspace file IDs; sync `copyResources.files` contains storage keys. Credentials and secret values are not copied. `dropReferences` only acknowledges references deleted in the source; it cannot discard live source resources. Sync replaces eligible target workflows and schedules deployment of the admitted snapshots. Exclusions remain in effect. A deleted source can archive its mapped target; an undeployed source does not. Rollback restores the latest target sync's prior deployed versions, with no promise to restore arbitrary drafts or undo all resource copies. ## Receipts, polling, and retries [#receipts-polling-and-retries] Apply returns a single-resource envelope. This is an example completed sync report: ```json { "data": { "operationId": "operation-id", "requestId": "release-2026-09-09", "workspaceId": "current-workspace", "kind": "workspace_pull", "applied": true, "status": "completed", "resourceIds": ["destination-workflow"], "issues": [], "deployments": [ { "operationId": "deployment-id", "workflowId": "destination-workflow", "version": 2, "status": "active", "ready": true, "pendingComponents": [] } ] } } ``` Always poll under the returned `workspaceId`. Import receipts belong to the destination. Fork-creation receipts belong to the source on which `/fork` ran. Push/pull receipts belong to the current workspace in the request URL, including a push that changes the other workspace. ```sh OPERATION_ID=$(jq -er '.data.operationId' sync-result.json) OPERATION_WORKSPACE=$(jq -er '.data.workspaceId' sync-result.json) curl -sS --fail-with-body -H "X-API-Key: $AGENT_SERVE_API_KEY" \ "$BASE_URL/api/v2/workspaces/$OPERATION_WORKSPACE/operations/$OPERATION_ID" ``` Poll with a delay while `status` is `processing`. Terminal outcomes are `completed`, `completed_with_warnings`, `requires_configuration`, and `failed`. Inspect `issues`, `copyProgress`, `deployments[].ready`, `pendingComponents`, and `triggerUrlChanges`. `applied: true` remains true after a follow-up failure: the transaction committed. Completed imports and forks remain drafts; a completed sync requires checking its admitted deployment results before treating the destination as ready. Request IDs deduplicate within the receipt workspace. Retain the complete apply request: identical authorized retries return the original operation before checking preview freshness. A changed payload under the same ID, a stale preview, or blocked apply returns HTTP `409` with `{ "error": { "code": "CONFLICT", "message": "...", "details": {} } }`. Other invalid inputs can return `400`; follow-up failures are reported on a committed operation. After an uncertain response, retry the identical request with the original ID, or query `GET /workspaces/{workspaceId}/operations?requestId=...`. Lists return `{ "data": [...], "nextCursor": ... }`; use operation get for refreshed completion status. If a stale preview is refused before commit, obtain a new preview and use a new request ID for the revised request. Never replace a lost-response request with a fresh ID merely to retry. ## What the test harness covers [#what-the-test-harness-covers] Run `bun run test:workflow-sync` from the Agent Serve repository with Bun, dependencies, and Docker available. It creates disposable PostgreSQL 17, exercises actual authorization, API-key authentication, v2 HTTP adapters, CLI subprocesses, graph/receipt transactions, locks, and deployment outbox workers, then removes the database. Tests cover concurrent retries, stale previews, atomic refusal, immutable deployment snapshots, exclusions, pagination, and copy-worker recovery. External provider options and failures use controlled fixtures; the separate realtime process uses an authenticated loopback fixture. This validates the platform protocol rather than proving every provider account is connected. Verify provider authorization and destination deployment readiness in the environment you intend to use. Migration safety is checked separately from this fresh-schema harness. --- # Apps (/apps) An **app** is a purpose-built tool that runs inside your workspace — a deal desk, a contract review screen, a field visit log. Apps work on your own tables, models, workflows, and Relays, and always act as the person using them. There are two kinds: * **Apps your developers build** in this workspace with the CLI and SDK. See [Build on Agent Serve](/developers). * **[Plugins](/plugins)** — apps that also add Chat commands, menu actions, background triggers, connectors, and skills across the workspace. Agent Serve publishes a set of them in **Discover**. ## The Apps hub [#the-apps-hub] Open **Apps** from the left rail.
The Apps page header with Discover, Build an app, and Upload bundle
The page has these parts: * **Installed** — every app installed in this workspace. A card shows **Live**, or **Turned off** when an admin turned it off. If nothing is installed yet, you see **No apps installed yet**. * **From Agent Serve** — a few plugins from the catalog, with **See all** to open [Discover](/plugins/discover). * **Ready to install** (admins only) — app versions that are published and can be installed here. * **Built in this workspace** (builders only) — apps your team is building, with their versions. The header has **Discover** for everyone, and **Build an app** and **Upload bundle** for people who can build apps. ## Open an app [#open-an-app] Click an installed app to open it. Apps with several pages show them as tabs across the top. You are already signed in, and the app can only reach what you can reach yourself. An admin can also put an app on the left rail for people with chosen roles, so it opens in one click. If an app was turned off, it shows **This app is turned off in this workspace.** When an app wants to make a change in another service through your connected accounts — update a record, send a message — it asks you to confirm first. ## Install an app [#install-an-app] Only workspace admins can install apps. To install: 1. Find the app — under **Ready to install** on the Apps page, or in [Discover](/plugins/discover) for plugins. 2. Click **Install**. The install review shows what the app can access, what it creates, and any settings. See [Install a plugin](/plugins/install) for every part of the review. 3. Click **Install**. The app appears under **Installed** for everyone in the workspace. Installing creates the tables, rules, and Relays the app declares, if the workspace does not have them yet. ## Who can do what [#who-can-do-what] | Role | Can | | ---------------------------------------------------- | ----------------------------------------------------------------------------------------- | | **Any member** | Open installed apps and use what they add | | **Builder** (write access, and app building allowed) | Build and deploy apps, open **Manage**, see versions and tools | | **Admin** (a builder who is also a workspace admin) | Install and uninstall, change settings, budgets, and secrets, and approve background runs | Apps are turned on per workspace or organization. If you do not see **Apps** on the rail, it is not on for your workspace, or your [permission group](/platform/enterprise/access-control) hides it. --- # Manage an app (/apps/manage) Every installed app has a **Manage** page. Open it with **Manage** on the app's card on the Apps page. You need write access and app building allowed to open it; changing settings needs a workspace admin.
The Manage page for an app, with Settings, Access, Tools, and Spend this month
The header has **Open app**, **Open in IDE** (for apps built in this workspace), and **Uninstall**. ## Settings [#settings] | Setting | What it does | | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Turned on** | Turn the app off to stop everyone using it, without uninstalling. | | **Version** | The version running here. | | **On the rail for** | Put the app on the left rail for people with the **Read**, **Write**, or **Admin** role. | | **Monthly budget (USD)** | The most the app may spend on paid work — models, media, integrations — each calendar month (UTC). Leave it as it is to use the amount from the app's manifest. | When an app reaches its budget, its paid calls stop until next month with **This app has used its monthly budget of $X**. **Spend this month** shows how much it has used. Each app is also limited in how many paid calls it can make per minute — for example 30 AI model calls and 6 Chat answers — so one busy app cannot crowd out the rest of the workspace. Over the limit, calls fail with **This app is making too many … calls; try again shortly**. ## Access [#access] **Access** lists everything the app can reach — the tables it reads and writes, the Relays it can hand tasks to, the models it uses, and whether it can open Chat. An app can never reach more than the person using it can. Plugins also show **Resources**, **Plugin settings**, **Background runs**, **Connectors**, **Skills**, and **Runs**. See [Manage plugins](/plugins/manage). ## Tools, secrets, and versions [#tools-secrets-and-versions] * **Tools** — the app's code tools, each marked **Reads only** or **Makes changes**, with **Test run**. * **Secrets** — keys the app needs, such as an API key for another service. Only admins can set them. * **Versions** — every published version, with **Running here**. Use **Run this version** to switch the workspace to another version, **Publish** to make a draft installable, and **Retire** to withdraw one. * **Activity** — recent changes to the install. When a newer version is published, Discover shows **Update available**. Switch to it with **Run this version** under **Versions**. ## Uninstall [#uninstall] Click **Uninstall** and confirm. Members lose the app right away. Tables the app created, and their data, stay in the workspace. --- # Files & documents (/chat/files) Chat summarizing an escalation playbook it wrote, with escalation-playbook.md open in the resource panel Describe a document, presentation, image, or visualization and Agent Serve creates it — streaming the content live into the resource panel as it writes. Attach any file to your message and Agent Serve reads it, processes it, and saves it to your workspace. ## Uploading Files to the Workspace [#uploading-files-to-the-workspace] Attach any file directly to your message in Chat — drag it into the input, paste it, or click the attachment icon. Agent Serve reads the file as context and saves it to your workspace. Use this to: * Hand Agent Serve a document and ask it to process, summarize, or extract data from it * Upload a CSV and have it create a table from it * Drop in a PDF and ask Agent Serve to turn it into a knowledge base document * Attach a design mockup and ask Agent Serve to describe it or generate code from it Uploaded files appear in the [Library](/files) and are accessible to all workflows in the workspace. Agent Serve can also fetch a file directly from a URL and save it for you: "Download the JSON at \[URL] and save it to the workspace." ## Creating Documents [#creating-documents] Agent Serve can write any text-based file — markdown, plain text, code files, CSV, JSON, or any other format: * "Write a technical spec for the new auth system as a markdown file" * "Create a CSV of our test accounts with columns for name, email, and plan tier" * "Write a Python script that calls our workflow API and processes the response" * "Draft a postmortem for the outage last Tuesday and save it as a markdown file" * "Write a personalized outbound email for Acme Corp based on their recent funding announcement" * "Draft a weekly ops digest summarizing workflow run counts, errors, and top failures for the past 7 days" Files are saved to your workspace and accessible from the [Library](/files). ## Editing Existing Files [#editing-existing-files] Open a file using `@filename` or the **+** menu, then describe the change: * "Update the pricing section to reflect the new tiers" * "Refactor this Python script to use async/await" * "Add a section on error handling to this spec" * "Rewrite the introduction of this report to be more concise" ## Presentations [#presentations] Agent Serve can generate `.pptx` files: * "Create a pitch deck for Q3 review — 8 slides covering growth, retention, and roadmap" * "Turn this research report into a 10-slide presentation" * "Build a deck that walks through our API onboarding flow" * "Build a battle card deck for our top 3 competitors — one slide each covering positioning, pricing, and how we win" * "Create an account plan for Acme Corp — their priorities, our solution fit, and proposed next steps" The file is saved to your workspace and can be downloaded. ## Images [#images] Agent Serve can generate images using AI, and can use an existing image as a reference to guide the output: **Generating images:** * "Generate a banner image for the new feature announcement — dark background, clean typography" * "Create a diagram showing the data flow through our webhook pipeline" * "Make a social card for the blog post with the title and author name" **Using a reference image:** * Attach an existing image to your message, then describe what you want: "Generate a new version of this banner with a blue color scheme instead of green" * "Create a variation of this diagram with the boxes rearranged horizontally \[attach image]" Generated images are saved as workspace files. ## Charts and Visualizations [#charts-and-visualizations] Agent Serve can generate charts and data visualizations from data you describe or reference: * "Plot the workflow run counts from the metrics table as a bar chart grouped by week" * "Create a line chart of token usage over the past 30 days from this data \[paste data]" * "Generate a pie chart showing the distribution of lead sources from the leads table" Visualizations are saved as files and rendered in the resource panel. ## Calculations & Data Processing [#calculations--data-processing] For one-off calculations and data transformations, describe what you need and Agent Serve runs it directly in the chat: * "Parse this JSON and extract all records where status is 'failed'" * "Calculate the p95 latency from these timing values: \[paste values]" * "Convert these Unix timestamps to ISO 8601" * "Deduplicate this list of emails, case-insensitive" Results come back directly in the chat. Ask Agent Serve to save the output as a file if you need it. ## File Viewer Modes [#file-viewer-modes] When a file opens in the resource panel, you can switch between three views: | Mode | What it shows | | ----------- | -------------------------------- | | **Editor** | Raw editable text | | **Preview** | Rendered output (markdown, HTML) | | **Split** | Editor and preview side by side | --- # Chat (/chat) Chat describing a support triage workflow it built, with the workflow open in the resource panel Use Chat to build workflows, research a topic, generate files, query tables, schedule jobs, and act through connected integrations. Reference the workspace resources you want Agent Serve to use. ## What You Can Do [#what-you-can-do] | Area | What Agent Serve can do | | --------------------------------------------- | -------------------------------------------------------------------------- | | **[Workflows](/chat/workflows)** | Build, edit, run, debug, deploy, and organize workflows | | **[Research](/chat/research)** | Search the web, read pages, crawl sites, produce research reports | | **[Files & Documents](/chat/files)** | Upload, create, edit, and generate documents, presentations, and images | | **[Tables](/chat/tables)** | Create, query, update, and export workspace tables | | **[Automation & Configuration](/chat/tasks)** | Schedule jobs, take immediate actions, connect integrations, manage tools | | **[Knowledge Bases](/chat/knowledge)** | Create knowledge bases, add documents, and query content in plain language | ## How It Works [#how-it-works] Agent Serve can find workspace resources by name and inspect the details it needs. Reference a resource explicitly when you want to direct its attention: * "Run the invoice workflow" * "Add a row to the leads table" * "Deploy the summarizer as a chat" No configuration, no context-setting. Just describe what you want: * "Build a lead enrichment workflow that scores inbound signups and writes the results to the leads table" * "Research our top 5 competitors and save a battle card for each one" * "Schedule a daily job that checks for new high-fit prospects and posts them to #outbound in Slack" * "Create a workflow that takes a contract PDF, extracts the key terms, and emails a summary to legal" For complex tasks, Agent Serve delegates to specialized subagents automatically. You'll see them appear as collapsible sections in the chat while they work — building, researching, writing files, executing actions. ## Adding Context [#adding-context] Bring any workspace object into the conversation via the **+** menu, `@`-mentions, or drag-and-drop from the sidebar. Agent Serve also opens resources automatically when it creates or modifies them. The Add resources menu in the Chat composer listing Chats, Tables, Files, Knowledge Bases, Run history, Workflows, and Media models | What to add | How it appears | | ------------------ | -------------------------------------------------- | | **Workflow** | Interactive workflow builder in the resource panel | | **Table** | Full table editor in the resource panel | | **File** | File viewer with editor, split, and preview modes | | **Knowledge Base** | Knowledge base management UI | | **Folder** | Folder contents | | **Chat** | A previous Chat conversation | ## Layout [#layout] Chat has two panes. On the left: the chat thread, where your messages and Agent Serve's responses appear. On the right: the resource panel, where workflows, tables, files, and knowledge bases open as tabs. The panel is resizable; tabs are draggable and closeable. Chat thread on the left and the resource panel on the right with Help Center and Refund policy.md open as tabs ## Models and Effort [#models-and-effort] The two controls on the right of the composer set how Chat thinks: * **Model** — **Brain Auto** picks a model for each message. Choose a specific Brain model to pin it, or open **More models** for the rest. * **Effort** — **Auto** lets Chat decide how much reasoning each message needs. Choose **Fixed** to hold it at the level you set on the slider between **Faster** and **Smarter**. The model menu in the Chat composer with Brain Auto selected and More models at the bottom The effort menu in the Chat composer with Auto and Fixed modes and a Faster to Smarter slider Each reply shows the model and effort it used under the message. --- # Knowledge bases (/chat/knowledge) Chat creating the Help Center knowledge base and adding Refund policy.md, with both open in the resource panel Create a knowledge base, add documents to it, and query it in plain language — all through conversation. Knowledge bases you create in Chat are immediately available to Agent blocks in any workflow. ## Creating Knowledge Bases [#creating-knowledge-bases] Describe the knowledge base and Agent Serve creates it: * "Create a knowledge base called 'Product Docs'" * "Set up a knowledge base for our support team — call it 'Support KB'" * "Create a competitive intelligence knowledge base" * "Create a knowledge base from our sales playbook and attach it to the outbound agent workflow" * "Set up a customer success knowledge base — I'll add our onboarding guides and past case studies to it" ## Adding Documents [#adding-documents] Add documents by attaching files to your message, pasting text, or pointing Agent Serve at a URL: * "Add this PDF to the Product Docs knowledge base \[attach file]" * "Add the following text to the Support KB as a new document: \[paste content]" * "Fetch the page at \[URL] and add it to the competitive intelligence knowledge base" * "Add these three uploaded case studies to the customer success knowledge base" Agent Serve processes and indexes each document automatically. Once indexed, the content is searchable by any Agent block that has the knowledge base attached. {/* TODO: Screenshot of Agent Serve confirming a document was added and indexed — showing the document name and its indexed status in the knowledge base. */} ## Querying Knowledge Bases [#querying-knowledge-bases] Ask Agent Serve a question and it searches the specified knowledge base to answer: * "What does the Product Docs knowledge base say about our refund policy?" * "Search the Support KB for anything related to SSO setup errors" * "What are the key differences between our Pro and Enterprise plans, based on the product docs?" * "Find everything in the competitive intelligence knowledge base about \[competitor]'s pricing" ## Connectors [#connectors] For knowledge bases that should stay current automatically, connectors sync content from external services on a schedule — no manual uploads needed. New content is added, changed content is re-processed, and deleted content is removed on every run. Connectors are configured through the knowledge base settings, not through Chat. Once connected, all synced content is immediately searchable by Agent Serve and by any Agent block with the knowledge base attached. Use a [connector](/knowledgebase/connectors) to sync sources such as Notion, Google Drive, Slack, GitHub, or Confluence. Examples of what you can sync: * **Notion** — sync a workspace, a database, or a specific page tree * **Google Drive / Dropbox / OneDrive** — sync documents from cloud storage * **GitHub** — sync a repository's markdown and code files * **Slack** — sync channel history * **Confluence / Jira** — sync your internal wiki or issue tracker * **HubSpot / Salesforce** — sync CRM records into a searchable knowledge base See [Connectors](/knowledgebase/connectors) for setup steps, sync frequency options, and managing connector status. ## Managing Knowledge Bases [#managing-knowledge-bases] List, inspect, and clean up knowledge bases in plain language: * "What knowledge bases are in this workspace?" * "How many documents are in the Support KB?" * "Remove the outdated pricing doc from the Product Docs knowledge base" * "Delete the old-competitive-intel knowledge base" ## Using Knowledge Bases in Workflows [#using-knowledge-bases-in-workflows] Knowledge bases created in Chat are immediately available to Agent blocks in any workflow. Attach a knowledge base to an Agent block and it will use semantic search to retrieve relevant content at runtime. See [Knowledge Base](/knowledgebase) for full details on document processing settings, search configuration, and connector syncing. --- # Agent Serve Mailer (/chat/mailer) Agent Serve Mailer gives your workspace a dedicated email address. Forward or send emails to it and Agent Serve will process them as tasks — reading the subject, body, and any attachments, then replying to the thread with the result. ## Getting Started [#getting-started] 1. Navigate to **Settings** → **Inbox** 2. Toggle the inbox on 3. Optionally choose a custom address prefix (e.g., `acme` → `acme@`) 4. Copy your inbox address and start sending emails If you skip the custom prefix, one is generated automatically. Changing your address creates a new inbox. The old address stops working immediately. ## What You Can Send [#what-you-can-send] Write your email like you would to a colleague. The subject and body become the task prompt. **Attachments are fully supported.** Images, PDFs, and documents (up to 10 MB each) are read by Agent Serve and displayed inline in the conversation; images show as previews. | Good email | Why it works | | -------------------------------------------------- | ----------------------------------------- | | "Summarize the attached PDF and list action items" | Clear task with an attachment | | "What's in this image?" with a photo attached | Agent Serve reads and describes the image | | "Draft a reply to this forwarded thread" | Uses the email body as context | ## Allowed Senders [#allowed-senders] Only authorized senders can create tasks. Emails from anyone else are automatically rejected. * **Workspace members** are allowed by default — no setup needed * **External senders** can be added manually with an optional label for easy identification External senders are email addresses that can create inbox tasks. They are not the same as external workspace members, who have workspace access in Agent Serve without joining your organization. Manage your allowed senders list in **Settings** → **Inbox** → **Allowed Senders**. ## Tracking Tasks [#tracking-tasks] Every email becomes a task you can track in **Settings** → **Inbox**: * **Search** by subject, sender, or body content * **Filter** by status to find what you need * **Click** any completed or failed task to jump to the full conversation ### Task Statuses [#task-statuses] | Status | Meaning | | -------------- | ---------------------------------------------------------------------------- | | **Received** | Email accepted, queued for processing | | **Processing** | Agent Serve is actively working on it | | **Completed** | Done — the result was sent as an email reply | | **Failed** | Something went wrong during execution | | **Rejected** | Email blocked (sender not allowed, automated sender, or rate limit exceeded) | ## Conversations [#conversations] Each email task creates a conversation in your workspace. You can continue the conversation in Chat, and any follow-up emails in the same thread are linked to the same conversation. --- # Research (/chat/research) Ask Agent Serve to research anything and it figures out the best approach — searching the web, reading specific pages, crawling sites, looking up technical docs. Just describe what you want to know. ## Asking Questions [#asking-questions] Ask anything — about a company, a competitor, a market, a technical question, or a specific URL: * "What did Salesforce, HubSpot, and Gong each ship in the past 30 days? Summarize the key product updates." * "What's Acme Corp's tech stack, recent hires, and open engineering roles?" * "Find everything published about \[competitor] in the past 90 days — press, product changes, job postings." * "What are the current rate limits on the Anthropic API?" * "Read \[URL] and tell me what changed in this release" * "What does Stripe's API say about handling webhooks with idempotency keys?" * "Who are the main players in AI-powered revenue operations, and how do they differentiate?" Agent Serve returns an answer directly in the chat. For anything that needs a longer written output, ask it to save the result as a file. ## Research Reports [#research-reports] When you need a structured, saved document rather than a chat answer, ask Agent Serve to write it up. Agent Serve searches, reads, and cross-references multiple sources until it has enough to produce a full report. The output is saved as a file in your workspace and opened in the resource panel. {/* TODO: Screenshot of a completed research report open in the resource panel as a file — showing a structured markdown document with sections, findings, and citations. */} * "Research the top 10 AI SDR tools — pricing, features, positioning, and what customers say. Save as a competitive analysis." * "Do a full market landscape for AI in healthcare diagnostics — major players, funding, use cases, and regulatory environment." * "Research how our top 5 competitors handle multi-tenant auth — pricing, architecture, and any known vulnerabilities. Write it up as a report." * "Find every public case study on AI agents in financial compliance from the past 2 years. Summarize the key outcomes and save as a markdown file." * "Build a battle card for \[competitor] — their positioning, pricing, strengths, weaknesses, and how we win against them." --- # Tables (/chat/tables) Create a table from a description or a CSV, query it in plain language, add or update rows, and export the results — all through conversation. Tables open in the resource panel as soon as they're created or referenced. ## Creating Tables [#creating-tables] Describe the schema and Agent Serve creates the table: * "Create a leads table with columns for name, email, company, status, and created date" * "Create a table that matches the structure of this CSV \[attach file]" * "Set up an errors table with: id (text), message (text), workflow (text), timestamp (date), resolved (boolean)" * "Create a prospect table for outbound — company, domain, employee count, industry, ICP score, and last contacted date" * "Set up an enrichment results table to store output from the lead enrichment workflow: email, company, title, LinkedIn URL, fit score" ## Querying Data [#querying-data] Ask questions about table contents in plain language: * "How many rows in the leads table have status 'qualified'?" * "Show me all records from the past 7 days where score is above 0.8" * "What are the top 5 most common error messages in the failures table?" * "Are there any duplicate emails in the contacts table?" * "How many prospects have an ICP score above 0.75 and haven't been contacted in the past 30 days?" * "What's the conversion rate from 'contacted' to 'meeting booked' in the pipeline table this month?" Agent Serve translates the question into a structured query and returns the results. ## Adding and Updating Rows [#adding-and-updating-rows] Add individual rows, bulk-update based on a condition, or delete records — all in plain language: * "Add a row to the leads table: Acme Corp, [jane@acme.com](mailto:jane@acme.com), status pending" * "Mark all rows in the queue table as processed where created\_at is before today" * "Update the price column for all rows where tier is 'pro' to 49" * "Delete all rows in the test\_events table" ## Exporting [#exporting] Export a full table or a filtered subset as a CSV. The file is saved to your workspace and can be downloaded or referenced in other workflows: * "Export the leads table to a CSV" * "Export all rows where status is 'closed' and save as a file" ## Using Tables in Workflows [#using-tables-in-workflows] Tables created in Chat are immediately available in workflows via the [Table tool](/integrations/table). Reference a table by name — no additional configuration needed. --- # Automation & configuration (/chat/tasks) Agent Serve can act on your behalf right now — send a message, create an issue, call an API — or on a schedule, running a prompt automatically every hour, day, or week. It can also connect integrations, set environment variables, add MCP servers, and create custom tools. ## Scheduled Jobs [#scheduled-jobs] A scheduled job is a saved Chat prompt that runs on a cron schedule. On each run, Agent Serve reads the current workspace state and executes the job's prompt as if you had just sent it. ### Creating a Job [#creating-a-job] Describe the recurring task and how often it should run: * "Every morning at 8am, check the leads table for new entries and post a summary to #sales in Slack" * "Every Monday at 9am, pull last week's workflow run counts and write a report to the workspace" * "Run the data sync workflow every 6 hours" * "On the first of every month, export the billing table to CSV and email it to [finance@example.com](mailto:finance@example.com)" * "Every weekday at 7am, check for new funding announcements from companies in our ICP and post the top 5 to #market-intel in Slack" * "Every Sunday night, run the lead enrichment workflow on all prospects added in the past week and update their scores in the table" * "Daily at 6am, pull the previous day's workflow errors, summarize the top issues, and post to #eng-alerts" Agent Serve sets the cron expression and stores the job prompt. The first run happens at the next scheduled time. ### Viewing Job Logs [#viewing-job-logs] * "Show me the last 5 runs of the weekly report job" * "Did the sync job run successfully this morning?" * "What did the Monday digest job do last week?" Logs show run time, status (completed, failed), and a summary of what the agent did. ### Managing Jobs [#managing-jobs] * "Pause the morning summary job" * "Change the sync job to run every 3 hours instead of 6" * "Delete the onboarding digest job" * "What scheduled jobs are currently active?" ## Taking Direct Action [#taking-direct-action] For requests that should happen right now — without building a workflow — just ask. Agent Serve acts immediately using the credentials connected to your workspace. {/* TODO: Screenshot of Chat showing the "Taking action" subagent label active during a direct action — e.g., posting to Slack or sending an email. Shows the subagent inline in the chat thread. */} | Request | What happens | | -------------------------------------------------------------------------- | ------------------------------------ | | "Send a Slack message to #eng that the deploy finished" | Posts to Slack immediately | | "Email the Q3 report to [jane@example.com](mailto:jane@example.com)" | Sends via connected Gmail or Outlook | | "Create a GitHub issue: auth tokens not rotating on logout" | Opens an issue in the specified repo | | "Add a contact to HubSpot: Acme Corp, [ceo@acme.com](mailto:ceo@acme.com)" | Creates the contact via HubSpot API | | "Call the webhook at \[URL] with this JSON payload" | Makes the HTTP request | If an integration isn't connected, Agent Serve walks you through connecting it. ## Connecting Integrations [#connecting-integrations] Agent Serve can connect new OAuth integrations and API credentials on demand: * "Connect my Google account" * "Add the Slack workspace for our team" * "Set up GitHub with my personal access token" {/* TODO: Screenshot of Agent Serve walking through connecting an integration — e.g., the Integration subagent active with an OAuth prompt or confirmation that a credential was connected. */} Once connected, Agent Serve can use the account for authorized actions. Configure a workflow to use the intended available credential. Select the intended account when configuring each integration. Which credentials are available depends on their ownership, sharing settings, and workspace policy. See [credentials](/platform/credentials). See [Credentials](/platform/credentials) for managing connected accounts. ## Environment Variables [#environment-variables] Save API keys, connection strings, and configuration under **Secrets**, then reference them with `{{ENV_VAR}}`. Choose personal or workspace scope according to who should use the value. See [secrets](/workflows/variables#environment-variables). * "Set the DATABASE\_URL environment variable to 'postgres\://...'" * "Add an OPENAI\_API\_KEY environment variable" * "Add a WEBHOOK\_SECRET variable for the inbound webhook workflow" * "Update the SCORING\_API\_URL variable to point to the new endpoint" * "What environment variables are currently set?" {/* TODO: Screenshot of Agent Serve confirming an environment variable was set — e.g., a response message showing the variable name was saved. */} ## MCP Servers [#mcp-servers] MCP (Model Context Protocol) servers expose tools from external services that Agent blocks can call inside workflows. Connecting an MCP server makes all of its tools available in the workflow editor's tool picker — no custom integration code required. Agent Serve can add and manage MCP servers connected to your workspace: * "Add the Stripe MCP server using my API key" * "Remove the old analytics MCP server" * "What MCP servers are connected to this workspace?" * "Update the endpoint for the internal tools MCP server to \[URL]" Once added, MCP tools appear in the workflow editor's tool picker and can be called from any Agent block. {/* TODO: Screenshot of Agent Serve confirming an MCP server was added or updated — showing the server name and its status. */} ## Custom Tools [#custom-tools] [Custom tools](/agents/custom-tools) combine a JSON parameter schema with a JavaScript function body. Use one for an internal API call, calculation, or reusable transformation, then add it to an Agent block's tools. Agent Serve can build custom tools from a description: * "Create a custom tool that calls our internal scoring API at \[URL] with a POST request and returns the score field" * "Build a tool for our Zendesk instance that creates a ticket with a subject and body" * "Create a tool that hits our internal enrichment API with a domain and returns company size, industry, and funding stage" * "Add a tool that calls our CRM's REST API to look up a contact by email and return their account owner" {/* TODO: Screenshot of Chat with the Custom Tool subagent active — showing it building a tool definition. */} --- # Workflows (/chat/workflows) Chat describing a support triage workflow it built, with the workflow open in the resource panel Describe a workflow and Agent Serve builds it. Reference an existing one by name and Agent Serve edits it. No need to open the workflow builder — every change appears in the resource panel in real time. ## Creating Workflows [#creating-workflows] Describe what the workflow should do — what triggers it, what it should do, which integrations it needs, and what it should return. Agent Serve builds it and opens the workflow in the resource panel. * "Build a workflow that takes a URL, scrapes the page, summarizes it with Claude, and sends the summary to a Slack channel" * "Create a workflow triggered by a webhook that extracts invoice data from a PDF and writes it to the billing table" * "Build an outbound workflow: take a company name and domain, enrich it with firmographic data, score the fit, and draft a personalized cold email" * "Create a lead enrichment workflow that takes an email from a form submission, looks up the company, and writes the enriched record to the leads table" * "Build a customer onboarding workflow: when a new user signs up, send a welcome email, create a HubSpot contact, and post a notification to #new-customers in Slack" ## Editing Workflows [#editing-workflows] {/* TODO: Screenshot of Chat with the Edit subagent active and a change applied to an open workflow — e.g., a new block added or a configuration updated, visible on the workflow in the resource panel. */} Open an existing workflow with `@workflow-name` or the **+** menu, then describe the change. Agent Serve reads the current structure before modifying it — you don't need to explain what already exists. * "Add a condition that routes to a different branch if the confidence score is below 0.7" * "Replace the GPT-4o model with Claude Opus 4.6 on the summarizer block" * "Add a Slack notification at the end that includes the output" ## Running Workflows [#running-workflows] Ask Agent Serve to run a workflow and it handles the execution: * "Run the data sync workflow" * "Run the invoice processor with this PDF \[attach file]" * "Test the lead scoring workflow with these inputs: name=Acme, score=0.4" Execution streams back to the chat. The workflow in the resource panel shows live block-by-block state. ## Reading Logs [#reading-logs] Agent Serve can retrieve and interpret execution logs for any workflow in the workspace: * "Show me the last 10 runs of the pipeline workflow" * "Why did the invoice workflow fail yesterday?" * "What did the extractor block return in the most recent run?" Logs include per-block execution state, outputs, errors, and timing. ## Debugging [#debugging] When a workflow fails, tell Agent Serve to debug it: * "Debug the last failed run of the content pipeline" * "The summarizer block is returning empty output — figure out why" Agent Serve reads the failure logs, identifies the cause, applies a fix, and can re-run to confirm. {/* TODO: Screenshot of the Debug subagent section in Chat showing it reading logs and applying a fix. */} ## Deploying [#deploying] Agent Serve can deploy a workflow as any of the three deployment types: | Deployment type | What it creates | | --------------- | -------------------------------------------------------------------------------------- | | **API** | A REST endpoint at `https://agentserve.valnoraelric.com/api/v2/workflows/{id}/execute` | | **Chat** | A hosted conversational interface with a shareable URL | | **MCP tool** | An MCP server that exposes the workflow as a tool | Ask: "Deploy the invoice workflow as an API and generate an API key." Agent Serve can also roll back: "Revert the billing workflow to the version from last Tuesday." See [API Deployment](/workflows/deployment/api) and [Chat Deployment](/workflows/deployment/chat) for full details on each deployment type. ## Organizing Workflows [#organizing-workflows] Agent Serve can create and manage folders to keep your workspace organized. **Folders:** * "Create a folder called 'Data Pipelines'" * "Move the invoice workflow into the billing folder" * "Move the billing folder inside the finance folder" * "Delete the old-experiments folder" **Renaming and moving:** * "Rename the 'test\_v2' workflow to 'lead-scorer'" * "Move the summarizer workflow to the research folder" {/* TODO: Screenshot showing Agent Serve confirming a folder or workflow organization action — e.g., a message confirming "Moved 'invoice-processor' into 'billing' folder" with the resource panel showing the folder open. */} ## Workflow Variables [#workflow-variables] Agent Serve can set global variables on a workflow — values accessible across all blocks in that workflow at runtime: * "Set the API\_ENDPOINT variable on the sync workflow to '[https://api.example.com/v2](https://api.example.com/v2)'" * "Update the MAX\_RETRIES variable on the pipeline workflow to 5" Variables set this way are available via `` syntax inside any block in the workflow. ## Deleting Workflows [#deleting-workflows] * "Delete the old\_api\_prototype workflow" * "Delete all workflows in the deprecated folder" --- # AI in dashboards (/dashboards/ai) ## Describe with AI [#describe-with-ai] In the builder, **Add panel → Describe with AI** turns a plain-English request — "monthly revenue by channel as a stacked bar" — into panel proposals. You choose **Data the AI may use**, the **Time range**, and **How many proposals**. Each proposal shows what data it reads before you add it. ## Change with AI [#change-with-ai] On a panel's **AI** tab, describe a change (for example, "make it a line chart by month") and the panel is updated. The dashboard must be saved first; otherwise you see **Save the dashboard first to change panels with AI.** ## Explain this chart [#explain-this-chart] **Explain this chart** in a panel's menu writes a short summary of what the panel shows and what stands out. ## Ask about this dashboard [#ask-about-this-dashboard] **Ask about this dashboard** opens a chat about the dashboard, so you can ask follow-up questions about its numbers. ## AI filters [#ai-filters] On the **Filters** tab, **Ask AI to add or change filters…** adds or edits filters from a description. See [Filters](/dashboards/filters-and-parameters). AI features need a model configured for your deployment. If none is set up, you will see a message such as **AI summary is not configured on this server.** --- # Formulas and calculations (/dashboards/calculations) ## Formulas [#formulas] The **Formulas** tab in the builder holds dashboard-wide formulas. Each has a **Name**, a **Formula**, and **Show as** — **Number**, **Money**, or **Percent**. Formulas can use [parameters](/dashboards/filters-and-parameters#parameters), so a viewer can change an assumption and see every formula update. For numbers your whole team should agree on, define them once as [metrics](/data/metrics) instead, and use the metric in any dashboard. ## Calculated fields [#calculated-fields] A **calculated field** adds a new column to one panel's data, computed from other columns. Add one on the panel's **Data** tab under **Calculated fields** with **Add calculated field**. ## Comparisons [#comparisons] On a panel's **Data** tab, the **Comparison** section sets **Compare with** to **None**, **Previous period**, or **Same period last year**. KPI cards and charts then show the change against that period. ## Combine sources [#combine-sources] **Combine sources** on the **Data** tab opens the blend builder. **Add source** brings in another table or dataset, and **Shared keys** says which columns match between them — for example, a customer ID in both. The panel then shows **Blended data**, and **View data** shows which source each column came from. --- # Call Compliance (/dashboards/call-compliance) **Call Compliance** checks recorded conversations — sales calls, collections calls, support chats — against a checklist you define, and scores each one. It lives inside a dashboard as a **Transcript upload** panel, so the transcripts, the scores, and the charts about them sit together. Create a dashboard from the **Call Compliance** template to get a transcript panel plus compliance KPIs and charts, or add a **Transcript upload** panel to any dashboard. (The old **Conversations** page now opens your Call Compliance dashboard.)
A Call Compliance dashboard with filters for period, agent, team, channel, and compliance status, and a Transcripts panel listing uploaded calls with their score and Pass, Fail, or Critical breach status
## Upload transcripts [#upload-transcripts] Click **Upload transcripts** in the panel. You can bring transcripts in four ways: * **Upload files** — `.txt`, `.vtt`, `.srt`, `.docx`, `.pdf`, `.json`, or `.md`. Uploaded files are also saved to a **Transcripts** folder in the [Library](/files). * **Paste text** — write each line as `Speaker: text`, and separate transcripts with a line of `===`. * **CSV** — a `.csv` or `.tsv` file with one conversation per row, and the dialogue in a column named `transcript`, `conversation`, or `text`. * **Library folder** — pick transcripts already in the Library. Click **Preview** to check what will be imported, then **Import**. Limits: up to 15 MB per file, 200 files and 100 MB per upload, and 1,000 conversations per import. Very long transcripts (over 60,000 characters) are trimmed in the middle before analysis. Each transcript shows **Waiting**, **Processing**, **Done**, or **Failed**, then its score and status. ## Configure checks [#configure-checks] Open the panel's settings. Under **Transcripts**, choose the **Conversations table** (or **Upload to a new table**) and how many rows to **Show at most** (default 8, up to 50). Under **Compliance checks**, click **Configure checks** to open a four-step wizard: 1. **Checklist.** **Start from a checklist** — **Financial services sales calls**, **Collections**, **Healthcare**, or **Support QA** — or build your own. **Add a custom check** with a name, a severity (**Low**, **Medium**, **High**, or **Critical**), and **What to look for**. Up to 25 checks. A failed **Critical** check counts as a critical breach. 2. **Analytics.** Pick the **Columns to analyze** (transcript, agent, channel), add up to 10 custom fields (text, number, or yes/no), and give **Context for the reviewer**. 3. **Test.** **Test on sample transcripts** runs your checks and analytics on up to three transcripts from the table and shows the full result for each. Nothing is saved. Use **Run test again** after changing a check. 4. **Apply.** Choose what to run now — **Every row now**, **Rows not analyzed yet**, or **Do not run now** — and **Most rows per run** (default 500, up to 5,000). Tick **Analyze new rows automatically** to score new transcripts as they arrive. Click **Apply and run**.
The Test step of the checks wizard: a sample call passes recording consent, disclosures, risk warning, and suitability checks, each with a quoted line from the transcript
## The compliance report [#the-compliance-report] Click a transcript to open its **Compliance report**. It shows: * The overall status (**Pass**, **Fail**, or a critical breach), the compliance **Score**, and a **QA** score. * Every check with **Pass**, **Fail**, or **N/A**, its severity, the reason, and a quote from the transcript as evidence. A quote that could not be matched word for word is marked **Not found verbatim**. * Insights: sentiment, intent, topics, objections, competitors, next steps, escalation risk, and how much the agent talked, plus your custom fields.
A compliance report for one call: Fail, score 7.7, with recording consent and disclosures failed and other checks marked not applicable with reasons
Scores and findings come from an AI model reading the transcript. Use the evidence quotes to check each finding before acting on it. Transcripts are never shown on viewer links. --- # Exploring dashboards (/dashboards/exploring) ## Drill down and see rows [#drill-down-and-see-rows] Click a point on a chart to open its menu: * **Drill into** the next level of a hierarchy (for example, from region to country). **Drill up** goes back. * **Filter dashboard by this** applies the clicked value as a filter. * **See rows** opens the rows behind that point. * **Go to** another view of the dashboard, if the panel links to one. * **Annotate this point**. From a panel's menu, **See rows** (or **See all rows**) opens every row behind the panel in a sheet you can search (**Search rows…**) and download with **Export CSV**. **View data** shows the query result and, for [blended](/dashboards/calculations#combine-sources) panels, where each column came from. Rows always respect [row security](/dashboards/governance#row-security). ## Bookmarks [#bookmarks] A bookmark saves the current filters and view so you can come back to them. Open **Bookmarks** in the header and use **Save bookmark**, **Rename bookmark**, and **Delete bookmark**. Each bookmark is **Only me** or **Everyone**, and one can be the default. Bookmarks are grouped into **Shared with everyone** and **Personal**. ## Annotations and notes [#annotations-and-notes] Mark what happened at a point in time — a price change, an outage, a campaign launch. Use **Annotate this point** on a chart point, or **Annotate chart** from the panel menu. Type the note (**What happened here?**) and pick a colour. **Notes** in the panel menu holds longer notes about the panel. Annotations can also be managed on the panel's **Interactions** tab. ## Explain this chart [#explain-this-chart] **Explain this chart** in a panel's menu writes a short plain-English summary of what the chart shows. See [AI in dashboards](/dashboards/ai). ## Explore a personal version [#explore-a-personal-version] If you can view a dashboard but not edit it, click **Explore**. You get a personal layer on top of the shared dashboard where you can change panels, filters, and layout. * **Save as my view** keeps your version. The button then reads **Edit my version**. * **Submit to owner** sends your changes to the dashboard owner, with a **Note for the owner**. * **Save as new dashboard** copies your version into a dashboard of your own. * **Switch to shared dashboard** goes back to the shared version, and **Reset to the shared dashboard?** discards your changes. Your version is labelled **Only you**, **Waiting for the owner**, **Accepted by the owner**, or **Not accepted**. Owners see **Review personal versions**, where they can accept or **Reject** submitted changes. --- # Filters and parameters (/dashboards/filters-and-parameters) ## Filters [#filters] Filters sit above the panels and narrow the data every connected panel shows. Add and arrange them on the **Filters** tab of the builder. Filter types: | Type | Use it for | | ---------------- | ------------------------------------------------------------ | | **Select** | Pick one or more values from a list | | **Date range** | A period, such as last 30 days or a custom range | | **Text** | Free-text matching | | **Number range** | A minimum and maximum | | **Boolean** | Yes or no | | **Condition** | Several conditions combined with AND or OR | | **Top N** | Keep only the top (or bottom) N items by a measure | | **Measure** | Filter on an aggregated value | | **Hierarchy** | Pick a level in a hierarchy, such as region → country → city | You can also type a request into **Ask AI to add or change filters…** on the Filters tab. **Viewers apply filters with** decides how changes take effect for viewers: immediately, or batched behind an **Apply filters** button that shows how many changes are waiting. A selections bar shows what is applied and can clear everything at once. Filters respect [row security](/dashboards/governance#row-security): a filter only ever narrows what a person is already allowed to see. ## Parameters [#parameters] A **parameter** is a value a viewer can change that panels and formulas use — a target, a currency, an assumption such as a discount rate. Add one on the **Parameters** tab with **Add parameter**, and save it with **Save parameter**. Kinds include **Select (choices)**, **Currency**, **Date**, **Text**, and assumption values such as amounts and percentages. Choose which panels respond to a parameter on each panel's **Parameters** tab, and use parameters inside [formulas](/dashboards/calculations#formulas). ## Scenarios [#scenarios] Dashboards with parameters can have saved **scenarios** — named sets of parameter values such as Base, Best, and Worst. Switch scenarios from the **Scenario** picker in the header, and save the current values with **Save scenario**, choosing **Only me** or **Everyone** under **Who can see it**. See [Scenario models](/dashboards/scenarios). --- # Row security and version history (/dashboards/governance) Both settings live on the **Settings** tab of the dashboard builder. Row security can also be set on a table's **Share** sheet, so it applies everywhere that table is used. ## Row security [#row-security] **Row security** decides which rows each person sees. It is enforced on every chart, KPI, **See rows**, export, scheduled report, and viewer link — and it narrows every viewer link further. A policy has: * **Name** * **Applies to** — **A person**, **A team**, or **Everyone (except admins)** * **Rows they see** — one or more conditions (column, operator, value). All conditions must hold. Values can use `{{user.email}}`, `{{user.id}}`, `{{user.name}}`, and `{{user.emailDomain}}` to match the person who is reading, and list values are separated by commas. * **Status** — enforced or not
The Edit row security policy dialog: a policy named Rep: retail book only applies to one demo person and shows only rows where segment is Retail
Use **Add policy** to create one and **Preview as** to check what a particular member would see before you save. On a table, the **Share table** sheet also lets you choose who can see the table at all (**Everyone in the team space** or **Only people you choose**) and restrict individual columns to named people and teams.
The Share table sheet with Who can see this, People and teams, Restricted columns, and Row security sections
## Version history [#version-history] Every save is kept as a version — up to the last 100. Open **Version history** in Settings and pick a version to see what changed: panels, filters, and views **Added**, **Removed**, or **Changed**. Switch between **Changes in this version** and **Compared with now**, then click **Restore this version** to bring it back. Restoring is itself saved as a new version, so you can always undo it.
A version history dialog listing one panel removed, one filter changed, and one view changed, with a Restore this version button
--- # Dashboards (/dashboards) A **dashboard** is a page of panels — charts, KPI cards, tables, pivots, maps, and text — built on your [tables](/tables), [datasets](/data/data-sources), and [metrics](/data/metrics). Open **Team spaces → Dashboards** to see them. ## The dashboards list [#the-dashboards-list] * **New dashboard** starts an empty dashboard. **Start from a template** opens the template gallery, and a **Recommended for you** strip suggests templates that fit your data. * Tabs: **All dashboards**, **My dashboards**, and **Shared with me**. A **Certified** filter shows only [certified](/dashboards/sharing-and-reports#certification) dashboards. * Sort by **Last updated**, **Date created**, or **Name**, and switch between list and grid views. * A row's menu has **Open** and **Delete dashboard**. Deleting removes its panels and layout permanently. ## Templates [#templates] Templates build a dashboard on **your own tables**. You pick which table fits each part. The gallery includes **Executive overview**, **Revenue trend**, **Pipeline tracking**, **Product performance**, **Customer segmentation**, **Operational metrics**, **Geographic analysis**, **Support tickets**, and **Call Compliance**. ## Viewing, editing, and exploring [#viewing-editing-and-exploring] A dashboard opens in view mode. Across the top are the title, any [certification](/dashboards/sharing-and-reports#certification) badge, **Bookmarks**, **Share**, a **…** menu, and **Edit** if you can edit it. Dashboards can have several **views**, shown as tabs under the description. * **Edit** opens the builder. A rail on the side has six tabs: **Build**, **Filters**, **Parameters**, **Formulas**, **Themes**, and **Settings**. Use **Undo**, **Redo**, and **Preview** while you work, then **Save** and **Done** — or **Discard** to throw away your changes. * **Explore** is for people who can view but not edit. It creates a personal version you can change and save without touching the shared dashboard. See [Exploring dashboards](/dashboards/exploring#explore-a-personal-version). The **…** menu has **Edit details…**, **Duplicate**, **Export…**, and **Explore a personal version** (or **Edit my personal version** once you have one). ## Limits [#limits] A dashboard can have up to 120 panels, 24 filters, 20 views, and 16 parameters, laid out on a 12-column grid. --- # Panels (/dashboards/panels) In the builder, click **Add panel** to open the panel library. It is grouped into **KPIs**, **Charts**, **Data & tables**, **Maps & geo**, and **Cards & text**, with extra sections for **For you** suggestions, **Describe with AI**, **Templates**, and **Connect your data**. ## Panel types [#panel-types] | Group | Panels | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **KPIs** | **KPI card** and **Gauge** — a single number, with optional comparison and target | | **Charts** | Line, Bar, Area, Horizontal bar, Stacked bar, 100% stacked bar, Combo, Dual axis, Donut, Pie, Funnel, Scatter plot, Bubble, Heatmap, Treemap, Sunburst, Radar, Sankey, Waterfall, Box plot, Histogram, and Gauge chart | | **Data & tables** | **Table** and **Pivot table**. A pivot can be exported to Excel (XLSX). | | **Maps & geo** | Map, Bubble map, Cluster map, Heat map, and Region map | | **Cards & text** | **Cards** (a feed of rows, useful for alerts and recommendations), **Transcript upload** (see [Call Compliance](/dashboards/call-compliance)), **Text** (Markdown), and **Section header** | ## The inspector [#the-inspector] Select a panel to open its inspector. Data panels have these tabs: | Tab | What you set | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Data** | The source, fields, aggregation, sorting, [calculated fields](/dashboards/calculations#calculated-fields), [comparisons](/dashboards/calculations#comparisons), and [blended sources](/dashboards/calculations#combine-sources) | | **Parameters** | Which [parameters](/dashboards/filters-and-parameters#parameters) the panel responds to | | **Logic** | How the value is calculated — row inclusion, transforms, null and error handling, state and colour rules, whether it ignores dashboard filters, and its provenance (why it has its value) | | **Appearance** | Chart type, colours, labels, number formats, and layout | | **Interactions** | What clicking does — drill, filter the dashboard, go to a view — and [annotations](/dashboards/exploring#annotations) | | **AI** | **Change with AI** — describe a change in plain words. See [AI](/dashboards/ai). | | **Access** | Who can see the panel | Text and section panels only have **Appearance** and **Access**. ## Per-panel actions [#per-panel-actions] Each panel's menu offers actions such as **See rows**, **View data**, **Explain this chart**, **Notes**, **Annotate chart**, **Export PNG**, **Download CSV**, and, on KPI cards, **Alert me when…**. See [Exploring dashboards](/dashboards/exploring) and [Sharing and reports](/dashboards/sharing-and-reports). --- # Scenario models (/dashboards/scenarios) A **scenario model** is a dashboard where viewers change assumptions — deal size, discount, term, cost to serve — and every number and chart updates. The demo workspace includes a **Deal Simulator** built this way: assumptions go in, and ARR, total contract value, margin, NPV, IRR, and payback come out, with scenario comparison, sensitivity, and goal seek. ## What you can use today [#what-you-can-use-today] * **[Parameters](/dashboards/filters-and-parameters#parameters)** hold the assumptions viewers change. * **[Formulas](/dashboards/calculations#formulas)** compute the outputs from those parameters. * **Scenarios** — the **Scenario** picker in the header switches between saved sets of values such as **Base**, **Best**, and **Worst**. **Save scenario** stores the current values for **Only me** or **Everyone**. * KPI cards and charts show the results. The dedicated input, form, and scenario panels used in the demo Deal Simulator (assumption inputs, a "log this deal" form that writes back to a table, scenario comparison, sensitivity, and goal seek) can't yet be added or configured from the panel library. They appear in dashboards created from the demo data. Build your own what-if dashboards with parameters, formulas, and scenarios. --- # Sharing and reports (/dashboards/sharing-and-reports) ## Share with your team [#share-with-your-team] Open **Share** in the dashboard header (it reads **Restricted** when access is limited) and choose **Share access** to decide which people and teams can view or edit. Nobody gets more than their team-space role allows, and [row security](/dashboards/governance#row-security) still applies to everyone. ## Viewer links [#viewer-links] In **Share access**, **Publish a viewer link** creates a link for people outside the workspace. Choose the audience: * **Approved email addresses** * **Anyone with a password** — the password must be at least 15 characters * **Anyone with the link** You can also set an expiry date, **Lock current filters** (or **Clear locks**) so viewers can't change them, **Allow data export**, and **Replace link when saving** so a new save issues a new link. Click **Publish link**, or **Save publishing settings** to update an existing one. A viewer link only exposes the columns the dashboard actually uses. Columns that no panel, filter, sort, or calculation needs are removed from the data before it is sent, and row security narrows each link further. Transcript panels are never shown on viewer links. ## Export [#export] From the **Share** menu: * **Export PDF…** — choose the pages, paper size (including US Letter), orientation, theme (**Dashboard theme** or **Print (white paper, high contrast)**), and whether to include the applied filters. * **Export PNG** — one view at a time. * **Print…** From a panel's menu, **Export PNG** saves one panel and **Download CSV** saves its data, one panel at a time. Pivot tables can also export to XLSX. ## Scheduled reports [#scheduled-reports] **Subscribe…** emails the dashboard on a schedule. Set: * **Frequency** — **Daily**, **Weekly**, or **Monthly**, and the **Time** * **Format** — **PDF**, **PNG image**, or **Link only**. PDF and PNG are unavailable when data export isn't allowed. * **Subject**, **Recipients**, **Outside addresses**, the **View** to send, and a **Message** Outside addresses are limited to the domains your admins allow. Manage everything you have set up in **Manage reports & alerts**, which also shows a delivery log. ## KPI alerts [#kpi-alerts] On a KPI card, **Alert me when…** sets an alert: * **Condition** — **Goes above**, **Drops below**, or **Changes by** a percentage * **Check** — **Every 15 minutes**, **Every hour**, **Every 6 hours**, **Once a day**, or **Once a week** * **Notify** — **Email me**, **In-app** (always on, shown on Monitors), and **Slack** After saving, **View in Monitors** opens the alert alongside your other [monitors](/data/monitors). **New KPI alert…** in the Share menu starts one from the header. The Slack option needs your administrator to set a workspace alert webhook. Until then it is disabled with a note saying so. ## Certification [#certification] **Certify** marks a dashboard as trusted for everyone ("Mark this dashboard as trusted for everyone"). Certified dashboards show a badge and can be filtered on the dashboards list. Any edit removes the certification — saving a certified dashboard asks **Save and remove certification?** — so use **Re-certify** after reviewing changes, or **Withdraw certification?** to remove it. --- # Themes (/dashboards/themes) Open the **Themes** tab in the builder to style the whole dashboard. ## Presets [#presets] Start from a preset: **Default**, **Midnight**, **Slate**, **Ocean**, **Forest**, **Sunset**, **High contrast**, **Colour-blind safe**, or **Print**. ## Settings [#settings] Fine-tune the theme with: * **Chart palette** — the series colours * **Colours** — backgrounds, text, and accents * **Cards** — panel background and border * **Corners** and **Spacing** * **Panel title size** and **Panel title weight** * **Numbers** — how values are formatted Themes have light and dark variants, so a dashboard follows each viewer's appearance setting. The **Print** preset and PDF export's print option use white paper and high contrast. --- # Agent Serve Desktop (/desktop) Agent Serve Desktop is the macOS app for your Agent Serve workspace. Everything the web app does, it does — plus the things a browser tab cannot: a built-in browser and terminal, read-only access to folders you pick, and native notifications when a task finishes. ## Download [#download] **[Download Agent Serve Desktop for macOS](https://agentserve.valnoraelric.com/api/desktop/update/download)** One universal build runs natively on both Apple Silicon and Intel Macs. It is signed and notarized by Agent Serve, so Gatekeeper accepts it with no override. That link is never version-pinned — it is a redirect resolved at request time, so it always lands on the newest release. Bookmark it, share it, or put it in an MDM policy; it stays correct. It resolves against agentserve.valnoraelric.com. Every deployment serves the same endpoint on its own origin, so if you self-host use yours — `https://agentserve.example.com/api/desktop/update/download` — to get the build your deployment offers. To install a specific version instead of the newest one, pick it from [the releases page](https://github.com/Suryanandx/agent-serve-platform/releases) and download that release's `AgentServe--universal.dmg`. ## Install [#install] ### Open the disk image and drag Agent Serve to Applications [#open-the-disk-image-and-drag-agent-serve-to-applications] Install to `/Applications`. macOS App Translocation runs an app from a randomized read-only path when it is launched from Downloads, which silently breaks auto-updates. ### Sign in [#sign-in] Launch Agent Serve and sign in as you normally would. Google, Microsoft, and SSO sign-ins finish in your default browser — those providers refuse to render inside an embedded browser. Agent Serve opens the page, you approve, and the browser hands the session back to the app. The app gets its own session, so signing out of one surface does not sign out the other. ### Point it at your deployment, if you self-host [#point-it-at-your-deployment-if-you-self-host] Fresh installs open agentserve.valnoraelric.com. To use your own deployment, choose **Agent Serve → Server…** in the menu bar and enter its URL. See [Desktop App on Your Deployment](/platform/self-hosting/desktop) for what changes when you switch. ## What the desktop app adds [#what-the-desktop-app-adds] * **A built-in browser.** A real browser inside the app, with its own tabs, saved passwords, and sessions. Chat can drive it — sign in once and your agents work on the sites you are already signed into. * **A built-in terminal.** Real shell sessions in a panel next to Chat, with tmux and shell integration, that Chat can run commands in. * **Local folder access.** When a task needs a folder on your Mac, Chat offers to open the native folder picker. The grant is read-only, scoped to the folder you picked, and revocable. * **Notifications.** A native notification when a Chat task finishes. Clicking it opens that chat. Tasks that end in an error, or that have another message queued behind them, do not notify. * **Control Center.** A menu-bar icon with your recent chats, so Agent Serve is one click away from any app. * **Launch at login.** Agent Serve starts with your Mac, and however you launch it, it opens where you left off. Both the browser and the terminal are capabilities you grant, not defaults you are stuck with — each has a single switch in settings that turns it off entirely. **What a folder grant does and does not do.** Granting a folder does not copy or upload it, and an agent cannot attach or stage a file from it — that stays your deliberate act. But when an agent reads or searches inside the grant, what it reads is a tool result, and tool results go to your Agent Serve server and to the model like anything else in the conversation. The file stays on your Mac; what an agent reads out of it does not. ## Keyboard shortcuts [#keyboard-shortcuts] These are the app's own shortcuts. The [workflow editor and table shortcuts](/keyboard-shortcuts) work the same in the app as in the browser. | Shortcut | Action | | ----------------------- | --------------------------------- | | `Cmd` + `K` | Search | | `Cmd` + `B` | Toggle the sidebar | | `Cmd` + `N` | New chat | | `Cmd` + `Shift` + `N` | New window | | `Cmd` + `,` | Settings | | `Cmd` + `[` | Back | | `Cmd` + `R` | Reload | | `Cmd` + `0` / `+` / `-` | Reset, increase, or decrease zoom | With the built-in browser or terminal focused, the tab shortcuts act on its tabs rather than on the window: | Shortcut | Action | | ----------------------------------------- | ------------------------------------ | | `Cmd` + `T` | New tab | | `Cmd` + `W` | Close tab | | `Cmd` + `Shift` + `T` | Reopen the last closed tab | | `Ctrl` + `Tab` / `Ctrl` + `Shift` + `Tab` | Next / previous tab | | `Cmd` + `1`–`8` | Jump to that tab | | `Cmd` + `9` | Jump to the last tab | | `Cmd` + `L` | Focus the address bar (browser only) | | `Cmd` + `F` | Find on the page (browser only) | ## Settings [#settings] The desktop app adds three sections under **Settings → Account**. They appear only when you are running the app, and they apply to this Mac rather than to your account. ### Desktop [#desktop] * **Launch Agent Serve at login** * **Show Agent Serve in Control Center** — the menu-bar icon * **Automatically download updates** * **Enable desktop notifications**, with **Play notification sounds** and **Notify only when Agent Serve isn't focused** It also shows the installed version, and the version waiting to be applied when an update is ready. ### Browser [#browser] * **Let Chat browse the web** — the master switch for the built-in browser * **Search suggestions**, **Theme**, **Default zoom**, and **Download location** * **Browsing data** — clear cookies, site data, and cached images and files ### Terminal [#terminal] * **Let Chat run commands** — the master switch for the built-in terminal * **Theme** and **Default zoom** The menu bar carries the rest: **Agent Serve → Settings…** (`Cmd` + `,`), **Server…** to change deployments, **Check for Updates…**, and **Sign Out**. ## Updates [#updates] Agent Serve checks the deployment it is pointed at rather than a global feed. How it applies what it finds depends on how the app was installed. Nothing is ever forced mid-session either way. **Installed in `/Applications`, signed by Agent Serve** — what the download link above gives you. The app replaces itself. With **Automatically download updates** on, it downloads in the background and offers to restart; choose **Later** and the update applies the next time you quit. With it off, nothing downloads until you ask: **Agent Serve → Check for Updates…** reports the available version and waits for you to choose **Download**. **Anywhere else** — outside `/Applications`, or a build not signed with a Developer ID. The app cannot replace itself, so it offers you the installer to download and swap in by hand. Updates come from the deployment you are connected to, so a self-hosted install controls which build its own users are offered. That control depends on the feed staying reachable: if it is not, a self-updating stable build falls back to Agent Serve's public GitHub releases rather than stalling. See [Desktop App on Your Deployment](/platform/self-hosting/desktop). ## Requirements [#requirements] * **macOS 12 Monterey or later**, on Apple Silicon or Intel. * **Outbound access to your Agent Serve deployment**, and to `github.com`, which is where installers and updates are downloaded from. * **If you self-host**, your Agent Serve server needs its own outbound access to both `api.github.com`, which is what resolves *which* release to offer, and `github.com`. An allowlist carrying only `github.com` leaves the download endpoint answering `502`. * **A system-trusted TLS certificate**, if you self-host. The app rejects certificate errors outright and offers no override, so a private CA must be installed in the macOS keychain. The desktop app is macOS-only today. The web app works in any browser on any platform, and your account, workspaces, and workflows are the same either way. --- # Data sources (/data/data-sources) Open **Team spaces → Data → Data sources** ("Connect your data"). The page shows **Connected sources**, **Datasets**, **Rows synced**, and **Sync errors**, then the **Available sources** catalog, your **Connected sources**, and your **Datasets**. ## Available connectors [#available-connectors] Filter the catalog by **All**, **Warehouses**, **Databases**, **Apps & BI**, or **Files**. | Group | Connectors | | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | | **Warehouses** | Databricks, Snowflake, BigQuery | | **Databases** | PostgreSQL, MySQL, SQL Server | | **Apps & BI** | Salesforce (CRM data through SOQL, Salesforce's query language), Qlik (Qlik Cloud or Qlik Sense apps) | | **Files** | Excel (workbooks and CSV files), Transcripts (calls, chats, and meeting notes for [Call Compliance](/dashboards/call-compliance)) | ## Add a source [#add-a-source] Click a connector, or **Connect a source**, to open **New data source**. Pick the **Engine**, give it a **Name** and an optional **Description**, then fill in the connector's fields. Credential fields take the **name** of a workspace secret (for example `POSTGRES_HOST`), not the secret value itself. Store the value in **Settings → Secrets** first. See [Secrets](/platform/credentials). **Qlik** asks for the deployment — **Qlik Cloud** or **Qlik Sense Enterprise (client-managed)** — and the authentication method: **API key**, **OAuth client credentials (machine-to-machine)**, **JWT via a virtual proxy**, or **Header authentication via a virtual proxy**. **Excel** needs no credentials. A connected source's menu has **Test connection**, **Add dataset**, **Edit source**, and **Delete source**. ## Datasets [#datasets] A **dataset** is the data you pull from a source. Click **New dataset**, choose the **Data source** and a **Name**, then set: * **Execution** — **Materialized (scheduled)** copies the data into Agent Serve on a schedule; **Live (per request)** queries the source each time it is used. * **Refresh** — **Manual only**, **Every 15 minutes**, **Hourly**, **Every 6 hours**, or **Daily**. * **Row cap** — the most rows to keep. * **Query** — the SQL to run. For **Qlik**, a dataset extracts **Fields**, a **Sheet object**, or (Qlik Cloud only) a **Data file**. For **Excel**, upload a workbook or pick one from the Library (`.xlsx`, `.xls`, or `.csv`, up to 25 MB), then choose the **Sheet**, the **Range** (**Auto-detect** or an A1 range such as `A1:F200`), and the **Header row** (**Detect**, **First row**, or **None**). A dataset's menu has **Refresh now**, **Replace file…** (Excel only), **Version history**, **Edit dataset**, and **Delete dataset**. Each dataset shows **Synced**, **Syncing**, **Error**, or **Idle**, when it was last refreshed, and how many rows changed. **Version history** lists recent refreshes as **Refreshed**, **Scheduled**, or **File changed**. Datasets can be used in [dashboards](/dashboards), [metrics](/data/metrics), and the [semantic model](/data/semantic-model). --- # Data (/data) The **Team spaces** tabs hold your team's shared data. Data flows in through **data sources**, lands in **datasets** and **tables**, and is given meaning by **metrics**, the **semantic model**, and **rules**. **Monitors** watch it and tell you when something changes. **Workbooks** are where you explore it in SQL or plain English before a result goes on a dashboard. [Dashboards](/dashboards), [Chat](/chat), and [Relays](/relays) all read from the same definitions, so a number means the same thing everywhere. --- # Metrics (/data/metrics) Open **Team spaces → Model → Metrics** ("Trusted metrics for every insight"). A **metric** is a named, reusable definition of a number. When a dashboard panel, Chat, or a Relay uses a metric, everyone gets the same calculation. The page lists every metric with its type, description, owner, and when it was last updated. Filter by type and owner, search by name, or browse by the entity a metric belongs to. ## Create a metric [#create-a-metric] Click **New metric** and fill in **Name**, an optional **Description**, the **Metric type**, the **Format** (**Number**, **Currency**, or **Percent**), and an optional **Unit**. | Metric type | How it is calculated | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Aggregate** | One column of one table, with **Sum**, **Average**, **Min**, **Max**, **Count (rows)**, **Count distinct**, or **Median** | | **Weighted** | A **Value column** and a **Weight column**, either as a **Weighted average** (Σ(value × weight) ÷ Σweight) or a **Weighted total** (Σ(value × weight)) | | **Ratio** | One metric divided by another — a **Numerator metric** over a **Denominator metric** | | **Calculated** | A **Formula** over named **Variables** | Deleting a metric removes it from any dashboard panel that uses it, so the app warns you first. Metrics can be watched by [monitors](/data/monitors) and given to [Relays](/relays/knowledge). --- # Monitors and alerts (/data/monitors) Open **Team spaces → Monitors**. The page counts your **Monitors**, how many are **Active**, how many are **Firing**, and how many alerts are **Open**. It has two tabs: **Watchers**, the list of monitors, and **Alerts**. ## Create a monitor [#create-a-monitor] Click **New monitor** and choose what to watch: * **Metric** — a metric threshold. Set **Fire when it** **falls below**, **is at or below**, **rises above**, **is at or above**, **equals**, or **differs from** a **Threshold**. * **Rule** — a rule match. Choose the table it runs **Over**, and **Fire when at least this many rows match**. Then set the **Monitor name**, how often to **Check** (**Every 5 minutes**, **Every 15 minutes**, **Hourly**, **Every 6 hours**, or **Daily**), and the **Severity** (**Info**, **Warning**, or **Critical**). A monitor is **Active**, **Firing**, or **Paused**; you can turn it on or off from the list. Each alert it raises is **Open** until it is **Resolved**. ## KPI alerts from dashboards [#kpi-alerts-from-dashboards] On a dashboard KPI card, **Alert me when…** creates an alert that also appears here. Filter the list by **Dashboard KPIs** to see them. See [KPI alerts](/dashboards/sharing-and-reports#kpi-alerts). ## Where alerts go [#where-alerts-go] * **In the app** — every alert appears on the Monitors page and in [Notifications](/workspace#notifications). * **Email** — KPI alerts can email you. * **Slack** — when your administrator sets a workspace alert webhook, monitors post there. A [Relay](/relays/setup#4-ongoing-work) can pick up work when a monitor fires — choose **When a monitor alerts** as a responsibility trigger. --- # Rules (/data/rules) Open **Team spaces → Model → Rules** ("Turn data into reliable decisions"). A **rule** is logic you define once and reuse — in dashboards, in [monitors](/data/monitors), and by [Relays](/relays/knowledge). ## Rule types [#rule-types] | Type | Produces | Defined by | | --------------------------- | ------------------------- | ----------------------------------------------------------------------- | | **Flag (true / false)** | Yes or no for each record | A **Condition** | | **Classification (labels)** | A label for each record | **Buckets**, each with a condition, plus an optional **Fallback label** | | **Score (points)** | A number for each record | **Scoring terms** that add points when their condition holds | Conditions compare a field with `=`, `≠`, `>`, `≥`, `<`, `≤`, **in**, **not in**, **between**, **contains**, **is empty**, or **is set**, and can be grouped. Each rule shows as **Active** or **Archived**. For example, a **Flag** rule "High-value account" might be `annual_revenue > 1,000,000`; a **Classification** rule might bucket customers into Gold, Silver, and Bronze; a **Score** rule might add points for each risk signal on a loan. --- # Semantic model (/data/semantic-model) Open **Team spaces → Model → Semantic model** ("Unified data. Clear context."). The **semantic model** describes your data in business terms: what a customer, an order, or a branch is, which table holds it, how tables connect, and what people call things. Chat, dashboards, and Relays use it to join data correctly and to understand questions in your team's own words. The left side lists the model's parts with counts: **Entities**, **Relationships**, **Conformed dimensions**, **Dimension fields**, **Attributes**, **Measures**, and **Synonyms**. Select an entity to see its related entities as a diagram, with details on the right. ## Entities [#entities] An **entity** is a business object backed by a table. Click **New entity** and set its **Name**, **Table**, **Synonyms** (comma-separated words people use for it, like "outlets" for branches), its **Attributes & dimensions**, **Measures**, and **Relationships**. A measure can be a formula, for example `DIVIDE(SUM([revenue]), COUNT([order_id]))`. ## Relationships [#relationships] A **relationship** says how two entities join. Set: * **Key(s)** and **Cardinality** (such as one-to-many) * **Join** — **Keep unmatched** or **Matches only** * **Key matching** — **Exact match**, **Trim spaces**, or **Trim + ignore case** A data check runs against the real tables and reports **Duplicate keys**, **Orphan keys**, and what the data says the cardinality actually is. Agent Serve can also suggest relationships, and verified ones are marked on the diagram. ## Conformed dimensions [#conformed-dimensions] A **conformed dimension** is a dimension shared across entities — such as Market or Date — so filters line up across tables. Each has a **Type** (text or date), a grain for dates (day through year), and value maps that reconcile different spellings of the same value. ## Drafts and versions [#drafts-and-versions] With model drafts on, you change the model in a private **draft** and publish it when it is ready. Everyone else keeps reading the **published** model until you do. Model drafts are a preview that is turned on for your deployment. While they are off, edits save straight to the published model, and the model page shows only the **Model** view. ### Start a draft [#start-a-draft] The banner at the top of the model page holds your draft. **Start draft** copies the published model. **Start from tables** picks up to 50 tables and proposes entities, measures (a row count and sums of numeric columns) and joins (from foreign keys and matching column names), which you then review. Each person has at most one open draft per team space. Nobody else can see your draft. Without a draft, saving a change publishes it straight away and records a version. A team space that requires a second approver refuses that save, so start a draft there. ### Draft mode [#draft-mode] **Draft mode** decides what your own work reads while the draft is open. With it on, your semantic queries, dashboards, dashboard chat, [workbook](/data/workbooks) Semantic cells and the model page read your draft, so you can test a change on real panels before anyone else sees it. Turn it off to see the published model again. Draft mode never affects anyone else. Work that runs for nobody in particular — workspace API keys, schedules, shared viewer links and Relays running unattended — always reads the published model. ### Views [#views] The model page has five views: | View | What it shows | | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Model** | The visual editor: entities, relationships, measures and the rest of the model. | | **Code** | The model as `agentserve.model.yaml`. Saving checks it against the model schema and writes your draft, which the visual editor then shows. | | **Versions** | Every published version: who published it, when, and with what note. Compare a version with the one before it or with the current one, and **Roll back**. | | **Compare** | Pick up to eight measures and run each one under your draft and under the published model, side by side. | | **Reviews** | Workspace admins only. The publishing policy and the publish requests waiting on a decision. | You can also work with the model from the terminal: `agentserve model pull` writes the published model or your draft to `agentserve.model.yaml`, and `agentserve model diff` shows what the file would change. See [agentserve model](/cli/model). ### Publish [#publish] **Publish draft** asks for an optional note ("What changed and why") and publishes your draft as the next version. The draft then closes. **Discard draft** throws your draft away and leaves the published model unchanged. An admin can set **Publishing approval** to **Require a second approver** under **Reviews**. Then **Publish draft** becomes **Send for approval**: your draft waits, locked, until a workspace admin other than you approves it, which publishes it as the next version, or rejects it, which hands it back to you to keep editing. ### Roll back [#roll-back] **Roll back** on a version publishes that version's model again as a new version, so the history keeps every step. When publishing approval is required, only an admin can roll back. ### Who can do what [#who-can-do-what] | Action | You need | | -------------------------------------------------------------------------- | ------------------------------------------------------------------ | | Read the published model | **Read** in the team space | | Start, edit, publish or discard a draft; read versions; compare; roll back | **Write**, and a permission group that allows **Model Management** | | Turn publishing approval on or off; approve or reject a request | **Admin**, and a permission group that allows **Model Management** | --- # Workbooks (/data/workbooks) A **workbook** is a page of cells for exploring your data. You write SQL against a [data source](/data/data-sources), ask questions in plain English, query the [semantic model](/data/semantic-model), chart the rows, and add notes. When a query is worth keeping, you save it as a dataset or put its chart on a [dashboard](/dashboards). Open **Team spaces → Workbooks**. The list shows the team space's workbooks, most recently changed first. Click **New workbook** and give it a name. Workbooks are a preview that is turned on for your deployment. If you do not see the **Workbooks** tab, it is not on yet, or your [permission group](/platform/enterprise/access-control) withholds it. ## Cells [#cells] Add a cell with the buttons under the last cell. Move cells up or down, or delete them, from each cell's controls. A workbook holds up to 100 cells. | Cell | What it does | | ------------ | ------------------------------------------------------------------------------------------------------------------------- | | **SQL** | One read-only query against a data source you pick. | | **Ask** | A question in plain English. AI suggests SQL for it, and you accept, edit or dismiss the suggestion before anything runs. | | **Semantic** | Measures, group-by dimensions, filters and a row limit, picked from the semantic model. No SQL. | | **Chart** | A chart of the rows from a SQL, Ask or Semantic cell above it. Pick the chart type, the category and the measure. | | **Text** | Notes in Markdown. | Workbooks query SQL data sources: warehouses and databases. If none is connected yet, the workbook says so; add one under **Data sources**. ## Running a query [#running-a-query] Press **Cmd+Enter** (Mac) or **Ctrl+Enter** to run a SQL or Ask cell. Every run goes through the same path as dataset queries: one read-only statement, the source's timeouts, and a row cap. The cell shows the rows, the row count and how long the run took. **CSV** downloads the rows. A run keeps at most 1,000 rows and 2 MB with the cell. Stored results expire after seven days; the query stays, and the cell asks you to run it again. **History** in the workbook header lists past runs: who ran which cell, against which source, whether it succeeded, how many rows it returned and how long it took. Every run is also in the [audit log](/platform/enterprise/audit-logs). ### Large scans [#large-scans] Before a run, Agent Serve checks whether the query is likely to read a lot. On PostgreSQL it asks the database for its plan estimate. On other sources it reads the query for a missing `WHERE` or `LIMIT`, `SELECT *`, or tables joined with commas and no join condition. A large scan stops first and offers **Make it safer**, or **Run anyway**. Nothing is rewritten unless you accept the suggestion. ## AI help with SQL [#ai-help-with-sql] The SQL editor highlights SQL, completes table and column names from the source's schema, and shows AI suggestions as faint text after a pause in typing. Press **Tab** to accept one. Each query cell also offers: * **Ask**: turn a question into SQL. * **Explain**: describe in plain words what the query does. * **Fix this error**: after a failed run, explain the error and suggest a corrected query. * **Make it safer**: suggest a version that reads less, for example by adding a filter or a limit. The AI sees the source's schema as you can see it, and the semantic model's names, synonyms and measures. It never sees row data. Every suggestion is only a suggestion: nothing runs or saves until you accept it and run the cell. AI calls are billed to the workspace like other model use. ## Saving and publishing [#saving-and-publishing] From a SQL or Ask cell, **Save as dataset** creates a new dataset from the query, or adds it to an existing one. The dataset then appears under [Data sources](/data/data-sources), where dashboards, Chat and Relays can use it. From a Chart cell, **Publish to dashboard** adds the chart as a panel on a new or existing dashboard. For a chart over a SQL or Ask cell, the panel reads a new dataset of that query. For a chart over a Semantic cell, the panel reads the semantic model directly, so each viewer sees only the rows their access allows. ## How workbooks fit with dashboards and the semantic model [#how-workbooks-fit-with-dashboards-and-the-semantic-model] * A workbook is where you explore. A [dashboard](/dashboards) is where the team reads the result. Publish a chart when the question is settled. * Semantic cells use the same measures and joins as dashboards and Chat, with the same table access and [row security](/dashboards/governance#row-security). * If you have a [model draft](/data/semantic-model#drafts-and-versions) with draft mode on, your own Semantic cells and AI suggestions read your draft. Everyone else reads the published model. ## Sharing and permissions [#sharing-and-permissions] A workbook is shared with the team space by default. A person who can manage it can open **Share** to limit it to chosen people and teams, with view, edit or manage access. A restricted workbook is hidden from everyone it is not shared with. Workspace admins always see every workbook. | To | You need | | ------------------------------------------------- | ------------------------------------------------------------ | | Open a workbook and read its cells | **Read** in the team space, and view access to the workbook | | Add, edit or run cells, or use AI help | **Write** in the team space, and edit access to the workbook | | Delete a workbook or change who it is shared with | Manage access to the workbook | Data source access applies to every cell, separately: * Running a cell, reading its schema or asking AI about it needs use access to the cell's source. A cell's stored result is shown only to people who can use its source. * **Save as dataset** needs edit access to the source, and your permission group must allow data management. * **Publish to dashboard** needs your permission group to allow building dashboards. A permission group that withholds **Workbooks** blocks every workbook action, including running queries and AI help. See [Access Control](/platform/enterprise/access-control#platform). ## Limits [#limits] | Limit | Value | | ------------------------- | ----------------- | | Cells per workbook | 100 | | SQL per cell | 20,000 characters | | Question per Ask cell | 2,000 characters | | Markdown per Text cell | 50,000 characters | | Rows kept per run | 1,000 | | Result size kept per run | 2 MB | | How long a result is kept | 7 days | --- # agentserve app (/developers/cli) The `agentserve app` commands take an app from an empty folder to an install people use, and help you operate it afterwards. Sign in first with `agentserve login`; see [Authentication](/cli/authentication). Every flag of every command is in the generated [CLI reference](/cli/app). ## Choosing the app and workspace [#choosing-the-app-and-workspace] Commands that act on an app that already exists pick it in this order: 1. `--app `, when you pass it. 2. The `name` in `./agentserve.app.yaml`, when you run the command in the app's folder. The usual [global options](/cli/commands#global-options) apply: `-P, --profile` picks a login profile, `-w, --workspace` a workspace, and `--output` the output format. Every `app` command also takes `--json`, which prints one machine-readable JSON document instead of text. ## Exit codes [#exit-codes] | Code | Meaning | | ----- | ------------------------------------------------------------------------------------------------------------- | | `0` | Success | | `1` | The API refused or failed the request, or the command was used wrongly (an unknown flag, a missing argument) | | `2` | A problem with the app on disk: no manifest, an invalid manifest, a failed build, or a bundle over its limits | | `130` | You cancelled a prompt | ## agentserve app init [#agentserve-app-init] ```bash agentserve app init [dir] [--template ] [--name ] [--title ] [--force] agentserve app init --list ``` Creates an app from a template in `dir` (default: the current folder). | Option | Description | | ------------------- | ----------------------------------------------------------------------------------------------------------------- | | `--template ` | The template to copy. Defaults to `blank`. See [Templates](/developers/templates). | | `--name ` | The manifest `name`. Defaults to the folder name, made into a valid name (lowercase letters, digits and hyphens). | | `--title ` | The manifest `title`. | | `--force` | Write into a folder that is not empty. Without it, `init` refuses. | | `--list` | Print the templates and exit. | `init` also copies the app SDK into `vendor/app-sdk`. Then install the dependencies: ```bash cd my-app bun install # or: npm install ``` ## agentserve app dev [#agentserve-app-dev] ```bash agentserve app dev [dir] [--port ] [--page ] [--build-command ] [--no-build] [--no-open] ``` Builds the app and serves it at `http://localhost:5175` in a local host page. The host page frames the app with the same sandbox and content security policy as the workspace, so what works in `dev` works when installed. SDK calls are forwarded to your workspace through the API with your own CLI login. The app sees exactly what you can see, and the manifest still limits which tables, workflows and Relays it may name. When files change, `dev` rebuilds and reloads the frame; it ignores `dist/`, `node_modules/` and `vendor/`. | Option | Description | | ----------------------- | ------------------------------------------------------------ | | `--port ` | Port to serve on. Defaults to `5175`. | | `--page ` | The manifest page to open first. | | `--build-command ` | Command that builds the app. | | `--no-build` | Serve what is already built, without building or rebuilding. | | `--no-open` | Do not open a browser. | Differences from an installed app: * `askChat` shows the prompt in the host page instead of opening Chat. * `getViewer()` returns your profile's workspace, the manifest's name, version and permissions, and placeholders for the rest: `dev` for the user, app, install and version ids, no name or email, and the role `write`. * `runTool` and `listTools` use the version of your app **installed** in the workspace, because code tools run only on Agent Serve. Your local `tools/` files are not used until you deploy, publish and install them. With no installed version that ships tools, both fail with `not_found` and a message saying how to install one. * `assignRelayTask` and `queryModel` go through the same API endpoints a script would use, `POST /api/v2/relays/tasks` and `POST /api/v2/semantic-model/query`, as you. `dev` needs an OAuth login or a personal API key: the model, Relay and code tool calls refuse a workspace API key. ## agentserve app deploy [#agentserve-app-deploy] ```bash agentserve app deploy [dir] [--build-command ] [--no-build] [--json] ``` Runs the build, packs the app into a `.zip`, and uploads it as a **draft version**. The archive holds the manifest, the folders your pages, panels and Chat cards live in (such as `dist/`), the icon, the files `requires` names, and the [code tool](/developers/code-tools) files `tools` names. It prints the version and a link to the app's versions page in the workspace. The first deploy of a new `name` creates the app. Each later deploy needs a new `version` in the manifest; deploying a version that already exists fails. Uploading needs the `write` role. Archive limits: | Limit | Value | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Archive size | 25 MB | | Files | 500 | | One file | 10 MB | | Unpacked total | 50 MB | | File types | Static files only: `html`, `htm`, `js`, `mjs`, `css`, `json`, `map`, `txt`, `md`, `yaml`, `yml`, `csv`, `svg`, `png`, `jpg`, `jpeg`, `gif`, `webp`, `avif`, `ico`, `woff`, `woff2`, `ttf`, `otf`, `mp3`, `mp4`, `webm` | Files the `tools` globs name may also be TypeScript, JavaScript or Python sources (`ts`, `mts`, `js`, `mjs`, `py`). They are stored with the version and never served to the app's frame. See [Code tools](/developers/code-tools). To build on Agent Serve from a repository instead, see [Deploying from Git](/developers/git-deploys). ## agentserve app publish [#agentserve-app-publish] ```bash agentserve app publish [--app ] [--rollout] [--json] ``` Makes a draft version installable. Needs the `admin` role. With `--rollout`, this workspace's install also moves to the version. ## agentserve app rollback [#agentserve-app-rollback] ```bash agentserve app rollback [--app ] [--json] ``` Moves this workspace's install back to an earlier published version. Needs the `admin` role. ## agentserve app install [#agentserve-app-install] ```bash agentserve app install [--app ] [--to-version ] [-w ] ``` Installs the highest published version, or the one `--to-version` names, in the workspace. It prints the tables, rules and Relays it created, the ones the workspace already had, and the ones it skipped with the reason. Needs the `admin` role. Relays an app declares under `requires.relays` are created only by an install from the **Apps** page in the workspace. An install from the CLI reports them as skipped; create them in Relays, or install from the workspace. ## agentserve app logs [#agentserve-app-logs] ```bash agentserve app logs [--app ] [--follow] [--interval ] [--json] ``` Prints the install's audit trail, newest last: version changes, secret changes and every write the app made. `--follow` keeps polling for new entries, every `--interval` seconds. Needs the `admin` role. ## agentserve app usage [#agentserve-app-usage] ```bash agentserve app usage [--app ] [--json] ``` Prints this month's spend against the install's budget, broken down by source. Needs the `admin` role. ## agentserve app permissions [#agentserve-app-permissions] ```bash agentserve app permissions [dir] [--app ] [--json] ``` Prints what the installed version may reach, next to the latest uploaded version and, in an app folder, the local manifest. Differences from the install are highlighted, so you can see what a new version would add or remove before you publish it. ## agentserve app secrets [#agentserve-app-secrets] ```bash agentserve app secrets set [--value ] agentserve app secrets list agentserve app secrets delete ``` Manages the install's write-only secrets. Needs the `admin` role. * `set` stores a value. `--value` takes the text itself, `@path` to read a file, or `@-` to read standard input. Without `--value`, it prompts for the value without showing what you type. * `list` prints each secret's name and when it last changed, never its value. * `delete` removes a secret. See [Secrets](/developers/security#secrets) for the naming rules and what secrets are used for today. ## A release, end to end [#a-release-end-to-end] ```bash # In the app folder, after raising version to 0.3.0 agentserve app deploy agentserve app permissions # check what changes for admins agentserve app publish 0.3.0 --rollout agentserve app logs --follow ``` --- # Code tools (/developers/code-tools) Some logic should give the same answer every time: a pricing check, a score, a routing rule. You want it in code you can test, not in a prompt. A **code tool** is a function you ship with your app. Agent Serve runs it on the server, in a sandbox, whenever your app, Chat, a Relay or a workflow calls it. An agent that calls a tool cannot talk it into a different answer. ## Files [#files] A tool is two files in your repository, usually under `tools/`, sharing a name: * `.tool.yaml` describes the tool: what it does, the input it takes and the output it returns. * `.ts`, `.mts`, `.js`, `.mjs` or `.py` is the code. Name them in the manifest with a glob or a list of globs: ```yaml title="agentserve.app.yaml" tools: ./tools/* ``` The [deal desk template](/developers/templates#deal-desk) ships one tool, `score_offer`: ```yaml title="tools/score_offer.tool.yaml" name: score_offer description: >- Scores a sales offer from 0 to 100 against the deal desk pricing policy and says whether to approve, review or reject it, with the reasons. effect: read timeoutMs: 10000 input: type: object required: [discountPct, marginPct, termMonths, dealSize, tier] properties: discountPct: { type: number, minimum: 0, maximum: 100 } marginPct: { type: number, minimum: -100, maximum: 100 } termMonths: { type: number, minimum: 1, maximum: 120 } dealSize: { type: number, minimum: 0 } tier: { type: string, enum: [strategic, enterprise, standard] } output: type: object required: [score, decision, reasons] properties: score: { type: integer, minimum: 0, maximum: 100 } decision: { type: string, enum: [approve, review, reject] } reasons: { type: array, items: { type: string } } ``` | Field | Required | Meaning | | ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | Yes | Lowercase letters, digits and underscores, starting with a letter, at most 40 characters. It must match the file name. | | `description` | Yes | What the tool does, up to 1,024 characters. Chat and Relays read it to decide when to call the tool. | | `input` | Yes | A [JSON Schema](https://json-schema.org) with `type: object`. Every call's input is checked against it before the tool runs. | | `output` | Yes | A JSON Schema with `type: object`. A result that does not match it fails the run. | | `effect` | No | `read` (default) or `write`. Use `write` when the tool changes something outside Agent Serve, such as sending an email or updating another system. | | `timeoutMs` | No | Time limit for one run, including starting the sandbox: 1,000 to 300,000. Defaults to 30,000. | | `packages` | No | npm or PyPI packages the tool imports, pinned the way your lockfile pins them, such as `zod@3.25.76`. At most 50. | Editors can validate the file against the published schema, `agentserve.tool.schema.json`, with this first line: ```yaml # yaml-language-server: $schema=https://agentserve.valnoraelric.com/schemas/agentserve.tool.schema.json ``` ## The code [#the-code] A JavaScript or TypeScript tool exports a function named `run` (or a default export). It gets the checked input and returns the output, or a promise of it: ```ts title="tools/score_offer.ts" export const POLICY = { maxDiscountPct: { strategic: 25, enterprise: 15, standard: 10 }, minMarginPct: 20, // …the rest of the policy } as const export function run(offer: Offer): OfferScore { // …checks discount, margin, term and deal size, and collects the reasons return { score, decision, reasons } } ``` A Python tool defines a top-level `run(input)`, which may be `async`: ```python title="tools/route_ticket.py" def run(input): priority = "high" if input["customer_tier"] == "enterprise" else "normal" return {"queue": "billing" if "invoice" in input["subject"].lower() else "support", "priority": priority} ``` Keep each tool in its one file. The sandbox receives only the tool's own source, so it cannot import other files from your repository, such as your app's `src/` code. It can import the packages it lists under `packages`. TypeScript is compiled when you upload, so a syntax error, or a module without a `run` export, fails the upload with the file and line. Make tools pure where you can: no clock, no randomness, and no network unless the tool's job is to call another system. Then the same input always gives the same output, and you can test the function with any test runner without a workspace. ## Deploying tools [#deploying-tools] `agentserve app deploy` uploads the files your `tools` globs name together with the build output, and a [Git deploy](/developers/git-deploys) always includes them in the bundle. On upload Agent Serve reads every `.tool.yaml`, finds its source, checks both, and stores them with the version. Any problem refuses the whole upload and names the file. Tool files are stored with the version but never served to the app's frame, so people using the app cannot download your tool's code. An app ships at most 50 tools, and each source file is at most 512 KB. Tools run from the version a workspace has installed. Publishing and installing a new version, or rolling back, changes the tools for every caller at once. ## Calling a tool [#calling-a-tool] **From your app**, with the SDK. An app may always run its own tools; there is no separate permission for them. ```ts import { getAppClient } from '@agentserve/app-sdk' const run = await getAppClient().runTool('score_offer', offer) if (run.status === 'succeeded') showScore(run.output) else showError(run.error) ``` `runTool` resolves with `status` (`succeeded`, `failed` or `timed_out`), `output`, `error` and `durationMs`. A tool that throws, runs out of time or returns something its output schema refuses is a failed run, not an exception. A refusal before the tool starts, such as invalid input or a spent budget, rejects with an [`AppBridgeError`](/developers/sdk#errors). `listTools()` returns the app's tools with their schemas. **From Chat.** Chat offers each installed app's tools to its agent. When a tool's `effect` is `write`, Chat asks the person before it runs. **From Relays.** A Relay can call the tools of installed apps. A `write` tool is handled like any other action that changes something outside the workspace: the call waits for approval under the Relay's rules. **From workflows.** The **App Tool** block runs a tool by its reference, `app-name/tool_name`, such as `deal-desk/score_offer`. The reference is shown on the app's **Manage** page. The block is in preview, so it may not appear in the block list of your workspace yet. **From the API and the CLI.** `GET /api/v2/apps/tools` lists the tools you may run, and `POST /api/v2/apps/installs/{installId}/tools/{toolName}/run` runs one. Both need your own login or personal API key; a workspace API key is refused, because a tool always runs for a person whose access can be checked. Whoever calls a tool needs access to the Apps module in the workspace. The person who asked is the one recorded for the run. ## Secrets [#secrets] A tool that calls another system usually needs a key. Store it as a per-install [secret](/developers/security#secrets) with `agentserve app secrets set STRIPE_KEY` or on the app's **Manage** page. Each secret reaches the tool as an environment variable of the same name: ```ts const key = process.env.STRIPE_KEY ``` ```python import os key = os.environ["STRIPE_KEY"] ``` Secrets reach only the tool's own process. They never reach the browser bundle or the app's frame. Any secret value that appears in a tool's error is replaced with `[secret]`, and a run whose output contains a secret value fails with its output withheld. ## Budgets, metering and logs [#budgets-metering-and-logs] * **Budget.** Tool runs count against the app's monthly [budget](/developers/security#budgets-and-usage), like the workflow runs and Relay tasks it starts. Once the budget is spent, runs are refused with `budget_exhausted` until the next month or until an admin raises it. * **Metering.** Each run's sandbox time is recorded in the usage ledger as `app-tool` and paid by the workspace of the person who called it, or by the workflow run that called it. The record names the app, the install and the version. * **Logs.** Every run, whether it succeeded, failed or timed out, is in the workspace audit trail with the tool, the surface that called it, the status and the duration. Inputs, outputs and secrets are never recorded. The app's **Manage** page has a **Tools** section listing what the installed version ships, the last runs of each tool, and a **Test run** form for builders. A test run is a real run: it is metered, counts against the budget and, for a `write` tool, makes real changes. ## Packages and sandboxes [#packages-and-sandboxes] Tools run in a remote sandbox, built from the tool's language and its `packages`. Tools that list the same packages share a prepared sandbox image, so they start faster; tools with no packages use the standard Function image. Packages are installed from npm for JavaScript and TypeScript, and from PyPI for Python. ## Limits [#limits] | | Limit | | -------------------------- | ------------------------------- | | Tools per app | 50 | | Source file | 512 KB | | `input` or `output` schema | 32 KB each | | Input of one call | 256 KB | | Output of one run | 1 MB | | Time per run | 1 to 300 seconds, 30 by default | `agentserve app dev` serves your pages from your machine, but tools only run on Agent Serve. In `dev`, `runTool` and `listTools` use the version of your app installed in the workspace, not your local `tools/` files. Deploy, publish and install once to try them; see [agentserve app dev](/developers/cli#agentserve-app-dev). --- # Deploying from Git (/developers/git-deploys) You can deploy an app version two ways: * **From your machine or CI** with `agentserve app deploy`, which builds locally and uploads the result. See [agentserve app deploy](/developers/cli#agentserve-app-deploy). * **From Git.** Connect a repository, and every push to a branch you choose builds a draft version on Agent Serve. Both produce the same kind of draft version, which someone then publishes and installs. ## Connect a repository [#connect-a-repository] Open the app's page under **Apps** → **Library**. In the **Source** section, pick a connection and a repository, then **Connect**. You need write access in the workspace that manages the app, and your permission group must allow building apps. The connection comes from **Integrations**: * **GitHub**: an installation of the Agent Serve GitHub App on the account or organization that owns the repository. The section links to the install page if you have none. * **GitLab**: a personal access token with the `api` scope and the Maintainer role on the project. Connecting creates the project webhook for you. An app deploys from one repository. To switch, disconnect the current one first. Disconnecting stops new builds and, for GitLab, removes the project webhook when your token allows it. Past deployments and the versions they built stay. ## What a push does [#what-a-push-does] Agent Serve builds a push when it lands on the repository's **default branch**, or on a branch one of your [branch rules](#branch-rules) names. Pushes to other branches, tags and branch deletions are ignored. The same commit is never built twice for one app. Each build: 1. Downloads the commit and checks that `agentserve.app.yaml` is at the repository root. 2. Installs dependencies, if there is a `package.json`, with the package manager your lockfile belongs to: Bun (`bun.lock`), npm (`package-lock.json`), pnpm (`pnpm-lock.yaml`) or Yarn (`yarn.lock`). A lockfile is required, and installs never change it. 3. Runs the [dependency audit](#dependency-audit). 4. Runs the build command: `build.command` from the manifest, or `bun run build`. 5. Runs your tests with `test` from `package.json`, if there is one. A failing test fails the build. 6. Packs the bundle and uploads it as a **draft version**, recording the repository, branch and commit it came from. The bundle is the manifest plus the paths in `build.output`, or by default the folders that hold your page, panel and Chat card entries, the icon and the `requires` files. Your [code tools](/developers/code-tools) are always included. The bundle may be at most 25 MB. ```yaml title="agentserve.app.yaml" build: command: npm run build:prod output: [./web/dist, ./public] ``` Builds run in an isolated sandbox that has no access to workspace data, app secrets or your repository credentials, and stop after 10 minutes. Their compute is metered to the workspace that manages the app. Agent Serve reports the build back on the commit as a status named **Agent Serve app deploy**, which moves from pending to running to success or failure and links to the deployment. A successful status says whether the version is live or a draft is ready to publish. ## Dependency audit [#dependency-audit] After install, every build checks your production dependencies: | Lockfile | Check | | --------- | ----------------------------------------------------------------------------------------------------------------------------- | | npm, pnpm | `npm audit` or `pnpm audit` against the public advisory database. Any **high** or **critical** vulnerability fails the build. | | Bun, Yarn | Every package must come from the public npm or Yarn registry. A package from anywhere else fails the build. | An audit that cannot run also fails the build, so an outage never lets an unchecked build through. A binary `bun.lockb` cannot be checked: commit the text `bun.lock` instead (`bun install --save-text-lockfile`). To let a build through anyway, set `build.allowVulnerable: true`. The findings are still recorded on the version and shown wherever it is listed, marked as allowed. ## Branch rules [#branch-rules] Without rules, every build waits as a draft until someone publishes it. A **branch rule** auto-publishes builds from one branch and moves chosen workspaces' installs to the new version. For example, `main` can auto-publish and upgrade a test workspace, while production workspaces are upgraded by hand. Rules are set under **Auto-publish** in the **Source** section and need admin access. * A branch name matches exactly, and a rule's branch is also built even when it is not the default branch. * Each workspace a rule names must already have the app installed, and you must be an admin there. * A rule cannot auto-publish while publish approval is on (see below). Its builds wait as drafts instead. ## Publish approval [#publish-approval] An admin can turn on **Publishing in this workspace** in the **Source** section, so that a second person must approve every publish. The first admin's **Publish** records a request; a different admin's **Publish** approves it and makes the version installable. Nobody can approve their own request. This applies to every publish in the workspace, from the versions list, Deployments, `agentserve app publish` or the API, whether the version was uploaded or built from Git. ## Deployments [#deployments] The **Deployments** section on the app's page lists every build: commit, author, message, status, the audit result and the build log. A deployment is **Queued**, **Building**, **Ready** (a draft), **Failed** or **Live**. From there an admin can publish a ready draft (or approve someone else's request), and you can rebuild a failed deployment. To roll back, move an install to an earlier deployment's version. When a version built from Git goes live, members with write access see a notice in the workspace. The same information is available through the API: `GET /api/v2/apps/{appId}/repos`, `GET /api/v2/apps/{appId}/deployments` and `GET /api/v2/apps/{appId}/deployments/{deploymentId}`, with `POST …/rebuild` and `POST …/publish` on a deployment. See the [API reference](/api-reference/apps). ## Where a version came from [#where-a-version-came-from] Every version records its **source**, which the API returns with the version: | `source.kind` | Fields | Meaning | | ------------- | ---------------------------------------- | -------------------------------------------------------- | | `upload` | `fileName` (optional) | Uploaded as an archive, as `agentserve app deploy` does. | | `git` | `repository`, `commit`, `ref` (optional) | Built from a connected repository at that commit. | ## Setting up the GitHub App [#setting-up-the-github-app] This is for people who run Agent Serve themselves. On a hosted workspace the GitHub App is already set up; install it from **Integrations**. Create a GitHub App for your deployment with: * **Repository permissions**: Contents: read, Metadata: read, Commit statuses: read and write. * **Events**: subscribe to **Push**. * **Webhook URL**: `https:///api/apps/git/github`, with a webhook secret. Then set these on the server: `GITHUB_APP_ID`, `GITHUB_APP_SLUG`, `GITHUB_APP_CLIENT_ID`, `GITHUB_APP_CLIENT_SECRET`, `GITHUB_APP_PRIVATE_KEY` and `GITHUB_APP_WEBHOOK_SECRET` (the webhook secret). Deliveries whose `X-Hub-Signature-256` does not match the secret are refused. GitLab needs no server setup. Each connected project gets its own webhook to `/api/apps/git/gitlab` with a secret token of its own, and deliveries without the right token are refused. --- # Browser IDE (/developers/ide) The **browser IDE** opens an app's code in VS Code for the web, next to a live preview of the app running against your workspace. You edit, see the change, and commit, without setting anything up on your own machine. The browser IDE is a **preview**. It is off by default and is turned on per workspace or organization, on top of [Apps](/developers). On a self-hosted deployment, an administrator turns it on and sets up its sandbox. See [Running the IDE on a self-hosted deployment](#running-the-ide-on-a-self-hosted-deployment). ## Open an app in the IDE [#open-an-app-in-the-ide] On an installed app's **Manage** page, click **Open in IDE**. The button shows only for an app managed from this workspace, and only while the IDE is on. You need **write** access in the workspace, and your [permission group](/platform/enterprise/access-control#platform) must allow **App Building**. Without both, the IDE page says so and opens nothing. What the IDE opens depends on the app: * **An app with a [connected repository](/developers/git-deploys)**: the IDE clones the repository's default branch. * **An app without one**: the IDE opens the installed version's bundle, read-only. Connect a repository to commit. The first start takes a moment while the sandbox is created. If you already have a session for the app, the IDE returns to it. ## What the page shows [#what-the-page-shows] | Panel | What it does | | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **VS Code** | VS Code for the web, with the app's code. **New tab** opens it in its own browser tab. | | **Preview** | The app served by `agentserve app dev`, in the same sandboxed frame people see, using your own access. It reloads as you edit, and restarts by itself after a failed build. | | **Commit & push** | Commits everything changed in your session with your message and your name, and pushes the branch. | | **Proposals** | Code changes Chat proposed into this session, each with **Accept** and **Reject**. | **Stop** ends the session and removes its sandbox. ## Commit and push [#commit-and-push] **Commit & push** pushes to the connected repository like any other push, so the normal [Git deploy](/developers/git-deploys) runs: a push to the default branch, or to a branch a branch rule names, builds a draft version. You can also use VS Code's own Git panel; it pushes the same way. Pushing needs a repository connection that allows it. A GitLab connection gives the session a short-lived project token; a GitHub connection uses the Agent Serve GitHub App installation, renewed while the session is active. ## Code changes from Chat [#code-changes-from-chat] While your session is running, you can ask [Chat](/chat) to change the app's code. Chat proposes the change as a diff into your own session. It never edits files directly: 1. The diff is checked against your working tree and stored as a pending proposal. 2. Under **Proposals**, **Accept** applies it and runs the repository's tests in the sandbox (`test` from `package.json`, or `pytest`). The result shows next to the proposal. 3. **Reject** discards it. Nothing a proposal does is committed or pushed. That stays your **Commit & push**. A proposal can only reach your own session; Chat cannot write into anyone else's. ## Sessions and cost [#sessions-and-cost] * Each person has their own session per app. Nobody else can open it. * A session stops after **30 minutes** without activity, and after **4 hours** in any case. * The browser reaches the session only through a gate inside the sandbox. Each time you open the IDE or the preview, Agent Serve checks your sign-in and gives the gate a one-time ticket that lasts a minute. A copied link does not work in someone else's browser. * Sandbox time is metered by the minute to you, in the app's workspace. A session does not start when you, or whoever pays for the workspace, are over a usage limit, and a running session stops when you go over. * Starting, stopping, committing and deciding a proposal are recorded in the audit trail. ## Running the IDE on a self-hosted deployment [#running-the-ide-on-a-self-hosted-deployment] The IDE runs each session in a [Daytona](https://www.daytona.io/) sandbox. Other sandbox providers are not supported for the IDE. To turn it on: 1. Turn on Apps (`APPS_RUNTIME=true`) and the IDE (`APP_IDE=true`). 2. Use Daytona as the sandbox provider: `SANDBOX_PROVIDER=daytona` with `DAYTONA_API_KEY` set. See [Sandboxes](/platform/self-hosting/sandboxes). 3. Build the IDE snapshot and point the app at it: ```bash bun run --cwd packages/agentserve-cli build DAYTONA_API_KEY=... bun run apps/agentserve/scripts/build-ide-daytona-snapshot.ts --name agentserve-ide: ``` The name needs an explicit tag; Daytona rejects `latest`. Then set `DAYTONA_IDE_SNAPSHOT_ID=agentserve-ide:`. If something is missing, **Open in IDE** says what: a different sandbox provider, no snapshot set, or a snapshot that does not exist. A snapshot Daytona has deactivated is reactivated, and the IDE asks you to try again in a few minutes. --- # Build on Agent Serve (/developers) An **app** is a small web front end that runs inside an Agent Serve workspace. You write the screens your team needs — a deal desk, a field visit log, a support queue — and the workspace provides everything around them. ## What the workspace gives you [#what-the-workspace-gives-you] You write only your domain code. The rest comes from the workspace the app is installed in: | You get | How | | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Sign-in, people and roles** | People open the app from the workspace, already signed in. The app reads who they are and their role with `useViewer()`. | | **Data** | Read and add rows in [Tables](/tables), query the semantic model, and read or create workspace [Files](/files). | | **Models** | Run deployed [workflows](/workflows), hand tasks to [Relays](/relays), or open [Chat](/chat) with a question. Each one uses the models and integrations already set up in the workspace. | | **Your own logic** | Ship [code tools](/developers/code-tools) with the app: functions that run on Agent Serve, give the same answer every time, and can be called by the app, Chat, Relays and workflows. | | **Security** | The app acts as the person using it, narrowed to what its manifest names. It runs in a sandboxed frame with no network access of its own. See [Security model](/developers/security). | | **Metering and audit** | Paid work an app starts, including its code tool runs, is counted against its monthly budget, and every write and tool run is in the audit trail. | There is no server to run, no login to build, and no database to provision. ## How it fits together [#how-it-fits-together] 1. **Manifest.** `agentserve.app.yaml` names the app, its pages, what it may reach, and what to create on install. See [Manifest reference](/developers/manifest). 2. **Bundle.** You build the front end into static files (HTML, JavaScript, CSS, images). The CLI packs them with the manifest into an archive. 3. **Draft version.** `agentserve app deploy` uploads the archive as a draft version of the app. Or [connect a repository](/developers/git-deploys), and each push builds a draft version on Agent Serve. Where the [browser IDE](/developers/ide) is on, you can also edit and push from the browser. 4. **Publish.** A workspace admin publishes the draft, which makes it installable: `agentserve app publish `. 5. **Install.** An admin installs a published version in a workspace. The install creates the tables, rules and Relays the app declares, if they are missing. 6. **Open.** People open the app from the **Apps** section of the workspace. Admins can pin it to the rail for chosen roles or permission groups. Apps are turned on per workspace or organization. If you do not see the **Apps** section, Apps is not on for your workspace yet, or your permission group does not include it. An app can also provide **dashboard panels** and **Chat cards**: small HTML views that render in the same sandboxed frame, inside a dashboard or a Chat reply. ## Where to start [#where-to-start] --- # Manifest reference (/developers/manifest) `agentserve.app.yaml` sits at the root of your app. It says what the app is called, which pages it shows, what it may reach, what to create when it is installed, and how much it may spend each month. The platform validates it on every upload, and the install screen lists its permissions for the admin. ## A complete example [#a-complete-example] ```yaml title="agentserve.app.yaml" # yaml-language-server: $schema=https://agentserve.valnoraelric.com/schemas/agentserve.app.schema.json name: field-visit-logger version: 0.1.0 title: Field visit logger icon: ./dist/icon.svg pages: - id: visits title: Visits entry: ./dist/index.html#/visits - id: new-visit title: New visit entry: ./dist/index.html#/new permissions: tables: [visits] files: write relays: [Field follow-up] requires: tables: ./tables/*.yaml relays: ./relays/*.yaml budget: monthlyUsd: 25 ``` The first line points editors that use the YAML language server (for example VS Code with the YAML extension) at the published JSON Schema, so you get completion and errors as you type. Every template already has it. ## Fields [#fields] The table below is generated from the manifest's JSON Schema, so it always matches what the platform accepts. A field marked **Required** inside an optional object (such as `budget.monthlyUsd`) is required only when that object is present. A manifest with any field not listed here is refused. {/* BEGIN GENERATED: app manifest fields (scripts/generate-app-manifest-docs.ts) */} | Field | Type | Required | Default | Limits | Description | | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{1,62}$` | Stable identifier of the app across versions. Choose it once; every version you upload under the same name belongs to the same app. | | `version` | `string` | Yes | — | a semantic version such as `1.4.0` or `2.0.0-beta.1`; at most 64 characters | Version of this build. Each upload needs a new version; installs move between published versions. | | `title` | `string` | Yes | — | 1–80 characters | Name people see in the Apps section and on the install screen. | | `description` | `string` | No | — | 1–160 characters | One line on what the app is for, shown on its card in the Apps hub. | | `accent` | one of `blue`, `violet`, `teal`, `green`, `amber`, `orange`, `rose` or `slate` | No | — | — | Accent color of the app’s card and tile in the Apps hub. | | `symbol` | one of `apps`, `chart`, `dashboard`, `table`, `briefcase`, `bank`, `shield`, `users`, `inbox`, `calendar`, `compass`, `sparkles`, `zap`, `rocket`, `workflow` or `document` | No | — | — | Symbol shown on the app’s tile in the Apps hub. | | `icon` | `string` | No | — | 1–512 characters | Path to an image in the bundle, relative to the manifest. | | `pages` | `object[]` | Yes | — | 1–20 items | The pages people open from the Apps section, in order. | | `pages[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | Page identifier, unique within the app. | | `pages[].title` | `string` | Yes | — | 1–80 characters | Page name shown in the app’s navigation. | | `pages[].entry` | `string` | Yes | — | 1–512 characters | HTML file in the bundle, relative to the manifest, optionally with a `#/route` for client-side routing (`./dist/index.html#/home`). | | `permissions` | `object` | No | see fields | — | What the app may reach. It only narrows: the app always acts as the person using it and never reaches more than they can. | | `permissions.tables` | `string[]` | No | `[]` | at most 50 items; each 1–255 characters | Tables the app may list, query and add rows to, by table name. | | `permissions.model` | one of `read` or `none` | No | `"none"` | — | `read` lets the app read and query the semantic model. | | `permissions.workflows` | `string[]` | No | `[]` | at most 50 items; each 1–255 characters | Deployed workflows the app may run, by workflow name. | | `permissions.relays` | `string[]` | No | `[]` | at most 50 items; each 1–255 characters | Relays the app may assign tasks to, by Relay name. | | `permissions.chat` | one of `ask`, `answer` or `none` | No | `"none"` | — | `ask` lets the app open Chat with a question for the person to send; `answer` also lets it get Chat answers back, read-only. | | `permissions.files` | one of `read`, `write` or `none` | No | `"none"` | — | Workspace files: `read` reads files by id, `write` also creates new files. | | `permissions.ai` | `object` | No | see fields | — | Platform AI the app may call. Every call counts against the app budget. | | `permissions.ai.models` | `string[]` | No | `[]` | at most 50 items; each 1–255 characters | Model ids the app may name for `ai.complete` and `ai.media`. Workspace and permission-group model rules still apply. | | `permissions.ai.media` | `string[]` | No | `[]` | at most 2 items | Media the app may generate with `ai.media`: `image`, `speech`. | | `permissions.knowledge` | `string[]` | No | `[]` | at most 50 items; each 1–255 characters | Knowledge bases the app may search, by name. | | `permissions.integrations` | `string[]` | No | `[]` | at most 50 items; each matches `^[a-z][a-z0-9_]{1,127}$` | Integration actions the app may run with the connected accounts of the person using it, by tool id. Actions that change anything ask the person first. | | `requires` | `object` | No | — | — | Definitions the install creates when the workspace does not already have them. | | `requires.tables` | `string` or `string[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Glob of table definition files (YAML) in the bundle. | | `requires.rules` | `string` or `string[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Glob of rule definition files (YAML or JSON) in the bundle. | | `requires.relays` | `string` or `string[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Glob of Relay definition files (YAML or JSON) in the bundle. | | `tools` | `string` or `string[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Globs naming your code tools: each `.tool.yaml` and its `.ts`, `.js`, `.mjs` or `.py` source. The files are stored with the version and run on the server; they are never served to the app frame. See Code tools. | | `chatBlocks` | `string`, `string[]` or `object[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Chat cards the app provides: a glob of HTML files (each named after its file) or a list of cards. | | `chatBlocks[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | Card identifier, unique within the app. | | `chatBlocks[].title` | `string` | Yes | — | 1–80 characters | Card name. | | `chatBlocks[].entry` | `string` | Yes | — | 1–512 characters | HTML file in the bundle. | | `panels` | `string`, `string[]` or `object[]` | No | — | 1–512 characters; at most 50 items; each 1–512 characters | Dashboard panels the app provides: a glob of HTML files (each named after its file) or a list of panels. | | `panels[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | Panel identifier, unique within the app. | | `panels[].title` | `string` | Yes | — | 1–80 characters | Panel name. | | `panels[].entry` | `string` | Yes | — | 1–512 characters | HTML file in the bundle. | | `build` | `object` | No | — | — | How a Git deploy builds the app. `agentserve app deploy` builds on your machine and ignores it. See Git deploys. | | `build.command` | `string` | No | — | 1–500 characters | Command run from the repository root after dependencies are installed. Defaults to `bun run build`. | | `build.output` | `string` or `string[]` | No | — | 1–512 characters; 1–20 items; each 1–512 characters | Files and folders that make up the bundle, besides the manifest. Defaults to the folders holding the page, panel and Chat card entries, the icon and the `requires` files. The `tools` files are always added. | | `build.allowVulnerable` | `boolean` | No | — | — | Let a build through when the dependency audit finds high or critical vulnerabilities. The version records that it was allowed, and shows it wherever the version is listed. | | `budget` | `object` | No | — | — | Monthly spending cap for the app’s paid work. An admin can override it per install. | | `budget.monthlyUsd` | `number` | Yes | — | 0–1,000,000 | Cap in US dollars per calendar month (UTC). | | `triggers` | `object[]` | No | — | at most 20 items | Platform events and schedules that run a handler in the background, as the admin who approved background runs and only with the scopes they approved. See Plugins. | | `triggers[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | Trigger identifier, unique within the app. | | `triggers[].title` | `string` | Yes | — | 1–60 characters | What the trigger does, shown on the install review and the Manage page. | | `triggers[].on` | `object` | Yes | — | — | The event: `schedule` (with `cron` and `timezone`), `table.row.inserted` or `table.row.updated` (with `table`), `file.uploaded`, `relay.task.completed`, `workflow.run.completed`, or `calendar.event.ended` (not delivered yet). | | `triggers[].handler` | `string` | Yes | — | matches `^[a-z][a-z0-9_]{0,39}$` | The code tool that handles the event, by tool name. | | `commands` | `object[]` | No | — | at most 20 items | Slash commands added to Chat, such as `/call-prep`. | | `commands[].name` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{1,31}$` | What people type after the slash in Chat. | | `commands[].description` | `string` | Yes | — | 1–160 characters | Shown next to the command in Chat’s slash menu. | | `commands[].arguments` | `object[]` | No | `[]` | at most 5 items | Arguments the command asks for, in order. | | `commands[].arguments[].name` | `string` | Yes | — | matches `^[a-z][a-z0-9_]{0,31}$` | Argument name, as the handler or page receives it. | | `commands[].arguments[].description` | `string` | Yes | — | 1–160 characters | Shown as the argument’s hint in Chat. | | `commands[].arguments[].required` | `boolean` | No | `false` | — | Whether the command needs it before it runs. | | `commands[].run` | `object` | Yes | — | — | `{ handler: }` runs a code tool and shows its answer in Chat; `{ open: { page: } }` opens a page, which reads the arguments with `launch.get`. | | `actions` | `object[]` | No | — | at most 20 items | Context-menu items on files, table rows, workbook queries and dashboard panels, such as “Summarise this file”. | | `actions[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | Action identifier, unique within the app. | | `actions[].title` | `string` | Yes | — | 1–60 characters | The menu item. | | `actions[].description` | `string` | No | — | 1–160 characters | A short note shown with the item. | | `actions[].on` | one of `file`, `table.row`, `workbook.query` or `dashboard.panel` | Yes | — | — | Where it appears: `file`, `table.row`, `workbook.query` or `dashboard.panel`. | | `actions[].types` | `string[]` | No | — | at most 20 items; each an extension such as `.pdf` or a media type such as `image/*` | For `file`: only files with these extensions (`.pdf`) or media types (`image/*`). | | `actions[].tables` | `string[]` | No | — | at most 50 items; each 1–255 characters | For `table.row`: only rows of these tables, each also named in `permissions.tables`. Defaults to every table there. | | `actions[].run` | `object` | Yes | — | — | `{ handler: }` runs a code tool with the file, row, query or panel; `{ open: { page: } }` opens a page that reads it with `launch.get`. | | `settings` | `object` | No | — | — | A JSON Schema form an admin fills in on the Manage page. Pages read it with `settings.get`; code tools get it in their input. | | `settings.type` | `string` | No | `"object"` | — | Always `object`. | | `settings.properties` | `object` | Yes | — | — | The fields, by key: `string` (with `enum`, `format: textarea`, `email`, `uri` or `secret`), `number`, `integer` or `boolean`, each with a `title`. A `secret` field’s key is a secret name, such as `API_TOKEN`; its value is kept in the install’s secrets. | | `settings.required` | `string[]` | No | `[]` | at most 30 items | Keys of the fields an admin must fill in. | | `connectors` | `object[]` | No | — | at most 10 items | MCP servers the plugin brings: created on install through the workspace’s MCP stack, owned by the install and removed when it is uninstalled. The plugin calls them with `mcp.call`. | | `connectors[].id` | `string` | Yes | — | matches `^[a-z][a-z0-9-]{0,62}$` | How the plugin names the connector in `mcp.call`. | | `connectors[].title` | `string` | Yes | — | 1–60 characters | Shown on the install review and the Manage page. | | `connectors[].directory` | `string` | No | — | matches `^[a-z][a-z0-9-]{0,62}$` | A connectors directory entry, such as `linear`, which supplies the address and sign-in. | | `connectors[].url` | `string` | No | — | at most 2048 characters | The remote MCP endpoint (https), when no directory entry is named. | | `connectors[].auth` | one of `none`, `oauth` or `header` | No | — | — | `oauth`: an admin connects an account on the Manage page. `header`: a secret setting is sent as a header. `none`: no sign-in. | | `connectors[].header` | `object` | No | — | — | For a key sent as a header: which secret setting, under which header. | | `connectors[].header.name` | `string` | Yes | — | matches `^[A-Za-z][A-Za-z0-9-]{0,63}$` | The header, such as `Authorization`. | | `connectors[].header.secret` | `string` | Yes | — | matches `^[A-Z][A-Z0-9_]{0,63}$` | The secret setting whose value is sent. | | `connectors[].header.prefix` | `string` | No | — | at most 32 characters | Sent before the value, such as `Bearer `. | | `connectors[].tools` | `string[]` | No | — | at most 100 items; each 1–128 characters | Only these tools may be called. Omitted means every tool the server lists. | | `skills` | `object[]` | No | — | at most 20 items | Instruction packs added to the workspace skill library, usable as `/name` in Chat and by Relays. | | `skills[].name` | `string` | Yes | — | matches `^[a-z0-9]+(-[a-z0-9]+)*$`; at most 64 characters | Skill name, as Chat types it after a slash. | | `skills[].description` | `string` | Yes | — | 1–1024 characters | What the skill is for, shown in the skill library. | | `skills[].file` | `string` | Yes | — | matches `\.md$`; 1–512 characters | The Markdown instructions in the bundle. | | `background` | `object` | No | — | — | Limits for background runs: how many at once and how long each may take. | | `background.concurrency` | `integer` | No | `1` | 1–5 | Most background runs of one install at once. | | `background.timeoutSeconds` | `integer` | No | `120` | 10–480 | Longest one run may take before it is stopped. | | `background.monthlyUsd` | `number` | No | — | 0–100,000 | Suggested monthly cap on background spend, shown on the install review. The admin sets the real cap. | | `listing` | `object` | No | — | — | What the plugin catalog shows about a first-party plugin. | | `listing.tagline` | `string` | No | — | 1–120 characters | One short line under the plugin’s name in Discover. | | `listing.categories` | `string[]` | No | `[]` | at most 3 items | Catalog categories, at most three. | | `listing.packs` | `string[]` | No | `[]` | at most 5 items | Team packs the plugin belongs to: `everyone`, `sales`, `finance`, `legal`, `ops`. | | `listing.screenshots` | `string[]` | No | `[]` | at most 8 items; each a `.png`, `.jpg` or `.webp` file; each 1–512 characters | Screenshots in the bundle, shown on the plugin’s detail page. | | `listing.publisher` | `object` | No | — | — | Who publishes the plugin. Defaults to Agent Serve for first-party plugins. | | `listing.publisher.name` | `string` | Yes | — | 1–80 characters | Publisher name. | | `listing.publisher.url` | `string` | No | — | at most 512 characters | Publisher web address. | | `slots` | `object` | No | — | — | Workspace resources the admin picks at install, by slot name: each has a `kind` (`table`, `knowledge_base`, `workflow`, `relay` or `model`), a `title`, a `description`, `required` (default true) and an optional `default` name. The app addresses each by its slot name. | {/* END GENERATED: app manifest fields */} ## Paths and globs [#paths-and-globs] Every path in the manifest is relative to the manifest, such as `./dist/index.html` or `./tables/*.yaml`. A path may not start with `/`, may not be a URL, and may not leave the bundle with `..`. Globs match files in the bundle: `*` matches within one folder, `**` matches any number of folders, and `?` matches one character. Fields that take a glob also take a list of globs. When you upload, the platform checks that: * every page entry, panel entry and Chat card entry is an HTML file in the bundle, * the icon, when set, is in the bundle, * `requires.tables`, when set, matches at least one file. ## Pages [#pages] Each page is one entry in the Apps section's navigation. Most apps are a single-page application with one `index.html` and a route per page, written as a fragment: `./dist/index.html#/visits`. The app reads the fragment to decide what to show. You can have up to 20 pages, and their `id`s must be unique. ## Permissions [#permissions] `permissions` names what the app may reach. The app always acts as the person using it, so a permission never gives anyone more access than they already have. It only narrows. See [Security model](/developers/security). | Permission | What it opens | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `tables: [name, …]` | List those tables and their columns, query their rows, and add rows. | | `model: read` | Read the semantic model's entities, attributes and measures, and run governed queries on it. | | `workflows: [name, …]` | Run those deployed workflows, waiting for the result or queued. | | `relays: [name, …]` | Assign tasks to those Relays. | | `chat: ask` | Open Chat with a question. The person decides whether to send it. | | `chat: answer` | Everything `ask` opens, and get Chat's answer back in the app. Chat answers read-only: it cannot change anything from there. | | `files: read` | Read workspace files by id. | | `files: write` | Read workspace files and create new ones. | | `ai: { models: [id, …] }` | Ask those chat models for completions, whole or streamed. | | `ai: { media: [image, speech] }` | Generate images or speech with the workspace's media models, or with a model also listed in `ai.models`. | | `knowledge: [name, …]` | Search those knowledge bases. | | `integrations: [action, …]` | Run those integration actions, such as `slack_send_message`, with the person's own connected account. An action that changes anything asks the person first. | ```yaml permissions: ai: models: [gpt-5.5] media: [image] knowledge: [Product docs] integrations: [slack_send_message] chat: answer ``` Model, media and Chat calls run on the workspace's own provider key when it has one, and on Agent Serve's hosted key otherwise. Either way the person's permission group decides which providers and models they may use, so an app cannot reach a model the person could not. The app never sees a credential: integration actions use the person's connected account on the server, and the frame only gets the result. Names are matched against the workspace the app is installed in, when each call is made: * A name with no match grants nothing. Calls naming it fail with `not_found`. * If several workflows share a name, the app cannot run any of them until one is renamed. * A call that names a resource the manifest does not list fails with `forbidden`, even if the person could reach it. ## Slots [#slots] A name under `permissions` must match a resource in every workspace the app is installed in. When workspaces call the same thing by different names — a pipeline table, a docs knowledge base — declare a **slot** instead. The admin picks the workspace's own resource for each slot on the install review, and can change it later on the Manage page. The app calls methods with the slot's name. ```yaml slots: pipeline: kind: table title: Pipeline table description: Accounts and their open deals come from this table. default: pipeline_opportunities docs: kind: knowledge_base title: Knowledge base description: Questions are answered from this one. required: false ``` | Field | What it means | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------ | | `kind` | What the admin picks: `table`, `knowledge_base`, `workflow`, `relay` or `model`. | | `title`, `description` | What the review and the Manage page show next to the picker. Say why the app needs it. | | `required` | Defaults to `true`. The app installs only once a required slot is bound, or its `default` exists. | | `default` | A name the slot uses when the admin binds nothing and the workspace has a resource called that. The review starts on it. | * A slot is a permission by itself. A `table` slot lets the app reach the one table the admin bound to it, exactly as listing that table under `permissions.tables` would, and every call is still held to the person's own access. * Call methods with the slot name: `tables.query({ table: 'pipeline' })`, `knowledge.search({ knowledgeBases: ['docs'] })`, `workflows.run('intake')`, `relays.assignTask({ relay: 'reviewers' })`. * A `model` slot names a chat model the admin picks; pass the slot name as `model` in `ai.complete`. The workspace's semantic model is not a slot: there is one per workspace, reached with `permissions.model: read`. * A slot whose resource is deleted or archived falls back to its default, else it is unbound. Calls to an unbound slot fail with `not_found` and say an admin picks it on the Manage page, where it shows as **Needs setup**. * `tables.list` marks a table bound to a slot with that slot's name, and `viewer.get` lists each slot and whether it is set up. * A slot's name must not also appear under `permissions` for the same kind. * Triggers, actions and background scopes may name a slot wherever they name a table, workflow, Relay or knowledge base. Literal names keep working: a name under `permissions` is a fixed slot whose only binding is that name. ## Requires: tables, rules and Relays [#requires-tables-rules-and-relays] `requires` lists definitions the install creates when the workspace does not already have one with the same name. Existing ones are left as they are. The install is safe to retry: anything it already created is skipped. ### Tables [#tables] One YAML file per table: ```yaml title="tables/visits.yaml" name: visits description: Customer visits logged in the field columns: - { name: customer, type: string, required: true } - { name: visited_on, type: date, required: true } - { name: outcome, type: string } - { name: deal_value, type: currency } - { name: follow_up, type: boolean } ``` | Field | Rules | | -------------------- | ------------------------------------------------------------------------------------------- | | `name` | Required, 1–255 characters. List the same name under `permissions.tables` to use the table. | | `description` | Optional, up to 2,000 characters. | | `columns` | 1–200 columns, each with a unique `name` (1–255 characters, compared without case). | | `columns[].type` | One of `string`, `number`, `boolean`, `date`, `json`, `currency`. | | `columns[].required` | Optional `true` or `false`. | | `columns[].unique` | Optional `true` or `false`. | A table that cannot be created fails the whole install, with the file and field in the error. The installing admin's own plan limits apply. ### Rules [#rules] One YAML or JSON file per rule. The file is a rule definition exactly as the Rules API takes it, with a non-empty `name`; the rule service validates it in full when the install creates it. Rules need model management. If the installing admin's permission group does not include it, or a definition is invalid, the install still succeeds and reports the rule as **skipped** with the reason, so someone can create it in Rules. ### Relays [#relays] One YAML or JSON file per Relay. The install creates the Relay, sets it up from the file, and publishes it when the definition is complete and the admin leaves **Publish now** on: ```yaml title="relays/legal-review.yaml" # yaml-language-server: $schema=https://agentserve.valnoraelric.com/schemas/agentserve.relay.schema.json name: Legal review description: Reviews contracts flagged by Contract triage specialization: legal instructions: | You review contracts that Contract triage flagged against the team's playbook. For every flagged clause, accept, counter with exact wording, or escalate. delivers: summary: A decision for every flagged clause, with the reason and any counter wording. as: task_result escalation: Escalate anything that touches liability caps, indemnities or personal data. autonomy: assist approvals: { approvers: installer, expireAfterHours: 48 } tools: [workspace_read, tables, knowledge] workflows: - workflow: Send redlines responsibilities: - name: Weekly review backlog objective: List contracts that have waited more than five working days. schedule: { cron: '0 9 * * 1', timezone: UTC } ``` | Field | Rules | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | Required, 1–120 characters. List the same name under `permissions.relays` to use it. | | `description` | Optional, up to 2,000 characters. | | `specialization` | Optional. Defaults to `custom`. | | `instructions` | What the Relay does and how, in Markdown. Together with `delivers`, at most 8,000 characters. | | `delivers` | What it hands back when a task is done: a sentence, or `{ summary, as, folder }` where `as` is `task_result` (default) or `library_file`, which also saves a file in `folder`. It is added to the instructions under "What you deliver". | | `escalation` | Optional. When it stops and asks a person. | | `language`, `exampleTasks` | Optional. Its working language and up to 10 example tasks. | | `autonomy` | `observe` (default: drafts only), `assist` (acts within its rules, asks for the rest) or `operate`. | | `approvals` | Optional. `approvers: installer` (default) makes the installing admin its approver; `none` leaves approvers for later. `expireAfterHours` is 1–168. | | `tools` | Optional tool groups: `workspace_read`, `knowledge`, `tables`, `web`, `integrations`, `workflows`. | | `integrations.services` | Optional integration services it may call, by id, such as `slack`. | | `workflows` | Optional deployed workflows it may run, by name, with `autonomous` (default `false`). A name that matches no workflow, or several, is left for the admin to choose. | | `limits` | Optional `maxConcurrentTasks` (1–10) and `maxTasksPerDay` (1–200). | | `responsibilities` | Optional scheduled routines (`name`, `objective`, `schedule.cron`, `schedule.timezone`). They are created turned off. | The editor schema is published as `agentserve.relay.schema.json`. A definition is **complete** when it has `instructions` and `delivers`. The install review shows each Relay with its instructions and a **Publish now** switch, on by default for a complete definition when the admin may publish Relays. Everything happens as the installing admin, through the same steps as the Relays page: the Relay is created, its setup saved, its routines added and, when chosen, published, with the same setup and go-live checks. When a step cannot finish (a workflow the workspace does not have, a check that fails, a permission group without Relays), the Relay stays a draft and the review lists exactly what is missing, with a link to finish its setup. Relays are created only when the app is installed from the **Apps** page in the workspace. An install from the CLI or the API reports each declared Relay as skipped, with the reason, so create it in Relays or install from the workspace instead. ## Panels and Chat cards [#panels-and-chat-cards] An app can provide small views that render outside its own pages, in the same sandboxed frame: * `panels` — dashboard panels people add to a [dashboard](/dashboards). * `chatBlocks` — cards Chat can show in a reply. Declare them as a list with an `id`, `title` and `entry` each, or as a glob of HTML files: ```yaml panels: - id: pipeline title: Pipeline entry: ./dist/panels/pipeline.html chatBlocks: ./dist/cards/*.html ``` With a glob, each matching HTML file becomes one component whose `id` and `title` come from its file name, lowercased, with other characters turned into `-`. A file whose name does not make a valid id is left out, and at most 50 are used. A panel or card can call `resize` from the SDK to fit its height to its content. ## Tools [#tools] `tools` names your code tools, such as `./tools/*`: each `.tool.yaml` and its `.ts`, `.mts`, `.js`, `.mjs` or `.py` source. They are uploaded with the version, checked on upload, stored with it, and run on Agent Serve for the app, Chat, Relays and workflows. They are never served to the app's frame. See [Code tools](/developers/code-tools). ## Plugin sections [#plugin-sections] An app becomes a plugin when it also adds things to the workspace's own surfaces. Each section is optional: * `triggers` run a handler on a schedule or when something happens in the workspace, in the background. * `commands` add slash commands to Chat. * `actions` add menu items to files, table rows, workbook queries and dashboard panels. * `settings` is a form an admin fills in for the install. * `connectors` bring MCP servers (tools from other services) the plugin calls. * `skills` add instruction packs to the workspace's skill library. * `background` limits background runs; `listing` is what the plugin catalog shows. A handler is one of the app's own [code tools](/developers/code-tools), named by its tool name; an upload is refused when a handler names a tool the version does not ship. Every resource a trigger or action names must also be in `permissions`. See [Plugins](/developers/plugins) for each section, the handler input and output, and how background runs are authorized. ## Build [#build] `build` tells a [Git deploy](/developers/git-deploys) how to build the app: the command to run and which paths make up the bundle. `agentserve app deploy` builds on your machine and ignores it. ## Budget [#budget] `budget.monthlyUsd` caps what the app's paid work may spend in a calendar month, measured in UTC. Paid work is the workflow runs, Relay tasks and code tool runs the app starts, its model completions, generated media, Chat answers and knowledge searches, and the hosted-key cost of its integration actions. Once the month's spend reaches the cap, those calls fail with `budget_exhausted` until the next month. An admin can set a different budget for an install on its **Manage** page, which takes precedence over the manifest. With no budget in either place, the app's spend is not capped. See [Budgets](/developers/security#budgets-and-usage). --- # Plugins (/developers/plugins) A **plugin** is an app that does more than show pages. Besides its own pages, it can add things to the places your team already works: * **Commands** in Chat, such as `/call-prep` or `/brief`. * **Actions** in menus: "Summarise this file" on a file, "Explain this query" on a workbook query, and so on. * **Triggers** that run on a schedule or when something happens: a row is added, a file is uploaded, a Relay finishes a task, a workflow run ends. * **Settings** an admin fills in once per install. * **Connectors**: tools from other services, through MCP (the Model Context Protocol, an open standard for connecting AI agents to outside tools). * **Skills**: instructions Chat and Relays follow, added to the workspace skill library. There is nothing separate to learn. A plugin is an app with more sections in its [manifest](/developers/manifest): the same bundle, the same `agentserve app deploy`, the same install review and the same security model. ## A worked example [#a-worked-example] The first-party **File briefs** plugin (`plugins/file-briefs/` in the repository) uses most of the sections: ```yaml title="agentserve.app.yaml" # yaml-language-server: $schema=https://agentserve.valnoraelric.com/schemas/agentserve.app.schema.json name: file-briefs version: 1.0.0 title: File briefs description: Short, plain briefs of your files, on demand from any file and for every new file in Inbox. accent: violet symbol: document pages: - id: briefs title: Briefs entry: ./web/index.html permissions: tables: [File briefs] files: read ai: models: [claude-haiku-4-5] requires: tables: ./tables/*.yaml tools: ./tools/file_brief.* triggers: - id: inbox-upload title: Log every file uploaded to Inbox, ready for a brief on: event: file.uploaded folder: Inbox types: [.md, .txt, .csv, .json] handler: file_brief commands: - name: brief description: Open your briefs, or find one by file name arguments: - name: file description: Part of a file name to look for run: open: page: briefs actions: - id: summarise-file title: Summarise this file on: file types: [.md, .txt, .csv, .json] run: handler: file_brief settings: type: object properties: tone: type: string title: Brief style enum: [Plain, Bullet points, Executive summary] default: Plain maxLines: type: integer title: Longest brief minimum: 3 maximum: 12 default: 5 required: [tone] skills: - name: brief-writing description: Write a short, plain brief of any document for a busy reader. file: ./skills/brief-writing.md background: concurrency: 2 timeoutSeconds: 60 monthlyUsd: 5 listing: tagline: A brief of any file in five lines. categories: [productivity] packs: [everyone, legal, ops] budget: monthlyUsd: 20 ``` Every field is listed in the [manifest reference](/developers/manifest#fields). ## Handlers [#handlers] A **handler** is one of the app's own [code tools](/developers/code-tools), named by its tool name in a trigger, command or action (`handler: file_brief`). The upload is refused if a handler names a tool the version does not ship. ### What a handler receives [#what-a-handler-receives] Every handler gets the same input, so one tool can handle several entries: ```ts interface PluginHandlerInput { kind: 'trigger' | 'command' | 'action' install: { id: string; workspaceId: string; version: string } /** Non-secret settings. Secret settings are environment variables of the same name. */ settings: Record trigger?: { id: string } // kind: trigger event?: { type: string; [key: string]: unknown } command?: { name: string; args: Record } // kind: command action?: { id: string; target: ActionTarget } // kind: action viewer?: { userId: string } // absent in the background } ``` For an action, the target comes with the content the plugin may read already attached, read as the person who chose it: | Action on | `target` | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `file` | `{ kind, fileId, name, contentType, text? }`. `text` is the file's text, up to 200,000 characters, when the manifest has `files: read` and the file is text. | | `table.row` | `{ kind, table, rowId, row }`. `row` holds the row's values by column name. | | `workbook.query` | `{ kind, workbookId, cellId, title, sql }` | | `dashboard.panel` | `{ kind, dashboardId, panelId, title }` | The tool's `.tool.yaml` input schema must accept this shape. The simplest is an object with `kind`, `install` and `settings` required and the rest optional, as `plugins/file-briefs/tools/file_brief.tool.yaml` does. ### What a handler returns [#what-a-handler-returns] A handler never calls the network or Agent Serve itself. It returns what to do, and Agent Serve does it: ```ts interface PluginHandlerResult { /** Shown to the person: in Chat for a command, in a notice for an action. */ message?: string /** Open one of the plugin's pages; it reads what it was opened for with launch.get. */ open?: { page: string; params?: Record } /** Up to 20 SDK calls, made in order after the handler finishes. */ calls?: Array<{ method: string; params: object }> /** The index of a call whose answer becomes the message. */ answerWith?: number } ``` `calls` are the same calls an app page makes, such as `tables.insertRows`, `ai.complete`, `relays.assignTask` or `mcp.call`. `answerWith` turns the text of an `ai.complete`, `chat.answer` or `mcp.call` into the message, so a handler can build a prompt and let Agent Serve run it. File briefs answers "Summarise this file" this way: ```ts title="tools/file_brief.ts" export function run(input: PluginHandlerInput): PluginHandlerResult { const target = input.action?.target if (!target?.text?.trim()) return { message: 'This file has no text to brief.' } return { calls: [ { method: 'ai.complete', params: { model: 'claude-haiku-4-5', messages: [ { role: 'system', content: `Write a brief in at most ${input.settings.maxLines ?? 5} lines.` }, { role: 'user', content: target.text }, ], }, }, ], answerWith: 0, } } ``` The SDK exports these types and a `definePluginHandler` helper; see [App SDK](/developers/sdk#plugins). ### How calls are authorized [#how-calls-are-authorized] Every call a handler hands back goes through the same checks as a call from an app page: the person it acts for, narrowed to what the manifest names, with the app's budget and per-install limits. When a person ran the command or action, the calls act as them. A call that would need their approval (an integration action or MCP tool that changes something) is skipped and logged; open the plugin's page to make it with their approval. A handler cannot run another code tool through its calls. Calls run after the handler finishes, so a handler cannot read a call's result. For work in several steps, hand it to a Relay with `relays.assignTask`. ## Commands [#commands] A command adds `/name` to Chat's slash menu, with its description and arguments. When someone chooses it, Chat asks for the arguments, then either: * **runs the handler** (`run: { handler: … }`) and shows its message in Chat, or * **opens a page** (`run: { open: { page: … } }`). The page reads the command and its arguments with `launch.get`. ## Actions [#actions] An action adds a menu item where the manifest says (`on`): | `on` | Where it appears | | ----------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `file` | The menu on a file in Files, and the file viewer's menu. `types` limits it to extensions (`.pdf`) or media types (`image/*`). | | `table.row` | The menu on a table row. `tables` limits it to some tables; each must be in `permissions.tables`. | | `workbook.query` | A query cell's toolbar in a workbook. | | `dashboard.panel` | A dashboard panel's menu. | Like a command, an action runs its handler and shows the message, or opens a page that reads the target with `launch.get`. A plugin page that needs a file the action did not bring asks for one with `pickFiles`: Agent Serve shows its own file picker, and the plugin receives only what the person chose. A page can also put text on the clipboard with `copyText` and save a file with `download`; the app frame has no clipboard or downloads of its own, so Agent Serve does both from the host page. See [Files](/developers/sdk#files) and [Clipboard and downloads](/developers/sdk#clipboard-and-downloads) in the SDK reference. ## Triggers [#triggers] A trigger runs its handler in the background when its event happens. The event's details arrive as the handler's `event`: | `event` | Fires when | Filters | `event` carries | | ------------------------ | ------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | `schedule` | The cron expression comes round | `cron` (five fields), `timezone` (IANA, default `UTC`) | `scheduledFor`, `cron`, `timezone` | | `table.row.inserted` | A row is added to the table | `table`, which must be in `permissions.tables` | `table`, `row` (values by column name) | | `table.row.updated` | A row of the table changes | `table`; `columns` fires only when one of them changes | `table`, `row`, `previous`, `changedColumns` | | `file.uploaded` | A file is uploaded to workspace files | `folder` (a path such as `Contracts/2026`, including its subfolders), `types` | `file` (`id`, `name`, `contentType`, `size`, `folderId`, `folderPath`) | | `relay.task.completed` | A Relay completes a task | `relay`, which must be in `permissions.relays` | `relay`, `task` (`id`, `title`, `state`) | | `workflow.run.completed` | A workflow run ends | `workflow` (in `permissions.workflows`), `status` (`success`, `error`) | `workflow`, `executionId`, `status`, `durationMs` | | `calendar.event.ended` | A calendar event ends | `calendar` | — | `calendar.event.ended` is defined so plugins can declare it, but it is **not delivered yet**: the connected calendars report changes, not when an event ends. A trigger on it installs, shows on the Manage page as waiting for its event source, and never runs. Rows written by a bulk import do not fire table triggers. Each delivery runs a trigger once, even if it is retried. ## Background runs [#background-runs] A trigger runs with nobody in the app. Its runs act as **the admin who approved background runs** for the install, and only with **the scopes that admin approved**: a subset of the manifest's permissions and connectors, ticked on the install review or the Manage page. Every run is authorized again, when it starts, as that admin: their current workspace role, their permission group, and the Apps module. If they lose access, background runs stop and the Manage page says why; another admin approves them again to take over. A scope the manifest does not ask for is never granted, even if an approval names it. Because the admin approved the scopes in advance, a background run's calls do not wait for anyone's approval. | Limit | What it does | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `background.concurrency` | Most runs of one install at once (1 to 5, default 1). Others wait their turn, for up to an hour. | | `background.timeoutSeconds` | Longest one run may take (10 to 480 seconds, default 120). | | Monthly background cap | Set by the admin. When background spend reaches it, background runs pause until next month or until an admin raises it. `background.monthlyUsd` suggests one. | | App budget | Background runs count against the app's monthly budget like any other call. | | Rate | At most 60 runs per install per minute from events, so a plugin cannot loop on its own activity. | | Kill switch | An admin pauses and resumes background runs on the Manage page. | Every run — background or a person's command or action — appears in the install's **run history** on the Manage page: when it started and ended, its outcome (succeeded, failed, timed out, or refused before it started), what it cost and a short log of what Agent Serve did. The log never holds the handler's input, its output values or secrets. ## Settings [#settings] `settings` is a small JSON Schema form an admin fills in on the Manage page (and can fill in on the install review). Fields are `string` (optionally an `enum`, or `format: textarea`, `email` or `uri`), `number`, `integer` or `boolean`, each with a `title`, an optional `description` and `default`. `required` lists the fields that must have a value. * Pages read the values with `settings.get` / `useSettings()`. * Handlers get them in their input as `settings`. * A field with `format: secret` is kept in the install's secrets, never sent to a page and never shown again after it is saved. Its key is the secret's name (`API_TOKEN`), and code tools read it as an environment variable of that name. ## Connectors [#connectors] `connectors` names MCP servers the plugin brings: by a [connectors directory](#connectors-directory) entry (`directory: linear`) or by URL (`url: https://…`, with `auth`). * On install, each connector becomes an MCP server in the workspace, through the workspace's own MCP settings: the admin's `mcp_tools.use` permission and the workspace's allowed MCP domains apply. A server the workspace already had at the same address is used, not replaced. * The install review shows each connector's host, how it signs in and the tools it allows (`tools`, or every tool it lists). * An `oauth` connector is signed in from the Manage page. A `header` connector sends a secret setting as a header (`header: { name: Authorization, secret: LINEAR_TOKEN, prefix: 'Bearer ' }`). * The plugin calls a connector with `mcp.call` (`callMcp` in the SDK): only its own connectors, only the tools the manifest allows, as the person using it or, in the background, as the approving admin with the connectors they approved. * A connector the plugin created is its own: Chat and Relays do not see it unless an admin shares it with them on the Manage page. Uninstalling the plugin removes it. ## Skills [#skills] `skills` adds instruction packs, one Markdown file each, to the workspace's skill library. People use them in Chat as `/name`, and Relays can use them like any other workspace skill. A name the workspace already uses is skipped and listed on the install review. Uninstalling the plugin removes the skills it added. ## Slots [#slots] A plugin that reads a workspace's own data — its pipeline table, its docs — declares [slots](/developers/manifest#slots) instead of naming them. The install review asks for each one ("Needs a knowledge base. Questions are answered from this one."), with a searchable list of the workspace's own tables, knowledge bases, workflows or Relays, and a link to create one when there is none. Handlers and their calls use the slot names too, and background runs reach a slot only when the admin approved it among the background scopes. ## Installing and reviewing [#installing-and-reviewing] Admins install a plugin the same way as any app. The review lists, in plain words: * the resource each slot needs, with a picker; * what the plugin may read and change, and the tables, rules and Relays it creates, with each Relay's instructions and a **Publish now** switch (see [Relays](/developers/manifest#relays)); * the commands, actions and triggers it adds; * its connectors (host, sign-in, tools) and skills; * its settings; * and, when it has triggers, the background scopes to approve and the monthly cap. Background runs can also be approved later from the Manage page. ## The plugin catalog [#the-plugin-catalog] The Apps hub's **Discover** view lists the first-party plugins this deployment ships, by category and by team pack (Everyone, Sales, Finance, Legal, Ops), with a detail page for each: what it does, screenshots, the permissions in plain words, what it adds, the publisher and its version history. An admin installs one with one click and the same review. First-party plugins live in the repository under `plugins//`, in the same layout as an app (`agentserve.app.yaml`, sources, `tools/`, a `README.md` and an optional `CHANGELOG.md` with `## 1.2.0 (2026-10-01)` headings). To publish one: 1. Add or change `plugins//` (the manifest `name` must be the folder name). 2. Run `bun run generate:plugin-catalog`. It validates every manifest and writes the catalog Discover reads; `--check` fails when the catalog is stale. 3. The image build runs `bun run build:plugin-bundles`, which builds each plugin and packs exactly what `agentserve app deploy` would upload, with its checksum. Installing reads that bundle and checks the checksum. The first install in an organization creates the plugin's app; later installs, and newer catalog versions, use the same app. A workspace app that already has the plugin's name is never replaced. ## Connectors directory [#connectors-directory] Discover also lists popular remote MCP servers that any workspace can connect with one click, without a plugin. Each entry shows its publisher, its tools, how it signs in, the scopes it asks for and a risk level worked out from what its tools do: | Risk | Means | | --------------- | ------------------------------------------------------------- | | Read only | Its tools only read. | | Can change data | Some tools create, update or delete in the service. | | Can act outside | Some tools send messages, act on live websites or move money. | Connecting shows that review first. A server that signs in with OAuth opens the vendor's sign-in; one that needs an API key or a registered OAuth app asks for it. Every entry's address and sign-in were checked against the vendor's own documentation. ## Developing a plugin [#developing-a-plugin] `agentserve app dev` runs a plugin's pages like any app's. For plugins it also: * prints what the plugin adds; * answers `settings.get` with each field's default, overridden by `.agentserve/settings.json` in the app folder; * answers `launch.get` with `--launch '{"kind":"command","name":"brief","args":{"file":"q3"}}'` when you pass it; * lists files with `listFiles` through the workspace's files API as you, and shows a simple picker for `pickFiles`; * copies and downloads from the dev page, with the same rules for unsafe file types; * refuses `mcp.call`, which runs only in the workspace. Handlers are code tools, so they run on the server from an installed version. Deploy, publish and install the plugin, then try its commands, actions and triggers in the workspace; the Manage page's run history shows each run. --- # Quickstart (/developers/quickstart) This page takes the blank template from an empty folder to an app people can open in your workspace. ## Before you start [#before-you-start] * Install the [Agent Serve CLI](/cli) and sign in with `agentserve login`. * Have [Bun](https://bun.sh) or Node.js 20 or later for the app's build. * To publish and install, you need the **admin** role in the workspace. Uploading a draft needs **write**. See [Roles](/developers/security#roles). ### Create the app [#create-the-app] ```bash agentserve app init my-app cd my-app bun install # or: npm install ``` `init` copies the `blank` template into `my-app`, sets the manifest `name` to `my-app` (from the folder name) and its `title` to `My app`, and copies the app SDK into `vendor/app-sdk`. It refuses a folder that is not empty unless you pass `--force`. To start from another template, pass `--template`. `agentserve app init --list` prints them all. See [Templates](/developers/templates). The folder now holds: ```text my-app/ ├── agentserve.app.yaml # the manifest ├── index.html ├── package.json ├── src/ # your React code ├── tables/items.yaml # a table the install creates ├── vendor/app-sdk/ # the SDK, copied by init └── vite.config.ts # builds into dist/ ``` ### Run it locally [#run-it-locally] ```bash agentserve app dev ``` `dev` builds the app and serves it at `http://localhost:5175`, inside a local host page that frames it with the same sandbox and content security policy as the workspace. SDK calls go to your workspace through the API with your own CLI login, so the app sees exactly what you can see, still narrowed to what the manifest names. When you change a file, `dev` rebuilds and reloads the frame. It ignores `dist/`, `node_modules/` and `vendor/`. The blank app reads a table called `items`. Until you install the app, that table only exists if you create it yourself, so the items card shows an error. Everything else works. A few calls behave differently in `dev`; see [agentserve app dev](/developers/cli#agentserve-app-dev). ### Deploy a draft [#deploy-a-draft] ```bash agentserve app deploy ``` `deploy` runs the build, packs the manifest, the folders your pages live in (here `dist/`), the icon, the files under `requires` and any [code tools](/developers/code-tools) into a `.zip`, and uploads it as a **draft version**. It prints the version, `0.1.0`, and a link to the app's versions page in the workspace. A draft cannot be installed yet. Each upload needs a new `version` in the manifest; uploading a version that already exists fails. ### Publish the version [#publish-the-version] ```bash agentserve app publish 0.1.0 ``` Publishing makes the draft installable. It needs the admin role. ### Install it [#install-it] ```bash agentserve app install ``` `install` installs the highest published version in your current workspace (pass `-w ` for another one). It prints what it created — here the `items` table — and anything it skipped. ### Open it [#open-it] In the workspace, open **Apps** in the left rail and pick **My app** (the title `init` made from the folder name; pass `--title` to choose another). On the app's **Manage** page an admin can pin it to the rail for chosen roles or groups, set a monthly budget, and see spend and activity. ## Ship a change [#ship-a-change] 1. Edit the code and raise `version` in `agentserve.app.yaml`, for example to `0.2.0`. 2. Deploy and publish, moving your workspace's install to the new version in one step: ```bash agentserve app deploy agentserve app publish 0.2.0 --rollout ``` 3. If something is wrong, move back: `agentserve app rollback 0.1.0`. ## Next steps [#next-steps] * Add permissions and pages: [Manifest reference](/developers/manifest). * Call workflows, Relays and Chat from your code: [App SDK](/developers/sdk). * Understand what admins approve: [Security model](/developers/security). --- # App SDK (/developers/sdk) `@agentserve/app-sdk` is how an app talks to its workspace. Every call goes from the app's sandboxed frame to the page around it, which checks the call and runs it as the person using the app, narrowed to the app's [manifest](/developers/manifest). The app has no other way out: it cannot make network requests of its own. ## Install [#install] `agentserve app init` copies the SDK into your app at `vendor/app-sdk`, and the template's `package.json` depends on it there: ```json title="package.json" "dependencies": { "@agentserve/app-sdk": "file:./vendor/app-sdk" } ``` Run `bun install` (or `npm install`) once after `init`. The SDK has three entry points: | Import | What it holds | | ------------------------------ | ------------------------------------------------------------------ | | `@agentserve/app-sdk` | `AppClient`, `getAppClient`, `AppBridgeError` and the result types | | `@agentserve/app-sdk/react` | React hooks and one-call functions (React 19) | | `@agentserve/app-sdk/protocol` | The bridge protocol, its limits and schemas | ## React [#react] Read hooks load when the component mounts and again when their inputs change. Each returns the same shape: ```ts interface AppQueryState { data: T | undefined // the latest answer; undefined until it arrives, or after an error error: AppBridgeError | Error | undefined loading: boolean // true while a load is in flight, including a refetch refetch: () => void // load again with the same inputs, for example after a write } ``` An answer that arrives after a newer request, or after the component unmounts, is ignored. ```tsx import { useTable, writeRows } from '@agentserve/app-sdk/react' export function Items() { const items = useTable('items', 50) async function add(title: string) { await writeRows('items', [{ title, done: false }]) items.refetch() } if (items.loading) return

Loading…

if (items.error) return

{items.error.message}

return (
    {items.data?.rows.map((row) => (
  • {String(row.data.title)}
  • ))}
) } ``` ### Hooks [#hooks] | Hook | Returns | Needs | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | `useViewer()` | The person using the app, their role, and the app's identity. See [Viewer](#viewer). | Nothing | | `useTables()` | `{ tables }`: the tables the manifest names that the person can read, with their columns. | `permissions.tables` | | `useQuery(params)` | `{ rows, nextCursor }` for a [table query](#tables). Reloads when `params` changes by value. | The table in `permissions.tables` | | `useTable(table, limit = 200)` | The first `limit` rows of a table. | The table in `permissions.tables` | | `useModel()` | The semantic model's entities, attributes and measures. | `model: read` | | `useModelQuery(params)` | Rows of a [model query](#semantic-model). Reloads when `params` changes by value. | `model: read` | | `useKnowledgeSearch(params)` | `{ results }` of a [knowledge search](#knowledge). Reloads when `params` changes by value; pass `null` to wait. | The knowledge bases in `permissions.knowledge` | | `useCompletion()` | `{ run, cancel, text, data, error, loading }` for a [streamed completion](#ai-models): `text` grows as the model writes, and `cancel()` stops it. | The model in `permissions.ai.models` | | `useFiles(params)` | `{ folders, files, nextCursor }`: a page of the [workspace files](#files) the person can see. Reloads when `params` changes by value. | `files: read` or `write` | | `useSettings()` | `{ values, secretsSet }`: the install's [settings](#plugins). | Nothing | | `useLaunch()` | What the page was opened for by a Chat command or an action, or `null`. See [Plugins](#plugins). | Nothing | ### Functions [#functions] These run once and return a promise. Use them for writes, and for reads you trigger yourself. | Function | Resolves to | Needs | | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------ | | `writeRows(table, rows)` | `{ rows }`: the rows added | The table in `permissions.tables` | | `runWorkflow(workflow, input?)` | The run's result, after it finishes | The workflow in `permissions.workflows` | | `queueWorkflow(workflow, input?)` | `{ executionId, status: 'queued' }`, once queued | The workflow in `permissions.workflows` | | `assignRelayTask({ relay, title, objective, acceptance? })` | `{ taskId, relayId }` | The Relay in `permissions.relays` | | `askChat(prompt)` | `{ opened: true }` | `chat: ask` | | `readFile(fileId)` | The file and its content | `files: read` or `write` | | `writeFile({ name, content, encoding?, contentType? })` | `{ id, name, contentType, size }` | `files: write` | | `readModel()` | The semantic model | `model: read` | | `queryModel(params)` | Rows of a model query | `model: read` | | `complete(params)` | `{ model, content, tokens, costUsd }` | The model in `permissions.ai.models` | | `streamComplete(params, onDelta)` | The same, after handing each piece of the answer to `onDelta` | The model in `permissions.ai.models` | | `generateMedia({ kind, prompt, … })` | `{ kind, model, mimeType, encoding: 'base64', content, costUsd }` | The kind in `permissions.ai.media` | | `answerChat(prompt)` | `{ content, costUsd }` | `chat: answer` | | `searchKnowledge(params)` | `{ results }` | The knowledge bases in `permissions.knowledge` | | `runIntegration({ action, input?, account? })` | `{ status, output, error }` | The action in `permissions.integrations` | | `callMcp({ connector, tool, arguments? })` | `{ status, text, content, error }` | The connector in `connectors` | | `listFiles(params?)` | `{ folders, files, nextCursor }` | `files: read` or `write` | | `pickFiles({ multiple?, types?, title? })` | `{ files }`: what the person chose in Agent Serve's file picker | `files: read` or `write` | | `copyText(text)` | `{ copied: true }`, once the text is on the person's clipboard | Nothing | | `download({ filename, content, encoding?, mimeType? })` or `download({ fileId, filename? })` | `{ started: true }`, once the browser saves the file | Nothing; `files: read` or `write` for a `fileId` | `complete`, `streamComplete` and `answerChat` take a last `{ signal }` argument: aborting the `AbortSignal` cancels the call (see [Cancelling](#cancelling)). ## AppClient [#appclient] The React functions use one shared client. Outside React, or for anything the hooks do not cover, use it directly: ```ts import { AppBridgeError, getAppClient } from '@agentserve/app-sdk' const client = getAppClient() const viewer = await client.getViewer() ``` `getAppClient()` creates the page's client on first use. `new AppClient({ timeoutMs })` creates another; it only works inside an app frame. | Method | Bridge method | | --------------------------------- | -------------------------------------------------- | | `getViewer()` | `viewer.get` | | `listTables()` | `tables.list` | | `query(params)` | `tables.query` | | `writeRows(table, rows)` | `tables.insertRows` | | `runWorkflow(workflow, input?)` | `workflows.run` | | `queueWorkflow(workflow, input?)` | `workflows.run` with `async: true` | | `assignRelayTask(params)` | `relays.assignTask` | | `readFile(fileId)` | `files.read` | | `writeFile(params)` | `files.write` | | `readModel()` | `model.read` | | `queryModel(params)` | `model.query` | | `listTools()` | `tools.list` | | `runTool(name, input?)` | `tools.run` | | `complete(params)` | `ai.complete` | | `streamComplete(params, onDelta)` | `ai.complete` with `stream: true` | | `generateMedia(params)` | `ai.media` | | `answerChat(prompt)` | `chat.answer` | | `searchKnowledge(params)` | `knowledge.search` | | `runIntegration(params)` | `integrations.run` | | `getSettings()` | `settings.get` | | `callMcp(params)` | `mcp.call` | | `getLaunch()` | `launch.get` | | `listFiles(params?)` | `files.list` | | `pickFiles(params?)` | `files.pick` | | `copyText(text)` | `ui.copy` | | `download(params)` | `ui.download` | | `askChat(prompt)` | `chat.ask` | | `resize(height)` | `ui.resize` | | `onTheme(listener)` | Theme events; returns an unsubscribe function | | `call(method, params)` | Any bridge method, typed by method name | | `close()` | Stops listening and fails every call still waiting | A call that gets no answer within 60 seconds fails with `timeout`; model, media, Chat answer and integration calls wait up to 300 seconds. Pass `timeoutMs` to a new client to change it. ## Methods in detail [#methods-in-detail] ### Viewer [#viewer] `getViewer()` / `useViewer()` returns: | Field | Type | | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId`, `name`, `email` | The person using the app. `name` and `email` may be `null`. | | `role` | Their workspace role: `read`, `write` or `admin`. | | `workspaceId` | The workspace the app is installed in. | | `app` | `{ id, installId, versionId, version, slug }` of the running install. | | `permissions` | The installed version's `permissions`, with defaults filled in. Slot names appear in the list of their kind. | | `slots` | Each slot the manifest declares, by name: `{ kind, title, bound, model }`. `bound` says whether it is set up; `model` is the bound model id for a `model` slot, and `null` otherwise. A bound table's or knowledge base's own name is not shown, since the person may not be able to see it. | Call methods with a slot's name; the server reaches the resource the admin bound. `tables.list` returns each table's `slot` (its slot name, or `null`), so a page can find the table a slot is bound to. Under `agentserve app dev`, slots resolve from `.agentserve/slots.json` in the app folder — `{ "pipeline": "Deals" }`, slot name to the workspace resource's name — else from each slot's `default`. ### Tables [#tables] `query(params)` / `useQuery(params)` takes: | Param | Rules | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `table` | A table name listed in `permissions.tables`. | | `where` | Optional. Column name to value; every condition must hold. A value is a string (up to 10,000 characters), number, boolean, or `null` for an empty cell. At most 20 conditions. | | `sort` | Optional. Up to 5 of `{ column, direction }`, where `direction` is `asc` or `desc`. | | `columns` | Optional. Up to 200 column names to return. | | `limit` | Optional. 1–500 rows, default 100. | | `cursor` | Optional. The `nextCursor` of the previous page. | It returns `{ rows, nextCursor }`. Each row is `{ id, data }`, with `data` keyed by column name. `nextCursor` is `null` on the last page. `writeRows(table, rows)` adds 1–100 rows per call, each keyed by column name with at most 200 columns. It returns the added rows. The person must be allowed to add rows to the table. Every row, column and row-security rule that applies to the person applies to the app too. ### Workflows [#workflows] `runWorkflow(name, input)` runs a deployed workflow and waits for it. It resolves to `{ executionId, status, output, error }`, where `status` is `completed`, `failed`, `paused` or `cancelled`. A run that starts but fails still resolves, with `status: 'failed'` and the `error` message; the call itself rejects only when the run cannot start. `queueWorkflow(name, input)` queues the run and resolves with `status: 'queued'` and the execution id, without output. Both count against the app's [budget](/developers/security#budgets-and-usage). ### Relays [#relays] ```ts await assignRelayTask({ relay: 'Field follow-up', title: 'Follow up with Acme', objective: 'Send Acme the pricing sheet and book a call next week.', acceptance: 'A call is booked.', }) ``` `title` is 1–200 characters, `objective` 1–8,000, `acceptance` up to 4,000. The task is assigned as the person using the app, and its cost counts against the app's budget. ### Chat [#chat] `askChat(prompt)` opens Chat in the workspace with the prompt filled in. The person reads it and decides whether to send it. The prompt is 1–4,000 characters, and an app can open Chat at most once every 5 seconds. `answerChat(prompt)` asks Chat and returns its answer to the app, without opening Chat; it needs `chat: answer`. Chat answers as the person, from a read-only turn: it can look things up across the workspace, but any tool that would change something is refused. The conversation is saved to the person's Chat list under the app's name, so they can see what was asked for them. The turn is billed like any Chat turn and also counts against the app's budget. ```ts const { content } = await answerChat('Which accounts renewed late this quarter, and why?') ``` ### AI models [#ai-models] `complete(params)` sends a conversation to a chat model the manifest lists in `ai.models` and resolves with the answer: ```ts const { content, costUsd } = await complete({ model: 'gpt-5.5', messages: [ { role: 'system', content: 'You write short, friendly product descriptions.' }, { role: 'user', content: `Describe: ${product.name}` }, ], maxTokens: 300, }) ``` | Param | Rules | | ---------------- | -------------------------------------------------------------------------------------------------------- | | `model` | A model id listed in `permissions.ai.models`. | | `messages` | 1–50 of `{ role, content }`, where `role` is `system`, `user` or `assistant`; 200,000 characters in all. | | `maxTokens` | Optional. 1–8,192. | | `temperature` | Optional. 0–2. | | `responseFormat` | Optional. `json` asks for a single JSON object; parse `content` yourself. Defaults to `text`. | `streamComplete(params, onDelta)` and `useCompletion()` deliver the answer in pieces as the model writes it, then resolve with the whole answer and its cost: ```tsx import { useCompletion } from '@agentserve/app-sdk/react' function Summary({ notes }: { notes: string }) { const { run, text, loading } = useCompletion() return (

{text}

) } ``` The person's permission group still decides which providers and models they may use, and a model the deployment blocks is refused with `forbidden`. A call runs on the workspace's own provider key when it has one, and on Agent Serve's hosted key otherwise; `costUsd` is what it was billed, and it counts against the app's budget. `generateMedia({ kind, prompt, model?, aspectRatio?, voice? })` makes an image or a clip of speech; `kind` must be listed in `ai.media`. Without `model` the workspace's default model for the kind is used; a `model` must also be listed in `ai.models`. The result is base64 content with its MIME type, up to 8 MB: ```ts const image = await generateMedia({ kind: 'image', prompt: 'A lighthouse at dawn', aspectRatio: '16:9' }) setSrc(`data:${image.mimeType};base64,${image.content}`) ``` ### Knowledge [#knowledge] `searchKnowledge({ knowledgeBases, query, topK? })` / `useKnowledgeSearch(params)` searches 1–5 knowledge bases the manifest names, by name, and returns up to `topK` passages (1–20, default 5), best match first. Each result is `{ knowledgeBase, documentId, documentName, sourceUrl, content, similarity }`. Only documents the person can read are searched. ```ts const { results } = await searchKnowledge({ knowledgeBases: ['Product docs'], query: 'refund policy' }) ``` ### Integrations [#integrations] `runIntegration({ action, input, account })` runs an integration action the manifest lists in `integrations`, such as `slack_send_message`, with the person's own connected account. The app never sees the account's credentials. When the person has several accounts for the provider, pass `account` with the one's name; otherwise it is chosen for them. An action that changes anything (sending, creating, updating, deleting, paying) is first put to the person in the workspace page. If they approve, it runs; if not, the call fails with `declined`. Reads run straight away. ```ts const run = await runIntegration({ action: 'slack_send_message', input: { channel: '#sales', text: `New lead: ${lead.name}` }, }) if (run.status === 'failed') showNotice(run.error) ``` It resolves with `{ status, output, error }`: `status` is `failed` when the provider refused the action. The action's input is the integration's own, the same parameters the tool takes in a workflow. Under `agentserve app dev`, `searchKnowledge` runs against the workspace with your own access, while model, media, Chat answer and integration calls fail with `not_found` because they are metered to an installed app: give your code a fallback, or deploy and open the app in the workspace. ### Files [#files] `readFile(fileId)` returns `{ id, name, contentType, size, encoding, content }`. Text files (text, JSON, XML, CSV, YAML, Markdown) come back as `utf8`; anything else as `base64`. Files up to 5 MB can be read. A file that may contain secret values is refused with `forbidden`. `writeFile({ name, content, encoding, contentType })` creates a new workspace file. `encoding` is `utf8` (the default) or `base64`, for binary content such as a photo. A file is at most 5 MB. If the name is taken, the new file gets a numbered suffix. `listFiles({ folder?, search?, types?, recursive?, limit?, cursor? })` / `useFiles(params)` lists the workspace files and folders the person can see, so an app can build its own file browser. It needs `files: read` or `write`, and returns exactly what the person could see in Files: their file and folder access applies. | Param | Rules | | ----------- | ------------------------------------------------------------------------------------------------------ | | `folder` | Optional. A folder path such as `Contracts/2026`; the workspace root when left out. | | `search` | Optional. Words in the file name, 1–200 characters. | | `types` | Optional. Up to 20 extensions (`.pdf`) or media types (`application/pdf`, `image/*`). | | `recursive` | Optional. Include files in subfolders. Defaults to `true` with a `search`, `false` without. | | `limit` | Optional. 1–100 files, default 50. | | `cursor` | Optional. The `nextCursor` of the previous page; it works only with the same folder, search and types. | `folders` (the folder's subfolders, or folders whose name matches the search) comes with the first page only. Files come in name order as `{ id, name, contentType, size, folderPath, updatedAt }`. Types are matched after a page is read, so a page filtered by type can hold fewer than `limit` files while `nextCursor` still leads on. `pickFiles({ multiple?, types?, title? })` is usually the better choice: Agent Serve shows its own file picker over the app, the person chooses, and the app receives only the files they chose (`{ id, name, contentType, size, folderPath, updatedAt }`). Files outside `types` are shown but cannot be chosen. Closing the picker rejects with `declined`. It needs `files: read` or `write`; read a chosen file's content with `readFile`. ```ts const { files } = await pickFiles({ types: ['.pdf', '.docx'], title: 'Choose a contract' }) const contract = await readFile(files[0].id) ``` ### Clipboard and downloads [#clipboard-and-downloads] An app runs in a sandboxed frame with no clipboard and no downloads of its own. Agent Serve does both for it, from the host page. `copyText(text)` puts up to 100,000 characters on the person's clipboard and shows a short "Copied" notice. Call it from a click: browsers copy only right after the person does something. `download(params)` saves a file to the person's computer and shows a "Saved" notice: * `{ filename, content, encoding?, mimeType? }` saves content the app made. `encoding` is `utf8` (the default) or `base64`. The file is at most 10 MB. * `{ fileId, filename? }` saves a workspace file the person can read; it needs `files: read` or `write` and is at most 5 MB, the `readFile` limit. Text, CSV, JSON, XML, Markdown, PDF, images, audio and video, Office documents (`.xlsx`, `.docx`, `.pptx`) and zip archives are saved as they are. Pages and scripts — HTML, SVG, JavaScript and executables — are saved as plain text with `.txt` added, so a downloaded file never runs when opened. Any other type is refused with `invalid_request`. The name loses any folder path and characters a file system refuses. Why not let the frame copy directly? The frame has an opaque origin and runs whatever code the app ships, so granting it `clipboard-write` would let any script in it write the clipboard at any moment, with no way to tie it to a person's click on Agent Serve's side. Copying through the host page keeps every write capped, visible ("Copied") and on Agent Serve's terms, and the same holds for downloads. ### Cancelling [#cancelling] `complete`, `streamComplete` and `answerChat` accept `{ signal }`, and `useCompletion()` returns `cancel()`. Aborting stops the call and rejects it with `cancelled`. ```ts const controller = new AbortController() stopButton.onclick = () => controller.abort() await streamComplete(params, (delta) => append(delta), { signal: controller.signal }) ``` A cancelled streamed completion stops at the model: Agent Serve aborts the provider request, and the app is billed only for what the model wrote. The provider reports tokens only when a stream finishes, so a cancelled one is metered from the text sent and the text written (counted the same way Agent Serve counts tokens elsewhere), priced like any other completion, and recorded as cancelled. A completion that has not streamed yet (`complete`), and `answerChat`, stop waiting when cancelled; the work already started in the workspace finishes and is billed as usual. ### Semantic model [#semantic-model] `readModel()` / `useModel()` returns `{ source, entities }`. `source` is `published`, or `draft` when the person is working in their draft model. Each entity lists its `attributes` (with a `role`) and `measures` by name. `queryModel(params)` / `useModelQuery(params)` runs a governed query: ```ts const result = await queryModel({ measures: [{ entity: 'Orders', measure: 'Revenue' }], dimensions: [{ entity: 'Orders', attribute: 'Order date', dateGrain: 'month' }], where: { 'Orders.Account': 'Acme' }, limit: 12, }) ``` | Param | Rules | | ------------ | --------------------------------------------------------------------------------------------------------------------- | | `measures` | 1–16 of `{ entity, measure }`. An entity is named by id or by name. | | `dimensions` | Optional. Up to 4 of `{ entity, attribute, dateGrain? }`; `dateGrain` is `day`, `week`, `month`, `quarter` or `year`. | | `where` | Optional. Up to 20 equality conditions keyed `entity.attribute`. | | `sort` | Optional. Up to 5 of `{ by, direction }`, where `direction` is `asc` or `desc`. | | `limit` | Optional. 1–500 rows, default 100. | It returns `{ columns, rows, truncated, warnings }`. The query reaches only rows the person could read in the tables behind the model. ### Code tools [#code-tools] `runTool(name, input?)` runs one of the app's own [code tools](/developers/code-tools) on the server and resolves with `{ status, output, error, durationMs }`. `status` is `succeeded`, `failed` (the tool threw or returned something its output schema refuses) or `timed_out`; only a refusal before the run, such as invalid input or a spent budget, rejects. The call waits up to 330 seconds, longer than the longest tool limit. `listTools()` returns the app's tools with their input and output schemas. An app needs no permission to run its own tools, and each run counts against its budget. ```ts const run = await getAppClient().runTool('score_offer', offer) if (run.status === 'succeeded') setScore(run.output) ``` ### Plugins [#plugins] A plugin is an app that also adds things to the workspace: Chat commands, menu items, background triggers, settings, connectors and skills. See [Plugins](/developers/plugins). Three methods are for plugins: * `getSettings()` / `useSettings()` returns `{ values, secretsSet }`: the values an admin saved on the install's Manage page, with each field's default where nothing was saved. A secret setting is never sent to a page; `secretsSet` names the secret settings that have a value, and only the plugin's code tools receive them. * `getLaunch()` / `useLaunch()` returns what the page was opened for: `{ kind: 'command', name, args }` when a Chat command opened it, `{ kind: 'action', id, target }` when a menu item did, or `null` when someone opened it from the Apps hub. The page answers this itself, so it costs nothing. * `callMcp({ connector, tool, arguments })` calls a tool on one of the plugin's own connectors (the manifest `connectors`), as the person using it. A tool that changes anything is put to the person first, like an integration action, and fails with `declined` if they say no. It resolves with `{ status, text, content, error }`: `text` joins the text the tool returned. ```ts const { values } = await getAppClient().getSettings() const launch = await getAppClient().getLaunch() if (launch?.kind === 'command') setQuery(launch.args.file ?? '') ``` Plugin handlers are code tools, so they do not use the client. The SDK exports their types instead: `PluginHandlerInput`, `PluginHandlerResult` and `definePluginHandler`, which types a handler and returns it unchanged: ```ts title="tools/file_brief.ts" import { definePluginHandler } from '@agentserve/app-sdk' export const run = definePluginHandler((input) => { if (input.kind !== 'action' || !input.action?.target.text) return { message: 'Nothing to brief.' } return { calls: [{ method: 'ai.complete', params: { model: 'claude-haiku-4-5', messages: [{ role: 'user', content: input.action.target.text }] } }], answerWith: 0, } }) ``` A tool's source runs on its own, so to use the types in a handler, import them with `import type` or copy them in. Under `agentserve app dev`, `settings.get` answers with each field's default, overridden by `.agentserve/settings.json` in the app folder; `launch.get` answers with `--launch ''` when you pass it; and `mcp.call` fails with `not_found`, because connectors run only in the workspace. ## Theme and size [#theme-and-size] The workspace sends the app a theme event, `light` or `dark`, when it mounts the frame and whenever the person switches theme. The first event can arrive before your code subscribes, so start from a default and follow the events: ```tsx import { useEffect, useState } from 'react' import { getAppClient } from '@agentserve/app-sdk' export function useTheme() { const [theme, setTheme] = useState<'light' | 'dark'>('light') useEffect(() => getAppClient().onTheme(setTheme), []) return theme } ``` Panels and Chat cards can fit their height to their content with `resize(height)`, a whole number of pixels from 0 to 20,000: ```ts getAppClient().resize(document.body.scrollHeight) ``` ## Errors [#errors] A failed call rejects with an `AppBridgeError`. Its `code` is stable and safe to branch on; its `message` is for people. ```ts import { AppBridgeError } from '@agentserve/app-sdk' try { await runWorkflow('Route ticket', { ticketId }) } catch (error) { if (error instanceof AppBridgeError && error.code === 'budget_exhausted') { showNotice('This app has used its budget for the month.') } else throw error } ``` | Code | When | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `invalid_request` | The parameters break the protocol or a limit on this page, or the workspace refused them as invalid (for example a file over 5 MB, or a `where` key not written `entity.attribute`). | | `unknown_method` | The method is not part of the protocol. | | `forbidden` | The manifest does not name the table, workflow, Relay, knowledge base, model or integration action, or does not grant the permission (including `chat: ask`); the person lacks access, or their permission group withholds the model; or a file may contain secret values. | | `not_found` | Nothing in the workspace has that name or id: a table, workflow, Relay, file, semantic entity, code tool, knowledge base or model; or the person has no connected account for an integration action. | | `conflict` | The app is turned off in this workspace, several workflows or knowledge bases share the name, a workflow run could not start, or the person has several accounts for an integration and the call did not name one. | | `rate_limited` | More than 20 calls in one second from the app, Chat opened again within 5 seconds, a per-minute ceiling on model, media, Chat answer, knowledge or integration calls, or a workspace rate limit. | | `budget_exhausted` | The app has spent its monthly budget. Workflow runs, Relay tasks, code tool runs, and model, media, Chat answer, knowledge and integration calls check it. | | `declined` | The person declined an integration action that would have changed something, or closed the file picker. | | `cancelled` | The app cancelled the call with its `AbortSignal`. | | `timeout` | No answer within the client's timeout (60 seconds by default). | | `internal` | Something failed in the workspace, or the client was closed. | ## Limits [#limits] | Limit | Value | | ------------------------------------------- | ------------------------------------------------------------------- | | Rows per query | 1–500, default 100 | | Rows per `writeRows` call | 100 | | Columns per row written | 200 | | `where` conditions | 20 | | Sort keys | 5 | | Chat prompt | 4,000 characters | | File read or write | 5 MB | | Files per `listFiles` page | 1–100, default 50 | | Copied text | 100,000 characters | | Download | 10 MB of content; 5 MB for a workspace file | | Model query measures | 16 | | Model query dimensions | 4 | | Relay task objective | 8,000 characters | | Model call messages | 50, 200,000 characters in all | | Model call output | 8,192 tokens | | Media prompt | 4,000 characters; result up to 8 MB | | Knowledge search | 1–5 knowledge bases, 1–20 results | | Integration action input | 64 KB | | MCP tool call arguments | 64 KB; counted with integration actions per minute | | Calls one plugin handler hands back | 20 | | Model calls per minute, per install | 30 | | Media generations per minute, per install | 10 | | Chat answers per minute, per install | 6 | | Knowledge searches per minute, per install | 60 | | Integration actions per minute, per install | 20 | | Calls per second | 20 | | Call timeout | 60 seconds; 300 for model, media, Chat answer and integration calls | The constants behind these limits are exported from `@agentserve/app-sdk/protocol`, for example `APP_QUERY_MAX_LIMIT` and `APP_INSERT_MAX_ROWS`. --- # Security model (/developers/security) An app holds no authority of its own. It acts **as the person using it**, narrowed to what its manifest names, from a sandboxed frame that cannot reach the network. This page explains each layer. ## The app acts as the person using it [#the-app-acts-as-the-person-using-it] Every SDK call is made as an **app principal**: the signed-in person, the app, and the installed version, together. The workspace authorizes each call again as that person, at the moment of the call: * their current workspace role and permission group, * their access to each table, workflow, Relay and file, * row security and hidden columns on every table. It then narrows the result to the manifest. Effective access is what the person can reach **and** what the manifest names, never more. Naming a table in the manifest gives the app nothing the person could not already read, and a person with access to a table the manifest does not name cannot reach it through the app. Each manifest permission opens a fixed set of operations, defined in Agent Serve's code. A manifest names resources and access levels, never operations, so it cannot ask for anything outside this list: | Permission | Operations | | -------------- | -------------------------------------------------------------------- | | `tables` | List tables, read table definitions, query rows, add rows | | `workflows` | Run a workflow | | `relays` | Assign a Relay task | | `files: read` | Read file details and content | | `files: write` | The above, plus create files | | `model: read` | Read the semantic model, and query rows through it | | `chat: ask` | Open Chat with a prompt; the person decides whether to send it | | `chat: answer` | The above, plus get Chat's answer to a prompt, from a read-only turn | | `ai.models` | Call those chat models | | `ai.media` | Generate those media kinds | | `knowledge` | Search those knowledge bases | | `integrations` | Run those integration actions with the person's connected account | A semantic model query reaches the tables behind the model for that one call. Each of those tables is still authorized as the person, so the model reaches no row they could not read. Model and media calls are held to the person's permission group (allowed providers, denied models, the media switch) and the deployment's blocked providers, as well as to `ai.models`. A Chat answer runs as a read-only turn: Chat is told the person may only read, is offered no integration tools, and any tool that would change something is refused rather than run. An integration action runs on the server with the person's own connected account; credentials never reach the frame. When the person has several accounts for the provider, the app names one with `account`. An action that changes anything (sending, creating, updating, deleting, paying) stops for the person's approval in the workspace page first, the same way Chat asks before it changes something. The app cannot skip that step: only the page around the frame can mark a call approved, and it does so only after the person clicks **Run it**. If they decline, the call fails with `declined`. Each approved action is recorded in the audit log. ## The sandboxed frame [#the-sandboxed-frame] An app's pages, panels and Chat cards run in an iframe with `sandbox="allow-scripts"`. It always has an opaque origin, wherever it is shown: * **No cookies or browser storage**, and no same-origin access to Agent Serve. * **No network.** The content security policy sets `connect-src 'none'`, so `fetch`, `XMLHttpRequest` and WebSockets are refused. The only way out is the SDK, through messages to the page around the frame. * **Only its own files.** Scripts, styles, images, fonts and media load only from the app's own bundle. Inline scripts are refused, so ship scripts as files; inline styles are allowed. Forms, nested frames, workers and plugins are refused. * **No device access.** Camera, microphone, location, payment and USB are turned off. The page around the frame answers messages only from that frame's own window, checks every message against the SDK protocol, and limits each frame to 20 calls a second. Calls it does not answer itself go to the workspace, which checks them again. Bundle files are served under a **signed, short-lived frame token** instead of a cookie. The token binds the person, the workspace, the install and the version that were authorized when the app was opened, and it expires after one hour. A bundle may contain only static files: HTML, JavaScript, CSS, JSON, source maps, text, Markdown, YAML, CSV, images (SVG, PNG, JPEG, GIF, WebP, AVIF, ICO), fonts (WOFF, WOFF2, TTF, OTF) and media (MP3, MP4, WebM). An upload with any other file type is refused. See [archive limits](/developers/cli#agentserve-app-deploy). ## What an admin approves [#what-an-admin-approves] An app reaches a workspace only after an admin acts twice: 1. **Publish** a draft version, which makes it installable. 2. **Install** a published version in the workspace. The install screen lists the version's permissions: each table, workflow and Relay by name, and whether it may read the model, open Chat, or read or write files. Installing also creates the tables, rules and Relays the app declares under `requires` that the workspace does not already have, using the installing admin's own access and plan limits. Changing the installed version — upgrading, or rolling back — is an admin action too, and a new version can ask for different permissions. An admin can also turn an install off, which makes every SDK call fail with `conflict`, or uninstall it. A version that any workspace still runs cannot be retired. An app is managed from the workspace that first uploaded it. ## Roles [#roles] | Action | Minimum role | | -------------------------------------------------------------- | ------------ | | Open and use installed apps | `read` | | List apps, read app details, upload a draft version | `write` | | Publish or retire a version | `admin` | | Install, uninstall, change the version, pins, budget or status | `admin` | | Read an install's spend and audit trail | `admin` | | List, set or delete secrets | `admin` | [Permission groups](/platform/enterprise/access-control) can narrow this further: a group can hide the Apps module, which blocks using and building apps, or turn off building and managing apps on its own. Opening an app and making SDK calls work only from a signed-in browser session, never from an API key. ## Secrets [#secrets] Admins can store per-install secrets with `agentserve app secrets set` or on the **Manage** page. * Secrets are **write-only**. A value is encrypted when it is stored, and nothing returns it: listing shows names and when each was last changed. * Names use capital letters, digits and underscores and start with a letter, up to 64 characters (`STRIPE_KEY`). A value is at most 16 KB. * Setting and deleting a secret is recorded in the audit trail. Secrets never reach the browser bundle or the app's frame, and the SDK has no method to read them. They reach only the app's [code tools](/developers/code-tools#secrets), as environment variables of the tool's own process on the server. A secret value in a tool's error is replaced with `[secret]`, and a run whose output contains one fails with its output withheld. ## Budgets and usage [#budgets-and-usage] Paid work an app starts is attributed to its install in the usage ledger, alongside the person it was done for. That includes work that runs later, such as a queued workflow run or a Relay task the app assigned. An install's monthly budget is the one an admin set on its **Manage** page, or else the manifest's `budget.monthlyUsd`. Without either, spend is not capped. Before the app runs a workflow, assigns a Relay task, runs a code tool, calls a model, generates media, asks Chat for an answer, searches a knowledge base or runs an integration action, the workspace compares the spend since the start of the calendar month (UTC) with the budget. Once spend reaches it, those calls fail with `budget_exhausted` until the month ends or an admin raises the budget. Reads, row writes, file calls and opening Chat do not check the budget. Model, media, Chat, knowledge and integration calls also have a per-install ceiling each minute, separate from the bridge's per-second limit, so one busy app cannot run up a large bill before its budget notices. Over it, calls fail with `rate_limited`. A Chat answer is billed once, as a Chat turn, and its cost also counts against the app's budget. The check happens before each call, so one call that starts below the budget can finish above it. `agentserve app usage` and the **Manage** page show this month's spend against the budget, by source. ## Audit trail [#audit-trail] Every change to an app is in the workspace audit trail: uploading, publishing and retiring versions, installing, updating, rolling back and uninstalling, setting and deleting secrets, and the rules an install creates. Every write an app makes — adding rows, running or queuing a workflow, assigning a Relay task, creating a file — is recorded as an app write naming the app, the version and the method, in addition to the record the underlying action keeps. Every code tool run is recorded too, with the tool, who called it and from where, the status and the duration, but never its input, output or secrets. `agentserve app logs` and the **Manage** page show an install's trail. Because the app acts as the person using it, those records name that person. Usage is billed the same way as their own work, and also counted against the app's budget. --- # Templates (/developers/templates) Every template is a complete React app built with Vite, with a manifest, the tables it needs, and a README that says what to change. Create one with: ```bash agentserve app init my-app --template ``` `agentserve app init --list` prints the templates. Each one installs the tables it uses if they are missing, and always acts as the person using it. ## blank [#blank] **For:** any app that none of the others fits. A minimal starting point. It shows who is signed in and their role, which tables the app can read, and the rows of a small example table called `items`. | Permission | Why | | ----------------- | ------------------------ | | `tables: [items]` | Reads the example table. | ```bash agentserve app init my-app --template blank ``` ## sales-cockpit [#sales-cockpit] **For:** account managers preparing for a customer meeting. Pick an account and see its key figures from the semantic model, its last few visits, and a button that opens Chat with a request for talking points. After the meeting, log the outcome; the person reviews it before it is saved. | Permission | Why | | ---------------------------- | --------------------------------------------------------------------------------- | | `tables: [accounts, visits]` | Lists accounts, reads recent visits, and adds logged visits. | | `model: read` | Reads account figures from the semantic model. | | `chat: ask` | Opens Chat with a talking-points question. The person decides whether to send it. | Change the measure and entity names in `src/lib/model.ts` to the ones in your model. ```bash agentserve app init my-app --template sales-cockpit ``` ## field-visit-logger [#field-visit-logger] **For:** field teams who visit customers. Log each visit with the customer, date, outcome and notes, and attach a photo. The notes are saved as a Markdown file and the photo as an image in the workspace's files, and the visit row keeps both file ids. From the visits list, hand any visit to a Relay for follow-up. | Permission | Why | | --------------------------- | ------------------------------------------------------------ | | `tables: [visits]` | Lists visits and adds new ones. | | `files: write` | Saves notes and photos, up to 5 MB each, as workspace files. | | `relays: [Field follow-up]` | Gives the follow-up Relay a task for a visit. | It declares the `Field follow-up` Relay and a monthly budget of $25 for its Relay tasks. ```bash agentserve app init my-app --template field-visit-logger ``` ## deal-desk [#deal-desk] **For:** sales teams that check offers against pricing policy. Enter an offer and see its score from 0 to 100 as you type, with the reasons: discount against the limit for the customer's tier, margin, contract term and deal size. Then request approval: the offer is saved as pending approval, and a Relay gets a task with the score and reasons. The score comes from `score_offer`, a [code tool](/developers/code-tools) the app ships: a plain TypeScript function that runs on Agent Serve, so the same offer always gets the same score, and Chat, Relays and workflows can ask it too. | Permission | Why | | ------------------------------- | ---------------------------------------- | | `tables: [offers]` | Lists offers and saves new ones. | | `relays: [Deal desk approvals]` | Sends each offer to the approvals Relay. | It declares the `Deal desk approvals` Relay, the `score_offer` tool, and a monthly budget of $25. Code tools run from an installed version, so in `agentserve app dev` the score appears once you have deployed, published and installed the app. ```bash agentserve app init my-app --template deal-desk ``` ## support-triage [#support-triage] **For:** support leads working through a queue. Open tickets are listed most urgent and oldest first. Select one to read it, ask Chat to summarise it, and route it to a team by running your `Route ticket` workflow. The app shows whether the run completed or why it failed. | Permission | Why | | --------------------------- | ------------------------------------------------------------------------- | | `tables: [tickets]` | Reads the open tickets. | | `workflows: [Route ticket]` | Runs the routing workflow for a ticket. | | `chat: ask` | Opens Chat with a summary request. The person decides whether to send it. | You build and deploy the `Route ticket` workflow yourself; it takes `ticketId`, `team` and `priority`. The template sets a monthly budget of $25 for workflow runs. ```bash agentserve app init my-app --template support-triage ``` ## ops-exceptions [#ops-exceptions] **For:** operations managers watching for problems. The board shows late shipments by region and site from the semantic model and flags every site above a threshold as an exception. Click a row to see that site split by carrier, then create a follow-up task in the `ops_tasks` table. | Permission | Why | | --------------------- | ------------------------------------------------------------------------- | | `model: read` | Reads late shipments by region, site and carrier from the semantic model. | | `tables: [ops_tasks]` | Adds follow-up tasks. | Change the measure, entity and attribute names in `src/lib/model.ts` to the ones in your model. ```bash agentserve app init my-app --template ops-exceptions ``` ## knowledge-assistant [#knowledge-assistant] **For:** anyone who wants quick, cited answers from the team's documents. Ask a question. The app searches a knowledge base for matching passages, then streams a short answer from a chat model that cites them, with the sources listed underneath. It shows the platform AI an app can call directly, without wrapping each step in a workflow. | Permission | Why | | --------------------------- | ----------------------------------------------------------------- | | `knowledge: [Product docs]` | Searches the knowledge base for passages that match the question. | | `ai.models: [gpt-5.5]` | Writes the answer from those passages, streamed as it is written. | Set `KNOWLEDGE_BASE` and `ANSWER_MODEL` in `src/lib/answer.ts`, and the same names in the manifest. Searches and answers count against the app's budget, which the template sets to $20 a month. ```bash agentserve app init my-app --template knowledge-assistant ``` `sales-cockpit` and `ops-exceptions` query the semantic model, and `field-visit-logger` and `deal-desk` assign Relay tasks. Neither call works in `agentserve app dev` yet, so try those parts in a deployed draft. See [agentserve app dev](/developers/cli#agentserve-app-dev). The templates that declare a Relay create it as a draft on install, and only when installed from the **Apps** page in the workspace. Someone finishes the Relay's setup and publishes it before it can take tasks. See [Requires](/developers/manifest#relays). ## Example apps [#example-apps] Two complete apps in the repository show what a finished app looks like: several pages, tables the workspace already has, a table and Relays created on install, Chat, a code tool, approvals, and loading, empty and error states throughout. They live in `examples/apps/` and are checked like the templates: type-checked, built, manifest-validated and packed on every change. They read tables that are already in the workspace, and column names differ between workspaces. So each one reads the tables' columns when it starts, maps the fields it needs by name, and asks the person to **map your columns** when a required one is missing, instead of failing. ### pipeline-cockpit [#pipeline-cockpit] **For:** sales managers and reps working at-risk deals. **Deals** ranks at-risk deals by the money at stake, how serious the risk is and how soon the deal is due, with filters by rep, stage and value. **Deal brief** shows one deal with its history and the account's other deals, opens Chat for talking points, logs the next step to a `deal_notes` table after a review screen, and assigns a follow-up to a Relay. **Team** shows each rep against quota with the at-risk value on their desk. | Permission | Why | | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | `tables: [deals_at_risk, pipeline_opportunities, rep_summary, deal_notes]` | Reads deals, history and the team; adds next steps. | | `relays: [Pipeline follow-up]` | Assigns follow-ups. | | `chat: ask` | Opens Chat with a talking-points question. The person decides whether to send it. | ### credit-desk [#credit-desk] **For:** credit analysts and underwriters, and the teams that watch fraud and complaints. **Applications** lists loans waiting for a credit review, largest exposure first. **Review** scores one loan with `score_credit_risk`, a [code tool](/developers/code-tools) the app ships, and lists every factor with the points it added; the reviewer then approves, refers or declines. A decline is saved as pending approval and sent to a Relay to approve. **Exceptions** lists fraud alerts under review and open complaints, each a click from a Relay task. | Permission | Why | | ------------------------------------------------------------- | --------------------------------------------------------- | | `tables: [loans, fraud_alerts, complaints, credit_decisions]` | Reads the queue and exceptions; saves decisions. | | `relays: [Credit approvals, Credit exceptions]` | Sends declines for approval and exceptions for follow-up. | It declares the `score_credit_risk` tool and a monthly budget of $50. ### Deploy an example [#deploy-an-example] Example apps are not offered by `app init`. From a checkout of the repository, copy one out with the SDK vendored the same way `app init` does it, then deploy as usual: ```bash bun run scaffold:example-app credit-desk ../credit-desk cd ../credit-desk bun install agentserve app deploy agentserve app publish 0.1.0 agentserve app install ``` Each example's README lists the tables it expects, the columns it looks for, and what to change. --- # App (/cli/app) Every command below also accepts the [global options](/cli/commands#global-options). ## Create a new app from a starter template [#create-a-new-app-from-a-starter-template] ```bash agentserve app init [dir] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------- | | `dir` | No | Folder to create the app in | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-t, --template ` | No | Starter template. Accepted values: `blank`, `sales-cockpit`, `field-visit-logger`, `deal-desk`, `support-triage`, `ops-exceptions`, `knowledge-assistant`. Defaults to `blank`. | | `--name ` | No | App name in the manifest; defaults to the folder name. | | `--title ` | No | App title people see; defaults to one made from the name. | | `--force` | No | Add the app to a folder that already has other files. | | `--list` | No | List the starter templates and exit. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Build the app and run it locally in the same sandboxed frame the workspace uses, with your own access [#build-the-app-and-run-it-locally-in-the-same-sandboxed-frame-the-workspace-uses-with-your-own-access] ```bash agentserve app dev [dir] [options] ``` Build the app and run it locally in the same sandboxed frame the workspace uses, with your own access (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `dir` | No | App folder | **Options** | Option | Required | Description | | --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `-p, --port ` | No | Port for the local host page. Defaults to `5175`. | | `--page ` | No | Page to open first. | | `--launch ` | No | What launch.get answers, as a plugin command or action opens the page: \{"kind":"command","name":"brief","args":\{"file":"q3"}}. | | `--build-command ` | No | Command that builds the app (default: \ run build). | | `--no-build` | No | Do not build; serve the existing output and reload when it changes. | | `--no-open` | No | Do not open a browser. | ## Build the app, pack it and upload it as a draft version [#build-the-app-pack-it-and-upload-it-as-a-draft-version] ```bash agentserve app deploy [dir] [options] ``` Build the app, pack it and upload it as a draft version (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `dir` | No | App folder | **Options** | Option | Required | Description | | --------------------------- | -------- | -------------------------------------------------------------------- | | `--build-command ` | No | Command that builds the app (default: \ run build). | | `--no-build` | No | Upload the existing build output without building. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Publish a draft version so workspaces can install it (admin) [#publish-a-draft-version-so-workspaces-can-install-it-admin] ```bash agentserve app publish [options] ``` Publish a draft version so workspaces can install it (admin) (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | -------------------------------------------- | | `version` | Yes | Version to publish, such as 1.2.0, or its id | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--rollout` | No | Also move this workspace's install to the version. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Move this workspace's install to an earlier published version (admin) [#move-this-workspaces-install-to-an-earlier-published-version-admin] ```bash agentserve app rollback [options] ``` Move this workspace's install to an earlier published version (admin) (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | -------------------------------------------------- | | `version` | Yes | Published version to run, such as 1.1.0, or its id | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Install a published app in the workspace (admin); pick it with -w, --workspace [#install-a-published-app-in-the-workspace-admin-pick-it-with--w---workspace] ```bash agentserve app install [options] ``` Install a published app in the workspace (admin); pick it with -w, --workspace (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--to-version ` | No | Published version to install; defaults to the highest. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Show the install's audit trail, oldest first; --follow keeps watching [#show-the-installs-audit-trail-oldest-first---follow-keeps-watching] ```bash agentserve app logs [options] ``` Show the install's audit trail, oldest first; --follow keeps watching (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `-f, --follow` | No | Keep polling for new entries until Ctrl-C. | | `--interval ` | No | Seconds between polls with --follow. Defaults to `5`. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Show this month's spend against the app's budget, by source [#show-this-months-spend-against-the-apps-budget-by-source] ```bash agentserve app usage [options] ``` Show this month's spend against the app's budget, by source (OAuth login or personal API key required) **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Show what the app may reach, installed and in the local manifest [#show-what-the-app-may-reach-installed-and-in-the-local-manifest] ```bash agentserve app permissions [dir] [options] ``` Show what the app may reach, installed and in the local manifest (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------ | | `dir` | No | App folder whose manifest to compare | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Set a secret; prompts without echo when --value is not given [#set-a-secret-prompts-without-echo-when---value-is-not-given] ```bash agentserve app secrets set [options] ``` Set a secret; prompts without echo when --value is not given (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `name` | Yes | Secret name, such as API\_TOKEN | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------- | | `--value ` | No | Secret value. Inline values land in shell history; @path reads a file and @- stdin, verbatim. | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## List secret names and when each was set [#list-secret-names-and-when-each-was-set] ```bash agentserve app secrets list [options] ``` List secret names and when each was set (OAuth login or personal API key required) **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## Delete a secret [#delete-a-secret] ```bash agentserve app secrets delete [options] ``` Delete a secret (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `name` | Yes | Secret name | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | --- # Apps (/cli/apps) Every command below also accepts the [global options](/cli/commands#global-options). ## Delete app secret [#delete-app-secret] ```bash agentserve apps secrets delete [options] ``` Delete App Secret (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `name` | Yes | Secret name. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## List app secrets [#list-app-secrets] ```bash agentserve apps secrets list ``` List App Secrets (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ## Set app secret [#set-app-secret] ```bash agentserve apps secrets update [options] ``` Set App Secret (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `name` | Yes | Secret name. | **Options** | Option | Required | Description | | ----------------- | -------- | ---------------------------------------------- | | `--value ` | Yes | Write-only secret value. It is never returned. | ## Get app [#get-app] ```bash agentserve apps get ``` Get App (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ## Get app deployment [#get-app-deployment] ```bash agentserve apps deployments get ``` Get App Deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ## List app deployments [#list-app-deployments] ```bash agentserve apps deployments list ``` List App Deployments (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ## Publish app deployment [#publish-app-deployment] ```bash agentserve apps deployments publish ``` Publish App Deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ## Get app install [#get-app-install] ```bash agentserve apps installs get ``` Get App Install (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ## Install app [#install-app] ```bash agentserve apps installs create [options] ``` Install App (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------- | | `--app-id ` | Yes | App to install. | | `--version-id ` | No | A published version; omit to install the highest published version. | ## List app installs [#list-app-installs] ```bash agentserve apps installs list ``` List App Installs (OAuth login or personal API key required) ## Uninstall app [#uninstall-app] ```bash agentserve apps installs delete [options] ``` Uninstall App (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Update app install [#update-app-install] ```bash agentserve apps installs update [options] ``` Update App Install (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | **Options** | Option | Required | Description | | ------------------------------------- | -------- | ------------------------------------------------------------------------------------- | | `--version-id ` | No | A published version to run instead — an upgrade or a roll back. | | `--pinned-for ` | No | Who sees the app as its own rail icon. (JSON, or @path / @- to read a file or stdin). | | `--budget-monthly-usd ` | No | Monthly budget in USD; null falls back to the manifest budget. | | `--status ` | No | Turn the app on or off. Accepted values: `active`, `disabled`. | ## Get app install activity [#get-app-install-activity] ```bash agentserve apps activity list ``` Get App Install Activity (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ## List app repositories [#list-app-repositories] ```bash agentserve apps repos list ``` List App Repositories (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ## List apps [#list-apps] ```bash agentserve apps list ``` List Apps (OAuth login or personal API key required) ## List app tools [#list-app-tools] ```bash agentserve apps tools list [options] ``` List App Tools (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------- | | `--install-id ` | No | Only the tools of this install. | ## Publish app version [#publish-app-version] ```bash agentserve apps publish create [options] ``` Publish App Version (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `appId` | Yes | App identifier. | | `versionId` | Yes | Version identifier. | **Options** | Option | Required | Description | | -------------- | -------- | ------------------------------------------------------------- | | `--rollout` | No | Also move this workspace's install of the app to the version. | | `--no-rollout` | No | Send --rollout as false. | ## Rebuild app deployment [#rebuild-app-deployment] ```bash agentserve apps rebuild create ``` Rebuild App Deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ## Retire app version [#retire-app-version] ```bash agentserve apps retire create [options] ``` Retire App Version (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `appId` | Yes | App identifier. | | `versionId` | Yes | Version identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Run app tool [#run-app-tool] ```bash agentserve apps run create [options] ``` Run App Tool (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `toolName` | Yes | Tool name. | **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--input ` | No | The tool's input; validated against its input schema. (JSON, or @path / @- to read a file or stdin). | ## Upload app version [#upload-app-version] ```bash agentserve apps versions create ``` Upload App Version (OAuth login or personal API key required) --- # Audit Logs (/cli/audit-logs) `agentserve audit-logs` is also spelled `agentserve audit-log`. Every command below also accepts the [global options](/cli/commands#global-options). ## Get audit log [#get-audit-log] ```bash agentserve audit-logs get [options] ``` Get Audit Log (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `auditLogId` | Yes | Audit-log entry identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). | ## List audit logs [#list-audit-logs] ```bash agentserve audit-logs list [options] ``` List Audit Logs (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--action ` | No | Filter by exact action name. | | `--resource-type ` | No | Filter by resource type. Accepts a comma-separated set; members are trimmed and deduplicated, and member order affects neither the result nor the cursor. | | `--resource-id ` | No | Filter by exact resource identifier. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--include-departed` | No | Include actions by users who have left the organization. | | `--no-include-departed` | No | Send --include-departed as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). | | `--actor-email ` | No | Filter by actor email address. | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | --- # Authentication (/cli/authentication) `agentserve login` signs you in through your browser. It prefers OAuth, which stores a short-lived login that renews itself, and selects API-key pairing for remote terminals or servers without OAuth support. In CI you supply an existing API key through the environment instead. ## Signing in [#signing-in] ```bash agentserve login ``` Choose a method explicitly when the credential type matters: ```bash agentserve login --method oauth agentserve login --method api-key ``` `--method oauth` requires a server with OAuth support and authentication enabled; it never falls back to an API key. Explicit OAuth selection also overrides SSH/headless detection; your browser still needs to reach the CLI's local callback. `--method api-key` uses pairing-code approval to create a new permanent API key. To supply an existing key, set `AGENT_SERVE_API_KEY` instead. API-key pairing requires a server that supports `platform` API keys. Upgrade older deployments that only issue `copilot` keys before starting login; those keys cannot authenticate the platform CLI. OAuth login opens your browser on Agent Serve's sign-in page, then on a consent page that names the Agent Serve CLI and what it will be able to do. Approve, and the browser hands control back to the terminal: ``` Signing in to https://agentserve.valnoraelric.com as profile default https://agentserve.valnoraelric.com/api/auth/oauth2/authorize?client_id=agentserve-cli&… Waiting for you to approve in the browser… ✓ Logged in. Login stored in /Users/you/.agent-serve/credentials Renews itself; revoke it any time in Settings → General → Authorized apps, or with: agentserve logout No default workspace. Set one with: agentserve configure --set-workspace ``` This is the OAuth 2.0 authorization-code flow with PKCE and a loopback redirect, aligned with current OAuth security guidance. The browser only ever carries a one-time code; the tokens are exchanged over the terminal's own connection and written to `~/.agent-serve/credentials` with `0600` permissions. Access tokens last an hour and are renewed automatically from a refresh token. The complete login has a fixed 30-day lifetime; after it expires, run `agentserve logout`, then sign in again. Only approve a consent page you reached by running `agentserve login` yourself. A consent page that appears unprompted, or one you were sent a link to, is not your login. | Option | What it does | | ------------------------ | ---------------------------------------------------------------------------------------------------------- | | `--method ` | `oauth` requires OAuth login; `api-key` creates a permanent key through pairing. Auto-selects when omitted | | `--no-browser` | Print the approval URL without opening it; works with either method | | `--read-only` | Ask only for permission to read, never to change anything | | `--callback-port ` | Pin the loopback callback port, primarily for an SSH session that forwards the same fixed port | | `-y, --yes` | Overwrite an existing API-key profile without prompting | ### Over SSH or in a container [#over-ssh-or-in-a-container] OAuth login needs your browser to reach a listener on the machine running `agentserve`. When it cannot — an SSH session, a dev container, a remote box — use the API-key pairing flow. The CLI selects it automatically in an SSH session when no method or callback port is specified: ```bash agentserve login --method api-key --no-browser ``` The terminal prints a pairing code and a URL you can open on any device: ``` Signing in to https://agentserve.valnoraelric.com as profile default Pairing code: K7M2-P9XT Confirm this code matches what the browser shows before approving. https://agentserve.valnoraelric.com/cli/auth?request=…&scope=platform Waiting for approval… ✓ Logged in. Key stored in /Users/you/.agent-serve/credentials Personal key, defaulting to 2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67. Override per command with --workspace. ``` Confirm the pairing code in the browser matches the one in your terminal before approving. That check is what binds the approval to your terminal. The handoff issues a permanent personal API key rather than a renewing login, so revoke it under **Settings → API keys** when you are done with that machine. It also works when OAuth is unavailable or switched off, provided the server supports platform API-key pairing. When `--method` is omitted, the CLI checks OAuth availability and selects pairing if unavailable; that discovery does not verify pairing compatibility. An explicit `--method oauth` fails in that case. `--read-only` and `--callback-port` belong to OAuth login and have no meaning here, so combining either with the handoff stops the login rather than storing a credential you did not ask for. If your SSH session forwards a port from the remote loopback interface to the browser's machine, use `--method oauth --callback-port ` with that port. An ordinary container port publication cannot reach a listener bound to the container's own loopback interface; use `--method api-key` there. ### Picking a workspace [#picking-a-workspace] A normal login can act across every workspace you belong to; `--read-only` limits it to read operations. The profile's `workspace` setting only decides the default target. Set it after signing in, or pass `--workspace` per command: ```bash agentserve workspaces list agentserve configure --set-workspace 2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67 agentserve workflows list --workspace 9b4c7e02-1d58-4f36-a0c9-6e2b85df413a ``` With the pairing-code handoff you choose the default workspace on the approval page instead. To target another workspace without a second login, add a workspace profile: ```bash agentserve profile add acme --workspace 7e2d9c14-6b83-4a55-8f01-c4d3e9a76b28 agentserve --profile acme whoami ``` The new profile stores `auth_profile = default` and its own workspace. Omit `--workspace` in an interactive terminal to choose from the workspaces your login can access; scripts must provide the workspace ID explicitly. The picker is capped at 1,000 entries and asks for an explicit ID above that. ## Checking who you are [#checking-who-you-are] ```bash agentserve whoami # resolved settings, plus a live check that they work agentserve whoami --no-verify # resolved settings only, no request ``` Prints the resolved endpoint, workspace, and output format, which source each value came from, and whether the profile holds an OAuth login or an API key, then reads the configured workspace to prove the credential is accepted and can reach it. It exits `0` when the check passes, `1` when the credentials are wrong, and `2` when the check could not be made at all — no workspace to check against, or an endpoint that did not answer. The split matters in CI: only `1` is fixed by logging in again. ## Signing out [#signing-out] ```bash agentserve logout # sign out of Agent Serve and remove the stored login agentserve logout --all # remove the profile entirely, including its settings ``` For an OAuth login, `agentserve logout` revokes that login's complete token family before removing it from disk, including access tokens issued before earlier rotations. Other machines that ran their own `agentserve login` remain signed in. To cut off every independent login for the client, revoke the grant under **Settings → General → Authorized apps**. A workspace profile that shares authentication cannot remove the shared login. Remove only that local profile with `agentserve logout --all --profile `, or log out of the authentication profile named by the error message. Removing an authentication profile entirely is refused until its workspace profiles are removed, so it cannot leave dangling references. For a login created with `--method api-key`, `agentserve logout` removes the API key from disk but does **not** revoke it. Revoke keys under **Settings → API keys**. ## Authenticating CI [#authenticating-ci] Set an API key and workspace in the environment; no saved login is required, and the environment key overrides any stored login: ```bash export AGENT_SERVE_API_KEY="sk-as-…" export AGENT_SERVE_WORKSPACE="2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67" agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --input '{"source":"nightly"}' --output json ``` Create the key in Agent Serve under **Settings → API keys**. Store it as a secret in your CI provider — never commit it. `AGENT_SERVE_CONFIG_DIR` relocates both files if you need them somewhere other than `~/.agent-serve`, such as a runner with no writable home directory. ### GitHub Actions [#github-actions] ```yaml title=".github/workflows/nightly.yml" jobs: digest: runs-on: ubuntu-latest steps: - uses: actions/setup-node@v4 with: node-version: '20' - run: npm install -g agentserve - run: agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --output json env: AGENT_SERVE_API_KEY: ${{ secrets.AGENT_SERVE_API_KEY }} AGENT_SERVE_WORKSPACE: ${{ vars.AGENT_SERVE_WORKSPACE }} ``` ## Several accounts and workspaces [#several-accounts-and-workspaces] Use separate logins for separate identities or deployments: ```bash agentserve login --profile dev --endpoint http://localhost:3000 agentserve login --profile prod agentserve workflows list --profile dev agentserve workflows list --profile prod ``` Use workspace profiles when one login should target several workspaces: ```bash agentserve profile add marketing --workspace c3a70e58-9f21-4d6b-b842-05e7f19c6a3d agentserve profile add support --workspace e0d94b17-3c62-45af-9718-b6a2c8035f4e agentserve workflows list --profile marketing agentserve workflows list --profile support ``` See [Configuration](/cli/configuration) for how profiles are stored and resolved. ## Self-hosted and non-production deployments [#self-hosted-and-non-production-deployments] Point the CLI at any deployment with `--endpoint`, then sign in against it: ```bash agentserve login --profile local --endpoint http://localhost:3000 ``` Save it to avoid repeating the flag: ```bash agentserve configure --set-endpoint http://localhost:3000 --profile local ``` OAuth sign-in is available by default when server authentication is enabled. `DISABLE_AUTH=true` disables OAuth. Servers without OAuth use the pairing-code handoff when they support platform API keys. See [Sign in with Agent Serve](/platform/self-hosting/authentication#sign-in-with-agent-serve) for server configuration and upgrade requirements. ## Where the login is stored [#where-the-login-is-stored] Logins live in `~/.agent-serve/credentials`, written `0600`, separate from the non-secret `~/.agent-serve/config`. Commit `config` to a dotfiles repo if you like; never `credentials`. ```ini title="~/.agent-serve/credentials" [default] access_token = as_oat_… refresh_token = as_ort_… token_expires_at = 1788547200000 oauth_issuer = https://agentserve.valnoraelric.com/api/auth oauth_login_id = … oauth_scope = offline_access api:read api:write [ci-box] api_key = sk-as-… ``` A profile holds one login. A stored API key can be replaced after confirmation or with `--yes`; a live OAuth login must be revoked with `agentserve logout` before signing in again. Several `agentserve` commands running at once share one renewal, so a parallel shell loop cannot sign itself out. Run `agentserve login` separately on each machine. Copying `~/.agent-serve/credentials` copies one single-use refresh-token family; simultaneous use from both copies is treated as token replay and revokes that login. If a refresh response is lost because the process or connection stops, the CLI does not retry the consumed token: run `agentserve logout`, then `agentserve login` again. This fail-closed behavior keeps a copied token from surviving an ambiguous refresh. ## Organization audit logs [#organization-audit-logs] `agentserve audit-logs` requires a **personal** credential — an OAuth login, or the personal API key `agentserve login --method api-key` issues. A workspace-scoped key cannot read organization-level audit logs. --- # Billing (/cli/billing) Every command below also accepts the [global options](/cli/commands#global-options). ## Show billing status, credits spent this period, and storage used [#show-billing-status-credits-spent-this-period-and-storage-used] ```bash agentserve billing status [options] ``` Show billing status, credits spent this period, and storage used (credits and storage require an OAuth login or personal API key) **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | ## List credit usage events [#list-credit-usage-events] ```bash agentserve billing logs [options] ``` List credit usage events (an OAuth login or personal API key reports only your events; a workspace API key reports every member's in aggregate, unattributed) **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--source ` | No | Filter by usage source; agentserve-chat covers Chat in the workspace and in the editor. Accepted values: `workflow`, `wand`, `agentserve-chat`, `mcp_copilot`, `mothership_block`, `knowledge-base`, `voice-input`, `enrichment`, `voice-output`, `api-tool`, `dataset-refresh`, `dataset-query`, `voice-mode`, `app-tool`, `app-build`, `app-ide`, `app-ai`, `slides`. | | `--period ` | No | Billing period. Accepted values: `1d`, `7d`, `30d`, `all`, `custom`. | | `--start-date ` | No | Custom period start (ISO 8601). | | `--end-date ` | No | Custom period end (ISO 8601). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | --- # Blocks (/cli/blocks) Every command below also accepts the [global options](/cli/commands#global-options). ## Get block [#get-block] ```bash agentserve blocks get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `blockId` | Yes | Block type identifier. An unversioned base type resolves to the newest version, and the response echoes the resolved id. | ## List blocks [#list-blocks] ```bash agentserve blocks list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the block id, name, and description. | | `--category ` | No | Restrict to one toolbar category. Accepted values: `blocks`, `tools`, `triggers`. | | `--capability ` | No | Restrict to blocks that can start a workflow — the `triggers` category, blocks declaring `triggerAllowed`, and blocks with trigger-mode fields. Accepted values: `trigger`. | | `--source ` | No | Restrict to built-in blocks or this workspace's deployed custom blocks. Accepted values: `builtin`, `custom`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `id`, `name`, `category`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | --- # Chat Deployments (/cli/chat-deployments) Every command below also accepts the [global options](/cli/commands#global-options). ## List chat deployments [#list-chat-deployments] ```bash agentserve chat-deployments list [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------- | | `--workflow-id ` | No | Restrict to deployments of one workflow. | | `--is-active` | No | Restrict to active or inactive deployments. | | `--no-is-active` | No | Send --is-active as false. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `identifier`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | --- # CLI (/cli/cli) Every command below also accepts the [global options](/cli/commands#global-options). ## Find the command for a task, described in plain words [#find-the-command-for-a-task-described-in-plain-words] ```bash agentserve cli search ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------------------------- | | `query...` | Yes | What you want to do, e.g. "cancel a workflow run" | --- # CLI Commands (/cli/commands) Every `agentserve` command follows the same shape: ```bash agentserve [sub-resource] [arguments] [options] ``` Some resource groups also accept a singular alias: `agentserve workflow get` and `agentserve workflows get` are the same command. `knowledge` also answers to `kb`. Each group’s reference lists its supported aliases. ## Global options [#global-options] These apply to every command, and may be written before or after it. | Option | Description | | ---------------------- | --------------------------------------------------------------------------------- | | `-P, --profile ` | Profile to use (env: AGENT\_SERVE\_PROFILE). | | `--endpoint ` | Deployment to talk to (env: AGENT\_SERVE\_BASE\_URL). | | `-w, --workspace ` | Workspace to target (env: AGENT\_SERVE\_WORKSPACE). | | `--output ` | Output format for this command. Accepted values: `table`, `json`, `yaml`, `text`. | ## Command groups [#command-groups] | Group | Description | | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | | [`agentserve profiles`](/cli/profiles) | List profiles or add a workspace profile that shares a stored login | | [`agentserve telemetry`](/cli/telemetry) | Control anonymous usage reporting | | [`agentserve runner`](/cli/runner) | Run Agent Serve jobs on this machine (link, run, status, unlink) | | [`agentserve cli`](/cli/cli) | Discover commands in this CLI | | [`agentserve model`](/cli/model) | Work with the semantic model as code (agentserve.model.yaml) | | [`agentserve app`](/cli/app) | Build, run and ship apps that run inside a workspace (agentserve.app.yaml) (OAuth login or personal API key required) | | [`agentserve apps`](/cli/apps) | Manage apps | | [`agentserve audit-logs`](/cli/audit-logs) | Manage audit logs | | [`agentserve billing`](/cli/billing) | Manage billing | | [`agentserve blocks`](/cli/blocks) | Manage blocks | | [`agentserve chat-deployments`](/cli/chat-deployments) | Manage chat deployments | | [`agentserve connector-types`](/cli/connector-types) | Manage connector types | | [`agentserve credentials`](/cli/credentials) | Manage credentials | | [`agentserve custom-tools`](/cli/custom-tools) | Manage custom tools | | [`agentserve files`](/cli/files) | Manage files | | [`agentserve knowledge`](/cli/knowledge) | Manage knowledge | | [`agentserve logs`](/cli/logs) | Manage logs | | [`agentserve mcp-servers`](/cli/mcp-servers) | Manage mcp servers | | [`agentserve meta`](/cli/meta) | Manage meta | | [`agentserve organizations`](/cli/organizations) | Manage organizations | | [`agentserve permission-groups`](/cli/permission-groups) | Manage permission groups | | [`agentserve relays`](/cli/relays) | Manage relays | | [`agentserve sandboxes`](/cli/sandboxes) | Manage sandboxes | | [`agentserve secrets`](/cli/secrets) | Manage secrets | | [`agentserve selectors`](/cli/selectors) | Manage selectors | | [`agentserve semantic-model`](/cli/semantic-model) | Manage semantic model | | [`agentserve skills`](/cli/skills) | Manage skills | | [`agentserve slides`](/cli/slides) | Manage slides | | [`agentserve spaces`](/cli/spaces) | Manage spaces | | [`agentserve tables`](/cli/tables) | Manage tables | | [`agentserve tools`](/cli/tools) | Manage tools | | [`agentserve workflow-mcp-servers`](/cli/workflow-mcp-servers) | Manage workflow mcp servers | | [`agentserve workflows`](/cli/workflows) | Manage workflows | | [`agentserve workspaces`](/cli/workspaces) | Manage workspaces | ## Log in through the browser and store the login for the profile [#log-in-through-the-browser-and-store-the-login-for-the-profile] ```bash agentserve login [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--method ` | No | Credential to obtain: oauth requires OAuth support; api-key creates a permanent key through pairing (auto-selects when omitted). Accepted values: `oauth`, `api-key`. | | `--no-browser` | No | Print the approval URL without opening it (either login method). | | `--read-only` | No | Ask only for permission to read, never to change anything. | | `--callback-port ` | No | Pin the local port the browser returns to. | | `-y, --yes` | No | Overwrite an existing API-key profile without prompting. | ## Sign out and remove the profile's stored login [#sign-out-and-remove-the-profiles-stored-login] ```bash agentserve logout [options] ``` **Options** | Option | Required | Description | | ------- | -------- | ---------------------------------------------------- | | `--all` | No | Remove the profile entirely, including its settings. | ## Show the resolved profile, where each setting came from, and whether it works [#show-the-resolved-profile-where-each-setting-came-from-and-whether-it-works] ```bash agentserve whoami [options] ``` **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------------------------- | | `--no-verify` | No | Skip the API check and only print the resolved settings. | ## Switch a profile's default workspace, or set its endpoint or output format [#switch-a-profiles-default-workspace-or-set-its-endpoint-or-output-format] ```bash agentserve configure [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------ | | `--set-endpoint ` | No | Agent Serve deployment to talk to. | | `--set-workspace ` | No | Default workspace for workspace-scoped commands. | | `--set-output ` | No | Default output format (table \| json \| yaml \| text). | | `--unset ` | No | Remove settings (endpoint, workspace, output). | ## Update this global CLI installation to the newest release on its channel [#update-this-global-cli-installation-to-the-newest-release-on-its-channel] ```bash agentserve update [options] ``` **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------- | | `--package-manager ` | No | Package manager that installed this copy. Accepted values: `npm`, `pnpm`, `bun`, `yarn`. | ## Ask agent serve and print the reply [#ask-agent-serve-and-print-the-reply] ```bash agentserve chat [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------- | | `message` | Yes | What to ask Agent Serve | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------- | | `-c, --conversation ` | No | Continue the conversation with this ID. | --- # Configuration (/cli/configuration) The CLI resolves an **endpoint**, **credential**, **workspace**, and **output format**. The credential can be a stored OAuth login or an API key. Each resolves independently, so a saved default can still be overridden for a single command. ## Profiles [#profiles] A profile selects one set of defaults, in the style of the AWS CLI. It normally uses its same-named stored identity, but a workspace profile can share another profile's identity through `auth_profile`. Select one with `-P`, `--profile`, or `AGENT_SERVE_PROFILE`: ```bash agentserve workflows list --profile dev AGENT_SERVE_PROFILE=dev agentserve workflows list ``` The profile is named `default` when you do not pick one. ```bash agentserve profiles # list them; * marks the active one ``` Add a profile for another workspace without creating or copying an API key: ```bash agentserve profile add acme --workspace 7e2d9c14-6b83-4a55-8f01-c4d3e9a76b28 ``` ## Setting defaults [#setting-defaults] ```bash agentserve configure --set-endpoint http://localhost:3000 --profile dev agentserve configure --set-workspace 5c81f3a6-0e27-4b94-8d15-a7f60c39b2e8 --profile dev agentserve configure --set-output table ``` | Option | What it sets | | ----------------------- | --------------------------------------------------------- | | `--set-endpoint ` | The Agent Serve deployment to talk to | | `--set-workspace ` | Default workspace for workspace-scoped commands | | `--set-output ` | Default output format: `table`, `json`, `yaml`, or `text` | | `--unset ` | Remove settings — `endpoint`, `workspace`, or `output` | Run `agentserve configure` with no flags to print the profile's stored settings. API keys are not settable here. Use [`agentserve login`](/cli/authentication), or `AGENT_SERVE_API_KEY` for CI. ## Where settings come from [#where-settings-come-from] Each setting resolves independently, and the first match wins: | Rank | Source | | ---- | ------------------------------------------------------------------------------------------------------------------ | | 1 | Command-line flag — `--endpoint`, `--workspace`, `--output` | | 2 | Environment — `AGENT_SERVE_ENDPOINT`, `AGENT_SERVE_API_KEY`, `AGENT_SERVE_WORKSPACE`, `AGENT_SERVE_OUTPUT` | | 3 | `~/.agent-serve/config` for the selected profile and `~/.agent-serve/credentials` for its `auth_profile`, when set | | 4 | Built-in default — `https://agentserve.valnoraelric.com` and `json` | `agentserve whoami` prints the winning source for each setting: ```bash agentserve whoami ``` ## The files [#the-files] Non-secret settings live in `~/.agent-serve/config`. It is safe to commit to a dotfiles repo: ```ini title="~/.agent-serve/config" [default] endpoint = https://agentserve.valnoraelric.com workspace = 2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67 output = table [profile dev] endpoint = http://localhost:3000 workspace = 5c81f3a6-0e27-4b94-8d15-a7f60c39b2e8 [profile acme] auth_profile = default workspace = 7e2d9c14-6b83-4a55-8f01-c4d3e9a76b28 ``` Keys live in `~/.agent-serve/credentials`, written `0600`: ```ini title="~/.agent-serve/credentials" [default] api_key = sk-as-… [dev] api_key = sk-as-… ``` Section naming follows the AWS convention: `[profile dev]` in config, `[dev]` in credentials. The `default` profile is `[default]` in both. `auth_profile` references one direct profile and shares its endpoint and stored login, whether OAuth or an API key. Workspace and output remain local. References cannot be chained, and a shared profile cannot also set its own endpoint or stored login. ## Environment variables [#environment-variables] | Variable | Effect | | -------------------------------- | -------------------------------------------------------------------------------------------------------------- | | `AGENT_SERVE_PROFILE` | Profile to use | | `AGENT_SERVE_ENDPOINT` | Deployment to talk to | | `AGENT_SERVE_API_KEY` | API key — skips `agentserve login` entirely | | `AGENT_SERVE_WORKSPACE` | Workspace to target | | `AGENT_SERVE_OUTPUT` | Output format | | `AGENT_SERVE_CONFIG_DIR` | Relocate the config directory and update cache; file-specific overrides below still win | | `AGENT_SERVE_CONFIG_FILE` | Relocate only the config file | | `AGENT_SERVE_CREDENTIALS_FILE` | Relocate only the credentials file | | `AGENT_SERVE_TIMEOUT_SECONDS` | Per-request timeout; `0` waits indefinitely. Defaults to `3600`, above every timeout the server itself applies | | `AGENT_SERVE_DEBUG` | Trace each request's method, URL, status and duration to stderr | | `AGENT_SERVE_NO_UPDATE_CHECK` | Turn off update checks and notices | | `AGENT_SERVE_TELEMETRY_DISABLED` | Turn off anonymous usage reporting; see [usage data](/cli/usage-data) | ## Updates [#updates] The CLI checks for a newer stable release at most once per day on eligible interactive invocations. It prints an optional notice to stderr and continues your command. Installation only happens when you run `agentserve update`. Run `agentserve update` to update immediately, including in CI and when automatic checks are disabled. It requires a global installation and verifies that the package manager targets the running copy before installing. Supported managers are npm, pnpm, Bun, and Yarn Classic. For custom installations, select the manager with `agentserve update --package-manager bun`. Project-local and temporary package-runner copies must be updated through their package manager. Manual updates preserve the stable, staging, or dev release channel. Installation failures stop with an error; concurrent update attempts are refused. Installer output goes to stderr and does not mix with JSON output on stdout. The updater resolves the channel through the selected package manager before installing. Older registry or mirror releases are refused; a newer release is installed by its exact version so a moving tag cannot change the target. Checks are skipped in CI, when stderr is redirected, under `npm exec` or `npx`, from a repository checkout, and for prerelease versions. Set `AGENT_SERVE_NO_UPDATE_CHECK=1` to disable them. The check uses `registry.npmjs.org` unless `npm_config_registry` names another HTTP(S) registry. It sends no Agent Serve API key, workspace, or command. Query-string credentials in a configured registry URL are preserved; URLs containing username/password userinfo are rejected. Empty registry values use npm, while malformed non-empty values disable the check. Redirects are not followed. The daily cache is `~/.agent-serve/update-check.json`, or under `AGENT_SERVE_CONFIG_DIR`. `AGENT_SERVE_CONFIG_FILE` and `AGENT_SERVE_CREDENTIALS_FILE` do not relocate it. If the cache cannot be written, eligible invocations may check again. Concurrent commands can also each check. Registry checks have a one-second deadline; package-manager installation has a five-minute deadline. Registry-check failures suppress the check, while installer failures are reported. Node's `fetch` uses `HTTP(S)_PROXY` when opted in with `NODE_USE_ENV_PROXY=1` (Node 22.21+ or 24.0+) or `--use-env-proxy` (Node 22.21+ or 24.5+). For CI, set `AGENT_SERVE_API_KEY` and `AGENT_SERVE_WORKSPACE`; no saved login or config file is required. ## Choosing a workspace [#choosing-a-workspace] Workspace-scoped commands need a workspace: ```bash agentserve tables list --workspace 9b4c7e02-1d58-4f36-a0c9-6e2b85df413a agentserve configure --set-workspace 2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67 export AGENT_SERVE_WORKSPACE=2f6d0b1c-8a34-4d92-b7e5-31c8a0f45d67 ``` For a reusable selection, create a workspace profile backed by the current stored login: ```bash agentserve workspaces list agentserve profile add acme --workspace 7e2d9c14-6b83-4a55-8f01-c4d3e9a76b28 agentserve --profile acme tables list ``` When `--workspace` is omitted in a terminal, `profile add` presents an interactive picker, capped at 1,000 entries. It refuses environment-only keys and endpoint overrides because those values would disappear in another shell. `agentserve billing status`, `agentserve billing logs`, and `agentserve audit-logs list` accept `--all-workspaces` to drop the filter instead. It cannot be combined with `--workspace`. ## Repairing a bad setting [#repairing-a-bad-setting] An invalid `output` value fails with the list of accepted formats. A higher-priority source still wins, so you can repair a profile without editing the file: ```bash agentserve --output table configure --set-output json ``` --- # Connector Types (/cli/connector-types) Every command below also accepts the [global options](/cli/commands#global-options). ## List connector types [#list-connector-types] ```bash agentserve connector-types list [options] ``` **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------ | | `--search ` | No | Case-insensitive substring match against the connector name. | --- # Credentials (/cli/credentials) `agentserve credentials` is also spelled `agentserve credential`. Every command below also accepts the [global options](/cli/commands#global-options). ## Disconnect credential [#disconnect-credential] ```bash agentserve credentials delete [options] ``` Disconnect Credential (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------- | | `credentialId` | Yes | Credential to disconnect. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## List credential members [#list-credential-members] ```bash agentserve credentials members list [options] ``` List Credential Members (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `email`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Remove credential member [#remove-credential-member] ```bash agentserve credentials members remove [options] ``` Remove Credential Member (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | | `userId` | Yes | User whose explicit grant will be revoked. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Upsert credential member [#upsert-credential-member] ```bash agentserve credentials members upsert [options] ``` Upsert Credential Member (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | **Options** | Option | Required | Description | | ---------------- | -------- | --------------------------------------------------------------------------------------------------------- | | `--user ` | Yes | Existing workspace member to grant or change access for. | | `--role ` | Yes | Credential role to grant; workspace administrators cannot be demoted. Accepted values: `admin`, `member`. | ## List credential providers [#list-credential-providers] ```bash agentserve credentials providers list [options] ``` **Options** | Option | Required | Description | | ------------------ | -------- | ---------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the credential provider name. | ## List credentials [#list-credentials] ```bash agentserve credentials list [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------- | | `--type ` | No | Restrict results to this credential type. Accepted values: `oauth`, `service_account`. | | `--provider-id ` | No | Restrict results to credentials for this integration provider. | | `--search ` | No | Case-insensitive substring match against the credential display name. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `displayName`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update credential [#update-credential] ```bash agentserve credentials update [options] ``` Update Credential (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | --------------------- | | `credentialId` | Yes | Credential to update. | **Options** | Option | Required | Description | | ---------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `--display-name ` | No | New name shown for the credential in Agent Serve. | | `--description ` | No | New credential description. Send null to clear the stored one. (--description null sends the word, not JSON null). | | `--service-account-json ` | No | Write-only provider service-account JSON configuration, including Oracle Database connection fields. | | `--api-token ` | No | Write-only provider API token. | | `--domain ` | No | Provider account domain. | | `--atlassian-product ` | No | Atlassian product to verify; defaults to Jira on create and preserves the saved product on reconnect. Accepted values: `jira`, `confluence`. | | `--signing-secret ` | No | Write-only webhook signing secret. | | `--bot-token ` | No | Write-only bot token. | | `--client-id ` | No | OAuth client identifier. | | `--client-secret ` | No | Write-only OAuth client secret. | | `--certificate-id ` | No | Provider certificate mapping identifier. | | `--org-id ` | No | Provider organization ID. | | `--data-center ` | No | Provider data center. | | `--auth-method ` | No | Provider authentication method. | | `--private-key ` | No | Write-only PEM private key. | | `--username ` | No | Provider run-as username. | | `--tenancy-ocid ` | No | OCI tenancy OCID. | | `--user-ocid ` | No | OCI user OCID. | | `--fingerprint ` | No | OCI API-key fingerprint. | | `--private-key-passphrase ` | No | Write-only OCI private-key passphrase. | | `--region ` | No | OCI home region. | | `--name ` | No | Alias for --display-name. | ## Create a service-account credential using its discovered provider schema [#create-a-service-account-credential-using-its-discovered-provider-schema] ```bash agentserve credentials create [options] ``` Create a service-account credential using its discovered provider schema (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------------------------------- | | `providerId` | Yes | Service-account provider to create a credential for | **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------- | | `--name ` | Yes | Name shown for the credential in Agent Serve. | | `--credentials ` | Yes | Provider credentials as JSON (or @path / @- to read a file or stdin). | | `--description ` | No | Optional credential description. | | `--id ` | No | Client-generated credential ID when provider discovery requires it. | ## Create a short-lived link for connecting an OAuth provider [#create-a-short-lived-link-for-connecting-an-oauth-provider] ```bash agentserve credentials connect [options] ``` Create a short-lived link for connecting an OAuth provider (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------- | | `providerId` | Yes | OAuth provider to connect | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------- | | `--name ` | Yes | Name shown for the new credential in Agent Serve. | ## Create a short-lived link for reconnecting an OAuth credential [#create-a-short-lived-link-for-reconnecting-an-oauth-credential] ```bash agentserve credentials reconnect ``` Create a short-lived link for reconnecting an OAuth credential (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ----------------------------------------- | | `credentialId` | Yes | Existing OAuth credential to re-authorize | --- # Custom Tools (/cli/custom-tools) `agentserve custom-tools` is also spelled `agentserve custom-tool`. Every command below also accepts the [global options](/cli/commands#global-options). ## Create custom tool [#create-custom-tool] ```bash agentserve custom-tools create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--title ` | Yes | Display title, unique within the workspace. | | `--schema ` | Yes | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). | | `--code ` | Yes | Tool implementation executed in the sandboxed function runtime. | ## Delete custom tool [#delete-custom-tool] ```bash agentserve custom-tools delete [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get custom tool [#get-custom-tool] ```bash agentserve custom-tools get ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | ## List custom tools [#list-custom-tools] ```bash agentserve custom-tools list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the tool title. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `title`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update custom tool [#update-custom-tool] ```bash agentserve custom-tools update [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--title ` | No | New display title for the tool. | | `--schema ` | No | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). | | `--code ` | No | Replacement tool implementation. | --- # Files (/cli/files) `agentserve files` is also spelled `agentserve file`. Every command below also accepts the [global options](/cli/commands#global-options). ## Delete several files at once [#delete-several-files-at-once] ```bash agentserve files batch-delete [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ## POST /api/v2/files/copy [#post-apiv2filescopy] ```bash agentserve files copy [options] ``` **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------------------------------- | | `--source ` | Yes | Source owner and selected fileIds or folderIds (JSON, or @path / @- to read a file or stdin). | | `--destination ` | Yes | Destination owner and optional folderId (JSON, or @path / @- to read a file or stdin). | ## Create file [#create-file] ```bash agentserve files create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | File name, including its extension. Path separators and dot segments are rejected. | | `--content-type ` | No | MIME type. When omitted, it is inferred from the file extension. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--content ` | No | Initial file content. Omit or send an empty string for a zero-byte file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. Use an upload session for anything larger. | | `--encoding ` | No | Encoding of the content field. Accepted values: `utf-8`, `base64`. | ## Create a file folder at a path [#create-a-file-folder-at-a-path] ```bash agentserve files folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete folder [#delete-folder] ```bash agentserve files folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ## List folders [#list-folders] ```bash agentserve files folders list [options] ``` Also available as `agentserve files folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--scope ` | No | Which lifecycle set to list: `active` (default) returns live folders only; `archived` returns folders a recursive delete soft-deleted, which is how a caller finds a path to hand to the folder restore. Authorization is identical for both. Accepted values: `active`, `archived`. | | `--recursive ` | No | Whether parentPath includes every descendant instead of direct children only. Accepted values: `true`, `1`, `yes`, `on`, `y`, `enabled`, `false`, `0`, `no`, `off`, `n`, `disabled`. | | `--depth ` | No | Deepest level below parentPath to include when recursive is true. | ## Rename or move a file folder [#rename-or-move-a-file-folder] ```bash agentserve files folders move ``` Also available as `agentserve files folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ## Restore an archived file folder [#restore-an-archived-file-folder] ```bash agentserve files folders restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete file [#delete-file] ```bash agentserve files delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Permanently delete a previous version of a file [#permanently-delete-a-previous-version-of-a-file] ```bash agentserve files versions delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Show the metadata of one version of a file [#show-the-metadata-of-one-version-of-a-file] ```bash agentserve files versions describe ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | ## List the recorded versions of a file [#list-the-recorded-versions-of-a-file] ```bash agentserve files versions list [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Accepted values: `version`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Read the text content of one version of a file [#read-the-text-content-of-one-version-of-a-file] ```bash agentserve files versions read [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | --------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--max-bytes ` | No | Optional ceiling on the source bytes fed to the parser, lowering but never raising the server limit. | | `--offset ` | No | First line to return, 1-based; 0 also starts at the first line. Absent starts at the first line. | | `--limit ` | No | How many lines to return from `offset`. Absent reads to the end. | ## Make a previous version of a file current again [#make-a-previous-version-of-a-file-current-again] ```bash agentserve files versions revert [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | ------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--expected-current-version ` | No | Revert only while this is still the current version; otherwise the request fails with `409`. Omit to revert whatever is current. Collaborative edits and repeated workflow writes that fold into the current version keep its number, so prefer `expectedRevision` to guard content. | | `--expected-revision ` | No | Revert only while the file still holds the content this revision names, as returned by Get File Metadata or an earlier write; otherwise the request fails with `409`. Unlike a version number, it also catches edits that folded into the current version. | ## Download the content of one version of a file [#download-the-content-of-one-version-of-a-file] ```bash agentserve files versions download [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | -------------------------- | -------- | --------------------------------------------- | | `-o, --output-file ` | No | Write content to a file instead of stdout. | | `--force` | No | Overwrite --output-file if it already exists. | ## Apply one exact or anchor-based edit to a text file [#apply-one-exact-or-anchor-based-edit-to-a-text-file] ```bash agentserve files edit [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--edit ` | Yes | One edit object: \{"mode":"search\_replace","search":"old","content":"new","replaceAll":false}, \{"mode":"replace\_between","beforeAnchor":"start line","afterAnchor":"end line","content":"new"}, \{"mode":"insert\_after","anchor":"line","content":"new"}, or \{"mode":"delete\_between","startAnchor":"first line deleted","endAnchor":"ending line kept"}. Anchored modes also accept occurrence starting at 1 (JSON, or @path / @- to read a file or stdin). | | `--expected-revision ` | No | Revision from Get File Metadata or an earlier write; the request is refused with `409` when the content moved on. | ## Show file metadata and sharing status [#show-file-metadata-and-sharing-status] ```bash agentserve files describe [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--scope ` | No | Which lifecycle set to read from: `active` (default) resolves live files only and returns `404` for a file a delete soft-deleted; `archived` also resolves soft-deleted files, so metadata stays readable before the file is restored. Authorization is identical for both. Accepted values: `active`, `archived`. | ## Show a file’s share settings [#show-a-files-share-settings] ```bash agentserve files share get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | ## Enable or disable sharing for a file [#enable-or-disable-sharing-for-a-file] ```bash agentserve files share set [options] ``` Enable or disable sharing for a file (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--is-active ` | Yes | Whether the share should resolve. Disabling preserves the token and the whole access configuration, so re-enabling restores the share as it was; enabling rewrites the credentials the resulting mode does not use. Accepted values: `true`, `false`. | | `--auth-type ` | No | How access to the share is gated. The stored mode is kept when omitted. Enabling `public` clears the stored password and empties `allowedEmails`; `password` empties `allowedEmails`; `email` and `sso` clear the stored password. Accepted values: `public`, `password`, `email`, `sso`. | | `--password ` | No | Password for a password-gated share. Kept when omitted; enabling `password` with neither a supplied nor a stored password is a 400. | | `--allowed-emails ` | No | Allowed addresses or `@domain` patterns for email and SSO shares. Kept when omitted; enabling `email` or `sso` with an empty resulting list is a 400. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ## List files [#list-files] ```bash agentserve files list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--recursive` | No | Include subfolders in the folder filter. Defaults to true when searching and false otherwise. Ignored without a folder filter. | | `--no-recursive` | No | Send --recursive as false. | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live files, `archived` for files a delete soft-deleted. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--search ` | No | Case-insensitive substring match against the file name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `size`, `uploadedAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Move files into another folder [#move-files-into-another-folder] ```bash agentserve files move [options] ``` Also available as `agentserve files mv`. **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | No | Destination folder path; omit for root. | ## Read a file’s text content as JSON or YAML [#read-a-files-text-content-as-json-or-yaml] ```bash agentserve files read [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | --------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--max-bytes ` | No | Optional ceiling on the source bytes fed to the parser, lowering but never raising the server limit. | | `--offset ` | No | First line to return, 1-based; 0 also starts at the first line. Absent starts at the first line. | | `--limit ` | No | How many lines to return from `offset`. Absent reads to the end. | ## Rename a file [#rename-a-file] ```bash agentserve files rename [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ---------------- | -------- | --------------------------------------- | | `--name ` | Yes | New file name, including its extension. | ## Restore an archived file [#restore-an-archived-file] ```bash agentserve files restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | ## Search file content [#search-file-content] ```bash agentserve files search [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--query ` | Yes | Regular expression, or exact text when `mode` is `exact`. | | `--mode ` | No | How `query` is read. Accepted values: `exact`, `regex`. | | `--max-results ` | No | Maximum matching lines to return. | | `--folder ` | No | Folders to search, by path as shown in the app; omit to search the whole workspace (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-subfolders` | No | Whether each folder scope includes nested folders; on by default. | | `--no-include-subfolders` | No | Send --include-subfolders as false. | ## Unzip an archive into a new folder beside it [#unzip-an-archive-into-a-new-folder-beside-it] ```bash agentserve files unzip [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Replace a file’s contents [#replace-a-files-contents] ```bash agentserve files set-content [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--content ` | Yes | Complete replacement content for the file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. | | `--encoding ` | No | Content encoding. Accepted values: `utf-8`, `base64`. | | `--expected-revision ` | No | Revision from Get File Metadata or an earlier write; the request is refused with `409` when the content moved on. | ## Upload a file to the workspace [#upload-a-file-to-the-workspace] ```bash agentserve files upload [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------- | | `path` | Yes | Local file to upload | **Options** | Option | Required | Description | | ----------------- | -------- | ------------------------------------------------------------- | | `--folder ` | No | Folder path as shown in the app; defaults to the root folder. | | `--name ` | No | Store it under a different name. | ## Download a file’s content to stdout or a local file [#download-a-files-content-to-stdout-or-a-local-file] ```bash agentserve files get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------- | | `fileId` | Yes | File whose content to read | **Options** | Option | Required | Description | | -------------------------- | -------- | --------------------------------------------- | | `-o, --output-file ` | No | Write content to a file instead of stdout. | | `--force` | No | Overwrite --output-file if it already exists. | ## List file resources and child folders together [#list-file-resources-and-child-folders-together] ```bash agentserve files ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ## Create a file directory at a path [#create-a-file-directory-at-a-path] ```bash agentserve files mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | --- # Agent Serve CLI (/cli) `agentserve` is the command line for Agent Serve. Sign in once, then run workflows, query tables, move files, search knowledge bases, and read run logs from the terminal. Results are JSON by default, so they pipe into `jq`, cron jobs, CI pipelines, and coding agents; use `--output table` to read them as tables. Don't know a command? Run `agentserve cli search ""`. See [Output formats](/cli/output) for commands that emit raw content or local configuration. ## Install [#install] ```bash npm install -g agentserve ``` ```bash pnpm add -g agentserve ``` ```bash bun add -g agentserve ``` Requires Node.js 20 or newer. Verify with `agentserve --version`. The CLI shows optional update notices on eligible interactive invocations. Run `agentserve update` when you want to install the update. See [Updates](/cli/configuration#updates) for installation requirements and how to disable notices. To run it without installing, use `npx agentserve `. Using Agent Serve as a library instead? See the [TypeScript](/api-reference/typescript) and [Python](/api-reference/python) SDKs, or the [HTTP API](/api-reference/getting-started). ## Your first command [#your-first-command] ### Sign in [#sign-in] ```bash agentserve login ``` The CLI opens your browser for approval. Local sign-in prefers OAuth; remote terminals use API-key pairing. After OAuth sign-in, choose a default workspace with `agentserve configure --set-workspace `. For SSH and containers, use `agentserve login --method api-key --no-browser` and approve the pairing code. See [Authentication](/cli/authentication) for CI keys, multiple accounts, and self-hosted deployments. ### Check what you are pointed at [#check-what-you-are-pointed-at] ```bash agentserve whoami ``` This prints the resolved endpoint, workspace, and output format — and **where each one came from**. It is the fastest way to explain a surprising result. ### List your workflows [#list-your-workflows] ```bash agentserve workflows list ``` ``` ID NAME FOLDER DEPLOYED RUNS LAST RUN 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 Refund triage /Support yes 412 2026-08-15 14:02:11 b8c0d247-9e13-4a86-97f5-2ad4e1638c09 Weekly digest /Reporting no 18 2026-08-11 09:00:04 ``` ### Run one [#run-one] ```bash agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --input '{"ticketId":"T-4821"}' ``` This command runs the active deployment. Deploy from the editor or with `agentserve workflows deploy `. To run the current saved workflow state instead, use `agentserve workflows run --manual`. ## How commands are shaped [#how-commands-are-shaped] Every command reads the same way: ```bash agentserve [sub-resource] [arguments] [options] ``` ```bash agentserve workflows list agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --limit 50 agentserve knowledge documents upload 4c1b7f60-2d55-4a3e-9c18-70b6ea2f9d31 ./handbook.pdf ``` Some resource groups also accept a singular alias: `agentserve workflow get` and `agentserve workflows get` are the same command. `knowledge` also answers to `kb`. Each group’s reference lists its supported aliases. Every command accepts `--help`, at any depth: ```bash agentserve --help agentserve tables --help agentserve tables rows query --help ``` ## What you can do [#what-you-can-do] | Group | What it covers | | --------------------------------------------------- | ------------------------------------------------------------------ | | [`workflows`](/cli/workflows) | Run, deploy, roll back, import, export, and organize workflows | | [`logs`](/cli/logs) | Read run diagnostics, including the full trace tree | | [`tables`](/cli/tables) | Query, insert, update, and import rows; manage columns and views | | [`files`](/cli/files) | Upload, download, share, and organize workspace files | | [`knowledge`](/cli/knowledge) | Search knowledge bases and manage their documents and tags | | [`skills`](/cli/skills) | Manage agent skills | | [`sandboxes`](/cli/sandboxes) | Manage sandbox dependencies, managed CLIs, and system packages | | [`mcp-servers`](/cli/mcp-servers) | Manage MCP server connections and their tools | | [`custom-tools`](/cli/custom-tools) | Manage custom tool definitions | | [`credentials`](/cli/credentials) | Connect, reconnect, and disconnect integration credentials | | [`secrets`](/cli/secrets) | Set and remove workspace secrets | | [`billing`](/cli/billing) | Check plan status and credit usage | | [`audit-logs`](/cli/audit-logs) | Read organization audit logs | | [`workspaces`](/cli/workspaces) | Inspect the active workspace and its members | | [`blocks`](/cli/blocks) | Browse the block catalog and read one block's configuration fields | | [`tools`](/cli/tools) | Browse and execute built-in tools | | [`connector-types`](/cli/connector-types) | Browse knowledge-base connector types and their config fields | | [`chat-deployments`](/cli/chat-deployments) | List the hosted chats a workspace serves | | [`workflow-mcp-servers`](/cli/workflow-mcp-servers) | Publish workflows as MCP tools for outside agents | | [`meta`](/cli/meta) | Check what this API supports and which limits apply | The [command overview](/cli/commands) has the global options and the commands that take no resource; the [complete reference](/cli/reference) documents every subcommand, argument, and flag on one page. Both are generated from the CLI itself. ## Where to go next [#where-to-go-next] * [Authentication](/cli/authentication) — signing in, API keys for CI, and multiple accounts * [Configuration](/cli/configuration) — profiles, config files, environment variables, and precedence * [Output formats](/cli/output) — `table`, `json`, `yaml`, and `text`, and when to use each * [Scripting](/cli/scripting) — piping, file inputs, exit codes, and automation recipes * [Troubleshooting](/cli/troubleshooting) — what each error means, and how to resolve it --- # Knowledge (/cli/knowledge) `agentserve knowledge` is also spelled `agentserve kb`. Every command below also accepts the [global options](/cli/commands#global-options). ## Index files the workspace already stores [#index-files-the-workspace-already-stores] ```bash agentserve knowledge from-workspace-files create [options] ``` Index files the workspace already stores (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `--file ` | Yes | Workspace file ID or key (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ## Declare the tag definitions a knowledge base needs [#declare-the-tag-definitions-a-knowledge-base-needs] ```bash agentserve knowledge tags save [options] ``` Declare the tag definitions a knowledge base needs (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `--definitions ` | Yes | Tag definitions: \[\{"tagSlot":"tag1","displayName":"category","fieldType":"text"}] (JSON, or @path / @- to read a file or stdin). | ## Create tag [#create-tag] ```bash agentserve knowledge tags create [options] ``` Create Tag (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--display-name ` | Yes | Name tag filters and document reads use for this tag. | | `--field-type ` | No | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Defaults to text, so a number, date, or boolean slot must name its type here. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. | | `--tag-slot ` | No | Slot to store the tag in. Omit to take the next free slot for the field type; a slot that does not belong to the field type, or one already in use, is rejected. Accepted values: `tag1`, `tag2`, `tag3`, `tag4`, `tag5`, `tag6`, `tag7`, `number1`, `number2`, `number3`, `number4`, `number5`, `date1`, `date2`, `boolean1`, `boolean2`, `boolean3`. | ## Delete tag [#delete-tag] ```bash agentserve knowledge tags delete [options] ``` Delete Tag (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `tagId` | Yes | Unique tag definition identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Remove tag definitions no document still uses [#remove-tag-definitions-no-document-still-uses] ```bash agentserve knowledge tags cleanup [options] ``` Remove tag definitions no document still uses (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--unused` | No | Whether to remove only the tag definitions no document in the knowledge base still carries a value for. Defaults to true. Pass --no-unused to delete every definition on the knowledge base, which also clears its slot on every document and chunk and is not recoverable. | | `--no-unused` | No | Send --unused as false. | | `-y, --yes` | Yes | Confirm this operation. | ## Show which tag slot a create would take for a field type [#show-which-tag-slot-a-create-would-take-for-a-field-type] ```bash agentserve knowledge tags next-slot [options] ``` Show which tag slot a create would take for a field type (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--field-type ` | Yes | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. | ## List tags [#list-tags] ```bash agentserve knowledge tags list ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ## Show how many documents and chunks carry each tag [#show-how-many-documents-and-chunks-carry-each-tag] ```bash agentserve knowledge tags usage ``` Show how many documents and chunks carry each tag (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ## Update tag [#update-tag] ```bash agentserve knowledge tags update [options] ``` Update Tag (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `tagId` | Yes | Unique tag definition identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------- | | `--display-name ` | No | New tag display name. | | `--field-type ` | No | New value type for the tag. Accepted values: `text`, `number`, `date`, `boolean`. | ## Enable, disable, or delete many chunks at once [#enable-disable-or-delete-many-chunks-at-once] ```bash agentserve knowledge chunks batch-update [options] ``` Enable, disable, or delete many chunks at once (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--operation ` | Yes | What to do with the selected chunks. Accepted values: `enable`, `disable`, `delete`. | | `--chunk ` | Yes | Chunks to operate on, by identifier. An id naming no chunk in the document is reported in errors and does not fail the request. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ## Create chunk [#create-chunk] ```bash agentserve knowledge chunks create [options] ``` Create Chunk (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------------------------------------------------- | | `--content ` | Yes | Text to embed. It is embedded on write, so the chunk is searchable immediately. | | `--enabled` | No | Whether the new chunk participates in search. | | `--no-enabled` | No | Send --enabled as false. | ## Delete chunk [#delete-chunk] ```bash agentserve knowledge chunks delete [options] ``` Delete Chunk (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get chunk [#get-chunk] ```bash agentserve knowledge chunks get ``` Get Chunk (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | ## List chunks [#list-chunks] ```bash agentserve knowledge chunks list [options] ``` List Chunks (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against chunk content. | | `--enabled ` | No | Restrict to enabled or disabled chunks. `all` returns both. Accepted values: `true`, `false`, `all`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `chunkIndex`, `tokenCount`, `enabled`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Update chunk [#update-chunk] ```bash agentserve knowledge chunks update [options] ``` Update Chunk (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------------------------------------------------------------------ | | `--content ` | No | Replacement text. Changing it re-embeds the chunk and re-derives its token and character counts. | | `--enabled` | No | Whether the chunk participates in search. Disabling keeps it indexed. | | `--no-enabled` | No | Send --enabled as false. | ## Enable or disable every matching document [#enable-or-disable-every-matching-document] ```bash agentserve knowledge documents batch-update [options] ``` Enable or disable every matching document (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `--operation ` | Yes | Whether the selected documents become enabled or disabled for search. Accepted values: `enable`, `disable`. | | `--document ` | No | Documents to update, by identifier. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--select-all` | No | Apply to every document in the knowledge base. | | `--enabled-filter ` | No | With `selectAll`, restrict the update to documents in this state. Accepted values: `all`, `enabled`, `disabled`. | ## Delete a document from a knowledge base [#delete-a-document-from-a-knowledge-base] ```bash agentserve knowledge documents delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get document [#get-document] ```bash agentserve knowledge documents get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | ## List documents [#list-documents] ```bash agentserve knowledge documents list [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--search ` | No | Case-insensitive substring match against the document filename. | | `--enabled-filter ` | No | Filter by whether documents are enabled for search. Accepted values: `all`, `enabled`, `disabled`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `filename` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `filename`, `fileSize`, `tokenCount`, `chunkCount`, `uploadedAt`, `processingStatus`, `enabled`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--tag-filters ` | No | A JSON-encoded array of at most 10 tag filters, using the same display-name shape as knowledge search: `[{"tagName":"category","operator":"eq","value":"billing"}]`. Every filter must hold, including two that name the same tag. A name that is not defined in this knowledge base is rejected, never ignored. | ## Update document [#update-document] ```bash agentserve knowledge documents update [options] ``` Update Document (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filename ` | No | New filename for the document. | | `--enabled` | No | Whether the document participates in search. Disabling keeps it indexed. | | `--no-enabled` | No | Send --enabled as false. | | `--tag1 ` | No | New value for tag slot 1. | | `--tag2 ` | No | New value for tag slot 2. | | `--tag3 ` | No | New value for tag slot 3. | | `--tag4 ` | No | New value for tag slot 4. | | `--tag5 ` | No | New value for tag slot 5. | | `--tag6 ` | No | New value for tag slot 6. | | `--tag7 ` | No | New value for tag slot 7. | | `--number1 ` | No | New value for number tag slot 1. | | `--number2 ` | No | New value for number tag slot 2. | | `--number3 ` | No | New value for number tag slot 3. | | `--number4 ` | No | New value for number tag slot 4. | | `--number5 ` | No | New value for number tag slot 5. | | `--date1 ` | No | New value for date tag slot 1, formatted YYYY-MM-DD. | | `--date2 ` | No | New value for date tag slot 2, formatted YYYY-MM-DD. | | `--boolean1` | No | New value for boolean tag slot 1. | | `--no-boolean1` | No | Send --boolean1 as false. | | `--boolean2` | No | New value for boolean tag slot 2. | | `--no-boolean2` | No | Send --boolean2 as false. | | `--boolean3` | No | New value for boolean tag slot 3. | | `--no-boolean3` | No | Send --boolean3 as false. | | `--retry-processing` | No | Requeue a failed or stuck document for processing. Send it alone — no other field may accompany it — and it answers with a queue acknowledgement rather than the document. | ## Upload a document to a knowledge base [#upload-a-document-to-a-knowledge-base] ```bash agentserve knowledge documents upload [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ----------------------------- | | `knowledgeBaseId` | Yes | Knowledge base to upload into | | `path` | Yes | Local file to upload | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------------ | | `--name ` | No | Store it under a different name. | | `--tag ` | No | Document tags, in tag1 through tag7 order. | | `--recipe ` | No | Document processing recipe. Accepted values: `default`, `plain`, `markdown`, `code`. | | `--lang ` | No | Document language tag: hyphen-separated letter and digit subtags, for example en or en-US. | ## Create knowledge base [#create-knowledge-base] ```bash agentserve knowledge create [options] ``` **Options** | Option | Required | Description | | --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Human-readable knowledge base name. | | `--description ` | No | Optional knowledge base description. | | `--chunking-config ` | No | Chunking configuration; defaults are applied when omitted. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Create knowledge connector [#create-knowledge-connector] ```bash agentserve knowledge connectors create [options] ``` Create Knowledge Connector (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `--connector-type ` | Yes | Registered connector type. | | `--credential-id ` | No | OAuth credential identifier for connectors that require OAuth. | | `--api-key ` | No | Write-only API key for connectors that use API-key authentication. | | `--source-config ` | Yes | Connector-specific source selection and filtering configuration. (JSON, or @path / @- to read a file or stdin). | | `--sync-interval-minutes ` | No | Scheduled synchronization interval in minutes; zero disables scheduling. | ## Delete knowledge connector [#delete-knowledge-connector] ```bash agentserve knowledge connectors delete [options] ``` Delete Knowledge Connector (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------- | | `--delete-documents` | No | Also permanently delete documents produced by this connector. | | `--no-delete-documents` | No | Send --delete-documents as false. | | `-y, --yes` | Yes | Confirm this operation. | ## Get knowledge connector [#get-knowledge-connector] ```bash agentserve knowledge connectors get ``` Get Knowledge Connector (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | ## List knowledge connector documents [#list-knowledge-connector-documents] ```bash agentserve knowledge connectors documents list [options] ``` List Knowledge Connector Documents (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | -------------------------------------------------------------- | | `--include-excluded` | No | Include documents explicitly excluded by a user. | | `--no-include-excluded` | No | Send --include-excluded as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Update knowledge connector documents [#update-knowledge-connector-documents] ```bash agentserve knowledge connectors documents update [options] ``` Update Knowledge Connector Documents (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `--operation ` | Yes | Whether to restore or exclude the selected documents. Accepted values: `restore`, `exclude`. | | `--document ` | Yes | Connector document identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ## List knowledge connectors [#list-knowledge-connectors] ```bash agentserve knowledge connectors list [options] ``` List Knowledge Connectors (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------ | | `--sort-by ` | No | Field used to sort the result. Accepted values: `connectorType`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Queue a knowledge connector synchronization [#queue-a-knowledge-connector-synchronization] ```bash agentserve knowledge connectors sync [options] ``` Queue a knowledge connector synchronization (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ---------------- | -------- | -------------------------------------------------------- | | `--rehydrate` | No | Re-fetch and re-index every existing connector document. | | `--no-rehydrate` | No | Send --rehydrate as false. | ## Update knowledge connector [#update-knowledge-connector] ```bash agentserve knowledge connectors update [options] ``` Update Knowledge Connector (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | --------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--source-config ` | No | Replacement source selection and filtering configuration. Updating a runnable connector queues synchronization; paused connectors remain paused. (JSON, or @path / @- to read a file or stdin). | | `--sync-interval-minutes ` | No | New scheduled synchronization interval in minutes. | | `--status ` | No | New connector state. Accepted values: `active`, `paused`. | ## Create a knowledge folder at a path [#create-a-knowledge-folder-at-a-path] ```bash agentserve knowledge folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete folder [#delete-folder] ```bash agentserve knowledge folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ## List knowledge folders [#list-knowledge-folders] ```bash agentserve knowledge folders list [options] ``` Also available as `agentserve knowledge folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Rename or move a knowledge folder [#rename-or-move-a-knowledge-folder] ```bash agentserve knowledge folders move ``` Also available as `agentserve knowledge folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete knowledge base [#delete-knowledge-base] ```bash agentserve knowledge delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get knowledge base [#get-knowledge-base] ```bash agentserve knowledge get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ## List knowledge bases [#list-knowledge-bases] ```bash agentserve knowledge list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Lifecycle scope: active or archived knowledge bases. Use Restore Knowledge Base to recover archived entries. Folder paths resolve only active folders, so filtering by an archived folder returns no matches. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Restore an archived knowledge base [#restore-an-archived-knowledge-base] ```bash agentserve knowledge restore ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ## Search knowledge [#search-knowledge] ```bash agentserve knowledge search [options] ``` **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--kb ` | Yes | Knowledge base ID (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--query ` | No | Text to search for. | | `--top-k ` | No | Maximum number of search results to return. Must be a whole number between 1 and 100. | | `--tag-filters ` | No | Tag filters as \[\{"tagName":"...","operator":"...","value":"..."}] (JSON, or @path / @- to read a file or stdin). | | `--search-mode ` | No | Search algorithm. Accepted values: `vector`, `hybrid`. | | `--reranker-enabled` | No | Re-order retrieved chunks with a reranking model before truncating to `topK`. Ignored for a tag-only search, and billed per rerank call on top of the search. Reranking is best-effort — a provider failure falls back to vector ordering, so check `rerankerStatus` on the response. A model your organization's model policy does not allow (including its zero-data-retention requirement) is rejected with 403. | | `--no-reranker-enabled` | No | Send --reranker-enabled as false. | | `--reranker-model ` | No | Reranking model to use when `rerankerEnabled` is true: a Cohere id (`rerank-v4.0-pro`, `rerank-v4.0-fast`, `rerank-v3.5`) or an OpenRouter rerank model as `openrouter/<maker>/<model>`, e.g. `openrouter/voyageai/rerank-2.5`. Defaults to `rerank-v4.0-fast`. (JSON, or @path / @- to read a file or stdin). | | `--reranker-input-count ` | No | How many candidate chunks to retrieve before reranking. Defaults to four times `topK`, capped at 100. A larger pool costs more retrieval work but gives the reranker more to choose from. | ## Update knowledge base [#update-knowledge-base] ```bash agentserve knowledge update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | --------------------------------- | -------- | ----------------------------------------------------------------------------------- | | `--name ` | No | New knowledge base name. | | `--description ` | No | New knowledge base description. | | `--chunking-config ` | No | New document chunking configuration. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Move a knowledge base to a folder [#move-a-knowledge-base-to-a-folder] ```bash agentserve knowledge mv ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ---------------------------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ## Export a knowledge base as a .agentservekb.zip bundle [#export-a-knowledge-base-as-a-agentservekbzip-bundle] ```bash agentserve knowledge export [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------ | | `knowledgeBaseId` | Yes | Knowledge base to export | **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `-o, --output-file ` | No | Write the bundle to this path instead of the name the server suggests; pass - to stream it to stdout. | | `--force` | No | Overwrite --output-file if it already exists. | | `--no-vectors` | No | Leave chunk vectors out of the bundle, so an import re-embeds every chunk. | ## List knowledge resources and child folders together [#list-knowledge-resources-and-child-folders-together] ```bash agentserve knowledge ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ## Create a knowledge directory at a path [#create-a-knowledge-directory-at-a-path] ```bash agentserve knowledge mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | --- # Logs (/cli/logs) `agentserve logs` is also spelled `agentserve log`. Every command below also accepts the [global options](/cli/commands#global-options). ## Show run diagnostics [#show-run-diagnostics] ```bash agentserve logs get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `--include-workflow-state` | No | Include the saved workflow snapshot (default: true). Set false to omit block configuration from a log read. Other run fields are unchanged. | | `--no-include-workflow-state` | No | Send --include-workflow-state as false. | | `--trace` | No | Show expanded trace spans with inputs, outputs, errors, timing, and cost. | ## Summarize run counts, failures and latency over a window [#summarize-run-counts-failures-and-latency-over-a-window] ```bash agentserve logs stats [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | No | Comma-separated workflow identifiers to include. At most 200 entries. An empty entry is rejected. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--trigger ` | No | Comma-separated trigger types to include. An empty entry is rejected. The vocabulary is open, so an unrecognized member selects no runs; the literal `all` disables this filter. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--level ` | No | Severity level to include. Accepted values: `info`, `error`. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--segment-count ` | No | Number of time buckets, up to 500. Exactly this many are returned, each at least one minute wide. Short windows extend past the requested end and include empty trailing buckets. | ## List run logs, such as failed or errored runs, by workflow, trigger or time [#list-run-logs-such-as-failed-or-errored-runs-by-workflow-trigger-or-time] ```bash agentserve logs list [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | No | Comma-separated workflow identifiers to include. An empty entry is rejected. At most 200 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--trigger ` | No | Comma-separated, lowercase trigger types or webhook provider IDs. Matching is exact and case-sensitive; unknown values select no runs. An empty entry is rejected. The sentinel `all` disables this filter, even when listed with other values. At most 100 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--level ` | No | Severity level to include. Accepted values: `info`, `error`. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--min-duration-ms ` | No | Minimum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. | | `--max-duration-ms ` | No | Maximum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. | | `--min-cost ` | No | Minimum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. | | `--max-cost ` | No | Maximum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. | | `--model ` | No | AI model used during execution. | | `--details ` | No | Response detail level; full is requested by default to name each run’s workflow. Accepted values: `basic`, `full`. | | `--include-trace-spans` | No | Include trace spans in JSON or YAML output (implies full detail). | | `--include-final-output` | No | Include final output in JSON or YAML output (implies full detail). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--status ` | No | Comma-separated execution statuses to include, from `pending` \| `running` \| `paused` \| `redacting` \| `completed` \| `failed` \| `cancelled`. An empty entry is rejected. ANDed with `level`, which reports severity rather than lifecycle. | | `--workflow-name ` | No | Case-insensitive substring match against the run's workflow name. Runs whose workflow has been deleted match nothing, because the name is no longer joinable. | | `--include-job-runs` | No | Include Chat and Agent Serve agent jobs alongside workflow runs. Jobs use `kind: "job"` and have no workflow or cost ledger. Workflow, folder, model, or status filters exclude jobs. This option is valid only when sorting by `startedAt`. | | `--no-include-job-runs` | No | Send --include-job-runs as false. | | `--run-id ` | No | Exact run identifier to match. | | `--sort-by ` | No | Field used to sort the result. `durationMs` and `cost` are null until a run settles; those runs sort before recorded values in ascending order and after them in descending order. Only `startedAt` can order Chat and Agent Serve agent job runs, so any other value is rejected when job runs are included. Accepted values: `startedAt`, `durationMs`, `cost`, `status`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ## Watch runs live as they arrive, printing each new run once [#watch-runs-live-as-they-arrive-printing-each-new-run-once] ```bash agentserve logs follow [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `--workflow ` | No | Only follow runs of this workflow (repeatable). | | `--folder ` | No | Only follow runs of workflows in this folder (repeatable). | | `--trigger ` | No | Only follow runs with this trigger type (repeatable). | | `--level ` | No | Only follow runs at this severity. Accepted values: `info`, `error`. | | `--details ` | No | Response detail level; full names each run’s workflow. Accepted values: `basic`, `full`. Defaults to `full`. | | `-n, --lines ` | No | Recent runs to print before watching. Defaults to `10`. | | `--interval ` | No | Seconds between polls. Defaults to `3`. | --- # MCP Servers (/cli/mcp-servers) `agentserve mcp-servers` is also spelled `agentserve mcp-server`. Every command below also accepts the [global options](/cli/commands#global-options). ## Create MCP server [#create-mcp-server] ```bash agentserve mcp-servers create [options] ``` **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Server display name. | | `--description ` | No | Optional server description. | | `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. | | `--url ` | Yes | Absolute HTTP or HTTPS endpoint URL without `{{ENV_VAR}}` references. It determines server identity and is immutable: delete and recreate the server to change endpoints. | | `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. | | `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). | | `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. | | `--retries ` | No | Number of retries per request. Defaults to 3 on creation. | | `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. | | `--no-enabled` | No | Send --enabled as false. | | `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. | | `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). | ## Delete MCP server [#delete-mcp-server] ```bash agentserve mcp-servers delete [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get MCP server [#get-mcp-server] ```bash agentserve mcp-servers get ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | ## List MCP servers [#list-mcp-servers] ```bash agentserve mcp-servers list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the server name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## List MCP server tools [#list-mcp-server-tools] ```bash agentserve mcp-servers tools list [options] ``` List MCP Server Tools (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `--refresh` | No | Refresh tools using your credentials. Otherwise results may reuse another workspace member's recent discovery and omit newly added tools. | | `--no-refresh` | No | Send --refresh as false. | ## Update MCP server [#update-mcp-server] ```bash agentserve mcp-servers update [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Server display name. | | `--description ` | No | Optional server description. | | `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. | | `--url ` | No | Immutable server URL. When provided, it must equal the current URL; use delete and create to change endpoints. | | `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. | | `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). | | `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. | | `--retries ` | No | Number of retries per request. Defaults to 3 on creation. | | `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. | | `--no-enabled` | No | Send --enabled as false. | | `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. | | `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). | --- # Meta (/cli/meta) Every command below also accepts the [global options](/cli/commands#global-options). ## Show what this API supports and which limits apply [#show-what-this-api-supports-and-which-limits-apply] ```bash agentserve meta status ``` --- # Model (/cli/model) Every command below also accepts the [global options](/cli/commands#global-options). ## Write the published model, or your draft, to agentserve.model.yaml [#write-the-published-model-or-your-draft-to-agentservemodelyaml] ```bash agentserve model pull [options] ``` Write the published model, or your draft, to agentserve.model.yaml (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------- | -------- | ----------------------------------------------------------------------- | | `--draft` | No | Pull your own draft instead of the published model. | | `-f, --file ` | No | File to write; - writes to stdout. Defaults to `agentserve.model.yaml`. | ## Show what the model file would change in the published model or your draft [#show-what-the-model-file-would-change-in-the-published-model-or-your-draft] ```bash agentserve model diff [options] ``` Show what the model file would change in the published model or your draft (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------- | -------- | -------------------------------------------------------------------------------------- | | `-f, --file ` | No | Model file to compare; - reads stdin. Defaults to `agentserve.model.yaml`. | | `--against ` | No | Model to compare with. Accepted values: `published`, `draft`. Defaults to `published`. | ## Write the model file into your draft (starting one if needed); never publishes [#write-the-model-file-into-your-draft-starting-one-if-needed-never-publishes] ```bash agentserve model push [options] ``` Write the model file into your draft (starting one if needed); never publishes (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------- | -------- | ----------------------------------------------------------------------- | | `-f, --file ` | No | Model file to push; - reads stdin. Defaults to `agentserve.model.yaml`. | --- # Organizations (/cli/organizations) Every command below also accepts the [global options](/cli/commands#global-options). ## Add organization domain [#add-organization-domain] ```bash agentserve organizations domains add [options] ``` Add Organization Domain (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--domain ` | Yes | Domain to claim and verify through a DNS TXT record. | ## List organization domains [#list-organization-domains] ```bash agentserve organizations domains list [options] ``` List Organization Domains (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `domain`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Remove organization domain [#remove-organization-domain] ```bash agentserve organizations domains remove [options] ``` Remove Organization Domain (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | ---------------------------------------- | | `domainId` | Yes | Domain claim owned by this organization. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Verify organization domain [#verify-organization-domain] ```bash agentserve organizations domains verify [options] ``` Verify Organization Domain (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | ---------------------------------------- | | `domainId` | Yes | Domain claim owned by this organization. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Cancel organization access request [#cancel-organization-access-request] ```bash agentserve organizations access-requests cancel [options] ``` Cancel Organization Access Request (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Create organization access request [#create-organization-access-request] ```bash agentserve organizations access-requests create [options] ``` Create Organization Access Request (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--target ` | Yes | Target returned by Discover Workspace Access Requests or Discover Organization Access Requests. The target must currently be requestable. (JSON, or @path / @- to read a file or stdin). | | `--reason ` | No | Why the acting user needs this access. | ## Discover organization access requests [#discover-organization-access-requests] ```bash agentserve organizations access-requests discover [options] ``` Discover Organization Access Requests (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the access item label. | | `--target-kind ` | No | Category of access to discover. Accepted values: `feature`, `integration`, `provider`, `model`, `tool`, `knowledge_connector`, `file_share_auth`, `chat_deploy_auth`, `usage_limit`. | | `--state ` | No | Filter by the acting user’s current access. Requestable items can be submitted for review. Accepted values: `allowed`, `requestable`, `unavailable`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `label`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Get organization access request settings [#get-organization-access-request-settings] ```bash agentserve organizations access-requests settings get [options] ``` Get Organization Access Request Settings (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Update organization access request settings [#update-organization-access-request-settings] ```bash agentserve organizations access-requests settings update [options] ``` Update Organization Access Request Settings (OAuth login or personal API key required) **Options** | Option | Required | Description | | -------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--allow-requests ` | Yes | Allow new requests and approvals. Disabling requests preserves history and still allows cancellation and decline. Accepted values: `true`, `false`. | ## List my organization access requests [#list-my-organization-access-requests] ```bash agentserve organizations access-requests mine [options] ``` List My Organization Access Requests (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## List organization access requests [#list-organization-access-requests] ```bash agentserve organizations access-requests list [options] ``` List Organization Access Requests (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--search ` | No | Case-insensitive substring match against the target label or requester name or email. | ## Preview organization access request [#preview-organization-access-request] ```bash agentserve organizations access-requests preview [options] ``` Preview Organization Access Request (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Resolve organization access request [#resolve-organization-access-request] ```bash agentserve organizations access-requests resolve [options] ``` Resolve Organization Access Request (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--action ` | Yes | apply: Apply the reviewed change to the governing group or member credit cap. decline: Decline the request without changing permissions or credit limits. Accepted values: `apply`, `decline`. | | `--expected-fingerprint ` | No | Fingerprint from Preview Organization Access Request. Review its changes and impact before applying; a stale preview returns a conflict. Available when action is apply. Required when action is apply. | | `--new-limit-credits ` | No | Required only for a usage-limit request: a whole-number credit cap greater than the current cap. Omit for permission requests. Available when action is apply. | | `--reason ` | No | Required explanation for declining this request. Available when action is decline. Required when action is decline. | ## Create organization invitation [#create-organization-invitation] ```bash agentserve organizations invitations create [options] ``` Create Organization Invitation (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--email ` | Yes | Email address of the person to invite. | | `--role ` | No | Organization role to offer. Defaults to member; grants no workspace-specific permissions. Accepted values: `member`, `admin`. | ## Get organization invitation [#get-organization-invitation] ```bash agentserve organizations invitations get [options] ``` Get Organization Invitation (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## List organization invitations [#list-organization-invitations] ```bash agentserve organizations invitations list [options] ``` List Organization Invitations (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the invitee email. | | `--status ` | No | Filter by current invitation status. Omit to include all statuses. Accepted values: `pending`, `accepted`, `rejected`, `cancelled`, `expired`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `email`, `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## List organization invitation workspaces [#list-organization-invitation-workspaces] ```bash agentserve organizations invitations workspaces [options] ``` List Organization Invitation Workspaces (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the workspace name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Resend organization invitation [#resend-organization-invitation] ```bash agentserve organizations invitations resend [options] ``` Resend Organization Invitation (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Revoke organization invitation [#revoke-organization-invitation] ```bash agentserve organizations invitations revoke [options] ``` Revoke Organization Invitation (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Delete SSO provider [#delete-sso-provider] ```bash agentserve organizations sso providers delete [options] ``` Delete SSO Provider (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Get SSO provider [#get-sso-provider] ```bash agentserve organizations sso providers get [options] ``` Get SSO Provider (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## List SSO providers [#list-sso-providers] ```bash agentserve organizations sso providers list [options] ``` List SSO Providers (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `providerId`, `domain`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Save SSO provider [#save-sso-provider] ```bash agentserve organizations sso providers save [options] ``` Save SSO Provider (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--provider-type ` | Yes | oidc: Configure an OpenID Connect identity provider. saml: Configure a SAML identity provider. Accepted values: `oidc`, `saml`. | | `--provider-id ` | Yes | Globally unique provider ID; saving an existing provider replaces its supplied configuration. | | `--issuer ` | Yes | Identity provider issuer URL. | | `--domain ` | Yes | Email domain already verified by this organization. | | `--jit-provisioning-enabled` | No | Allow SSO sign-in to provision organization membership, subject to eligibility and available seats. | | `--no-jit-provisioning-enabled` | No | Send --jit-provisioning-enabled as false. | | `--mapping ` | No | Identity-provider claims mapped to user fields. (JSON, or @path / @- to read a file or stdin). | | `--client-id ` | No | Identity provider client identifier. Available when providerType is oidc. Required when providerType is oidc. | | `--client-secret ` | No | Write-only OIDC client secret; the redacted marker from providers get preserves an existing secret. Passing it inline exposes it to shell history and process listings. Required when --provider-type is oidc (@path / @- reads a file or stdin verbatim, including trailing newlines; @@value for a literal leading @). | | `--scopes ` | No | OIDC scopes; offline\_access is omitted. Available when providerType is oidc. (JSON, or @path / @- to read a file or stdin). | | `--pkce` | No | Use PKCE for the authorization flow. Available when providerType is oidc. | | `--no-pkce` | No | Send --pkce as false. | | `--authorization-endpoint ` | No | Optional authorization endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--token-endpoint ` | No | Optional token endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--user-info-endpoint ` | No | Optional UserInfo endpoint. Available when providerType is oidc. | | `--skip-user-info-endpoint` | No | Read identity claims from the ID token instead of calling UserInfo. Available when providerType is oidc. | | `--no-skip-user-info-endpoint` | No | Send --skip-user-info-endpoint as false. | | `--jwks-endpoint ` | No | Optional signing-key endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--entry-point ` | No | Identity provider SAML sign-in endpoint. Available when providerType is saml. Required when providerType is saml. | | `--cert ` | No | Identity provider signing certificate. Available when providerType is saml. Required when providerType is saml. | | `--callback-url ` | No | SAML callback URL; defaults to this provider’s Agent Serve callback. Available when providerType is saml. | | `--audience ` | No | SAML audience; omission preserves the saved value. Available when providerType is saml. | | `--want-assertions-signed` | No | Require signed assertions; omission preserves the saved value. Available when providerType is saml. | | `--no-want-assertions-signed` | No | Send --want-assertions-signed as false. | | `--signature-algorithm ` | No | Signature algorithm accepted by the SAML configuration validator; omission preserves the saved value. Available when providerType is saml. | | `--digest-algorithm ` | No | Digest algorithm accepted by the SAML configuration validator; omission preserves the saved value. Available when providerType is saml. | | `--identifier-format ` | No | SAML NameID format; omission clears the saved value. Available when providerType is saml. | | `--idp-metadata ` | No | Identity provider metadata XML; omission clears the saved document. Available when providerType is saml. | ## Set primary SSO provider [#set-primary-sso-provider] ```bash agentserve organizations sso providers primary [options] ``` Set Primary SSO Provider (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Get SSO policy [#get-sso-policy] ```bash agentserve organizations sso policy get [options] ``` Get SSO Policy (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Update SSO policy [#update-sso-policy] ```bash agentserve organizations sso policy update [options] ``` Update SSO Policy (OAuth login or personal API key required) **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--require-sso ` | Yes | Require organization SSO on future sign-ins; existing sessions remain active. Accepted values: `true`, `false`. | ## Get organization [#get-organization] ```bash agentserve organizations get ``` Get Organization (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------------- | -------- | ------------------------ | | `organizationId` | Yes | Organization identifier. | ## Get organization member credit limit [#get-organization-member-credit-limit] ```bash agentserve organizations members usage-limit get [options] ``` Get Organization Member Credit Limit (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | Yes | User ID of an organization member or external collaborator with workspace access in this organization. Use List Organization Members or List Workspace Members to find it. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## Update organization member credit limit [#update-organization-member-credit-limit] ```bash agentserve organizations members usage-limit update [options] ``` Update Organization Member Credit Limit (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | Yes | User ID of an organization member or external collaborator with workspace access in this organization. Use List Organization Members or List Workspace Members to find it. | **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--credit-limit ` | Yes | Credit cap for this person. Send null to clear the cap or 0 to prevent further credit-consuming usage. Organization limits still apply. | ## List organization members [#list-organization-members] ```bash agentserve organizations members list [options] ``` List Organization Members (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against member name or email. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `email`, `joinedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Remove organization member [#remove-organization-member] ```bash agentserve organizations members remove [options] ``` Remove Organization Member (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------- | | `userId` | Yes | User identifier of the organization member. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Update organization member [#update-organization-member] ```bash agentserve organizations members update [options] ``` Update Organization Member (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------- | | `userId` | Yes | User identifier of the organization member. | **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--role ` | Yes | New organization role. Ownership transfers use a separate operation. Accepted values: `member`, `admin`. | ## Get organization usage breakdown [#get-organization-usage-breakdown] ```bash agentserve organizations usage breakdown [options] ``` Get Organization Usage Breakdown (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | | `--dimension ` | Yes | Usage grouping dimension. Accepted values: `member`, `workspace`, `workflow`, `model`, `byok`, `source`. | | `--limit ` | No | Maximum ranked groups to return. Remaining usage is summarized in other. Must be a whole number from 1 to 100. Defaults to 50. | ## Get organization usage summary [#get-organization-usage-summary] ```bash agentserve organizations usage summary [options] ``` Get Organization Usage Summary (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | ## List organization usage events [#list-organization-usage-events] ```bash agentserve organizations usage events [options] ``` List Organization Usage Events (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | | `--source ` | No | Restrict events to one product surface. Accepted values: `workflow`, `wand`, `agentserve-chat`, `mcp_copilot`, `mothership_block`, `knowledge-base`, `voice-input`, `enrichment`, `voice-output`, `api-tool`, `dataset-refresh`, `dataset-query`, `voice-mode`, `app-tool`, `app-build`, `app-ide`, `app-ai`, `slides`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## List organizations [#list-organizations] ```bash agentserve organizations list [options] ``` List Organizations (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the organization name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## List organization workspaces [#list-organization-workspaces] ```bash agentserve organizations workspaces [options] ``` List Organization Workspaces (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the workspace name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | --- # Output formats (/cli/output) Commands that return structured API data support four output formats. | Format | For | | ------- | ------------------------------------------------- | | `json` | agents, scripts, and piping into `jq` (default) | | `table` | reading | | `yaml` | piping into anything that reads YAML | | `text` | shell loops — tab-separated, no header, no colour | Select one per command, save it to the profile, or set it in the environment: ```bash agentserve tables get tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --output table agentserve configure --set-output table AGENT_SERVE_OUTPUT=yaml agentserve logs list > logs.yaml ``` `--output` works before or after the command. ## What each format emits [#what-each-format-emits] `json` and `yaml` emit the API's raw values, not the table's formatting — a duration stays `1500`, not `"1.5s"`. Paginated lists include the rows under `data` and the continuation cursor under `nextCursor`. A `null` cursor means no pages remain: ```json { "data": [{ "runId": "9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543" }], "nextCursor": null } ``` Read list rows with `jq '.data[]'` and check for more pages with `jq '.nextCursor'`. `table` formats for reading: timestamps without milliseconds, sizes as `4.2 MB`, booleans as `yes`/`no`, costs as `$0.0142`. Long cells are clipped to keep rows on one line; switch to `json` for the full value. `text` uses the rendered cells, tab-separated, with no header or colour: ```bash AGENT_SERVE_OUTPUT=text agentserve files list | while IFS=$'\t' read -r id name folder size type uploader uploaded; do echo "$id $name" done ``` An absent value is an em-dash in `table` and an empty field in `text`. ## Reading a run in detail [#reading-a-run-in-detail] `agentserve logs get` prints a concise summary. Add `--trace` for the recursive trace with span inputs, outputs, errors, timing, and cost: ```bash agentserve logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --trace ``` `json` and `yaml` always carry the complete response, so `--trace` is a no-op there: ```bash agentserve logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --output json | jq '.traceSpans' ``` ## Exceptions [#exceptions] `agentserve profiles` and `agentserve configure` print local configuration for humans. `agentserve files get` writes the file’s raw content to stdout or `--output-file`. `agentserve chat` streams reply text in `table` and `text` modes. In `json` or `yaml` mode it waits for the finished result and includes the conversation ID. `agentserve workflows export` always emits raw JSON, or YAML when the profile says so, so that it round-trips through `import`: ```bash agentserve workflows export 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 > wf.json agentserve workflows import --workflow @wf.json ``` --- # Permission Groups (/cli/permission-groups) `agentserve permission-groups` is also spelled `agentserve permission-group`. Every command below also accepts the [global options](/cli/commands#global-options). ## Add permission group member [#add-permission-group-member] ```bash agentserve permission-groups members add [options] ``` Add Permission Group Member (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--user ` | Yes | Existing organization member to add. | ## Bulk add permission group members [#bulk-add-permission-group-members] ```bash agentserve permission-groups members batch-add [options] ``` Bulk Add Permission Group Members (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--user ` | No | User IDs to add; cannot be combined with --all-members (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--all-members` | No | Add every current organization member; cannot be combined with --user. | ## List permission group members [#list-permission-group-members] ```bash agentserve permission-groups members list [options] ``` List Permission Group Members (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `assignedAt`, `userId`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Remove permission group member [#remove-permission-group-member] ```bash agentserve permission-groups members remove [options] ``` Remove Permission Group Member (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------- | | `userId` | Yes | User identifier of the member to remove. | **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Create permission group [#create-permission-group] ```bash agentserve permission-groups create [options] ``` Create Permission Group (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--name ` | Yes | Group name, unique within the organization. | | `--description ` | No | Optional group description. | | `--config ` | No | Group settings to set. Omitted keys use the default permission configuration. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether the group is the organization default. Only one group can be the default. | | `--no-default` | No | Send --default as false. | | `--workspace-ids ` | No | Workspace IDs targeted by a non-default group. Required when creating a non-default group; omit for a default group. (JSON, or @path / @- to read a file or stdin). | | `--applies-to-roles ` | No | Workspace roles a non-default group applies to. Empty applies it to every member of its workspaces; listed roles narrow it to members holding one of them. An explicit member assignment takes precedence over a role, and a role over a workspace-wide group. (JSON, or @path / @- to read a file or stdin). | ## Delete permission group [#delete-permission-group] ```bash agentserve permission-groups delete [options] ``` Delete Permission Group (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ## Get permission group [#get-permission-group] ```bash agentserve permission-groups get [options] ``` Get Permission Group (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ## List permission groups [#list-permission-groups] ```bash agentserve permission-groups list [options] ``` List Permission Groups (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the group name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update permission group [#update-permission-group] ```bash agentserve permission-groups update [options] ``` Update Permission Group (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--name ` | No | Group name, unique within the organization. | | `--description ` | No | Group description. Null or an empty string clears it; omission leaves it unchanged. (--description null sends the word, not JSON null). | | `--config ` | No | Patch of group settings. Omitted keys remain unchanged; each supplied array replaces that entire list. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether the group is the organization default. Only one group can be the default. | | `--no-default` | No | Send --default as false. | | `--workspace-ids ` | No | Workspace identifiers for a non-default group. Required on creation; an empty update makes the group inactive. (JSON, or @path / @- to read a file or stdin). | | `--applies-to-roles ` | No | Workspace roles a non-default group applies to. Empty applies it to every member of its workspaces; listed roles narrow it to members holding one of them. An explicit member assignment takes precedence over a role, and a role over a workspace-wide group. (JSON, or @path / @- to read a file or stdin). | --- # Profiles (/cli/profiles) `agentserve profiles` is also spelled `agentserve profile`. Every command below also accepts the [global options](/cli/commands#global-options). ## List configured profiles [#list-configured-profiles] ```bash agentserve profiles list ``` ## Add a workspace profile that shares the active stored login [#add-a-workspace-profile-that-shares-the-active-stored-login] ```bash agentserve profiles add [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------ | | `name` | Yes | Name for the new profile | **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------- | | `-w, --workspace ` | No | Existing workspace to use; omit for an interactive picker. | --- # Complete reference (/cli/reference) Every command on one page, generated from the CLI itself. Start at the [overview](/cli/commands) to browse; this page is for searching and for tools. Append `.mdx` to any page for its raw Markdown — [`/cli/reference.mdx`](/cli/reference.mdx) is this page as plain text. The docs are also published as [`/llms.txt`](/llms.txt) and [`/llms-full.txt`](/llms-full.txt). ## Global options [#global-options] These apply to every command, and may be written before or after it. | Option | Description | | ---------------------- | --------------------------------------------------------------------------------- | | `-P, --profile ` | Profile to use (env: AGENT\_SERVE\_PROFILE). | | `--endpoint ` | Deployment to talk to (env: AGENT\_SERVE\_BASE\_URL). | | `-w, --workspace ` | Workspace to target (env: AGENT\_SERVE\_WORKSPACE). | | `--output ` | Output format for this command. Accepted values: `table`, `json`, `yaml`, `text`. | ## agentserve login [#agentserve-login] Log in through the browser and store the login for the profile ```bash agentserve login [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--method ` | No | Credential to obtain: oauth requires OAuth support; api-key creates a permanent key through pairing (auto-selects when omitted). Accepted values: `oauth`, `api-key`. | | `--no-browser` | No | Print the approval URL without opening it (either login method). | | `--read-only` | No | Ask only for permission to read, never to change anything. | | `--callback-port ` | No | Pin the local port the browser returns to. | | `-y, --yes` | No | Overwrite an existing API-key profile without prompting. | ## agentserve logout [#agentserve-logout] Sign out and remove the profile's stored login ```bash agentserve logout [options] ``` **Options** | Option | Required | Description | | ------- | -------- | ---------------------------------------------------- | | `--all` | No | Remove the profile entirely, including its settings. | ## agentserve whoami [#agentserve-whoami] Show the resolved profile, where each setting came from, and whether it works ```bash agentserve whoami [options] ``` **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------------------------- | | `--no-verify` | No | Skip the API check and only print the resolved settings. | ## agentserve configure [#agentserve-configure] Switch a profile's default workspace, or set its endpoint or output format ```bash agentserve configure [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------ | | `--set-endpoint ` | No | Agent Serve deployment to talk to. | | `--set-workspace ` | No | Default workspace for workspace-scoped commands. | | `--set-output ` | No | Default output format (table \| json \| yaml \| text). | | `--unset ` | No | Remove settings (endpoint, workspace, output). | ## agentserve update [#agentserve-update] Update this global CLI installation to the newest release on its channel ```bash agentserve update [options] ``` **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------- | | `--package-manager ` | No | Package manager that installed this copy. Accepted values: `npm`, `pnpm`, `bun`, `yarn`. | ## agentserve chat [#agentserve-chat] Ask Agent Serve and print the reply ```bash agentserve chat [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------- | | `message` | Yes | What to ask Agent Serve | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------- | | `-c, --conversation ` | No | Continue the conversation with this ID. | ## agentserve profiles [#agentserve-profiles] Also spelled `agentserve profile`. ### agentserve profiles list [#agentserve-profiles-list] List configured profiles ```bash agentserve profiles list ``` ### agentserve profiles add [#agentserve-profiles-add] Add a workspace profile that shares the active stored login ```bash agentserve profiles add [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------ | | `name` | Yes | Name for the new profile | **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------- | | `-w, --workspace ` | No | Existing workspace to use; omit for an interactive picker. | ## agentserve telemetry [#agentserve-telemetry] ### agentserve telemetry status [#agentserve-telemetry-status] Show whether usage reporting is on, and why not if it is off ```bash agentserve telemetry status ``` ### agentserve telemetry enable [#agentserve-telemetry-enable] Turn usage reporting on for this machine ```bash agentserve telemetry enable ``` ### agentserve telemetry disable [#agentserve-telemetry-disable] Turn usage reporting off for this machine ```bash agentserve telemetry disable ``` ## agentserve runner [#agentserve-runner] ### agentserve runner link [#agentserve-runner-link] Link this machine to a workspace with a one-time code ```bash agentserve runner link [options] ``` **Options** | Option | Required | Description | | --------------- | -------- | ----------------------------------------------------- | | `--name ` | No | name shown in Settings → Runners (default: hostname). | | `--force` | No | link again even if this machine is already linked. | ### agentserve runner run [#agentserve-runner-run] Take and run jobs until stopped ```bash agentserve runner run [options] ``` **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------- | | `--concurrency ` | No | jobs to run at once. Defaults to `2`. | ### agentserve runner status [#agentserve-runner-status] Show whether this machine is linked and approved ```bash agentserve runner status ``` ### agentserve runner unlink [#agentserve-runner-unlink] Forget this machine’s runner token ```bash agentserve runner unlink ``` ## agentserve cli [#agentserve-cli] ### agentserve cli search [#agentserve-cli-search] Find the command for a task, described in plain words ```bash agentserve cli search ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------------------------- | | `query...` | Yes | What you want to do, e.g. "cancel a workflow run" | ## agentserve model [#agentserve-model] ### agentserve model pull [#agentserve-model-pull] Write the published model, or your draft, to agentserve.model.yaml (OAuth login or personal API key required) ```bash agentserve model pull [options] ``` **Options** | Option | Required | Description | | ------------------- | -------- | ----------------------------------------------------------------------- | | `--draft` | No | Pull your own draft instead of the published model. | | `-f, --file ` | No | File to write; - writes to stdout. Defaults to `agentserve.model.yaml`. | ### agentserve model diff [#agentserve-model-diff] Show what the model file would change in the published model or your draft (OAuth login or personal API key required) ```bash agentserve model diff [options] ``` **Options** | Option | Required | Description | | ------------------- | -------- | -------------------------------------------------------------------------------------- | | `-f, --file ` | No | Model file to compare; - reads stdin. Defaults to `agentserve.model.yaml`. | | `--against ` | No | Model to compare with. Accepted values: `published`, `draft`. Defaults to `published`. | ### agentserve model push [#agentserve-model-push] Write the model file into your draft (starting one if needed); never publishes (OAuth login or personal API key required) ```bash agentserve model push [options] ``` **Options** | Option | Required | Description | | ------------------- | -------- | ----------------------------------------------------------------------- | | `-f, --file ` | No | Model file to push; - reads stdin. Defaults to `agentserve.model.yaml`. | ## agentserve app [#agentserve-app] ### agentserve app init [#agentserve-app-init] Create a new app from a starter template ```bash agentserve app init [dir] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------- | | `dir` | No | Folder to create the app in | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-t, --template ` | No | Starter template. Accepted values: `blank`, `sales-cockpit`, `field-visit-logger`, `deal-desk`, `support-triage`, `ops-exceptions`, `knowledge-assistant`. Defaults to `blank`. | | `--name ` | No | App name in the manifest; defaults to the folder name. | | `--title ` | No | App title people see; defaults to one made from the name. | | `--force` | No | Add the app to a folder that already has other files. | | `--list` | No | List the starter templates and exit. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app dev [#agentserve-app-dev] Build the app and run it locally in the same sandboxed frame the workspace uses, with your own access (OAuth login or personal API key required) ```bash agentserve app dev [dir] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `dir` | No | App folder | **Options** | Option | Required | Description | | --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `-p, --port ` | No | Port for the local host page. Defaults to `5175`. | | `--page ` | No | Page to open first. | | `--launch ` | No | What launch.get answers, as a plugin command or action opens the page: \{"kind":"command","name":"brief","args":\{"file":"q3"}}. | | `--build-command ` | No | Command that builds the app (default: \ run build). | | `--no-build` | No | Do not build; serve the existing output and reload when it changes. | | `--no-open` | No | Do not open a browser. | ### agentserve app deploy [#agentserve-app-deploy] Build the app, pack it and upload it as a draft version (OAuth login or personal API key required) ```bash agentserve app deploy [dir] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `dir` | No | App folder | **Options** | Option | Required | Description | | --------------------------- | -------- | -------------------------------------------------------------------- | | `--build-command ` | No | Command that builds the app (default: \ run build). | | `--no-build` | No | Upload the existing build output without building. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app publish [#agentserve-app-publish] Publish a draft version so workspaces can install it (admin) (OAuth login or personal API key required) ```bash agentserve app publish [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | -------------------------------------------- | | `version` | Yes | Version to publish, such as 1.2.0, or its id | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--rollout` | No | Also move this workspace's install to the version. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app rollback [#agentserve-app-rollback] Move this workspace's install to an earlier published version (admin) (OAuth login or personal API key required) ```bash agentserve app rollback [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | -------------------------------------------------- | | `version` | Yes | Published version to run, such as 1.1.0, or its id | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app install [#agentserve-app-install] Install a published app in the workspace (admin); pick it with -w, --workspace (OAuth login or personal API key required) ```bash agentserve app install [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--to-version ` | No | Published version to install; defaults to the highest. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app logs [#agentserve-app-logs] Show the install's audit trail, oldest first; --follow keeps watching (OAuth login or personal API key required) ```bash agentserve app logs [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `-f, --follow` | No | Keep polling for new entries until Ctrl-C. | | `--interval ` | No | Seconds between polls with --follow. Defaults to `5`. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app usage [#agentserve-app-usage] Show this month's spend against the app's budget, by source (OAuth login or personal API key required) ```bash agentserve app usage [options] ``` **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app permissions [#agentserve-app-permissions] Show what the app may reach, installed and in the local manifest (OAuth login or personal API key required) ```bash agentserve app permissions [dir] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------ | | `dir` | No | App folder whose manifest to compare | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app secrets set [#agentserve-app-secrets-set] Set a secret; prompts without echo when --value is not given (OAuth login or personal API key required) ```bash agentserve app secrets set [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `name` | Yes | Secret name, such as API\_TOKEN | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------- | | `--value ` | No | Secret value. Inline values land in shell history; @path reads a file and @- stdin, verbatim. | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app secrets list [#agentserve-app-secrets-list] List secret names and when each was set (OAuth login or personal API key required) ```bash agentserve app secrets list [options] ``` **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ### agentserve app secrets delete [#agentserve-app-secrets-delete] Delete a secret (OAuth login or personal API key required) ```bash agentserve app secrets delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ----------- | | `name` | Yes | Secret name | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------------------------------------------- | | `--app ` | No | App to act on; defaults to the name in ./agentserve.app.yaml. | | `--json` | No | Print machine-readable JSON (same as --output json). | ## agentserve apps [#agentserve-apps] ### agentserve apps secrets delete [#agentserve-apps-secrets-delete] Delete App Secret (OAuth login or personal API key required) ```bash agentserve apps secrets delete [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `name` | Yes | Secret name. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve apps secrets list [#agentserve-apps-secrets-list] List App Secrets (OAuth login or personal API key required) ```bash agentserve apps secrets list ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ### agentserve apps secrets update [#agentserve-apps-secrets-update] Set App Secret (OAuth login or personal API key required) ```bash agentserve apps secrets update [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `name` | Yes | Secret name. | **Options** | Option | Required | Description | | ----------------- | -------- | ---------------------------------------------- | | `--value ` | Yes | Write-only secret value. It is never returned. | ### agentserve apps get [#agentserve-apps-get] Get App (OAuth login or personal API key required) ```bash agentserve apps get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ### agentserve apps deployments get [#agentserve-apps-deployments-get] Get App Deployment (OAuth login or personal API key required) ```bash agentserve apps deployments get ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ### agentserve apps deployments list [#agentserve-apps-deployments-list] List App Deployments (OAuth login or personal API key required) ```bash agentserve apps deployments list ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ### agentserve apps deployments publish [#agentserve-apps-deployments-publish] Publish App Deployment (OAuth login or personal API key required) ```bash agentserve apps deployments publish ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ### agentserve apps installs get [#agentserve-apps-installs-get] Get App Install (OAuth login or personal API key required) ```bash agentserve apps installs get ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ### agentserve apps installs create [#agentserve-apps-installs-create] Install App (OAuth login or personal API key required) ```bash agentserve apps installs create [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------- | | `--app-id ` | Yes | App to install. | | `--version-id ` | No | A published version; omit to install the highest published version. | ### agentserve apps installs list [#agentserve-apps-installs-list] List App Installs (OAuth login or personal API key required) ```bash agentserve apps installs list ``` ### agentserve apps installs delete [#agentserve-apps-installs-delete] Uninstall App (OAuth login or personal API key required) ```bash agentserve apps installs delete [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve apps installs update [#agentserve-apps-installs-update] Update App Install (OAuth login or personal API key required) ```bash agentserve apps installs update [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | **Options** | Option | Required | Description | | ------------------------------------- | -------- | ------------------------------------------------------------------------------------- | | `--version-id ` | No | A published version to run instead — an upgrade or a roll back. | | `--pinned-for ` | No | Who sees the app as its own rail icon. (JSON, or @path / @- to read a file or stdin). | | `--budget-monthly-usd ` | No | Monthly budget in USD; null falls back to the manifest budget. | | `--status ` | No | Turn the app on or off. Accepted values: `active`, `disabled`. | ### agentserve apps activity list [#agentserve-apps-activity-list] Get App Install Activity (OAuth login or personal API key required) ```bash agentserve apps activity list ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | ### agentserve apps repos list [#agentserve-apps-repos-list] List App Repositories (OAuth login or personal API key required) ```bash agentserve apps repos list ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `appId` | Yes | App identifier. | ### agentserve apps list [#agentserve-apps-list] List Apps (OAuth login or personal API key required) ```bash agentserve apps list ``` ### agentserve apps tools list [#agentserve-apps-tools-list] List App Tools (OAuth login or personal API key required) ```bash agentserve apps tools list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------- | | `--install-id ` | No | Only the tools of this install. | ### agentserve apps publish create [#agentserve-apps-publish-create] Publish App Version (OAuth login or personal API key required) ```bash agentserve apps publish create [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `appId` | Yes | App identifier. | | `versionId` | Yes | Version identifier. | **Options** | Option | Required | Description | | -------------- | -------- | ------------------------------------------------------------- | | `--rollout` | No | Also move this workspace's install of the app to the version. | | `--no-rollout` | No | Send --rollout as false. | ### agentserve apps rebuild create [#agentserve-apps-rebuild-create] Rebuild App Deployment (OAuth login or personal API key required) ```bash agentserve apps rebuild create ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `appId` | Yes | App identifier. | | `deploymentId` | Yes | Deployment identifier. | ### agentserve apps retire create [#agentserve-apps-retire-create] Retire App Version (OAuth login or personal API key required) ```bash agentserve apps retire create [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `appId` | Yes | App identifier. | | `versionId` | Yes | Version identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve apps run create [#agentserve-apps-run-create] Run App Tool (OAuth login or personal API key required) ```bash agentserve apps run create [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | ------------------- | | `installId` | Yes | Install identifier. | | `toolName` | Yes | Tool name. | **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--input ` | No | The tool's input; validated against its input schema. (JSON, or @path / @- to read a file or stdin). | ### agentserve apps versions create [#agentserve-apps-versions-create] Upload App Version (OAuth login or personal API key required) ```bash agentserve apps versions create ``` ## agentserve audit-logs [#agentserve-audit-logs] Also spelled `agentserve audit-log`. ### agentserve audit-logs get [#agentserve-audit-logs-get] Get Audit Log (OAuth login or personal API key required) ```bash agentserve audit-logs get [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `auditLogId` | Yes | Audit-log entry identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). | ### agentserve audit-logs list [#agentserve-audit-logs-list] List Audit Logs (OAuth login or personal API key required) ```bash agentserve audit-logs list [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--action ` | No | Filter by exact action name. | | `--resource-type ` | No | Filter by resource type. Accepts a comma-separated set; members are trimmed and deduplicated, and member order affects neither the result nor the cursor. | | `--resource-id ` | No | Filter by exact resource identifier. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--include-departed` | No | Include actions by users who have left the organization. | | `--no-include-departed` | No | Send --include-departed as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--organization ` | No | Organization ID; defaults to your only organization, and is required when your account belongs to more than one (OAuth login or personal API key required). | | `--actor-email ` | No | Filter by actor email address. | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | ## agentserve billing [#agentserve-billing] ### agentserve billing status [#agentserve-billing-status] Show billing status, credits spent this period, and storage used (credits and storage require an OAuth login or personal API key) ```bash agentserve billing status [options] ``` **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | ### agentserve billing logs [#agentserve-billing-logs] List credit usage events (an OAuth login or personal API key reports only your events; a workspace API key reports every member's in aggregate, unattributed) ```bash agentserve billing logs [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--source ` | No | Filter by usage source; agentserve-chat covers Chat in the workspace and in the editor. Accepted values: `workflow`, `wand`, `agentserve-chat`, `mcp_copilot`, `mothership_block`, `knowledge-base`, `voice-input`, `enrichment`, `voice-output`, `api-tool`, `dataset-refresh`, `dataset-query`, `voice-mode`, `app-tool`, `app-build`, `app-ide`, `app-ai`, `slides`. | | `--period ` | No | Billing period. Accepted values: `1d`, `7d`, `30d`, `all`, `custom`. | | `--start-date ` | No | Custom period start (ISO 8601). | | `--end-date ` | No | Custom period end (ISO 8601). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--all-workspaces` | No | Do not filter to the configured workspace (OAuth login or personal API key required for account-wide access). | ## agentserve blocks [#agentserve-blocks] ### agentserve blocks get [#agentserve-blocks-get] Get Block ```bash agentserve blocks get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `blockId` | Yes | Block type identifier. An unversioned base type resolves to the newest version, and the response echoes the resolved id. | ### agentserve blocks list [#agentserve-blocks-list] List Blocks ```bash agentserve blocks list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the block id, name, and description. | | `--category ` | No | Restrict to one toolbar category. Accepted values: `blocks`, `tools`, `triggers`. | | `--capability ` | No | Restrict to blocks that can start a workflow — the `triggers` category, blocks declaring `triggerAllowed`, and blocks with trigger-mode fields. Accepted values: `trigger`. | | `--source ` | No | Restrict to built-in blocks or this workspace's deployed custom blocks. Accepted values: `builtin`, `custom`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `id`, `name`, `category`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## agentserve chat-deployments [#agentserve-chat-deployments] ### agentserve chat-deployments list [#agentserve-chat-deployments-list] List Chat Deployments ```bash agentserve chat-deployments list [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------- | | `--workflow-id ` | No | Restrict to deployments of one workflow. | | `--is-active` | No | Restrict to active or inactive deployments. | | `--no-is-active` | No | Send --is-active as false. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `identifier`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## agentserve connector-types [#agentserve-connector-types] ### agentserve connector-types list [#agentserve-connector-types-list] List Connector Types ```bash agentserve connector-types list [options] ``` **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------ | | `--search ` | No | Case-insensitive substring match against the connector name. | ## agentserve credentials [#agentserve-credentials] Also spelled `agentserve credential`. ### agentserve credentials delete [#agentserve-credentials-delete] Disconnect Credential (OAuth login or personal API key required) ```bash agentserve credentials delete [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------- | | `credentialId` | Yes | Credential to disconnect. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve credentials members list [#agentserve-credentials-members-list] List Credential Members (OAuth login or personal API key required) ```bash agentserve credentials members list [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `email`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve credentials members remove [#agentserve-credentials-members-remove] Remove Credential Member (OAuth login or personal API key required) ```bash agentserve credentials members remove [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | | `userId` | Yes | User whose explicit grant will be revoked. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve credentials members upsert [#agentserve-credentials-members-upsert] Upsert Credential Member (OAuth login or personal API key required) ```bash agentserve credentials members upsert [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | -------------------------------------------- | | `credentialId` | Yes | Credential whose sharing grants are managed. | **Options** | Option | Required | Description | | ---------------- | -------- | --------------------------------------------------------------------------------------------------------- | | `--user ` | Yes | Existing workspace member to grant or change access for. | | `--role ` | Yes | Credential role to grant; workspace administrators cannot be demoted. Accepted values: `admin`, `member`. | ### agentserve credentials providers list [#agentserve-credentials-providers-list] List Credential Providers ```bash agentserve credentials providers list [options] ``` **Options** | Option | Required | Description | | ------------------ | -------- | ---------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the credential provider name. | ### agentserve credentials list [#agentserve-credentials-list] List Credentials ```bash agentserve credentials list [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------- | | `--type ` | No | Restrict results to this credential type. Accepted values: `oauth`, `service_account`. | | `--provider-id ` | No | Restrict results to credentials for this integration provider. | | `--search ` | No | Case-insensitive substring match against the credential display name. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `displayName`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve credentials update [#agentserve-credentials-update] Update Credential (OAuth login or personal API key required) ```bash agentserve credentials update [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | --------------------- | | `credentialId` | Yes | Credential to update. | **Options** | Option | Required | Description | | ---------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `--display-name ` | No | New name shown for the credential in Agent Serve. | | `--description ` | No | New credential description. Send null to clear the stored one. (--description null sends the word, not JSON null). | | `--service-account-json ` | No | Write-only provider service-account JSON configuration, including Oracle Database connection fields. | | `--api-token ` | No | Write-only provider API token. | | `--domain ` | No | Provider account domain. | | `--atlassian-product ` | No | Atlassian product to verify; defaults to Jira on create and preserves the saved product on reconnect. Accepted values: `jira`, `confluence`. | | `--signing-secret ` | No | Write-only webhook signing secret. | | `--bot-token ` | No | Write-only bot token. | | `--client-id ` | No | OAuth client identifier. | | `--client-secret ` | No | Write-only OAuth client secret. | | `--certificate-id ` | No | Provider certificate mapping identifier. | | `--org-id ` | No | Provider organization ID. | | `--data-center ` | No | Provider data center. | | `--auth-method ` | No | Provider authentication method. | | `--private-key ` | No | Write-only PEM private key. | | `--username ` | No | Provider run-as username. | | `--tenancy-ocid ` | No | OCI tenancy OCID. | | `--user-ocid ` | No | OCI user OCID. | | `--fingerprint ` | No | OCI API-key fingerprint. | | `--private-key-passphrase ` | No | Write-only OCI private-key passphrase. | | `--region ` | No | OCI home region. | | `--name ` | No | Alias for --display-name. | ### agentserve credentials create [#agentserve-credentials-create] Create a service-account credential using its discovered provider schema (OAuth login or personal API key required) ```bash agentserve credentials create [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------------------------------- | | `providerId` | Yes | Service-account provider to create a credential for | **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------- | | `--name ` | Yes | Name shown for the credential in Agent Serve. | | `--credentials ` | Yes | Provider credentials as JSON (or @path / @- to read a file or stdin). | | `--description ` | No | Optional credential description. | | `--id ` | No | Client-generated credential ID when provider discovery requires it. | ### agentserve credentials connect [#agentserve-credentials-connect] Create a short-lived link for connecting an OAuth provider (OAuth login or personal API key required) ```bash agentserve credentials connect [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------- | | `providerId` | Yes | OAuth provider to connect | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------- | | `--name ` | Yes | Name shown for the new credential in Agent Serve. | ### agentserve credentials reconnect [#agentserve-credentials-reconnect] Create a short-lived link for reconnecting an OAuth credential (OAuth login or personal API key required) ```bash agentserve credentials reconnect ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ----------------------------------------- | | `credentialId` | Yes | Existing OAuth credential to re-authorize | ## agentserve custom-tools [#agentserve-custom-tools] Also spelled `agentserve custom-tool`. ### agentserve custom-tools create [#agentserve-custom-tools-create] Create Custom Tool ```bash agentserve custom-tools create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--title ` | Yes | Display title, unique within the workspace. | | `--schema ` | Yes | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). | | `--code ` | Yes | Tool implementation executed in the sandboxed function runtime. | ### agentserve custom-tools delete [#agentserve-custom-tools-delete] Delete Custom Tool ```bash agentserve custom-tools delete [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve custom-tools get [#agentserve-custom-tools-get] Get Custom Tool ```bash agentserve custom-tools get ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | ### agentserve custom-tools list [#agentserve-custom-tools-list] List Custom Tools ```bash agentserve custom-tools list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the tool title. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `title`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve custom-tools update [#agentserve-custom-tools-update] Update Custom Tool ```bash agentserve custom-tools update [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ------------------------------ | | `customToolId` | Yes | Unique custom tool identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--title ` | No | New display title for the tool. | | `--schema ` | No | OpenAI function schema: \{"type":"function","function":\{"name":"...","parameters":\{"type":"object","properties":\{}}}} (JSON, or @path / @- to read a file or stdin). | | `--code ` | No | Replacement tool implementation. | ## agentserve files [#agentserve-files] Also spelled `agentserve file`. ### agentserve files batch-delete [#agentserve-files-batch-delete] Delete several files at once ```bash agentserve files batch-delete [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve files copy [#agentserve-files-copy] POST /api/v2/files/copy ```bash agentserve files copy [options] ``` **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------------------------------- | | `--source ` | Yes | Source owner and selected fileIds or folderIds (JSON, or @path / @- to read a file or stdin). | | `--destination ` | Yes | Destination owner and optional folderId (JSON, or @path / @- to read a file or stdin). | ### agentserve files create [#agentserve-files-create] Create File ```bash agentserve files create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | File name, including its extension. Path separators and dot segments are rejected. | | `--content-type ` | No | MIME type. When omitted, it is inferred from the file extension. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--content ` | No | Initial file content. Omit or send an empty string for a zero-byte file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. Use an upload session for anything larger. | | `--encoding ` | No | Encoding of the content field. Accepted values: `utf-8`, `base64`. | ### agentserve files folders create [#agentserve-files-folders-create] Create a file folder at a path ```bash agentserve files folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve files folders delete [#agentserve-files-folders-delete] Delete Folder ```bash agentserve files folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve files folders list [#agentserve-files-folders-list] List folders ```bash agentserve files folders list [options] ``` Also available as `agentserve files folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--scope ` | No | Which lifecycle set to list: `active` (default) returns live folders only; `archived` returns folders a recursive delete soft-deleted, which is how a caller finds a path to hand to the folder restore. Authorization is identical for both. Accepted values: `active`, `archived`. | | `--recursive ` | No | Whether parentPath includes every descendant instead of direct children only. Accepted values: `true`, `1`, `yes`, `on`, `y`, `enabled`, `false`, `0`, `no`, `off`, `n`, `disabled`. | | `--depth ` | No | Deepest level below parentPath to include when recursive is true. | ### agentserve files folders move [#agentserve-files-folders-move] Rename or move a file folder ```bash agentserve files folders move ``` Also available as `agentserve files folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve files folders restore [#agentserve-files-folders-restore] Restore an archived file folder ```bash agentserve files folders restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve files delete [#agentserve-files-delete] Delete File ```bash agentserve files delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve files versions delete [#agentserve-files-versions-delete] Permanently delete a previous version of a file ```bash agentserve files versions delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve files versions describe [#agentserve-files-versions-describe] Show the metadata of one version of a file ```bash agentserve files versions describe ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | ### agentserve files versions list [#agentserve-files-versions-list] List the recorded versions of a file ```bash agentserve files versions list [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Accepted values: `version`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve files versions read [#agentserve-files-versions-read] Read the text content of one version of a file ```bash agentserve files versions read [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | --------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--max-bytes ` | No | Optional ceiling on the source bytes fed to the parser, lowering but never raising the server limit. | | `--offset ` | No | First line to return, 1-based; 0 also starts at the first line. Absent starts at the first line. | | `--limit ` | No | How many lines to return from `offset`. Absent reads to the end. | ### agentserve files versions revert [#agentserve-files-versions-revert] Make a previous version of a file current again ```bash agentserve files versions revert [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | ------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--expected-current-version ` | No | Revert only while this is still the current version; otherwise the request fails with `409`. Omit to revert whatever is current. Collaborative edits and repeated workflow writes that fold into the current version keep its number, so prefer `expectedRevision` to guard content. | | `--expected-revision ` | No | Revert only while the file still holds the content this revision names, as returned by Get File Metadata or an earlier write; otherwise the request fails with `409`. Unlike a version number, it also catches edits that folded into the current version. | ### agentserve files versions download [#agentserve-files-versions-download] Download the content of one version of a file ```bash agentserve files versions download [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | | `version` | Yes | Version number. | **Options** | Option | Required | Description | | -------------------------- | -------- | --------------------------------------------- | | `-o, --output-file ` | No | Write content to a file instead of stdout. | | `--force` | No | Overwrite --output-file if it already exists. | ### agentserve files edit [#agentserve-files-edit] Apply one exact or anchor-based edit to a text file ```bash agentserve files edit [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--edit ` | Yes | One edit object: \{"mode":"search\_replace","search":"old","content":"new","replaceAll":false}, \{"mode":"replace\_between","beforeAnchor":"start line","afterAnchor":"end line","content":"new"}, \{"mode":"insert\_after","anchor":"line","content":"new"}, or \{"mode":"delete\_between","startAnchor":"first line deleted","endAnchor":"ending line kept"}. Anchored modes also accept occurrence starting at 1 (JSON, or @path / @- to read a file or stdin). | | `--expected-revision ` | No | Revision from Get File Metadata or an earlier write; the request is refused with `409` when the content moved on. | ### agentserve files describe [#agentserve-files-describe] Show file metadata and sharing status ```bash agentserve files describe [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--scope ` | No | Which lifecycle set to read from: `active` (default) resolves live files only and returns `404` for a file a delete soft-deleted; `archived` also resolves soft-deleted files, so metadata stays readable before the file is restored. Authorization is identical for both. Accepted values: `active`, `archived`. | ### agentserve files share get [#agentserve-files-share-get] Show a file’s share settings ```bash agentserve files share get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | ### agentserve files share set [#agentserve-files-share-set] Enable or disable sharing for a file (OAuth login or personal API key required) ```bash agentserve files share set [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--is-active ` | Yes | Whether the share should resolve. Disabling preserves the token and the whole access configuration, so re-enabling restores the share as it was; enabling rewrites the credentials the resulting mode does not use. Accepted values: `true`, `false`. | | `--auth-type ` | No | How access to the share is gated. The stored mode is kept when omitted. Enabling `public` clears the stored password and empties `allowedEmails`; `password` empties `allowedEmails`; `email` and `sso` clear the stored password. Accepted values: `public`, `password`, `email`, `sso`. | | `--password ` | No | Password for a password-gated share. Kept when omitted; enabling `password` with neither a supplied nor a stored password is a 400. | | `--allowed-emails ` | No | Allowed addresses or `@domain` patterns for email and SSO shares. Kept when omitted; enabling `email` or `sso` with an empty resulting list is a 400. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ### agentserve files list [#agentserve-files-list] List Files ```bash agentserve files list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--recursive` | No | Include subfolders in the folder filter. Defaults to true when searching and false otherwise. Ignored without a folder filter. | | `--no-recursive` | No | Send --recursive as false. | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live files, `archived` for files a delete soft-deleted. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--search ` | No | Case-insensitive substring match against the file name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `size`, `uploadedAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve files move [#agentserve-files-move] Move files into another folder ```bash agentserve files move [options] ``` Also available as `agentserve files mv`. **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `--file-ids ` | Yes | File identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | No | Destination folder path; omit for root. | ### agentserve files read [#agentserve-files-read] Read a file’s text content as JSON or YAML ```bash agentserve files read [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | --------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--max-bytes ` | No | Optional ceiling on the source bytes fed to the parser, lowering but never raising the server limit. | | `--offset ` | No | First line to return, 1-based; 0 also starts at the first line. Absent starts at the first line. | | `--limit ` | No | How many lines to return from `offset`. Absent reads to the end. | ### agentserve files rename [#agentserve-files-rename] Rename a file ```bash agentserve files rename [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ---------------- | -------- | --------------------------------------- | | `--name ` | Yes | New file name, including its extension. | ### agentserve files restore [#agentserve-files-restore] Restore an archived file ```bash agentserve files restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | ### agentserve files search [#agentserve-files-search] Search File Content ```bash agentserve files search [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--query ` | Yes | Regular expression, or exact text when `mode` is `exact`. | | `--mode ` | No | How `query` is read. Accepted values: `exact`, `regex`. | | `--max-results ` | No | Maximum matching lines to return. | | `--folder ` | No | Folders to search, by path as shown in the app; omit to search the whole workspace (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-subfolders` | No | Whether each folder scope includes nested folders; on by default. | | `--no-include-subfolders` | No | Send --include-subfolders as false. | ### agentserve files unzip [#agentserve-files-unzip] Unzip an archive into a new folder beside it ```bash agentserve files unzip [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve files set-content [#agentserve-files-set-content] Replace a file’s contents ```bash agentserve files set-content [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------- | | `fileId` | Yes | File identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--content ` | Yes | Complete replacement content for the file. The 70,000,000-character bound guards the JSON envelope; the decoded bytes must be at most 50 MiB, and a longer base64 payload is rejected with `413`. | | `--encoding ` | No | Content encoding. Accepted values: `utf-8`, `base64`. | | `--expected-revision ` | No | Revision from Get File Metadata or an earlier write; the request is refused with `409` when the content moved on. | ### agentserve files upload [#agentserve-files-upload] Upload a file to the workspace ```bash agentserve files upload [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------- | | `path` | Yes | Local file to upload | **Options** | Option | Required | Description | | ----------------- | -------- | ------------------------------------------------------------- | | `--folder ` | No | Folder path as shown in the app; defaults to the root folder. | | `--name ` | No | Store it under a different name. | ### agentserve files get [#agentserve-files-get] Download a file’s content to stdout or a local file ```bash agentserve files get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------- | | `fileId` | Yes | File whose content to read | **Options** | Option | Required | Description | | -------------------------- | -------- | --------------------------------------------- | | `-o, --output-file ` | No | Write content to a file instead of stdout. | | `--force` | No | Overwrite --output-file if it already exists. | ### agentserve files ls [#agentserve-files-ls] List file resources and child folders together ```bash agentserve files ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ### agentserve files mkdir [#agentserve-files-mkdir] Create a file directory at a path ```bash agentserve files mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | ## agentserve knowledge [#agentserve-knowledge] Also spelled `agentserve kb`. ### agentserve knowledge from-workspace-files create [#agentserve-knowledge-from-workspace-files-create] Index files the workspace already stores (OAuth login or personal API key required) ```bash agentserve knowledge from-workspace-files create [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `--file ` | Yes | Workspace file ID or key (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ### agentserve knowledge tags save [#agentserve-knowledge-tags-save] Declare the tag definitions a knowledge base needs (OAuth login or personal API key required) ```bash agentserve knowledge tags save [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `--definitions ` | Yes | Tag definitions: \[\{"tagSlot":"tag1","displayName":"category","fieldType":"text"}] (JSON, or @path / @- to read a file or stdin). | ### agentserve knowledge tags create [#agentserve-knowledge-tags-create] Create Tag (OAuth login or personal API key required) ```bash agentserve knowledge tags create [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--display-name ` | Yes | Name tag filters and document reads use for this tag. | | `--field-type ` | No | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Defaults to text, so a number, date, or boolean slot must name its type here. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. | | `--tag-slot ` | No | Slot to store the tag in. Omit to take the next free slot for the field type; a slot that does not belong to the field type, or one already in use, is rejected. Accepted values: `tag1`, `tag2`, `tag3`, `tag4`, `tag5`, `tag6`, `tag7`, `number1`, `number2`, `number3`, `number4`, `number5`, `date1`, `date2`, `boolean1`, `boolean2`, `boolean3`. | ### agentserve knowledge tags delete [#agentserve-knowledge-tags-delete] Delete Tag (OAuth login or personal API key required) ```bash agentserve knowledge tags delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `tagId` | Yes | Unique tag definition identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge tags cleanup [#agentserve-knowledge-tags-cleanup] Remove tag definitions no document still uses (OAuth login or personal API key required) ```bash agentserve knowledge tags cleanup [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--unused` | No | Whether to remove only the tag definitions no document in the knowledge base still carries a value for. Defaults to true. Pass --no-unused to delete every definition on the knowledge base, which also clears its slot on every document and chunk and is not recoverable. | | `--no-unused` | No | Send --unused as false. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge tags next-slot [#agentserve-knowledge-tags-next-slot] Show which tag slot a create would take for a field type (OAuth login or personal API key required) ```bash agentserve knowledge tags next-slot [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--field-type ` | Yes | Value type stored in the slot; it decides which slots are usable and which filter operators apply. Slot capacity per type: text 7, number 5, date 2, boolean 3. Accepted values: `text`, `number`, `date`, `boolean`. | ### agentserve knowledge tags list [#agentserve-knowledge-tags-list] List Tags ```bash agentserve knowledge tags list ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ### agentserve knowledge tags usage [#agentserve-knowledge-tags-usage] Show how many documents and chunks carry each tag (OAuth login or personal API key required) ```bash agentserve knowledge tags usage ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ### agentserve knowledge tags update [#agentserve-knowledge-tags-update] Update Tag (OAuth login or personal API key required) ```bash agentserve knowledge tags update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `tagId` | Yes | Unique tag definition identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------- | | `--display-name ` | No | New tag display name. | | `--field-type ` | No | New value type for the tag. Accepted values: `text`, `number`, `date`, `boolean`. | ### agentserve knowledge chunks batch-update [#agentserve-knowledge-chunks-batch-update] Enable, disable, or delete many chunks at once (OAuth login or personal API key required) ```bash agentserve knowledge chunks batch-update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--operation ` | Yes | What to do with the selected chunks. Accepted values: `enable`, `disable`, `delete`. | | `--chunk ` | Yes | Chunks to operate on, by identifier. An id naming no chunk in the document is reported in errors and does not fail the request. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge chunks create [#agentserve-knowledge-chunks-create] Create Chunk (OAuth login or personal API key required) ```bash agentserve knowledge chunks create [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------------------------------------------------- | | `--content ` | Yes | Text to embed. It is embedded on write, so the chunk is searchable immediately. | | `--enabled` | No | Whether the new chunk participates in search. | | `--no-enabled` | No | Send --enabled as false. | ### agentserve knowledge chunks delete [#agentserve-knowledge-chunks-delete] Delete Chunk (OAuth login or personal API key required) ```bash agentserve knowledge chunks delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge chunks get [#agentserve-knowledge-chunks-get] Get Chunk (OAuth login or personal API key required) ```bash agentserve knowledge chunks get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | ### agentserve knowledge chunks list [#agentserve-knowledge-chunks-list] List Chunks (OAuth login or personal API key required) ```bash agentserve knowledge chunks list [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against chunk content. | | `--enabled ` | No | Restrict to enabled or disabled chunks. `all` returns both. Accepted values: `true`, `false`, `all`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `chunkIndex`, `tokenCount`, `enabled`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve knowledge chunks update [#agentserve-knowledge-chunks-update] Update Chunk (OAuth login or personal API key required) ```bash agentserve knowledge chunks update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | | `chunkId` | Yes | Unique chunk identifier. | **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------------------------------------------------------------------ | | `--content ` | No | Replacement text. Changing it re-embeds the chunk and re-derives its token and character counts. | | `--enabled` | No | Whether the chunk participates in search. Disabling keeps it indexed. | | `--no-enabled` | No | Send --enabled as false. | ### agentserve knowledge documents batch-update [#agentserve-knowledge-documents-batch-update] Enable or disable every matching document (OAuth login or personal API key required) ```bash agentserve knowledge documents batch-update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `--operation ` | Yes | Whether the selected documents become enabled or disabled for search. Accepted values: `enable`, `disable`. | | `--document ` | No | Documents to update, by identifier. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--select-all` | No | Apply to every document in the knowledge base. | | `--enabled-filter ` | No | With `selectAll`, restrict the update to documents in this state. Accepted values: `all`, `enabled`, `disabled`. | ### agentserve knowledge documents delete [#agentserve-knowledge-documents-delete] Delete a document from a knowledge base ```bash agentserve knowledge documents delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge documents get [#agentserve-knowledge-documents-get] Get Document ```bash agentserve knowledge documents get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | ### agentserve knowledge documents list [#agentserve-knowledge-documents-list] List Documents ```bash agentserve knowledge documents list [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--search ` | No | Case-insensitive substring match against the document filename. | | `--enabled-filter ` | No | Filter by whether documents are enabled for search. Accepted values: `all`, `enabled`, `disabled`. | | `--sort-by ` | No | Field used to sort the result. Sorting by `filename` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `filename`, `fileSize`, `tokenCount`, `chunkCount`, `uploadedAt`, `processingStatus`, `enabled`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--tag-filters ` | No | A JSON-encoded array of at most 10 tag filters, using the same display-name shape as knowledge search: `[{"tagName":"category","operator":"eq","value":"billing"}]`. Every filter must hold, including two that name the same tag. A name that is not defined in this knowledge base is rejected, never ignored. | ### agentserve knowledge documents update [#agentserve-knowledge-documents-update] Update Document (OAuth login or personal API key required) ```bash agentserve knowledge documents update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `documentId` | Yes | Unique knowledge document identifier. | **Options** | Option | Required | Description | | -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filename ` | No | New filename for the document. | | `--enabled` | No | Whether the document participates in search. Disabling keeps it indexed. | | `--no-enabled` | No | Send --enabled as false. | | `--tag1 ` | No | New value for tag slot 1. | | `--tag2 ` | No | New value for tag slot 2. | | `--tag3 ` | No | New value for tag slot 3. | | `--tag4 ` | No | New value for tag slot 4. | | `--tag5 ` | No | New value for tag slot 5. | | `--tag6 ` | No | New value for tag slot 6. | | `--tag7 ` | No | New value for tag slot 7. | | `--number1 ` | No | New value for number tag slot 1. | | `--number2 ` | No | New value for number tag slot 2. | | `--number3 ` | No | New value for number tag slot 3. | | `--number4 ` | No | New value for number tag slot 4. | | `--number5 ` | No | New value for number tag slot 5. | | `--date1 ` | No | New value for date tag slot 1, formatted YYYY-MM-DD. | | `--date2 ` | No | New value for date tag slot 2, formatted YYYY-MM-DD. | | `--boolean1` | No | New value for boolean tag slot 1. | | `--no-boolean1` | No | Send --boolean1 as false. | | `--boolean2` | No | New value for boolean tag slot 2. | | `--no-boolean2` | No | Send --boolean2 as false. | | `--boolean3` | No | New value for boolean tag slot 3. | | `--no-boolean3` | No | Send --boolean3 as false. | | `--retry-processing` | No | Requeue a failed or stuck document for processing. Send it alone — no other field may accompany it — and it answers with a queue acknowledgement rather than the document. | ### agentserve knowledge documents upload [#agentserve-knowledge-documents-upload] Upload a document to a knowledge base ```bash agentserve knowledge documents upload [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ----------------------------- | | `knowledgeBaseId` | Yes | Knowledge base to upload into | | `path` | Yes | Local file to upload | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------------ | | `--name ` | No | Store it under a different name. | | `--tag ` | No | Document tags, in tag1 through tag7 order. | | `--recipe ` | No | Document processing recipe. Accepted values: `default`, `plain`, `markdown`, `code`. | | `--lang ` | No | Document language tag: hyphen-separated letter and digit subtags, for example en or en-US. | ### agentserve knowledge create [#agentserve-knowledge-create] Create Knowledge Base ```bash agentserve knowledge create [options] ``` **Options** | Option | Required | Description | | --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Human-readable knowledge base name. | | `--description ` | No | Optional knowledge base description. | | `--chunking-config ` | No | Chunking configuration; defaults are applied when omitted. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve knowledge connectors create [#agentserve-knowledge-connectors-create] Create Knowledge Connector (OAuth login or personal API key required) ```bash agentserve knowledge connectors create [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `--connector-type ` | Yes | Registered connector type. | | `--credential-id ` | No | OAuth credential identifier for connectors that require OAuth. | | `--api-key ` | No | Write-only API key for connectors that use API-key authentication. | | `--source-config ` | Yes | Connector-specific source selection and filtering configuration. (JSON, or @path / @- to read a file or stdin). | | `--sync-interval-minutes ` | No | Scheduled synchronization interval in minutes; zero disables scheduling. | ### agentserve knowledge connectors delete [#agentserve-knowledge-connectors-delete] Delete Knowledge Connector (OAuth login or personal API key required) ```bash agentserve knowledge connectors delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------- | | `--delete-documents` | No | Also permanently delete documents produced by this connector. | | `--no-delete-documents` | No | Send --delete-documents as false. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge connectors get [#agentserve-knowledge-connectors-get] Get Knowledge Connector (OAuth login or personal API key required) ```bash agentserve knowledge connectors get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | ### agentserve knowledge connectors documents list [#agentserve-knowledge-connectors-documents-list] List Knowledge Connector Documents (OAuth login or personal API key required) ```bash agentserve knowledge connectors documents list [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | -------------------------------------------------------------- | | `--include-excluded` | No | Include documents explicitly excluded by a user. | | `--no-include-excluded` | No | Send --include-excluded as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve knowledge connectors documents update [#agentserve-knowledge-connectors-documents-update] Update Knowledge Connector Documents (OAuth login or personal API key required) ```bash agentserve knowledge connectors documents update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `--operation ` | Yes | Whether to restore or exclude the selected documents. Accepted values: `restore`, `exclude`. | | `--document ` | Yes | Connector document identifiers to update. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ### agentserve knowledge connectors list [#agentserve-knowledge-connectors-list] List Knowledge Connectors (OAuth login or personal API key required) ```bash agentserve knowledge connectors list [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------ | | `--sort-by ` | No | Field used to sort the result. Accepted values: `connectorType`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve knowledge connectors sync [#agentserve-knowledge-connectors-sync] Queue a knowledge connector synchronization (OAuth login or personal API key required) ```bash agentserve knowledge connectors sync [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | ---------------- | -------- | -------------------------------------------------------- | | `--rehydrate` | No | Re-fetch and re-index every existing connector document. | | `--no-rehydrate` | No | Send --rehydrate as false. | ### agentserve knowledge connectors update [#agentserve-knowledge-connectors-update] Update Knowledge Connector (OAuth login or personal API key required) ```bash agentserve knowledge connectors update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------------- | | `knowledgeBaseId` | Yes | Knowledge base that owns the connector. | | `connectorId` | Yes | Connector selected for the operation. | **Options** | Option | Required | Description | | --------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--source-config ` | No | Replacement source selection and filtering configuration. Updating a runnable connector queues synchronization; paused connectors remain paused. (JSON, or @path / @- to read a file or stdin). | | `--sync-interval-minutes ` | No | New scheduled synchronization interval in minutes. | | `--status ` | No | New connector state. Accepted values: `active`, `paused`. | ### agentserve knowledge folders create [#agentserve-knowledge-folders-create] Create a knowledge folder at a path ```bash agentserve knowledge folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve knowledge folders delete [#agentserve-knowledge-folders-delete] Delete Folder ```bash agentserve knowledge folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge folders list [#agentserve-knowledge-folders-list] List knowledge folders ```bash agentserve knowledge folders list [options] ``` Also available as `agentserve knowledge folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve knowledge folders move [#agentserve-knowledge-folders-move] Rename or move a knowledge folder ```bash agentserve knowledge folders move ``` Also available as `agentserve knowledge folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve knowledge delete [#agentserve-knowledge-delete] Delete Knowledge Base ```bash agentserve knowledge delete [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve knowledge get [#agentserve-knowledge-get] Get Knowledge Base ```bash agentserve knowledge get ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ### agentserve knowledge list [#agentserve-knowledge-list] List Knowledge Bases ```bash agentserve knowledge list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Lifecycle scope: active or archived knowledge bases. Use Restore Knowledge Base to recover archived entries. Folder paths resolve only active folders, so filtering by an archived folder returns no matches. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve knowledge restore [#agentserve-knowledge-restore] Restore an archived knowledge base ```bash agentserve knowledge restore ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | ### agentserve knowledge search [#agentserve-knowledge-search] Search Knowledge ```bash agentserve knowledge search [options] ``` **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--kb ` | Yes | Knowledge base ID (repeatable) (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--query ` | No | Text to search for. | | `--top-k ` | No | Maximum number of search results to return. Must be a whole number between 1 and 100. | | `--tag-filters ` | No | Tag filters as \[\{"tagName":"...","operator":"...","value":"..."}] (JSON, or @path / @- to read a file or stdin). | | `--search-mode ` | No | Search algorithm. Accepted values: `vector`, `hybrid`. | | `--reranker-enabled` | No | Re-order retrieved chunks with a reranking model before truncating to `topK`. Ignored for a tag-only search, and billed per rerank call on top of the search. Reranking is best-effort — a provider failure falls back to vector ordering, so check `rerankerStatus` on the response. A model your organization's model policy does not allow (including its zero-data-retention requirement) is rejected with 403. | | `--no-reranker-enabled` | No | Send --reranker-enabled as false. | | `--reranker-model ` | No | Reranking model to use when `rerankerEnabled` is true: a Cohere id (`rerank-v4.0-pro`, `rerank-v4.0-fast`, `rerank-v3.5`) or an OpenRouter rerank model as `openrouter/<maker>/<model>`, e.g. `openrouter/voyageai/rerank-2.5`. Defaults to `rerank-v4.0-fast`. (JSON, or @path / @- to read a file or stdin). | | `--reranker-input-count ` | No | How many candidate chunks to retrieve before reranking. Defaults to four times `topK`, capped at 100. A larger pool costs more retrieval work but gives the reranker more to choose from. | ### agentserve knowledge update [#agentserve-knowledge-update] Update Knowledge Base ```bash agentserve knowledge update [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | --------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | **Options** | Option | Required | Description | | --------------------------------- | -------- | ----------------------------------------------------------------------------------- | | `--name ` | No | New knowledge base name. | | `--description ` | No | New knowledge base description. | | `--chunking-config ` | No | New document chunking configuration. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve knowledge mv [#agentserve-knowledge-mv] Move a knowledge base to a folder ```bash agentserve knowledge mv ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ---------------------------------------------------------- | | `knowledgeBaseId` | Yes | Unique knowledge base identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve knowledge export [#agentserve-knowledge-export] Export a knowledge base as a .agentservekb.zip bundle ```bash agentserve knowledge export [options] ``` **Arguments** | Argument | Required | Description | | ----------------- | -------- | ------------------------ | | `knowledgeBaseId` | Yes | Knowledge base to export | **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `-o, --output-file ` | No | Write the bundle to this path instead of the name the server suggests; pass - to stream it to stdout. | | `--force` | No | Overwrite --output-file if it already exists. | | `--no-vectors` | No | Leave chunk vectors out of the bundle, so an import re-embeds every chunk. | ### agentserve knowledge ls [#agentserve-knowledge-ls] List knowledge resources and child folders together ```bash agentserve knowledge ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ### agentserve knowledge mkdir [#agentserve-knowledge-mkdir] Create a knowledge directory at a path ```bash agentserve knowledge mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | ## agentserve logs [#agentserve-logs] Also spelled `agentserve log`. ### agentserve logs get [#agentserve-logs-get] Show run diagnostics ```bash agentserve logs get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `--include-workflow-state` | No | Include the saved workflow snapshot (default: true). Set false to omit block configuration from a log read. Other run fields are unchanged. | | `--no-include-workflow-state` | No | Send --include-workflow-state as false. | | `--trace` | No | Show expanded trace spans with inputs, outputs, errors, timing, and cost. | ### agentserve logs stats [#agentserve-logs-stats] Summarize run counts, failures and latency over a window ```bash agentserve logs stats [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | No | Comma-separated workflow identifiers to include. At most 200 entries. An empty entry is rejected. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--trigger ` | No | Comma-separated trigger types to include. An empty entry is rejected. The vocabulary is open, so an unrecognized member selects no runs; the literal `all` disables this filter. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--level ` | No | Severity level to include. Accepted values: `info`, `error`. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--segment-count ` | No | Number of time buckets, up to 500. Exactly this many are returned, each at least one minute wide. Short windows extend past the requested end and include empty trailing buckets. | ### agentserve logs list [#agentserve-logs-list] List run logs, such as failed or errored runs, by workflow, trigger or time ```bash agentserve logs list [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | No | Comma-separated workflow identifiers to include. An empty entry is rejected. At most 200 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--trigger ` | No | Comma-separated, lowercase trigger types or webhook provider IDs. Matching is exact and case-sensitive; unknown values select no runs. An empty entry is rejected. The sentinel `all` disables this filter, even when listed with other values. At most 100 entries. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--level ` | No | Severity level to include. Accepted values: `info`, `error`. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--min-duration-ms ` | No | Minimum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. | | `--max-duration-ms ` | No | Maximum total execution duration in milliseconds. Whole milliseconds from 0 to 2147483647; the stored duration is a 32-bit integer, so a fractional or out-of-range bound is rejected. | | `--min-cost ` | No | Minimum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. | | `--max-cost ` | No | Maximum execution cost in USD, from 0 to 1000000. A run is never charged a negative amount, so a negative bound is rejected rather than treated as a filter that matches every run. | | `--model ` | No | AI model used during execution. | | `--details ` | No | Response detail level; full is requested by default to name each run’s workflow. Accepted values: `basic`, `full`. | | `--include-trace-spans` | No | Include trace spans in JSON or YAML output (implies full detail). | | `--include-final-output` | No | Include final output in JSON or YAML output (implies full detail). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--status ` | No | Comma-separated execution statuses to include, from `pending` \| `running` \| `paused` \| `redacting` \| `completed` \| `failed` \| `cancelled`. An empty entry is rejected. ANDed with `level`, which reports severity rather than lifecycle. | | `--workflow-name ` | No | Case-insensitive substring match against the run's workflow name. Runs whose workflow has been deleted match nothing, because the name is no longer joinable. | | `--include-job-runs` | No | Include Chat and Agent Serve agent jobs alongside workflow runs. Jobs use `kind: "job"` and have no workflow or cost ledger. Workflow, folder, model, or status filters exclude jobs. This option is valid only when sorting by `startedAt`. | | `--no-include-job-runs` | No | Send --include-job-runs as false. | | `--run-id ` | No | Exact run identifier to match. | | `--sort-by ` | No | Field used to sort the result. `durationMs` and `cost` are null until a run settles; those runs sort before recorded values in ascending order and after them in descending order. Only `startedAt` can order Chat and Agent Serve agent job runs, so any other value is rejected when job runs are included. Accepted values: `startedAt`, `durationMs`, `cost`, `status`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ### agentserve logs follow [#agentserve-logs-follow] Watch runs live as they arrive, printing each new run once ```bash agentserve logs follow [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `--workflow ` | No | Only follow runs of this workflow (repeatable). | | `--folder ` | No | Only follow runs of workflows in this folder (repeatable). | | `--trigger ` | No | Only follow runs with this trigger type (repeatable). | | `--level ` | No | Only follow runs at this severity. Accepted values: `info`, `error`. | | `--details ` | No | Response detail level; full names each run’s workflow. Accepted values: `basic`, `full`. Defaults to `full`. | | `-n, --lines ` | No | Recent runs to print before watching. Defaults to `10`. | | `--interval ` | No | Seconds between polls. Defaults to `3`. | ## agentserve mcp-servers [#agentserve-mcp-servers] Also spelled `agentserve mcp-server`. ### agentserve mcp-servers create [#agentserve-mcp-servers-create] Create MCP Server ```bash agentserve mcp-servers create [options] ``` **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Server display name. | | `--description ` | No | Optional server description. | | `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. | | `--url ` | Yes | Absolute HTTP or HTTPS endpoint URL without `{{ENV_VAR}}` references. It determines server identity and is immutable: delete and recreate the server to change endpoints. | | `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. | | `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). | | `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. | | `--retries ` | No | Number of retries per request. Defaults to 3 on creation. | | `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. | | `--no-enabled` | No | Send --enabled as false. | | `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. | | `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). | ### agentserve mcp-servers delete [#agentserve-mcp-servers-delete] Delete MCP Server ```bash agentserve mcp-servers delete [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve mcp-servers get [#agentserve-mcp-servers-get] Get MCP Server ```bash agentserve mcp-servers get ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | ### agentserve mcp-servers list [#agentserve-mcp-servers-list] List MCP Servers ```bash agentserve mcp-servers list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the server name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve mcp-servers tools list [#agentserve-mcp-servers-tools-list] List MCP Server Tools (OAuth login or personal API key required) ```bash agentserve mcp-servers tools list [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `--refresh` | No | Refresh tools using your credentials. Otherwise results may reuse another workspace member's recent discovery and omit newly added tools. | | `--no-refresh` | No | Send --refresh as false. | ### agentserve mcp-servers update [#agentserve-mcp-servers-update] Update MCP Server ```bash agentserve mcp-servers update [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ----------------------------- | | `mcpServerId` | Yes | Unique MCP server identifier. | **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Server display name. | | `--description ` | No | Optional server description. | | `--transport ` | No | Transport protocol. Defaults to `streamable-http` on creation. Accepted values: `streamable-http`. | | `--url ` | No | Immutable server URL. When provided, it must equal the current URL; use delete and create to change endpoints. | | `--auth-type ` | No | Authentication method. When omitted, and no `headers` are sent, registration probes the endpoint once to classify it, falling back to `headers` when the probe fails or the server does not advertise OAuth. A server publishing RFC 9728 metadata is therefore stored as `oauth`, and headers configured afterwards will not authenticate — send this field explicitly to pin the method. Accepted values: `none`, `headers`, `oauth`. | | `--headers ` | No | Write-only request headers sent to the server. Replaced wholesale rather than merged on update: sending this field drops every stored header it does not repeat. (JSON, or @path / @- to read a file or stdin). | | `--timeout ` | No | Per-request timeout in milliseconds. Defaults to 30000 on creation. | | `--retries ` | No | Number of retries per request. Defaults to 3 on creation. | | `--enabled` | No | Whether workflows can use the server's tools. Defaults to true on creation. | | `--no-enabled` | No | Send --enabled as false. | | `--oauth-client-id ` | No | Pre-registered OAuth client identifier. Changing it on update revokes the stored OAuth grant and forces reauthorization. | | `--oauth-client-secret ` | No | Write-only pre-registered OAuth client secret. Sending it on update as null or a new value revokes the stored OAuth grant and forces reauthorization, as does switching away from OAuth authentication. (--oauth-client-secret null sends the word, not JSON null). | ## agentserve meta [#agentserve-meta] ### agentserve meta status [#agentserve-meta-status] Show what this API supports and which limits apply ```bash agentserve meta status ``` ## agentserve organizations [#agentserve-organizations] ### agentserve organizations domains add [#agentserve-organizations-domains-add] Add Organization Domain (OAuth login or personal API key required) ```bash agentserve organizations domains add [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--domain ` | Yes | Domain to claim and verify through a DNS TXT record. | ### agentserve organizations domains list [#agentserve-organizations-domains-list] List Organization Domains (OAuth login or personal API key required) ```bash agentserve organizations domains list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `domain`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve organizations domains remove [#agentserve-organizations-domains-remove] Remove Organization Domain (OAuth login or personal API key required) ```bash agentserve organizations domains remove [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ---------------------------------------- | | `domainId` | Yes | Domain claim owned by this organization. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve organizations domains verify [#agentserve-organizations-domains-verify] Verify Organization Domain (OAuth login or personal API key required) ```bash agentserve organizations domains verify [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ---------------------------------------- | | `domainId` | Yes | Domain claim owned by this organization. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations access-requests cancel [#agentserve-organizations-access-requests-cancel] Cancel Organization Access Request (OAuth login or personal API key required) ```bash agentserve organizations access-requests cancel [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations access-requests create [#agentserve-organizations-access-requests-create] Create Organization Access Request (OAuth login or personal API key required) ```bash agentserve organizations access-requests create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--target ` | Yes | Target returned by Discover Workspace Access Requests or Discover Organization Access Requests. The target must currently be requestable. (JSON, or @path / @- to read a file or stdin). | | `--reason ` | No | Why the acting user needs this access. | ### agentserve organizations access-requests discover [#agentserve-organizations-access-requests-discover] Discover Organization Access Requests (OAuth login or personal API key required) ```bash agentserve organizations access-requests discover [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the access item label. | | `--target-kind ` | No | Category of access to discover. Accepted values: `feature`, `integration`, `provider`, `model`, `tool`, `knowledge_connector`, `file_share_auth`, `chat_deploy_auth`, `usage_limit`. | | `--state ` | No | Filter by the acting user’s current access. Requestable items can be submitted for review. Accepted values: `allowed`, `requestable`, `unavailable`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `label`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve organizations access-requests settings get [#agentserve-organizations-access-requests-settings-get] Get Organization Access Request Settings (OAuth login or personal API key required) ```bash agentserve organizations access-requests settings get [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations access-requests settings update [#agentserve-organizations-access-requests-settings-update] Update Organization Access Request Settings (OAuth login or personal API key required) ```bash agentserve organizations access-requests settings update [options] ``` **Options** | Option | Required | Description | | -------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--allow-requests ` | Yes | Allow new requests and approvals. Disabling requests preserves history and still allows cancellation and decline. Accepted values: `true`, `false`. | ### agentserve organizations access-requests mine [#agentserve-organizations-access-requests-mine] List My Organization Access Requests (OAuth login or personal API key required) ```bash agentserve organizations access-requests mine [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve organizations access-requests list [#agentserve-organizations-access-requests-list] List Organization Access Requests (OAuth login or personal API key required) ```bash agentserve organizations access-requests list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--search ` | No | Case-insensitive substring match against the target label or requester name or email. | ### agentserve organizations access-requests preview [#agentserve-organizations-access-requests-preview] Preview Organization Access Request (OAuth login or personal API key required) ```bash agentserve organizations access-requests preview [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations access-requests resolve [#agentserve-organizations-access-requests-resolve] Resolve Organization Access Request (OAuth login or personal API key required) ```bash agentserve organizations access-requests resolve [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--action ` | Yes | apply: Apply the reviewed change to the governing group or member credit cap. decline: Decline the request without changing permissions or credit limits. Accepted values: `apply`, `decline`. | | `--expected-fingerprint ` | No | Fingerprint from Preview Organization Access Request. Review its changes and impact before applying; a stale preview returns a conflict. Available when action is apply. Required when action is apply. | | `--new-limit-credits ` | No | Required only for a usage-limit request: a whole-number credit cap greater than the current cap. Omit for permission requests. Available when action is apply. | | `--reason ` | No | Required explanation for declining this request. Available when action is decline. Required when action is decline. | ### agentserve organizations invitations create [#agentserve-organizations-invitations-create] Create Organization Invitation (OAuth login or personal API key required) ```bash agentserve organizations invitations create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--email ` | Yes | Email address of the person to invite. | | `--role ` | No | Organization role to offer. Defaults to member; grants no workspace-specific permissions. Accepted values: `member`, `admin`. | ### agentserve organizations invitations get [#agentserve-organizations-invitations-get] Get Organization Invitation (OAuth login or personal API key required) ```bash agentserve organizations invitations get [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations invitations list [#agentserve-organizations-invitations-list] List Organization Invitations (OAuth login or personal API key required) ```bash agentserve organizations invitations list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the invitee email. | | `--status ` | No | Filter by current invitation status. Omit to include all statuses. Accepted values: `pending`, `accepted`, `rejected`, `cancelled`, `expired`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `email`, `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve organizations invitations workspaces [#agentserve-organizations-invitations-workspaces] List Organization Invitation Workspaces (OAuth login or personal API key required) ```bash agentserve organizations invitations workspaces [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the workspace name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve organizations invitations resend [#agentserve-organizations-invitations-resend] Resend Organization Invitation (OAuth login or personal API key required) ```bash agentserve organizations invitations resend [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations invitations revoke [#agentserve-organizations-invitations-revoke] Revoke Organization Invitation (OAuth login or personal API key required) ```bash agentserve organizations invitations revoke [options] ``` **Arguments** | Argument | Required | Description | | -------------- | -------- | ---------------------- | | `invitationId` | Yes | Invitation identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve organizations sso providers delete [#agentserve-organizations-sso-providers-delete] Delete SSO Provider (OAuth login or personal API key required) ```bash agentserve organizations sso providers delete [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve organizations sso providers get [#agentserve-organizations-sso-providers-get] Get SSO Provider (OAuth login or personal API key required) ```bash agentserve organizations sso providers get [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations sso providers list [#agentserve-organizations-sso-providers-list] List SSO Providers (OAuth login or personal API key required) ```bash agentserve organizations sso providers list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `providerId`, `domain`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve organizations sso providers save [#agentserve-organizations-sso-providers-save] Save SSO Provider (OAuth login or personal API key required) ```bash agentserve organizations sso providers save [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--provider-type ` | Yes | oidc: Configure an OpenID Connect identity provider. saml: Configure a SAML identity provider. Accepted values: `oidc`, `saml`. | | `--provider-id ` | Yes | Globally unique provider ID; saving an existing provider replaces its supplied configuration. | | `--issuer ` | Yes | Identity provider issuer URL. | | `--domain ` | Yes | Email domain already verified by this organization. | | `--jit-provisioning-enabled` | No | Allow SSO sign-in to provision organization membership, subject to eligibility and available seats. | | `--no-jit-provisioning-enabled` | No | Send --jit-provisioning-enabled as false. | | `--mapping ` | No | Identity-provider claims mapped to user fields. (JSON, or @path / @- to read a file or stdin). | | `--client-id ` | No | Identity provider client identifier. Available when providerType is oidc. Required when providerType is oidc. | | `--client-secret ` | No | Write-only OIDC client secret; the redacted marker from providers get preserves an existing secret. Passing it inline exposes it to shell history and process listings. Required when --provider-type is oidc (@path / @- reads a file or stdin verbatim, including trailing newlines; @@value for a literal leading @). | | `--scopes ` | No | OIDC scopes; offline\_access is omitted. Available when providerType is oidc. (JSON, or @path / @- to read a file or stdin). | | `--pkce` | No | Use PKCE for the authorization flow. Available when providerType is oidc. | | `--no-pkce` | No | Send --pkce as false. | | `--authorization-endpoint ` | No | Optional authorization endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--token-endpoint ` | No | Optional token endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--user-info-endpoint ` | No | Optional UserInfo endpoint. Available when providerType is oidc. | | `--skip-user-info-endpoint` | No | Read identity claims from the ID token instead of calling UserInfo. Available when providerType is oidc. | | `--no-skip-user-info-endpoint` | No | Send --skip-user-info-endpoint as false. | | `--jwks-endpoint ` | No | Optional signing-key endpoint; otherwise resolved through issuer discovery. Available when providerType is oidc. | | `--entry-point ` | No | Identity provider SAML sign-in endpoint. Available when providerType is saml. Required when providerType is saml. | | `--cert ` | No | Identity provider signing certificate. Available when providerType is saml. Required when providerType is saml. | | `--callback-url ` | No | SAML callback URL; defaults to this provider’s Agent Serve callback. Available when providerType is saml. | | `--audience ` | No | SAML audience; omission preserves the saved value. Available when providerType is saml. | | `--want-assertions-signed` | No | Require signed assertions; omission preserves the saved value. Available when providerType is saml. | | `--no-want-assertions-signed` | No | Send --want-assertions-signed as false. | | `--signature-algorithm ` | No | Signature algorithm accepted by the SAML configuration validator; omission preserves the saved value. Available when providerType is saml. | | `--digest-algorithm ` | No | Digest algorithm accepted by the SAML configuration validator; omission preserves the saved value. Available when providerType is saml. | | `--identifier-format ` | No | SAML NameID format; omission clears the saved value. Available when providerType is saml. | | `--idp-metadata ` | No | Identity provider metadata XML; omission clears the saved document. Available when providerType is saml. | ### agentserve organizations sso providers primary [#agentserve-organizations-sso-providers-primary] Set Primary SSO Provider (OAuth login or personal API key required) ```bash agentserve organizations sso providers primary [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------- | | `providerId` | Yes | Identity provider identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations sso policy get [#agentserve-organizations-sso-policy-get] Get SSO Policy (OAuth login or personal API key required) ```bash agentserve organizations sso policy get [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations sso policy update [#agentserve-organizations-sso-policy-update] Update SSO Policy (OAuth login or personal API key required) ```bash agentserve organizations sso policy update [options] ``` **Options** | Option | Required | Description | | ----------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--require-sso ` | Yes | Require organization SSO on future sign-ins; existing sessions remain active. Accepted values: `true`, `false`. | ### agentserve organizations get [#agentserve-organizations-get] Get Organization (OAuth login or personal API key required) ```bash agentserve organizations get ``` **Arguments** | Argument | Required | Description | | ---------------- | -------- | ------------------------ | | `organizationId` | Yes | Organization identifier. | ### agentserve organizations members usage-limit get [#agentserve-organizations-members-usage-limit-get] Get Organization Member Credit Limit (OAuth login or personal API key required) ```bash agentserve organizations members usage-limit get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | Yes | User ID of an organization member or external collaborator with workspace access in this organization. Use List Organization Members or List Workspace Members to find it. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve organizations members usage-limit update [#agentserve-organizations-members-usage-limit-update] Update Organization Member Credit Limit (OAuth login or personal API key required) ```bash agentserve organizations members usage-limit update [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | Yes | User ID of an organization member or external collaborator with workspace access in this organization. Use List Organization Members or List Workspace Members to find it. | **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--credit-limit ` | Yes | Credit cap for this person. Send null to clear the cap or 0 to prevent further credit-consuming usage. Organization limits still apply. | ### agentserve organizations members list [#agentserve-organizations-members-list] List Organization Members (OAuth login or personal API key required) ```bash agentserve organizations members list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against member name or email. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `email`, `joinedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve organizations members remove [#agentserve-organizations-members-remove] Remove Organization Member (OAuth login or personal API key required) ```bash agentserve organizations members remove [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------- | | `userId` | Yes | User identifier of the organization member. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve organizations members update [#agentserve-organizations-members-update] Update Organization Member (OAuth login or personal API key required) ```bash agentserve organizations members update [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------- | | `userId` | Yes | User identifier of the organization member. | **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--role ` | Yes | New organization role. Ownership transfers use a separate operation. Accepted values: `member`, `admin`. | ### agentserve organizations usage breakdown [#agentserve-organizations-usage-breakdown] Get Organization Usage Breakdown (OAuth login or personal API key required) ```bash agentserve organizations usage breakdown [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | | `--dimension ` | Yes | Usage grouping dimension. Accepted values: `member`, `workspace`, `workflow`, `model`, `byok`, `source`. | | `--limit ` | No | Maximum ranked groups to return. Remaining usage is summarized in other. Must be a whole number from 1 to 100. Defaults to 50. | ### agentserve organizations usage summary [#agentserve-organizations-usage-summary] Get Organization Usage Summary (OAuth login or personal API key required) ```bash agentserve organizations usage summary [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | ### agentserve organizations usage events [#agentserve-organizations-usage-events] List Organization Usage Events (OAuth login or personal API key required) ```bash agentserve organizations usage events [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--preset ` | No | Reporting window. Custom requires startDate and endDate and is capped at 92 days; other presets reject those bounds. Resolved billing windows are capped at 366 days. Accepted values: `current-period`, `previous-period`, `7d`, `30d`, `custom`. | | `--start-date ` | No | First calendar date included, in the selected timezone. Requires preset=custom. | | `--end-date ` | No | Last calendar date included, in the selected timezone. Requires preset=custom. | | `--timezone ` | No | IANA timezone for calendar boundaries; defaults to UTC. | | `--source ` | No | Restrict events to one product surface. Accepted values: `workflow`, `wand`, `agentserve-chat`, `mcp_copilot`, `mothership_block`, `knowledge-base`, `voice-input`, `enrichment`, `voice-output`, `api-tool`, `dataset-refresh`, `dataset-query`, `voice-mode`, `app-tool`, `app-build`, `app-ide`, `app-ai`, `slides`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve organizations list [#agentserve-organizations-list] List Organizations (OAuth login or personal API key required) ```bash agentserve organizations list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the organization name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve organizations workspaces [#agentserve-organizations-workspaces] List Organization Workspaces (OAuth login or personal API key required) ```bash agentserve organizations workspaces [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the workspace name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## agentserve permission-groups [#agentserve-permission-groups] Also spelled `agentserve permission-group`. ### agentserve permission-groups members add [#agentserve-permission-groups-members-add] Add Permission Group Member (OAuth login or personal API key required) ```bash agentserve permission-groups members add [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------ | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--user ` | Yes | Existing organization member to add. | ### agentserve permission-groups members batch-add [#agentserve-permission-groups-members-batch-add] Bulk Add Permission Group Members (OAuth login or personal API key required) ```bash agentserve permission-groups members batch-add [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--user ` | No | User IDs to add; cannot be combined with --all-members (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--all-members` | No | Add every current organization member; cannot be combined with --user. | ### agentserve permission-groups members list [#agentserve-permission-groups-members-list] List Permission Group Members (OAuth login or personal API key required) ```bash agentserve permission-groups members list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `assignedAt`, `userId`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve permission-groups members remove [#agentserve-permission-groups-members-remove] Remove Permission Group Member (OAuth login or personal API key required) ```bash agentserve permission-groups members remove [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------- | | `userId` | Yes | User identifier of the member to remove. | **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------- | | `--organization ` | Yes | Organization identifier. | | `--group ` | Yes | Permission group identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve permission-groups create [#agentserve-permission-groups-create] Create Permission Group (OAuth login or personal API key required) ```bash agentserve permission-groups create [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--name ` | Yes | Group name, unique within the organization. | | `--description ` | No | Optional group description. | | `--config ` | No | Group settings to set. Omitted keys use the default permission configuration. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether the group is the organization default. Only one group can be the default. | | `--no-default` | No | Send --default as false. | | `--workspace-ids ` | No | Workspace IDs targeted by a non-default group. Required when creating a non-default group; omit for a default group. (JSON, or @path / @- to read a file or stdin). | | `--applies-to-roles ` | No | Workspace roles a non-default group applies to. Empty applies it to every member of its workspaces; listed roles narrow it to members holding one of them. An explicit member assignment takes precedence over a role, and a role over a workspace-wide group. (JSON, or @path / @- to read a file or stdin). | ### agentserve permission-groups delete [#agentserve-permission-groups-delete] Delete Permission Group (OAuth login or personal API key required) ```bash agentserve permission-groups delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve permission-groups get [#agentserve-permission-groups-get] Get Permission Group (OAuth login or personal API key required) ```bash agentserve permission-groups get [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------ | | `--organization ` | Yes | Organization identifier. | ### agentserve permission-groups list [#agentserve-permission-groups-list] List Permission Groups (OAuth login or personal API key required) ```bash agentserve permission-groups list [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--search ` | No | Case-insensitive substring match against the group name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve permission-groups update [#agentserve-permission-groups-update] Update Permission Group (OAuth login or personal API key required) ```bash agentserve permission-groups update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `groupId` | Yes | Permission group identifier. | **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--organization ` | Yes | Organization identifier. | | `--name ` | No | Group name, unique within the organization. | | `--description ` | No | Group description. Null or an empty string clears it; omission leaves it unchanged. (--description null sends the word, not JSON null). | | `--config ` | No | Patch of group settings. Omitted keys remain unchanged; each supplied array replaces that entire list. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether the group is the organization default. Only one group can be the default. | | `--no-default` | No | Send --default as false. | | `--workspace-ids ` | No | Workspace identifiers for a non-default group. Required on creation; an empty update makes the group inactive. (JSON, or @path / @- to read a file or stdin). | | `--applies-to-roles ` | No | Workspace roles a non-default group applies to. Empty applies it to every member of its workspaces; listed roles narrow it to members holding one of them. An explicit member assignment takes precedence over a role, and a role over a workspace-wide group. (JSON, or @path / @- to read a file or stdin). | ## agentserve relays [#agentserve-relays] ### agentserve relays tasks create [#agentserve-relays-tasks-create] Assign Relay Task (OAuth login or personal API key required) ```bash agentserve relays tasks create [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------- | | `--relay ` | Yes | The Relay, by name (unique within the workspace). | | `--title ` | Yes | Short title of the task. | | `--objective ` | Yes | What the Relay should do. | | `--acceptance ` | No | How to tell the task is done. | ## agentserve sandboxes [#agentserve-sandboxes] Also spelled `agentserve sandbox`. ### agentserve sandboxes create [#agentserve-sandboxes-create] Create Sandbox (OAuth login or personal API key required) ```bash agentserve sandboxes create [options] ``` **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Display name, unique within the workspace; 1 to 64 characters. | | `--language ` | Yes | Dependency ecosystem: `javascript` installs from npm, `python` from PyPI. Accepted values: `javascript`, `python`. | | `--dependencies ` | No | Package specifiers installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | | `--cli-tools ` | No | Pinned managed CLI ids installed into the sandbox, at most 10, no duplicates. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--system-packages ` | No | Debian packages installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | ### agentserve sandboxes delete [#agentserve-sandboxes-delete] Delete Sandbox (OAuth login or personal API key required) ```bash agentserve sandboxes delete [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve sandboxes get [#agentserve-sandboxes-get] Get Sandbox ```bash agentserve sandboxes get ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | ### agentserve sandboxes list [#agentserve-sandboxes-list] List Sandboxes ```bash agentserve sandboxes list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the sandbox name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve sandboxes update [#agentserve-sandboxes-update] Update Sandbox (OAuth login or personal API key required) ```bash agentserve sandboxes update [options] ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | New display name, unique within the workspace; 1 to 64 characters. | | `--language ` | No | Replacement dependency ecosystem. The whole spec is revalidated against it, so a Python dependency list does not survive a switch to JavaScript. Accepted values: `javascript`, `python`. | | `--dependencies ` | No | Replacement package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | | `--cli-tools ` | No | Replacement managed CLI list; replaces the whole list. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--system-packages ` | No | Replacement Debian package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | ## agentserve secrets [#agentserve-secrets] Also spelled `agentserve secret`. ### agentserve secrets delete [#agentserve-secrets-delete] Delete Secret (OAuth login or personal API key required) ```bash agentserve secrets delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ----------------- | | `name` | Yes | Secret to delete. | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Whether the secret belongs to the workspace or to the caller. A personal secret belongs to the caller across every workspace, not to one workspace. Accepted values: `workspace`, `personal`. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve secrets list [#agentserve-secrets-list] List Secrets (OAuth login or personal API key required) ```bash agentserve secrets list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Restrict results to one ownership scope. Accepted values: `workspace`, `personal`. | | `--search ` | No | Case-insensitive substring match against the secret name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve secrets set [#agentserve-secrets-set] Create or replace a named secret, such as an API key or environment variable (OAuth login or personal API key required) ```bash agentserve secrets set [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------------------- | | `name` | Yes | Secret name, as referenced in workflows | **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Secret ownership scope. Accepted values: `workspace`, `personal`. | | `--value ` | No | Secret value. Passing it inline exposes it to shell history and process listings; @path reads it from a file and @- from stdin, verbatim — a trailing newline is part of the value, so write the file with printf rather than echo. Prefix a literal leading @ with a second one. | | `--description ` | No | What the secret is for, shown to teammates; workspace scope only. Omit to leave an existing description unchanged. | | `--unredacted` | No | Opt the workspace secret out of redaction: its value then appears in plaintext in run logs, model-visible content, and files, including publicly shared log links. Workspace scope only — sending it for a personal secret is rejected. Omit it to leave the current setting untouched. Pass --no-unredacted to restore redaction. | | `--no-unredacted` | No | Send --unredacted as false. | ## agentserve selectors [#agentserve-selectors] ### agentserve selectors get [#agentserve-selectors-get] Get Selector Option (OAuth login or personal API key required) ```bash agentserve selectors get [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `coda.docs`, `coda.pages`, `coda.tables`, `coda.columns`, `coda.rows`, `coda.formulas`, `coda.controls`, `coda.folders`, `coda.permissions`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `fivetran.groups`, `fivetran.connections`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `helpscout.mailboxes`, `helpscout.assignees`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `powerbi.workspaces`, `powerbi.datasets`, `powerbi.reports`, `planetscale.databases`, `planetscale.branches`, `planetscale.backups`, `planetscale.deployRequests`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `agentserve.workflows`, `table.columns`, `table.outputColumns`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`, `providers.openrouterImageModels`, `providers.openrouterVideoModels`, `providers.openrouterSpeechModels`, `providers.openrouterMusicModels`, `providers.openrouterMediaAspectRatios`, `providers.openrouterMediaResolutions`, `providers.openrouterMediaDurations`, `providers.openrouterSpeechVoices`, `providers.openrouterTranscriptionModels`, `decisions.models`. | | `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). | | `--id ` | Yes | Resource identifier. | ### agentserve selectors list [#agentserve-selectors-list] List Selector Options (OAuth login or personal API key required) ```bash agentserve selectors list [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `coda.docs`, `coda.pages`, `coda.tables`, `coda.columns`, `coda.rows`, `coda.formulas`, `coda.controls`, `coda.folders`, `coda.permissions`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `fivetran.groups`, `fivetran.connections`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `helpscout.mailboxes`, `helpscout.assignees`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `powerbi.workspaces`, `powerbi.datasets`, `powerbi.reports`, `planetscale.databases`, `planetscale.branches`, `planetscale.backups`, `planetscale.deployRequests`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `agentserve.workflows`, `table.columns`, `table.outputColumns`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`, `providers.openrouterImageModels`, `providers.openrouterVideoModels`, `providers.openrouterSpeechModels`, `providers.openrouterMusicModels`, `providers.openrouterMediaAspectRatios`, `providers.openrouterMediaResolutions`, `providers.openrouterMediaDurations`, `providers.openrouterSpeechVoices`, `providers.openrouterTranscriptionModels`, `decisions.models`. | | `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). | | `--search ` | No | Provider option search text. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | ## agentserve semantic-model [#agentserve-semantic-model] ### agentserve semantic-model query [#agentserve-semantic-model-query] Query Semantic Model (OAuth login or personal API key required) ```bash agentserve semantic-model query [options] ``` **Options** | Option | Required | Description | | ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--source ` | No | Which model to query. Omit it to query the model you read in the app: your draft while draft mode is on, otherwise the published model. Accepted values: `published`, `draft`. | | `--measures ` | Yes | Measures to compute. (JSON, or @path / @- to read a file or stdin). | | `--dimensions ` | No | Attributes to group by. (JSON, or @path / @- to read a file or stdin). | | `--where ` | No | Equality conditions keyed by `entity.attribute`, all of which must hold. (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Sort order of the result rows. (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Most rows to return. Defaults to 100. | ## agentserve skills [#agentserve-skills] Also spelled `agentserve skill`. ### agentserve skills create [#agentserve-skills-create] Create Skill (OAuth login or personal API key required) ```bash agentserve skills create [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------- | | `--name ` | Yes | Kebab-case name, unique within the workspace and not reserved by a built-in skill. | | `--description ` | Yes | One-line summary of when the skill applies. | | `--content ` | Yes | Skill body containing the instructions given to the agent. | ### agentserve skills delete [#agentserve-skills-delete] Delete Skill (OAuth login or personal API key required) ```bash agentserve skills delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve skills get [#agentserve-skills-get] Get Skill ```bash agentserve skills get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | ### agentserve skills editors create [#agentserve-skills-editors-create] Grant Skill Editor (OAuth login or personal API key required) ```bash agentserve skills editors create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------- | -------- | -------------------------------------------- | | `--email ` | Yes | Email address of a current workspace member. | ### agentserve skills editors list [#agentserve-skills-editors-list] List Skill Editors ```bash agentserve skills editors list [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `email`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve skills editors delete [#agentserve-skills-editors-delete] Revoke Skill Editor (OAuth login or personal API key required) ```bash agentserve skills editors delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------- | -------- | -------------------------------------------- | | `--email ` | Yes | Email address of a current workspace member. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve skills list [#agentserve-skills-list] List Skills ```bash agentserve skills list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the skill name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve skills update [#agentserve-skills-update] Update Skill (OAuth login or personal API key required) ```bash agentserve skills update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------------------------- | | `--name ` | No | New kebab-case skill name. | | `--description ` | No | New one-line summary of when the skill applies. | | `--content ` | No | Replacement skill body. | ## agentserve slides [#agentserve-slides] ### agentserve slides export [#agentserve-slides-export] Export Presentation ```bash agentserve slides export [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------- | | `docId` | Yes | The deck to export. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------- | | `--format ` | Yes | `pptx` for PowerPoint, `pdf` for a PDF of the slides. Accepted values: `pptx`, `pdf`. | ### agentserve slides jobs get [#agentserve-slides-jobs-get] Get Slides Job ```bash agentserve slides jobs get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `jobId` | Yes | Job identifier. | ### agentserve slides templates list [#agentserve-slides-templates-list] List Slides Templates ```bash agentserve slides templates list ``` ### agentserve slides presentations create [#agentserve-slides-presentations-create] Start Presentation (OAuth login or personal API key required) ```bash agentserve slides presentations create [options] ``` **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--space-id ` | Yes | Space the new deck is created in. | | `--title ` | Yes | Title of the new deck. | | `--content ` | Yes | What the deck should say: the audience, the story and the facts to use. | | `--n-slides ` | No | How many slides to write. The Slides AI decides when omitted. | | `--template-id ` | No | Template to lay the deck out with, from List Slides Templates. Default `general`. | | `--language ` | No | Language to write the slides in, for example `English` or `Deutsch`. | | `--tone ` | No | Tone of the writing, for example `formal` or `casual`. | | `--instructions ` | No | Further instructions for the Slides AI. | | `--file-ids ` | No | Workspace files whose text the deck should draw on. Upload them with the Files operations first; you need read access to each. (JSON, or @path / @- to read a file or stdin). | | `--export ` | No | Also export the finished deck to a file saved in the workspace Files. `none` skips the export. Accepted values: `pptx`, `pdf`, `none`. | ## agentserve spaces [#agentserve-spaces] ### agentserve spaces docs get [#agentserve-spaces-docs-get] Get Space Doc ```bash agentserve spaces docs get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------- | | `spaceId` | Yes | Space identifier. | | `docId` | Yes | Doc identifier. | ### agentserve spaces docs list [#agentserve-spaces-docs-list] List Space Docs ```bash agentserve spaces docs list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------- | | `spaceId` | Yes | Space identifier. | ### agentserve spaces list [#agentserve-spaces-list] List Spaces ```bash agentserve spaces list ``` ## agentserve tables [#agentserve-tables] Also spelled `agentserve table`. ### agentserve tables columns create [#agentserve-tables-columns-create] Add Column ```bash agentserve tables columns create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------ | | `--column ` | Yes | Column definition to add. (JSON, or @path / @- to read a file or stdin). | ### agentserve tables columns delete [#agentserve-tables-columns-delete] Delete Column ```bash agentserve tables columns delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------- | | `--column-name ` | Yes | Name of the column to delete. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables columns update [#agentserve-tables-columns-update] Update Column ```bash agentserve tables columns update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------- | | `--column-name ` | Yes | Current name of the column to update. | | `--updates ` | Yes | Mutable column fields. (JSON, or @path / @- to read a file or stdin). | ### agentserve tables groups create [#agentserve-tables-groups-create] Add Workflow Group ```bash agentserve tables groups create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------ | | `--group ` | Yes | Workflow or enrichment producer definition. (JSON, or @path / @- to read a file or stdin). | | `--output-columns ` | Yes | Columns created for producer outputs. (JSON, or @path / @- to read a file or stdin). | | `--auto-run` | No | Whether to schedule existing rows after group creation. | | `--no-auto-run` | No | Send --auto-run as false. | ### agentserve tables groups delete [#agentserve-tables-groups-delete] Delete Workflow Group ```bash agentserve tables groups delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------- | | `--group-id ` | Yes | Workflow group to delete. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables groups list [#agentserve-tables-groups-list] List Workflow Groups ```bash agentserve tables groups list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ### agentserve tables groups update [#agentserve-tables-groups-update] Update Workflow Group ```bash agentserve tables groups update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--group-id ` | Yes | Workflow group to update. | | `--workflow-id ` | No | Replacement backing workflow identifier. | | `--name ` | No | Replacement workflow-group display name. | | `--dependencies ` | No | Replacement input dependencies. (JSON, or @path / @- to read a file or stdin). | | `--outputs ` | No | Replacement producer outputs. (JSON, or @path / @- to read a file or stdin). | | `--new-output-columns ` | No | Columns to add for new outputs. (JSON, or @path / @- to read a file or stdin). | | `--mapping-updates ` | No | Existing output-column mapping changes. (JSON, or @path / @- to read a file or stdin). | | `--input-mappings ` | No | Replacement workflow input mappings. (JSON, or @path / @- to read a file or stdin). | | `--deployment-mode ` | No | Replacement workflow execution mode. Accepted values: `live`, `deployed`. | | `--type ` | No | Workflow-group producer type. Must match the group's stored type — a group's producer cannot be changed after creation. Accepted values: `manual`, `enrichment`. | | `--auto-run` | No | Replacement automatic-run setting. | | `--no-auto-run` | No | Send --auto-run as false. | ### agentserve tables batch-delete [#agentserve-tables-batch-delete] Bulk Delete Tables and Folders ```bash agentserve tables batch-delete [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `--table-ids ` | No | Tables to archive, by identifier. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables rows update-each [#agentserve-tables-rows-update-each] Apply a distinct patch to each listed row ```bash agentserve tables rows update-each [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `--updates ` | Yes | One merge patch per row. Each row identifier may appear at most once. (JSON, or @path / @- to read a file or stdin). | ### agentserve tables rows create [#agentserve-tables-rows-create] Create Rows ```bash agentserve tables rows create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------- | | `--data ` | No | One row keyed by column name (JSON, or @path / @-; choose exactly one body flag). | | `--rows ` | No | Several rows keyed by column name (JSON, or @path / @-; choose exactly one body flag). | ### agentserve tables rows delete [#agentserve-tables-rows-delete] Delete Row ```bash agentserve tables rows delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables rows batch-delete [#agentserve-tables-rows-batch-delete] Delete rows matching a filter, or an explicit list of ids ```bash agentserve tables rows batch-delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum matching rows to delete. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). | | `--row ` | No | Explicit row identifiers to delete. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables rows get [#agentserve-tables-rows-get] Get Row ```bash agentserve tables rows get [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------- | | `--include-run-state` | No | Include per-workflow-group run state on the returned row. Off by default. | | `--no-include-run-state` | No | Send --include-run-state as false. | ### agentserve tables rows list [#agentserve-tables-rows-list] List Rows ```bash agentserve tables rows list [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--include-run-state` | No | Include per-workflow-group run state on every returned row. Off by default: run state is a separate sidecar read and its `blockErrors` are unbounded, so a full page carries it only when asked. Caps `limit` at 200. | | `--no-include-run-state` | No | Send --include-run-state as false. | ### agentserve tables rows query [#agentserve-tables-rows-query] Query rows with a filter and sort ```bash agentserve tables rows query [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--filter ` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--include-run-state` | No | Include per-workflow-group run state on every returned row. Off by default: run state is a separate sidecar read and its `blockErrors` are unbounded, so a full page carries it only when asked. Incompatible with `limit: 0`, and caps `limit` at 200. | | `--no-include-run-state` | No | Send --include-run-state as false. | ### agentserve tables rows count [#agentserve-tables-rows-count] Count rows matching a filter ```bash agentserve tables rows count [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--filter ` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | ### agentserve tables rows enrich [#agentserve-tables-rows-enrich] Run one row’s enrichment group ```bash agentserve tables rows enrich ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------ | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | | `groupId` | Yes | Workflow or enrichment group to run. | ### agentserve tables rows search [#agentserve-tables-rows-search] Search cells for a value and return their coordinates ```bash agentserve tables rows search [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--query ` | Yes | Value to search for. | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). | ### agentserve tables rows batch-update [#agentserve-tables-rows-batch-update] Update every row matching a filter ```bash agentserve tables rows batch-update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filter ` | Yes | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--data ` | Yes | Row-data patch applied to every matching row. (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum matching rows to update. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables rows update [#agentserve-tables-rows-update] Update Row ```bash agentserve tables rows update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------- | | `--data ` | Yes | Partial row-data patch keyed by column name. (JSON, or @path / @- to read a file or stdin). | ### agentserve tables dispatches cancel [#agentserve-tables-dispatches-cancel] Cancel a running dispatch ```bash agentserve tables dispatches cancel [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `dispatchId` | Yes | Unique table run-dispatch identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables dispatches create [#agentserve-tables-dispatches-create] Start a column or enrichment run ```bash agentserve tables dispatches create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--group-ids ` | Yes | Workflow or enrichment groups to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--run-mode ` | No | Whether to run all or only incomplete cells. Accepted values: `all`, `incomplete`. | | `--row-ids ` | No | Explicit row subset to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--exclude-row-ids ` | No | Rows excluded from a select-all run scope. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--max-rows ` | No | Stop after this many eligible rows have run (1-1,000,000). Omit for an unbounded run. | ### agentserve tables dispatches get [#agentserve-tables-dispatches-get] Get Run Dispatch ```bash agentserve tables dispatches get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `dispatchId` | Yes | Unique table run-dispatch identifier. | ### agentserve tables dispatches list [#agentserve-tables-dispatches-list] List Active Run Dispatches ```bash agentserve tables dispatches list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ### agentserve tables exports cancel [#agentserve-tables-exports-cancel] Stop a running export ```bash agentserve tables exports cancel ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ### agentserve tables exports create [#agentserve-tables-exports-create] Create Table Export ```bash agentserve tables exports create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | --------------------------------------------------- | | `--format ` | No | Export file format. Accepted values: `csv`, `json`. | ### agentserve tables exports get [#agentserve-tables-exports-get] Get Table Export ```bash agentserve tables exports get ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ### agentserve tables exports download [#agentserve-tables-exports-download] Get the download URL for a finished export ```bash agentserve tables exports download ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ### agentserve tables imports cancel [#agentserve-tables-imports-cancel] Stop a running import ```bash agentserve tables imports cancel [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `importId` | Yes | Unique table-import identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables imports get [#agentserve-tables-imports-get] Get Table Import ```bash agentserve tables imports get ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `importId` | Yes | Unique table-import identifier. | ### agentserve tables cancel-runs [#agentserve-tables-cancel-runs] Stop every running column job ```bash agentserve tables cancel-runs [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Whether to cancel across the table or one row. Accepted values: `all`, `row`. | | `--row-id ` | No | Row whose runs should be canceled for row scope. | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--exclude-row-ids ` | No | Rows excluded from an all-scope cancellation. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables create [#agentserve-tables-create] Create Table ```bash agentserve tables create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Identifier: letters, numbers, and underscores; cannot start with a number. | | `--description ` | No | Optional table description. | | `--schema ` | Yes | Table schema: \{"columns":\[\{"name":"email","type":"string"}]} (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve tables folders create [#agentserve-tables-folders-create] Create a table folder at a path ```bash agentserve tables folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve tables folders delete [#agentserve-tables-folders-delete] Delete Folder ```bash agentserve tables folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables folders list [#agentserve-tables-folders-list] List table folders ```bash agentserve tables folders list [options] ``` Also available as `agentserve tables folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve tables folders move [#agentserve-tables-folders-move] Rename or move a table folder ```bash agentserve tables folders move ``` Also available as `agentserve tables folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve tables folders restore [#agentserve-tables-folders-restore] Restore an archived table folder ```bash agentserve tables folders restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve tables views create [#agentserve-tables-views-create] Create View ```bash agentserve tables views create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Saved-view display name. | | `--config ` | Yes | Saved filter, sort, and column-layout configuration. (JSON, or @path / @- to read a file or stdin). | ### agentserve tables views delete [#agentserve-tables-views-delete] Delete View ```bash agentserve tables views delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables views get [#agentserve-tables-views-get] Get View ```bash agentserve tables views get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | ### agentserve tables views list [#agentserve-tables-views-list] List Views ```bash agentserve tables views list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ### agentserve tables views update [#agentserve-tables-views-update] Update View ```bash agentserve tables views update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------ | | `--name ` | No | Replacement saved-view display name. | | `--config ` | No | Complete replacement saved-view configuration. (JSON, or @path / @- to read a file or stdin). | | `--config-patch ` | No | Saved-view configuration fields to shallow-merge. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether to promote this view to the table default. | | `--no-default` | No | Send --default as false. | ### agentserve tables delete [#agentserve-tables-delete] Delete Table ```bash agentserve tables delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve tables enrichment get [#agentserve-tables-enrichment-get] Get Enrichment Run Detail ```bash agentserve tables enrichment get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------ | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | | `groupId` | Yes | Workflow or enrichment group to run. | ### agentserve tables get [#agentserve-tables-get] Get Table ```bash agentserve tables get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ### agentserve tables list [#agentserve-tables-list] List Tables ```bash agentserve tables list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live tables, `archived` for tables a delete archived and a table restore can bring back. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve tables move [#agentserve-tables-move] Move Tables and Folders ```bash agentserve tables move [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--table-ids ` | No | Tables to move, by identifier. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Table folders to move, by path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | No | Destination folder path; omit for root. | ### agentserve tables restore [#agentserve-tables-restore] Restore an archived table ```bash agentserve tables restore ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ### agentserve tables update [#agentserve-tables-update] Update Table ```bash agentserve tables update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------- | | `--name ` | No | Identifier: letters, numbers, and underscores; cannot start with a number. | | `--description ` | No | Replacement table description, or null to clear it. (--description null sends the word, not JSON null). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve tables mv [#agentserve-tables-mv] Move a table to a folder ```bash agentserve tables mv ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve tables upsert [#agentserve-tables-upsert] Insert a row, or update the one that conflicts on a unique column ```bash agentserve tables upsert [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--data ` | Yes | Complete set of row cells keyed by column name. On the update branch this REPLACES the matched row: any column not present here is cleared, unlike a single-row update, which merges. (JSON, or @path / @- to read a file or stdin). | | `--on ` | No | Unique column to resolve the conflict against. | ### agentserve tables import [#agentserve-tables-import] Import a CSV, into a new table by default ```bash agentserve tables import [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------------------------------- | | `path` | No | Local CSV file to import; omit when using --file-id | **Options** | Option | Required | Description | | -------------------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `--name ` | No | Identifier for the new table: letters, numbers, and underscores; defaults to the sanitized file name. | | `--table-id ` | No | Import into this existing table instead of creating one. | | `--mode ` | No | How to write into --table-id (default: append). Accepted values: `append`, `replace`. | | `--folder ` | No | Folder path for the new table, as shown in the app. | | `--file-id ` | No | Import a file already in the workspace instead of a local path. | | `--mapping ` | No | Column mapping (--table-id only). | | `--create-columns ` | No | Columns to create (--table-id only). | | `--timezone ` | No | Timezone for date parsing, e.g. America/New\_York. | | `-y, --yes` | No | Confirm this destructive operation (required with --mode replace). | | `--no-wait` | No | Return once the import is queued instead of watching it. | ### agentserve tables ls [#agentserve-tables-ls] List table resources and child folders together ```bash agentserve tables ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ### agentserve tables mkdir [#agentserve-tables-mkdir] Create a table directory at a path ```bash agentserve tables mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | ## agentserve tools [#agentserve-tools] ### agentserve tools execute [#agentserve-tools-execute] Run one built-in tool and print what it produced (OAuth login or personal API key required) ```bash agentserve tools execute [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `toolId` | Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--input ` | No | Tool arguments as JSON, keyed by the parameter ids `agentserve tools get <toolId>` lists (JSON, or @path / @- to read a file or stdin). | | `--credential-id ` | No | Credential to authenticate with, required for OAuth tools. | | `--timeout ` | No | Seconds to wait before abandoning the call. | ### agentserve tools get [#agentserve-tools-get] Get Tool ```bash agentserve tools get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `toolId` | Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. | ### agentserve tools list [#agentserve-tools-list] List Tools ```bash agentserve tools list [options] ``` **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the tool id, name, and description. | | `--hosted-api-key ` | No | Restrict to tools by how their API key is supplied. Accepted values: `always`, `conditional`, `none`. | | `--oauth-provider ` | No | Restrict to tools that authenticate against this OAuth service. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `id`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## agentserve workflow-mcp-servers [#agentserve-workflow-mcp-servers] ### agentserve workflow-mcp-servers create [#agentserve-workflow-mcp-servers-create] Create Workflow MCP Server (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers create [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Server display name, shown to connecting MCP clients. | | `--description ` | No | Optional server description. | | `--is-public` | No | Whether the server answers MCP clients without an Agent Serve API key. Defaults to false — a public server executes the workflows it publishes for anyone holding its URL. | | `--no-is-public` | No | Send --is-public as false. | | `--workflow ` | No | Deployed workflows to publish as tools on the new server. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ### agentserve workflow-mcp-servers delete [#agentserve-workflow-mcp-servers-delete] Delete Workflow MCP Server (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers delete [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflow-mcp-servers tools create [#agentserve-workflow-mcp-servers-tools-create] Publish Workflow As MCP Tool (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers tools create [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ---------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow-id ` | Yes | Deployed workflow to publish. The workflow must already be deployed. | | `--tool-name ` | No | Name MCP clients call. Normalized to the MCP tool-name grammar, and derived from the workflow name when omitted. | | `--tool-description ` | No | Description shown to MCP clients. Derived from the workflow name when omitted. | | `--parameter-descriptions ` | No | Per-field description overrides applied to the schema generated from the deployed workflow inputs, as \[\{"name":"email","description":"Customer email address"}]. A name matching no input field is ignored (JSON, or @path / @- to read a file or stdin). | ### agentserve workflow-mcp-servers tools list [#agentserve-workflow-mcp-servers-tools-list] List Workflow MCP Tools (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers tools list ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | ### agentserve workflow-mcp-servers tools delete [#agentserve-workflow-mcp-servers-tools-delete] Unpublish Workflow MCP Tool (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers tools delete [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | -------------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | | `workflowId` | Yes | Workflow published as a tool on this server. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflow-mcp-servers get [#agentserve-workflow-mcp-servers-get] Get Workflow MCP Server (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers get ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | ### agentserve workflow-mcp-servers list [#agentserve-workflow-mcp-servers-list] List Workflow MCP Servers (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve workflow-mcp-servers update [#agentserve-workflow-mcp-servers-update] Update Workflow MCP Server (OAuth login or personal API key required) ```bash agentserve workflow-mcp-servers update [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------ | | `--name ` | No | Server display name, shown to connecting MCP clients. | | `--description ` | No | New server description, or null to clear it. (--description null sends the word, not JSON null). | | `--is-public` | No | Whether the server answers MCP clients without an Agent Serve API key. | | `--no-is-public` | No | Send --is-public as false. | ## agentserve workflows [#agentserve-workflows] Also spelled `agentserve workflow`. ### agentserve workflows activate create [#agentserve-workflows-activate-create] Activate Workflow Version (OAuth login or personal API key required) ```bash agentserve workflows activate create [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows operations apply [#agentserve-workflows-operations-apply] Edit a workflow’s blocks, connections and settings with a batch of operations (OAuth login or personal API key required) ```bash agentserve workflows operations apply [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--dry-run` | No | Validate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect `lint` and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified. | | `--no-dry-run` | No | Send --dry-run as false. | | `--operations ` | Yes | Edits to apply, in a single batch, keyed by operation\_type: \[\{"operation\_type":"add","block\_id":"my-fn","params":\{"type":"function","name":"My Fn","inputs":\{"code":"return \{ok:true}"}}},\{"operation\_type":"edit","block\_id":"\","params":\{"name":"Renamed","connections":\{"success":"my-fn"}}},\{"operation\_type":"delete","block\_id":"\"}]. Also extract\_from\_subflow, whose params carry \{"subflowId":"\"}, and insert\_into\_subflow, which creates a block and so takes an add’s params plus that subflowId (JSON, or @path / @- to read a file or stdin). | | `--atomic` | No | Fail the whole batch when any operation is declined or any block input would be dropped. The default applies what it can and reports the rest in `skipped` and `inputValidationErrors`; `true` writes nothing and answers `409` instead. | | `--no-atomic` | No | Send --atomic as false. | | `--layout ` | No | Whether to reposition blocks the batch touched. `targeted` (default) nudges only the affected subgraph; `none` leaves every position exactly as supplied. Accepted values: `targeted`, `none`. | | `--set-block-enabled ` | No | Blocks to enable or disable, applied after --operations: \[\{"block\_id":"\","enabled":false}]. Disabling a loop or parallel cascades to its unlocked descendants; enabling a block whose container is disabled is declined (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | No | Confirm this operation (required unless --dry-run). | ### agentserve workflows variables update [#agentserve-workflows-variables-update] Update Workflow Variables ```bash agentserve workflows variables update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--operations ` | Yes | Variable changes to apply in order, keyed by operation: \[\{"operation":"add","name":"my\_var","type":"string","value":"hello"},\{"operation":"edit","name":"my\_var","value":"updated"},\{"operation":"delete","name":"my\_var"}] (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows runs cancel [#agentserve-workflows-runs-cancel] Cancel a running workflow run ```bash agentserve workflows runs cancel [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | ------------ | | `--workflow ` | Yes | Workflow ID. | ### agentserve workflows runs get [#agentserve-workflows-runs-get] Show run status (requested outputs are included in JSON or YAML output) ```bash agentserve workflows runs get [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ---------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--include-output` | No | Include the final output in JSON or YAML output. | | `--select-output ` | No | Include blockId or blockId.path values in JSON or YAML output; block names are not resolved on a finished run (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-file-base64` | No | Inline each produced file's bytes as base64. Requires `includeOutput`. A file above the inline ceiling answers `413` naming its download path; fetch large files from `downloadPath` instead. | | `--no-include-file-base64` | No | Send --include-file-base64 as false. | | `--base64-max-bytes ` | No | Per-file inline ceiling, lowering but never raising the server limit of 16 MiB. | ### agentserve workflows runs list [#agentserve-workflows-runs-list] List runs for a workflow ```bash agentserve workflows runs list [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--status ` | No | Filter by run status. Accepted values: `pending`, `running`, `completed`, `failed`, `cancelled`, `paused`. | | `--trigger ` | No | Filter by trigger type. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--order ` | No | Sort direction by run start time. This list is sortable only by run start time, so it takes `order` in place of `sortBy`/`sortOrder`, which it rejects. Accepted values: `asc`, `desc`. | ### agentserve workflows runs resume [#agentserve-workflows-runs-resume] Resume a paused run (output is included in JSON or YAML output) ```bash agentserve workflows runs resume [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--context ` | Yes | Pause context ID returned by run status. | | `--input ` | No | Resume input as JSON (JSON, or @path / @- to read a file or stdin). | ### agentserve workflows runs wait [#agentserve-workflows-runs-wait] Wait for a run to reach a terminal state, then show it ```bash agentserve workflows runs wait [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--wait-timeout ` | No | Give up after this many seconds, or 0 to wait indefinitely (default: 3600). Bounds the whole wait; AGENT\_SERVE\_TIMEOUT\_SECONDS bounds one request. | ### agentserve workflows versions compare [#agentserve-workflows-versions-compare] Compare Workflow Versions ```bash agentserve workflows versions compare [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------- | | `--base ` | Yes | Deployment version to compare from. | | `--target ` | Yes | Deployment version to compare to, in the same workflow. | ### agentserve workflows versions get [#agentserve-workflows-versions-get] Get Workflow Version ```bash agentserve workflows versions get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | ### agentserve workflows versions list [#agentserve-workflows-versions-list] List Workflow Versions ```bash agentserve workflows versions list [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | -------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve workflows versions update [#agentserve-workflows-versions-update] Update Workflow Version ```bash agentserve workflows versions update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | New label for the deployment version. | | `--description ` | No | New release note for the deployment version, or null to clear it. (--description null sends the word, not JSON null). | ### agentserve workflows create [#agentserve-workflows-create] Create Workflow ```bash agentserve workflows create [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Workflow name. | | `--description ` | No | Optional workflow description. | | `--folder ` | No | Existing folder path (leading / optional); create it first with agentserve workflows mkdir \. | ### agentserve workflows folders create [#agentserve-workflows-folders-create] Create a workflow folder at a path ```bash agentserve workflows folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve workflows folders delete [#agentserve-workflows-folders-delete] Delete Workflow Folder ```bash agentserve workflows folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows folders list [#agentserve-workflows-folders-list] List workflow folders ```bash agentserve workflows folders list [options] ``` Also available as `agentserve workflows folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve workflows folders move [#agentserve-workflows-folders-move] Rename or move a workflow folder ```bash agentserve workflows folders move ``` Also available as `agentserve workflows folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve workflows delete [#agentserve-workflows-delete] Delete Workflow ```bash agentserve workflows delete [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows chat unpublish [#agentserve-workflows-chat-unpublish] Take a workflow’s chat deployment offline (OAuth login or personal API key required) ```bash agentserve workflows chat unpublish [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows chat status [#agentserve-workflows-chat-status] Show a workflow’s chat deployment (OAuth login or personal API key required) ```bash agentserve workflows chat status ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ### agentserve workflows chat publish [#agentserve-workflows-chat-publish] Publish or replace a workflow’s chat deployment (OAuth login or personal API key required) ```bash agentserve workflows chat publish [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--identifier ` | Yes | URL slug the deployed chat answers on. Must be free across live deployments. | | `--title ` | Yes | Title shown to visitors. | | `--description ` | No | Description shown to visitors. Omitted clears it. | | `--customizations ` | No | Presentation overrides. Omitted fields take platform defaults. (JSON, or @path / @- to read a file or stdin). | | `--auth-type ` | No | How visitors are gated. `public` leaves the chat open to anyone holding the URL. Accepted values: `public`, `password`, `email`, `sso`. | | `--password ` | No | Write-only password. Required whenever `authType` is `password`, and rejected otherwise. Never readable back. | | `--allowed-emails ` | No | Email addresses or domains admitted under `email` and `sso` gating. At least one is required for those modes. (JSON, or @path / @- to read a file or stdin). | | `--output-configs ` | No | Block outputs to surface to visitors. Omitted surfaces none. (JSON, or @path / @- to read a file or stdin). | | `--include-thinking` | No | Allow visitors to receive provider thinking events. | | `--no-include-thinking` | No | Send --include-thinking as false. | | `--include-tool-calls` | No | Allow visitors to receive tool lifecycle events. | | `--no-include-tool-calls` | No | Send --include-tool-calls as false. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows deploy [#agentserve-workflows-deploy] Deploy Workflow (OAuth login or personal API key required) ```bash agentserve workflows deploy [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------- | | `--name ` | No | Optional label for the deployment version. | | `--description ` | No | Optional release note for the deployment version. | ### agentserve workflows duplicate create [#agentserve-workflows-duplicate-create] Duplicate Workflow ```bash agentserve workflows duplicate create [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------- | | `--name ` | No | Name for the copy. Defaults to the source name, deduplicated within the folder. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve workflows run [#agentserve-workflows-run] Run a deployed workflow or execute saved state manually ```bash agentserve workflows run [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--input ` | No | Trigger input as JSON (JSON, or @path / @- to read a file or stdin). | | `--async` | No | Queue the run and return immediately. | | `--execution-timeout-seconds ` | No | Maximum duration of an asynchronous run, in seconds, capped by the plan's execution timeout. Requires `async: true`; otherwise returns `400`. | | `--select-output ` | No | Return streamed outputs as blockName.path or childWorkflowId.blockName.path; selecting a child workflow applies to every invocation, requires --follow (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-file-base64` | No | Inline eligible output files as base64 content. Rejected when `async` is true. | | `--no-include-file-base64` | No | Send --include-file-base64 as false. | | `--base64-max-bytes ` | No | Maximum total bytes of file content to inline as base64, lowering but never raising the server limit of 16 MiB. Rejected when `async` is true. | | `--run-id ` | No | One-shot identifier for this run; NOT an idempotency key — reusing a claimed value fails with RUN\_ID\_CONFLICT instead of replaying the first result, and a fresh value starts another run. | | `--manual` | No | Run the current saved workflow state instead of the active deployment. | | `--trigger ` | No | Enter a manual run through this runnable trigger (requires --manual). | | `--mock-payload` | No | Use the selected trigger's server-derived mock payload (requires --manual). | | `--from-block ` | No | Run manually from this saved workflow block. | | `--source-run ` | No | Prior run whose persisted state supplies upstream outputs (requires --from-block). | | `--stop-after ` | No | Stop the run after this saved block, failing it if the run takes a path that skips the block; with --from-block on the same block, re-runs only that block (implies --manual). | | `--follow` | No | Stream the run as it happens; progress on stderr, result on stdout. The stream reports only success and output, so the result omits the run id and timings a non-streaming run returns. | | `--include-thinking` | No | Show model reasoning while following (requires --follow). | | `--include-tool-calls` | No | Show tool calls while following (requires --follow). | ### agentserve workflows export [#agentserve-workflows-export] Print a workflow as a portable JSON document ```bash agentserve workflows export [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------- | | `--include-references` | No | Include non-secret resource identities for mapped import. | ### agentserve workflows get [#agentserve-workflows-get] Get Workflow ```bash agentserve workflows get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ### agentserve workflows deployment status [#agentserve-workflows-deployment-status] Show a workflow’s current deployment ```bash agentserve workflows deployment status ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ### agentserve workflows deployment update [#agentserve-workflows-deployment-update] Update Workflow Public API Access (OAuth login or personal API key required) ```bash agentserve workflows deployment update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------- | | `--is-public-api ` | Yes | Whether the deployed workflow should accept unauthenticated public API execution. Accepted values: `true`, `false`. | ### agentserve workflows state get [#agentserve-workflows-state-get] Get Workflow State ```bash agentserve workflows state get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ### agentserve workflows state replace [#agentserve-workflows-state-replace] Replace Workflow State (OAuth login or personal API key required) ```bash agentserve workflows state replace [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--dry-run` | No | Validate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect `lint` and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified. | | `--no-dry-run` | No | Send --dry-run as false. | | `--blocks ` | Yes | Blocks keyed by block id. (JSON, or @path / @- to read a file or stdin). | | `--edges ` | Yes | Directed connections between blocks. (JSON, or @path / @- to read a file or stdin). | | `--loops ` | No | Ignored on write: loop containers are recomputed from `blocks`. (JSON, or @path / @- to read a file or stdin). | | `--parallels ` | No | Ignored on write: parallel containers are recomputed from `blocks`. (JSON, or @path / @- to read a file or stdin). | | `--variables ` | No | Replacement variable set. Omit to leave the stored variables untouched. (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | No | Confirm this operation (required unless --dry-run). | ### agentserve workflows import [#agentserve-workflows-import] Import Workflow ```bash agentserve workflows import [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--name ` | No | Override for the imported workflow name. | | `--description ` | No | Override for the imported workflow description. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--bindings ` | No | Resolved and unresolved source occurrences with their destination selections. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | No | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | No | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | ### agentserve workflows list [#agentserve-workflows-list] List Workflows ```bash agentserve workflows list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live workflows, `archived` for workflows a `DELETE` archived. The folder filter resolves against active folders only, so pairing it with `archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--deployed-only` | No | Return only workflows with an active deployment when true. | | `--no-deployed-only` | No | Send --deployed-only as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `position`, `name`, `createdAt`, `updatedAt`, `runCount`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ### agentserve workflows move [#agentserve-workflows-move] Move Workflows ```bash agentserve workflows move [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflows to move. Duplicates are collapsed. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | Yes | Destination folder path; / moves the workflows to the workspace root. | ### agentserve workflows import-preview [#agentserve-workflows-import-preview] Preview Workflow Import ```bash agentserve workflows import-preview [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--name ` | No | Override for the imported workflow name. | | `--description ` | No | Override for the imported workflow description. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--bindings ` | No | Resolved and unresolved source occurrences with their destination selections. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | ### agentserve workflows restore [#agentserve-workflows-restore] Restore an archived workflow ```bash agentserve workflows restore ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ### agentserve workflows revert create [#agentserve-workflows-revert-create] Revert Workflow To Version (OAuth login or personal API key required) ```bash agentserve workflows revert create [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------------------------------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version, or `active` for the currently live version. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows rollback [#agentserve-workflows-rollback] Rollback Workflow (OAuth login or personal API key required) ```bash agentserve workflows rollback [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------- | | `--to-version ` | No | Deployment version to reactivate. Omit to select the previous active version. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows undeploy [#agentserve-workflows-undeploy] Take a workflow out of deployment (OAuth login or personal API key required) ```bash agentserve workflows undeploy [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workflows update [#agentserve-workflows-update] Update Workflow ```bash agentserve workflows update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `--name ` | No | Replacement workflow name. | | `--description ` | No | Replacement workflow description; null clears it. (--description null sends the word, not JSON null). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ### agentserve workflows mv [#agentserve-workflows-mv] Move a workflow to a folder ```bash agentserve workflows mv ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ---------------------------------------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ### agentserve workflows ls [#agentserve-workflows-ls] List workflow resources and child folders together ```bash agentserve workflows ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ### agentserve workflows mkdir [#agentserve-workflows-mkdir] Create a workflow directory at a path ```bash agentserve workflows mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | ## agentserve workspaces [#agentserve-workspaces] Also spelled `agentserve workspace`. ### agentserve workspaces access-requests cancel [#agentserve-workspaces-access-requests-cancel] Cancel Workspace Access Request (OAuth login or personal API key required) ```bash agentserve workspaces access-requests cancel ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | ### agentserve workspaces access-requests create [#agentserve-workspaces-access-requests-create] Create Workspace Access Request (OAuth login or personal API key required) ```bash agentserve workspaces access-requests create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--target ` | Yes | Target returned by Discover Workspace Access Requests or Discover Organization Access Requests. The target must currently be requestable. (JSON, or @path / @- to read a file or stdin). | | `--reason ` | No | Why the acting user needs this access. | ### agentserve workspaces access-requests discover [#agentserve-workspaces-access-requests-discover] Discover Workspace Access Requests (OAuth login or personal API key required) ```bash agentserve workspaces access-requests discover [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--search ` | No | Case-insensitive substring match against the access item label. | | `--target-kind ` | No | Category of access to discover. Accepted values: `feature`, `integration`, `provider`, `model`, `tool`, `knowledge_connector`, `file_share_auth`, `chat_deploy_auth`, `usage_limit`. | | `--state ` | No | Filter by the acting user’s current access. Requestable items can be submitted for review. Accepted values: `allowed`, `requestable`, `unavailable`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `label`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve workspaces access-requests mine [#agentserve-workspaces-access-requests-mine] List My Workspace Access Requests (OAuth login or personal API key required) ```bash agentserve workspaces access-requests mine [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ### agentserve workspaces invitations create [#agentserve-workspaces-invitations-create] Create Workspace Invitations (OAuth login or personal API key required) ```bash agentserve workspaces invitations create [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--emails ` | Yes | Email addresses to invite. Each address is processed separately; inspect failed for unsuccessful recipients. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--permission ` | No | Workspace permission to grant. Existing workspace access is preserved. Accepted values: `admin`, `write`, `read`. | | `--membership ` | No | Organization membership: member or admin uses a seat when billing is enabled. External grants workspace access only and requires an eligible paid account when billing is enabled. Existing members of another organization remain external. Accepted values: `member`, `admin`, `external`. | ### agentserve workspaces fork [#agentserve-workspaces-fork] Fork Workspace (OAuth login or personal API key required) ```bash agentserve workspaces fork [options] ``` **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Display name of the workflow or workspace. | | `--copy ` | No | Explicit resource selections to copy into the new fork; omitted resource kinds are not copied. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | ### agentserve workspaces get [#agentserve-workspaces-get] Get Workspace ```bash agentserve workspaces get ``` ### agentserve workspaces fork-availability [#agentserve-workspaces-fork-availability] Get Workspace Fork Availability (OAuth login or personal API key required) ```bash agentserve workspaces fork-availability ``` ### agentserve workspaces lineage [#agentserve-workspaces-lineage] Get Workspace Fork Lineage (OAuth login or personal API key required) ```bash agentserve workspaces lineage ``` ### agentserve workspaces mappings get [#agentserve-workspaces-mappings-get] Get Workspace Fork Mappings (OAuth login or personal API key required) ```bash agentserve workspaces mappings get [options] ``` **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--direction ` | Yes | Push means current to other; pull means other to current, independent of parent/child orientation. Accepted values: `push`, `pull`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`. | ### agentserve workspaces mappings update [#agentserve-workspaces-mappings-update] Update Workspace Fork Mappings (OAuth login or personal API key required) ```bash agentserve workspaces mappings update [options] ``` **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--direction ` | Yes | Push means current to other; pull means other to current, independent of parent/child orientation. Accepted values: `push`, `pull`. | | `--mappings ` | Yes | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | ### agentserve workspaces operations get [#agentserve-workspaces-operations-get] Get Workspace Operation ```bash agentserve workspaces operations get ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ------------------------------------------------ | | `operationId` | Yes | Durable operation identifier to use for polling. | ### agentserve workspaces operations list [#agentserve-workspaces-operations-list] List Workspace Operations ```bash agentserve workspaces operations list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------ | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--request-id ` | No | Stable client request ID for reconciliation and identical retries. | ### agentserve workspaces operations wait [#agentserve-workspaces-operations-wait] Wait for copy and deployment readiness; exit 3 for configuration, 1 for failure, or 4 for timeout ```bash agentserve workspaces operations wait [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------- | | `operationId` | Yes | Operation ID returned by import, fork, push, or pull | **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------- | | `--wait-timeout ` | No | Maximum total wait (default 3600; 0 waits indefinitely). | ### agentserve workspaces permission-config [#agentserve-workspaces-permission-config] Get Workspace Permission Config (OAuth login or personal API key required) ```bash agentserve workspaces permission-config ``` ### agentserve workspaces children [#agentserve-workspaces-children] List Workspace Fork Children (OAuth login or personal API key required) ```bash agentserve workspaces children [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `desc`. | ### agentserve workspaces fork-resources [#agentserve-workspaces-fork-resources] List Workspace Fork Resources (OAuth login or personal API key required) ```bash agentserve workspaces fork-resources [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--kind ` | Yes | Resource or operation kind. Accepted values: `files`, `tables`, `knowledgeBases`, `customTools`, `skills`, `mcpServers`, `workflowMcpServers`. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`. | ### agentserve workspaces members [#agentserve-workspaces-members] List workspace members ```bash agentserve workspaces members [options] ``` **Options** | Option | Required | Description | | ------------- | -------- | ------------------------------------------------------------ | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve workspaces list [#agentserve-workspaces-list] List Workspaces ```bash agentserve workspaces list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ### agentserve workspaces fork-preview [#agentserve-workspaces-fork-preview] Preview Workspace Fork (OAuth login or personal API key required) ```bash agentserve workspaces fork-preview [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Display name of the workflow or workspace. | | `--copy ` | No | Explicit resource selections to copy into the new fork; omitted resource kinds are not copied. (JSON, or @path / @- to read a file or stdin). | ### agentserve workspaces pull-preview [#agentserve-workspaces-pull-preview] Preview Workspace Pull (OAuth login or personal API key required) ```bash agentserve workspaces pull-preview [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | ### agentserve workspaces push-preview [#agentserve-workspaces-push-preview] Preview Workspace Push (OAuth login or personal API key required) ```bash agentserve workspaces push-preview [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | ### agentserve workspaces pull [#agentserve-workspaces-pull] Pull Workspace (OAuth login or personal API key required) ```bash agentserve workspaces pull [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workspaces push [#agentserve-workspaces-push] Push Workspace (OAuth login or personal API key required) ```bash agentserve workspaces push [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workspaces fork-rollback [#agentserve-workspaces-fork-rollback] Rollback Workspace Fork (OAuth login or personal API key required) ```bash agentserve workspaces fork-rollback [options] ``` **Options** | Option | Required | Description | | ------------------------------ | -------- | ---------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workspaces unlink [#agentserve-workspaces-unlink] Unlink Workspace Fork (OAuth login or personal API key required) ```bash agentserve workspaces unlink [options] ``` **Options** | Option | Required | Description | | ------------------------------ | -------- | ---------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `-y, --yes` | Yes | Confirm this operation. | ### agentserve workspaces sync-exclusions [#agentserve-workspaces-sync-exclusions] Update Workspace Fork Exclusions (OAuth login or personal API key required) ```bash agentserve workspaces sync-exclusions [options] ``` **Options** | Option | Required | Description | | ------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow identifiers in the current workspace. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--fork-sync-excluded ` | Yes | Whether the named workflows should be skipped as sync sources and targets. Accepted values: `true`, `false`. | --- # Relays (/cli/relays) Every command below also accepts the [global options](/cli/commands#global-options). ## Assign relay task [#assign-relay-task] ```bash agentserve relays tasks create [options] ``` Assign Relay Task (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------- | | `--relay ` | Yes | The Relay, by name (unique within the workspace). | | `--title ` | Yes | Short title of the task. | | `--objective ` | Yes | What the Relay should do. | | `--acceptance ` | No | How to tell the task is done. | --- # Runner (/cli/runner) Every command below also accepts the [global options](/cli/commands#global-options). ## Link this machine to a workspace with a one-time code [#link-this-machine-to-a-workspace-with-a-one-time-code] ```bash agentserve runner link [options] ``` **Options** | Option | Required | Description | | --------------- | -------- | ----------------------------------------------------- | | `--name ` | No | name shown in Settings → Runners (default: hostname). | | `--force` | No | link again even if this machine is already linked. | ## Take and run jobs until stopped [#take-and-run-jobs-until-stopped] ```bash agentserve runner run [options] ``` **Options** | Option | Required | Description | | ------------------- | -------- | ------------------------------------- | | `--concurrency ` | No | jobs to run at once. Defaults to `2`. | ## Show whether this machine is linked and approved [#show-whether-this-machine-is-linked-and-approved] ```bash agentserve runner status ``` ## Forget this machine’s runner token [#forget-this-machines-runner-token] ```bash agentserve runner unlink ``` --- # Sandboxes (/cli/sandboxes) `agentserve sandboxes` is also spelled `agentserve sandbox`. Every command below also accepts the [global options](/cli/commands#global-options). ## Create sandbox [#create-sandbox] ```bash agentserve sandboxes create [options] ``` Create Sandbox (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Display name, unique within the workspace; 1 to 64 characters. | | `--language ` | Yes | Dependency ecosystem: `javascript` installs from npm, `python` from PyPI. Accepted values: `javascript`, `python`. | | `--dependencies ` | No | Package specifiers installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | | `--cli-tools ` | No | Pinned managed CLI ids installed into the sandbox, at most 10, no duplicates. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--system-packages ` | No | Debian packages installed into the sandbox, one per entry. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | ## Delete sandbox [#delete-sandbox] ```bash agentserve sandboxes delete [options] ``` Delete Sandbox (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get sandbox [#get-sandbox] ```bash agentserve sandboxes get ``` **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | ## List sandboxes [#list-sandboxes] ```bash agentserve sandboxes list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the sandbox name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update sandbox [#update-sandbox] ```bash agentserve sandboxes update [options] ``` Update Sandbox (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `sandboxId` | Yes | Unique sandbox identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | New display name, unique within the workspace; 1 to 64 characters. | | `--language ` | No | Replacement dependency ecosystem. The whole spec is revalidated against it, so a Python dependency list does not survive a switch to JavaScript. Accepted values: `javascript`, `python`. | | `--dependencies ` | No | Replacement package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | | `--cli-tools ` | No | Replacement managed CLI list; replaces the whole list. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--system-packages ` | No | Replacement Debian package list; replaces the whole list. (space-separated, or @path / @- with one value per line; in a file, blank lines and # comments are ignored, while inline values are sent as typed and may not be empty; @@value for a literal leading @). | --- # Scripting (/cli/scripting) Use these patterns to pass inputs, page through results, and handle command outcomes. ## Reading input from files and stdin [#reading-input-from-files-and-stdin] Any flag that takes JSON or a list also accepts `@path` to read a file, or `@-` to read stdin. ```bash agentserve workflows import --workflow @wf.json agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --filter @filter.json cat wf.json | agentserve workflows import --workflow @- ``` ## List flags [#list-flags] Primitive lists take space-separated values. With `@`, the file supplies one value per line: ```bash agentserve files mv --file-ids wf_3Qm8ZtLpR2yVnKd7BsXwC wf_5Hn1JvTqW9xUcMb4RzPgL --to Archive agentserve files mv --file-ids @file-ids.txt --to Archive printf 'wf_3Qm8ZtLpR2yVnKd7BsXwC\nwf_5Hn1JvTqW9xUcMb4RzPgL\n' | agentserve files mv --file-ids @- --to Archive ``` Arrays of objects stay JSON. ## Passing a literal leading `@` [#passing-a-literal-leading-] Because `@` introduces a file reference, a value that genuinely starts with one is written `@@`. Only the leading `@` is dropped, and every `@`-aware flag accepts the escape: ```bash agentserve files share set wf_3Qm8ZtLpR2yVnKd7BsXwC --is-active true --auth-type email --allowed-emails @@example.org agentserve secrets set API_HOST --scope workspace --value @@internal ``` Without it, `--allowed-emails @example.org` can only be read as a request to open a file named `example.org`. ## Filtering table rows [#filtering-table-rows] `--filter` takes the same predicate tree the API uses: `all` (AND) or `any` (OR) groups of `{field, op, value}` conditions, nestable. ```bash agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 \ --filter '{"all":[{"field":"status","op":"eq","value":"open"}, {"field":"score","op":"gt","value":10}]}' \ --limit 50 ``` Operators: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`, `contains`, `ncontains`, `startsWith`, `endsWith`, `like`, `ilike`, `nlike`, `nilike`, `isEmpty`, `isNotEmpty`, `isNull`, `isNotNull`. `--sort` is also JSON, an ordered list of keys: ```bash agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --sort '[{"field":"createdAt","direction":"desc"}]' ``` ## Pagination [#pagination] Resource lists and directory `ls` follow every page by default. Pass `--limit N` to cap the returned items: ```bash agentserve workflows list --output json agentserve files ls /Reports --limit 50 ``` Table rows (including queries), logs, audit/billing events, workflow runs and versions, and knowledge documents/chunks retain a default limit of `100`. Connector document lists also use this cap. Use `--limit 0` to fetch every page of a large dataset: ```bash agentserve logs list --limit 0 --output json > all-logs.json ``` Pages are fetched sequentially, accumulated in memory, and printed as one result. A large table can consume substantial memory; use filters or an explicit limit when you only need a subset. Each API request fetches at most 100 items. Paginated JSON and YAML results have the shape `{ data: [...], nextCursor }`. `nextCursor` is the cursor after the last returned row, or `null` when all pages have been fetched. Scripts that read list rows should use `.data[]`: ```bash agentserve logs list --output json | jq -r '.data[].runId' ``` The capped dataset commands accept `--cursor` to resume from the previous result's `nextCursor`. Keep the same resource, filters, and sort order, and stop when the cursor is `null`: ```bash agentserve tables rows list tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --limit 100 --output json agentserve tables rows list tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --limit 100 --cursor "$nextCursor" --output json ``` `--limit` applies to each invocation starting at its cursor. `--limit 0` with `--cursor` fetches every remaining page. Table-row queries, logs (including billing and audit logs), workflow run/version histories, and knowledge document/chunk lists all support this continuation. ## Destructive commands [#destructive-commands] Deletions require an explicit selector **and** `--yes`. There is no "delete everything" default: ```bash agentserve tables rows batch-delete tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --row row_2f81c0a94db54e6f8a13c7e0526bd94a row_6b3e59d0af1c42d7b80e94f3a271c568 --yes agentserve files delete wf_8Kd2NpVrY6zTfQa3XwBmS --yes ``` Without `--yes` the command explains what it would have destroyed and stops. On `batch-delete` and `batch-update`, `--limit` has no default and is not a page size — it is a ceiling on how many matching rows the one call may touch. Leave it off and the command acts on **every** row the filter matches, however many that is. `--limit 0` is not the unbounded form here and is rejected; pass a whole number of 1 or more to cap the blast radius, or omit the flag deliberately. ## Exit codes [#exit-codes] | Code | Meaning | | ----- | ----------------------------------------------------------------------------------------- | | `0` | Success | | `1` | API/configuration/argument failure, or a failed workflow when using `workflows runs wait` | | `2` | `whoami`: no verification verdict; `workflows runs wait`: the run was cancelled | | `3` | `workflows runs wait`: the run is paused for human input | | `4` | `workflows runs wait`: the wait timed out | | `130` | Interactive secret entry was cancelled with Ctrl-C | Errors print one line to stderr, prefixed `Error:`, plus the API's error code and validation details when it supplies them. Failures are safe to branch on: ```bash if ! agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --output json > result.json; then echo "run failed" >&2 exit 1 fi ``` An unexpected error prints a stack trace — that is a bug in the CLI, so please [open an issue](https://github.com/Suryanandx/agent-serve-platform/issues). `agentserve whoami` splits its failure in two because the fixes differ: `1` means the credentials are wrong and a fresh `agentserve login` is the answer, while `2` means the CLI never got a verdict — no workspace to check against, or an endpoint that did not answer — and logging in again would not help. ```bash agentserve whoami > /dev/null case $? in 0) ;; # ready 1) echo "run: agentserve login" >&2; exit 1 ;; 2) echo "endpoint unreachable, retrying later" >&2; exit 75 ;; esac ``` ## Selecting workflow output [#selecting-workflow-output] `--select-output` shapes a streamed result, so it requires `--follow`. It takes `blockName.field` selectors; fields that a run did not produce are simply omitted: ```bash agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --follow --select-output agent_1.content --output json ``` Without `--follow` the CLI refuses the pair rather than spending a request on a response that carries no outputs, and `--async` cannot be combined with it either — there is no stream to shape. To narrow a run that has already finished, read it back with `workflows runs get`, which matches block **ids** rather than the block names `workflows run` takes: ```bash agentserve workflows runs get "$run_id" --workflow 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 \ --select-output 1d4c8f02-7b63-4a19-8e52-63f0a7c5d9b1.content --output json ``` ## Polling a long run [#polling-a-long-run] Start the run asynchronously, then use the CLI’s wait command: ```bash run_id=$(agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --async --output json | jq -r '.runId') agentserve workflows runs wait "$run_id" --workflow 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --wait-timeout 3600 --output json ``` The command polls until the run completes, fails, is cancelled, or pauses for human input. Time-based pauses continue waiting. Its exit code identifies the outcome; `--wait-timeout 0` waits indefinitely. Use `agentserve logs get "$run_id" --trace` for full diagnostics. A run paused for human input includes the context ID needed by `agentserve workflows runs resume`. ## Working with folders [#working-with-folders] Every folder-backed resource — `workflows`, `tables`, `files`, `knowledge` — shares the same path commands: ```bash agentserve tables ls Reports agentserve tables mkdir Reports/Quarterly agentserve tables folders mv Reports/Quarterly Archive/Quarterly agentserve tables folders delete Archive --recursive --yes ``` `ls` lists the resources at a path plus that folder's direct children, never deeper. Its `ref` column is the value to pass to the next command. Use `list` for resources only, or `folders ls` for folders only. A leading `/` is optional. ## A nightly job, end to end [#a-nightly-job-end-to-end] ```bash title="nightly-digest.sh" #!/usr/bin/env bash set -euo pipefail export AGENT_SERVE_API_KEY="${AGENT_SERVE_API_KEY:?missing}" export AGENT_SERVE_WORKSPACE="${AGENT_SERVE_WORKSPACE:?missing}" export AGENT_SERVE_OUTPUT=json run_id=$(agentserve workflows run 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 --input '{"source":"nightly"}' | jq -r '.runId') if [ "$(agentserve workflows runs get "$run_id" --workflow 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 | jq -r '.status')" != "completed" ]; then agentserve logs get "$run_id" >&2 exit 1 fi ``` --- # Secrets (/cli/secrets) `agentserve secrets` is also spelled `agentserve secret`. Every command below also accepts the [global options](/cli/commands#global-options). ## Delete secret [#delete-secret] ```bash agentserve secrets delete [options] ``` Delete Secret (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ----------------- | | `name` | Yes | Secret to delete. | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Whether the secret belongs to the workspace or to the caller. A personal secret belongs to the caller across every workspace, not to one workspace. Accepted values: `workspace`, `personal`. | | `-y, --yes` | Yes | Confirm this operation. | ## List secrets [#list-secrets] ```bash agentserve secrets list [options] ``` List Secrets (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Restrict results to one ownership scope. Accepted values: `workspace`, `personal`. | | `--search ` | No | Case-insensitive substring match against the secret name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Create or replace a named secret, such as an API key or environment variable [#create-or-replace-a-named-secret-such-as-an-api-key-or-environment-variable] ```bash agentserve secrets set [options] ``` Create or replace a named secret, such as an API key or environment variable (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------------------- | | `name` | Yes | Secret name, as referenced in workflows | **Options** | Option | Required | Description | | ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Secret ownership scope. Accepted values: `workspace`, `personal`. | | `--value ` | No | Secret value. Passing it inline exposes it to shell history and process listings; @path reads it from a file and @- from stdin, verbatim — a trailing newline is part of the value, so write the file with printf rather than echo. Prefix a literal leading @ with a second one. | | `--description ` | No | What the secret is for, shown to teammates; workspace scope only. Omit to leave an existing description unchanged. | | `--unredacted` | No | Opt the workspace secret out of redaction: its value then appears in plaintext in run logs, model-visible content, and files, including publicly shared log links. Workspace scope only — sending it for a personal secret is rejected. Omit it to leave the current setting untouched. Pass --no-unredacted to restore redaction. | | `--no-unredacted` | No | Send --unredacted as false. | --- # Selectors (/cli/selectors) Every command below also accepts the [global options](/cli/commands#global-options). ## Get selector option [#get-selector-option] ```bash agentserve selectors get [options] ``` Get Selector Option (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `coda.docs`, `coda.pages`, `coda.tables`, `coda.columns`, `coda.rows`, `coda.formulas`, `coda.controls`, `coda.folders`, `coda.permissions`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `fivetran.groups`, `fivetran.connections`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `helpscout.mailboxes`, `helpscout.assignees`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `powerbi.workspaces`, `powerbi.datasets`, `powerbi.reports`, `planetscale.databases`, `planetscale.branches`, `planetscale.backups`, `planetscale.deployRequests`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `agentserve.workflows`, `table.columns`, `table.outputColumns`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`, `providers.openrouterImageModels`, `providers.openrouterVideoModels`, `providers.openrouterSpeechModels`, `providers.openrouterMusicModels`, `providers.openrouterMediaAspectRatios`, `providers.openrouterMediaResolutions`, `providers.openrouterMediaDurations`, `providers.openrouterSpeechVoices`, `providers.openrouterTranscriptionModels`, `decisions.models`. | | `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). | | `--id ` | Yes | Resource identifier. | ## List selector options [#list-selector-options] ```bash agentserve selectors list [options] ``` List Selector Options (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--selector-key ` | Yes | Registered selector key for discovering this field’s destination options. Accepted values: `airtable.bases`, `airtable.tables`, `asana.workspaces`, `attio.lists`, `attio.objects`, `bigquery.datasets`, `bigquery.tables`, `bitbucket.workspaces`, `bitbucket.repositories`, `calcom.eventTypes`, `calcom.schedules`, `clickup.workspaces`, `clickup.spaces`, `clickup.folders`, `clickup.lists`, `coda.docs`, `coda.pages`, `coda.tables`, `coda.columns`, `coda.rows`, `coda.formulas`, `coda.controls`, `coda.folders`, `coda.permissions`, `confluence.spaces`, `confluence.spacesById`, `confluence.pages`, `google.tasks.lists`, `fivetran.groups`, `fivetran.connections`, `gmail.labels`, `google.calendar`, `google.drive`, `google.sheets`, `harmonic.savedSearches`, `helpscout.mailboxes`, `helpscout.assignees`, `hubspot.lists`, `hubspot.owners`, `hubspot.pipelines`, `hubspot.pipelineStages`, `hubspot.properties`, `jsm.requestTypes`, `jsm.serviceDesks`, `microsoft.planner.plans`, `notion.databases`, `notion.pages`, `netsuite.recordTypes`, `netsuite.asyncTasks`, `pipedrive.pipelines`, `sharepoint.lists`, `trello.boards`, `zoho_desk.organizations`, `zoho_desk.departments`, `zoho_desk.agents`, `zoom.meetings`, `slack.channels`, `snowflake.databases`, `snowflake.schemas`, `snowflake.tables`, `snowflake.warehouses`, `snowflake.roles`, `snowflake.fileFormats`, `snowflake.procedures`, `slack.users`, `outlook.folders`, `outlook.calendars`, `microsoft.teams`, `microsoft.chats`, `microsoft.channels`, `microsoft.planner`, `onedrive.files`, `onedrive.folders`, `sharepoint.sites`, `microsoft.excel`, `microsoft.excel.drives`, `microsoft.excel.sheets`, `microsoft.word`, `wealthbox.contacts`, `jira.issues`, `jira.projects`, `jira.projectKeys`, `linear.projects`, `linear.teams`, `monday.boards`, `monday.groups`, `webflow.sites`, `webflow.collections`, `webflow.items`, `powerbi.workspaces`, `powerbi.datasets`, `powerbi.reports`, `planetscale.databases`, `planetscale.branches`, `planetscale.backups`, `planetscale.deployRequests`, `cloudwatch.logGroups`, `cloudwatch.logStreams`, `imap.mailboxes`, `mcp.tools`, `managedAgent.agents`, `managedAgent.environments`, `managedAgent.vaults`, `managedAgent.memoryStores`, `knowledge.documents`, `agentserve.workflows`, `table.columns`, `table.outputColumns`, `workspace.secretNames`, `workspace.sandboxes`, `providers.ollamaEmbeddingModels`, `providers.openrouterEmbeddingModels`, `providers.openrouterImageModels`, `providers.openrouterVideoModels`, `providers.openrouterSpeechModels`, `providers.openrouterMusicModels`, `providers.openrouterMediaAspectRatios`, `providers.openrouterMediaResolutions`, `providers.openrouterMediaDurations`, `providers.openrouterSpeechVoices`, `providers.openrouterTranscriptionModels`, `decisions.models`. | | `--context ` | No | Only the dependencies declared by the selector, such as oauthCredential and channelId. Missing OAuth connections require human authorization. (JSON, or @path / @- to read a file or stdin). | | `--search ` | No | Provider option search text. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | --- # Semantic Model (/cli/semantic-model) Every command below also accepts the [global options](/cli/commands#global-options). ## Query semantic model [#query-semantic-model] ```bash agentserve semantic-model query [options] ``` Query Semantic Model (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--source ` | No | Which model to query. Omit it to query the model you read in the app: your draft while draft mode is on, otherwise the published model. Accepted values: `published`, `draft`. | | `--measures ` | Yes | Measures to compute. (JSON, or @path / @- to read a file or stdin). | | `--dimensions ` | No | Attributes to group by. (JSON, or @path / @- to read a file or stdin). | | `--where ` | No | Equality conditions keyed by `entity.attribute`, all of which must hold. (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Sort order of the result rows. (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Most rows to return. Defaults to 100. | --- # Skills (/cli/skills) `agentserve skills` is also spelled `agentserve skill`. Every command below also accepts the [global options](/cli/commands#global-options). ## Create skill [#create-skill] ```bash agentserve skills create [options] ``` Create Skill (OAuth login or personal API key required) **Options** | Option | Required | Description | | ----------------------- | -------- | ---------------------------------------------------------------------------------- | | `--name ` | Yes | Kebab-case name, unique within the workspace and not reserved by a built-in skill. | | `--description ` | Yes | One-line summary of when the skill applies. | | `--content ` | Yes | Skill body containing the instructions given to the agent. | ## Delete skill [#delete-skill] ```bash agentserve skills delete [options] ``` Delete Skill (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get skill [#get-skill] ```bash agentserve skills get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | ## Grant skill editor [#grant-skill-editor] ```bash agentserve skills editors create [options] ``` Grant Skill Editor (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------- | -------- | -------------------------------------------- | | `--email ` | Yes | Email address of a current workspace member. | ## List skill editors [#list-skill-editors] ```bash agentserve skills editors list [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `email`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Revoke skill editor [#revoke-skill-editor] ```bash agentserve skills editors delete [options] ``` Revoke Skill Editor (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------- | -------- | -------------------------------------------- | | `--email ` | Yes | Email address of a current workspace member. | | `-y, --yes` | Yes | Confirm this operation. | ## List skills [#list-skills] ```bash agentserve skills list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the skill name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update skill [#update-skill] ```bash agentserve skills update [options] ``` Update Skill (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `skillId` | Yes | Unique skill identifier. A built-in skill is `builtin-` followed by its name, for example `builtin-research`. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------------------------- | | `--name ` | No | New kebab-case skill name. | | `--description ` | No | New one-line summary of when the skill applies. | | `--content ` | No | Replacement skill body. | --- # Slides (/cli/slides) Every command below also accepts the [global options](/cli/commands#global-options). ## Export presentation [#export-presentation] ```bash agentserve slides export [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------- | | `docId` | Yes | The deck to export. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------------- | | `--format ` | Yes | `pptx` for PowerPoint, `pdf` for a PDF of the slides. Accepted values: `pptx`, `pdf`. | ## Get slides job [#get-slides-job] ```bash agentserve slides jobs get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------- | | `jobId` | Yes | Job identifier. | ## List slides templates [#list-slides-templates] ```bash agentserve slides templates list ``` ## Start presentation [#start-presentation] ```bash agentserve slides presentations create [options] ``` Start Presentation (OAuth login or personal API key required) **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--space-id ` | Yes | Space the new deck is created in. | | `--title ` | Yes | Title of the new deck. | | `--content ` | Yes | What the deck should say: the audience, the story and the facts to use. | | `--n-slides ` | No | How many slides to write. The Slides AI decides when omitted. | | `--template-id ` | No | Template to lay the deck out with, from List Slides Templates. Default `general`. | | `--language ` | No | Language to write the slides in, for example `English` or `Deutsch`. | | `--tone ` | No | Tone of the writing, for example `formal` or `casual`. | | `--instructions ` | No | Further instructions for the Slides AI. | | `--file-ids ` | No | Workspace files whose text the deck should draw on. Upload them with the Files operations first; you need read access to each. (JSON, or @path / @- to read a file or stdin). | | `--export ` | No | Also export the finished deck to a file saved in the workspace Files. `none` skips the export. Accepted values: `pptx`, `pdf`, `none`. | --- # Spaces (/cli/spaces) Every command below also accepts the [global options](/cli/commands#global-options). ## Get space doc [#get-space-doc] ```bash agentserve spaces docs get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------- | | `spaceId` | Yes | Space identifier. | | `docId` | Yes | Doc identifier. | ## List space docs [#list-space-docs] ```bash agentserve spaces docs list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------- | | `spaceId` | Yes | Space identifier. | ## List spaces [#list-spaces] ```bash agentserve spaces list ``` --- # Tables (/cli/tables) `agentserve tables` is also spelled `agentserve table`. Every command below also accepts the [global options](/cli/commands#global-options). ## Add column [#add-column] ```bash agentserve tables columns create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------ | | `--column ` | Yes | Column definition to add. (JSON, or @path / @- to read a file or stdin). | ## Delete column [#delete-column] ```bash agentserve tables columns delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------- | | `--column-name ` | Yes | Name of the column to delete. | | `-y, --yes` | Yes | Confirm this operation. | ## Update column [#update-column] ```bash agentserve tables columns update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------- | | `--column-name ` | Yes | Current name of the column to update. | | `--updates ` | Yes | Mutable column fields. (JSON, or @path / @- to read a file or stdin). | ## Add workflow group [#add-workflow-group] ```bash agentserve tables groups create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------ | | `--group ` | Yes | Workflow or enrichment producer definition. (JSON, or @path / @- to read a file or stdin). | | `--output-columns ` | Yes | Columns created for producer outputs. (JSON, or @path / @- to read a file or stdin). | | `--auto-run` | No | Whether to schedule existing rows after group creation. | | `--no-auto-run` | No | Send --auto-run as false. | ## Delete workflow group [#delete-workflow-group] ```bash agentserve tables groups delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | -------------------- | -------- | ------------------------- | | `--group-id ` | Yes | Workflow group to delete. | | `-y, --yes` | Yes | Confirm this operation. | ## List workflow groups [#list-workflow-groups] ```bash agentserve tables groups list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ## Update workflow group [#update-workflow-group] ```bash agentserve tables groups update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--group-id ` | Yes | Workflow group to update. | | `--workflow-id ` | No | Replacement backing workflow identifier. | | `--name ` | No | Replacement workflow-group display name. | | `--dependencies ` | No | Replacement input dependencies. (JSON, or @path / @- to read a file or stdin). | | `--outputs ` | No | Replacement producer outputs. (JSON, or @path / @- to read a file or stdin). | | `--new-output-columns ` | No | Columns to add for new outputs. (JSON, or @path / @- to read a file or stdin). | | `--mapping-updates ` | No | Existing output-column mapping changes. (JSON, or @path / @- to read a file or stdin). | | `--input-mappings ` | No | Replacement workflow input mappings. (JSON, or @path / @- to read a file or stdin). | | `--deployment-mode ` | No | Replacement workflow execution mode. Accepted values: `live`, `deployed`. | | `--type ` | No | Workflow-group producer type. Must match the group's stored type — a group's producer cannot be changed after creation. Accepted values: `manual`, `enrichment`. | | `--auto-run` | No | Replacement automatic-run setting. | | `--no-auto-run` | No | Send --auto-run as false. | ## Bulk delete tables and folders [#bulk-delete-tables-and-folders] ```bash agentserve tables batch-delete [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `--table-ids ` | No | Tables to archive, by identifier. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ## Apply a distinct patch to each listed row [#apply-a-distinct-patch-to-each-listed-row] ```bash agentserve tables rows update-each [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `--updates ` | Yes | One merge patch per row. Each row identifier may appear at most once. (JSON, or @path / @- to read a file or stdin). | ## Create rows [#create-rows] ```bash agentserve tables rows create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------- | | `--data ` | No | One row keyed by column name (JSON, or @path / @-; choose exactly one body flag). | | `--rows ` | No | Several rows keyed by column name (JSON, or @path / @-; choose exactly one body flag). | ## Delete row [#delete-row] ```bash agentserve tables rows delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Delete rows matching a filter, or an explicit list of ids [#delete-rows-matching-a-filter-or-an-explicit-list-of-ids] ```bash agentserve tables rows batch-delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum matching rows to delete. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). | | `--row ` | No | Explicit row identifiers to delete. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ## Get row [#get-row] ```bash agentserve tables rows get [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------- | | `--include-run-state` | No | Include per-workflow-group run state on the returned row. Off by default. | | `--no-include-run-state` | No | Send --include-run-state as false. | ## List rows [#list-rows] ```bash agentserve tables rows list [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--include-run-state` | No | Include per-workflow-group run state on every returned row. Off by default: run state is a separate sidecar read and its `blockErrors` are unbounded, so a full page carries it only when asked. Caps `limit` at 200. | | `--no-include-run-state` | No | Send --include-run-state as false. | ## Query rows with a filter and sort [#query-rows-with-a-filter-and-sort] ```bash agentserve tables rows query [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--filter ` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--include-run-state` | No | Include per-workflow-group run state on every returned row. Off by default: run state is a separate sidecar read and its `blockErrors` are unbounded, so a full page carries it only when asked. Incompatible with `limit: 0`, and caps `limit` at 200. | | `--no-include-run-state` | No | Send --include-run-state as false. | ## Count rows matching a filter [#count-rows-matching-a-filter] ```bash agentserve tables rows count [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--filter ` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | ## Run one row’s enrichment group [#run-one-rows-enrichment-group] ```bash agentserve tables rows enrich ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------ | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | | `groupId` | Yes | Workflow or enrichment group to run. | ## Search cells for a value and return their coordinates [#search-cells-for-a-value-and-return-their-coordinates] ```bash agentserve tables rows search [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--query ` | Yes | Value to search for. | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--sort ` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). | ## Update every row matching a filter [#update-every-row-matching-a-filter] ```bash agentserve tables rows batch-update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--filter ` | Yes | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--data ` | Yes | Row-data patch applied to every matching row. (JSON, or @path / @- to read a file or stdin). | | `--limit ` | No | Maximum matching rows to update. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). | | `-y, --yes` | Yes | Confirm this operation. | ## Update row [#update-row] ```bash agentserve tables rows update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------- | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------- | | `--data ` | Yes | Partial row-data patch keyed by column name. (JSON, or @path / @- to read a file or stdin). | ## Cancel a running dispatch [#cancel-a-running-dispatch] ```bash agentserve tables dispatches cancel [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `dispatchId` | Yes | Unique table run-dispatch identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Start a column or enrichment run [#start-a-column-or-enrichment-run] ```bash agentserve tables dispatches create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--group-ids ` | Yes | Workflow or enrichment groups to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--run-mode ` | No | Whether to run all or only incomplete cells. Accepted values: `all`, `incomplete`. | | `--row-ids ` | No | Explicit row subset to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--exclude-row-ids ` | No | Rows excluded from a select-all run scope. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--max-rows ` | No | Stop after this many eligible rows have run (1-1,000,000). Omit for an unbounded run. | ## Get run dispatch [#get-run-dispatch] ```bash agentserve tables dispatches get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `dispatchId` | Yes | Unique table run-dispatch identifier. | ## List active run dispatches [#list-active-run-dispatches] ```bash agentserve tables dispatches list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ## Stop a running export [#stop-a-running-export] ```bash agentserve tables exports cancel ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ## Create table export [#create-table-export] ```bash agentserve tables exports create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | --------------------------------------------------- | | `--format ` | No | Export file format. Accepted values: `csv`, `json`. | ## Get table export [#get-table-export] ```bash agentserve tables exports get ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ## Get the download URL for a finished export [#get-the-download-url-for-a-finished-export] ```bash agentserve tables exports download ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `tableId` | Yes | Unique table identifier. | | `exportId` | Yes | Unique table-export identifier. | ## Stop a running import [#stop-a-running-import] ```bash agentserve tables imports cancel [options] ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `importId` | Yes | Unique table-import identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get table import [#get-table-import] ```bash agentserve tables imports get ``` **Arguments** | Argument | Required | Description | | ---------- | -------- | ------------------------------- | | `importId` | Yes | Unique table-import identifier. | ## Stop every running column job [#stop-every-running-column-job] ```bash agentserve tables cancel-runs [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | Yes | Whether to cancel across the table or one row. Accepted values: `all`, `row`. | | `--row-id ` | No | Row whose runs should be canceled for row scope. | | `--filter ` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). | | `--exclude-row-ids ` | No | Rows excluded from an all-scope cancellation. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `-y, --yes` | Yes | Confirm this operation. | ## Create table [#create-table] ```bash agentserve tables create [options] ``` **Options** | Option | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Identifier: letters, numbers, and underscores; cannot start with a number. | | `--description ` | No | Optional table description. | | `--schema ` | Yes | Table schema: \{"columns":\[\{"name":"email","type":"string"}]} (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Create a table folder at a path [#create-a-table-folder-at-a-path] ```bash agentserve tables folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete folder [#delete-folder] ```bash agentserve tables folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ## List table folders [#list-table-folders] ```bash agentserve tables folders list [options] ``` Also available as `agentserve tables folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Rename or move a table folder [#rename-or-move-a-table-folder] ```bash agentserve tables folders move ``` Also available as `agentserve tables folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ## Restore an archived table folder [#restore-an-archived-table-folder] ```bash agentserve tables folders restore ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Create view [#create-view] ```bash agentserve tables views create [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Saved-view display name. | | `--config ` | Yes | Saved filter, sort, and column-layout configuration. (JSON, or @path / @- to read a file or stdin). | ## Delete view [#delete-view] ```bash agentserve tables views delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get view [#get-view] ```bash agentserve tables views get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | ## List views [#list-views] ```bash agentserve tables views list ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ## Update view [#update-view] ```bash agentserve tables views update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ----------------------------- | | `tableId` | Yes | Unique table identifier. | | `viewId` | Yes | Unique saved-view identifier. | **Options** | Option | Required | Description | | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------ | | `--name ` | No | Replacement saved-view display name. | | `--config ` | No | Complete replacement saved-view configuration. (JSON, or @path / @- to read a file or stdin). | | `--config-patch ` | No | Saved-view configuration fields to shallow-merge. (JSON, or @path / @- to read a file or stdin). | | `--default` | No | Whether to promote this view to the table default. | | `--no-default` | No | Send --default as false. | ## Delete table [#delete-table] ```bash agentserve tables delete [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get enrichment run detail [#get-enrichment-run-detail] ```bash agentserve tables enrichment get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------------------ | | `tableId` | Yes | Unique table identifier. | | `rowId` | Yes | Unique table row identifier. | | `groupId` | Yes | Workflow or enrichment group to run. | ## Get table [#get-table] ```bash agentserve tables get ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ## List tables [#list-tables] ```bash agentserve tables list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live tables, `archived` for tables a delete archived and a table restore can bring back. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Move tables and folders [#move-tables-and-folders] ```bash agentserve tables move [options] ``` **Options** | Option | Required | Description | | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--table-ids ` | No | Tables to move, by identifier. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Table folders to move, by path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | No | Destination folder path; omit for root. | ## Restore an archived table [#restore-an-archived-table] ```bash agentserve tables restore ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | ## Update table [#update-table] ```bash agentserve tables update [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------- | | `--name ` | No | Identifier: letters, numbers, and underscores; cannot start with a number. | | `--description ` | No | Replacement table description, or null to clear it. (--description null sends the word, not JSON null). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Move a table to a folder [#move-a-table-to-a-folder] ```bash agentserve tables mv ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `tableId` | Yes | Unique table identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ## Insert a row, or update the one that conflicts on a unique column [#insert-a-row-or-update-the-one-that-conflicts-on-a-unique-column] ```bash agentserve tables upsert [options] ``` **Arguments** | Argument | Required | Description | | --------- | -------- | ------------------------ | | `tableId` | Yes | Unique table identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--data ` | Yes | Complete set of row cells keyed by column name. On the update branch this REPLACES the matched row: any column not present here is cleared, unlike a single-row update, which merges. (JSON, or @path / @- to read a file or stdin). | | `--on ` | No | Unique column to resolve the conflict against. | ## Import a CSV, into a new table by default [#import-a-csv-into-a-new-table-by-default] ```bash agentserve tables import [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | --------------------------------------------------- | | `path` | No | Local CSV file to import; omit when using --file-id | **Options** | Option | Required | Description | | -------------------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `--name ` | No | Identifier for the new table: letters, numbers, and underscores; defaults to the sanitized file name. | | `--table-id ` | No | Import into this existing table instead of creating one. | | `--mode ` | No | How to write into --table-id (default: append). Accepted values: `append`, `replace`. | | `--folder ` | No | Folder path for the new table, as shown in the app. | | `--file-id ` | No | Import a file already in the workspace instead of a local path. | | `--mapping ` | No | Column mapping (--table-id only). | | `--create-columns ` | No | Columns to create (--table-id only). | | `--timezone ` | No | Timezone for date parsing, e.g. America/New\_York. | | `-y, --yes` | No | Confirm this destructive operation (required with --mode replace). | | `--no-wait` | No | Return once the import is queued instead of watching it. | ## List table resources and child folders together [#list-table-resources-and-child-folders-together] ```bash agentserve tables ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ## Create a table directory at a path [#create-a-table-directory-at-a-path] ```bash agentserve tables mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | --- # Telemetry (/cli/telemetry) Every command below also accepts the [global options](/cli/commands#global-options). ## Show whether usage reporting is on, and why not if it is off [#show-whether-usage-reporting-is-on-and-why-not-if-it-is-off] ```bash agentserve telemetry status ``` ## Turn usage reporting on for this machine [#turn-usage-reporting-on-for-this-machine] ```bash agentserve telemetry enable ``` ## Turn usage reporting off for this machine [#turn-usage-reporting-off-for-this-machine] ```bash agentserve telemetry disable ``` --- # Tools (/cli/tools) Every command below also accepts the [global options](/cli/commands#global-options). ## Run one built-in tool and print what it produced [#run-one-built-in-tool-and-print-what-it-produced] ```bash agentserve tools execute [options] ``` Run one built-in tool and print what it produced (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `toolId` | Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. | **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--input ` | No | Tool arguments as JSON, keyed by the parameter ids `agentserve tools get <toolId>` lists (JSON, or @path / @- to read a file or stdin). | | `--credential-id ` | No | Credential to authenticate with, required for OAuth tools. | | `--timeout ` | No | Seconds to wait before abandoning the call. | ## Get tool [#get-tool] ```bash agentserve tools get ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `toolId` | Yes | Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id. | ## List tools [#list-tools] ```bash agentserve tools list [options] ``` **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--search ` | No | Case-insensitive substring match against the tool id, name, and description. | | `--hosted-api-key ` | No | Restrict to tools by how their API key is supplied. Accepted values: `always`, `conditional`, `none`. | | `--oauth-provider ` | No | Restrict to tools that authenticate against this OAuth service. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `id`, `name`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | --- # Troubleshooting (/cli/troubleshooting) Most command errors print to stderr and exit `1`. `agentserve whoami` and `agentserve workflows runs wait` use additional codes to distinguish outcomes; see [Exit codes](/cli/scripting#exit-codes). The cases below explain failures whose cause may not be obvious from the message. Start with `agentserve whoami`. It prints the resolved endpoint, workspace, and output format, **and where each came from** — which explains most surprises on its own — then checks the resolved key against the API. Add `--no-verify` to skip the check and stay offline. ## A command targets the wrong workspace or deployment [#a-command-targets-the-wrong-workspace-or-deployment] Each setting resolves independently, and a flag beats the environment, which beats the profile. A stale `AGENT_SERVE_WORKSPACE` in your shell silently outranks the workspace you configured. ```bash agentserve whoami ``` API-key pairing sets the default workspace selected on its approval page. After OAuth login, set one with `agentserve configure --set-workspace `. The default target does not restrict your credential: use `--workspace` to reach another workspace that credential can access. ## An error ends in `— run: agentserve login --profile ` [#an-error-ends-in--run-agentserve-login---profile-name] The API rejected the key with a `401`. Either it was revoked, or it belongs to a different deployment than the endpoint you are pointed at — a key minted against a local stack will not authenticate against production. Check the endpoint before re-authenticating: ```bash agentserve whoami --profile ``` ## `Could not reach https://agentserve.valnoraelric.com: ` [#could-not-reach-httpsagentservevalnoraelriccom-reason] The request never got a response: DNS, TLS, a proxy, or a self-hosted stack that is not running. Confirm the endpoint the CLI actually used with `agentserve whoami`, and that it has the right scheme and port: ```bash agentserve configure --set-endpoint http://localhost:3000 --profile local ``` ## A JSON flag rejects a value that looks like valid JSON [#a-json-flag-rejects-a-value-that-looks-like-valid-json] Your shell consumed the quotes. Wrap the whole value in single quotes, or read it from a file: ```bash agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --filter '{"all":[{"field":"status","op":"eq","value":"open"}]}' agentserve tables rows query tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --filter @filter.json ``` ## A value looks truncated [#a-value-looks-truncated] `table` clips long cells to keep rows on one line. The data is not truncated — switch to a machine format to see it in full: ```bash agentserve logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --output json ``` ## `agentserve files get` refuses to print to the terminal [#agentserve-files-get-refuses-to-print-to-the-terminal] Writing arbitrary binary to an interactive terminal can corrupt it, so non-text content has to go to a file or a pipe: ```bash agentserve files get wf_8Kd2NpVrY6zTfQa3XwBmS -o ./image.png agentserve files get wf_8Kd2NpVrY6zTfQa3XwBmS | shasum ``` ## A stored output format is invalid [#a-stored-output-format-is-invalid] A higher-priority source still wins, so you can repair the profile without editing the file by hand: ```bash agentserve --output table configure --set-output json ``` ## A command is missing that the documentation describes [#a-command-is-missing-that-the-documentation-describes] The docs track the current release, so a command that exists here and not in `agentserve --help` usually means the installed CLI is older than the feature. Compare `agentserve --version` against the published version and upgrade: ```bash agentserve --version ``` Run `agentserve update` to update the active global installation. If this older release does not yet have the `update` command, upgrade with the package manager you installed it with — using a different one installs a second copy instead of replacing the executable on your `PATH`: ```bash npm install -g @agentserve/cli@latest ``` ```bash pnpm add -g @agentserve/cli@latest ``` ```bash bun add -g @agentserve/cli@latest ``` ```bash yarn global add @agentserve/cli@latest ``` The CLI also shows an optional update notice through a cached daily check on eligible interactive invocations. Your command continues, and you choose when to run `agentserve update`. Checks stay quiet when stderr is redirected, in CI, and under `npm exec` or `npx`. ## An update notice appears in output I am parsing [#an-update-notice-appears-in-output-i-am-parsing] It should not: the notice is written to stderr, never stdout, so `--output json` piped to `jq` is unaffected. If something merges the two streams, silence it: ```bash export AGENT_SERVE_NO_UPDATE_CHECK=1 ``` ## Anything else [#anything-else] An unexpected error prints a stack trace. That is a bug in the CLI — please [open an issue](https://github.com/Suryanandx/agent-serve-platform/issues) with the command you ran, the trace, and the output of `agentserve --version`. --- # Usage data (/cli/usage-data) The `agentserve` CLI reports anonymous usage data so the team can see which commands are used, which fail, and how long they take. Reporting is on by default and takes one command to turn off. ## What is sent [#what-is-sent] One event per command, after the command finishes: | Field | Example | Notes | | ---------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------- | | Command | `workflows list` | The command's name, never its arguments | | Flags | `--output`, `--workspace` | Flag names only, never their values | | Argument count | `1` | How many positional arguments, never what they were | | Outcome | exit code `0`, `AgentServeApiError`, HTTP `404`, API code `NOT_FOUND` | Never an error message | | Duration | `1432` ms | From process start to completion | | CLI, Node, OS, CPU | `2.1.2`, `22.14.0`, `darwin`, `arm64` | | | Terminal and CI | `is_tty`, `is_ci` | Whether stdout is a terminal, whether a CI variable is set | | Coding agent | `claude-code`, or `none` | The AI coding agent whose shell the CLI runs in, if any | | Deployment kind | `hosted` or `self_hosted` | Never the address | | Device and session ids | random UUIDs | See below | ## What is never sent [#what-is-never-sent] Nothing you type. No argument values, flag values, file paths, workflow or workspace ids, error messages, environment variable values, credentials, or the address of the deployment you talk to. The report leaves your machine from a separate short-lived process that is not given your API key. ## Location [#location] The report carries no location of its own. The analytics service derives an approximate location (country and city) from the address the report arrived from, the way any HTTP request exposes one, and Agent Serve uses that only to see which regions use the CLI. ## Identity [#identity] The first run mints a random device id and stores it in `telemetry.json` under `~/.agent-serve` (or `AGENT_SERVE_CONFIG_DIR`). It is not derived from your hardware, account, or network. Commands run within thirty minutes of each other share a session id and are numbered, so a sequence of commands can be read back. No profile is created for the device, and the data is not joined to your Agent Serve account. Deleting `telemetry.json` forgets the device id and shows the first-run notice again. ## Turning it off [#turning-it-off] Any of these turns reporting off. The first one that applies is the one `agentserve telemetry status` names. ```bash export DO_NOT_TRACK=1 # the cross-tool convention, honoured before anything else export AGENT_SERVE_TELEMETRY_DISABLED=1 # this CLI only, for one shell or CI job agentserve telemetry disable # this machine, saved in telemetry.json ``` `agentserve telemetry enable` reverses the saved setting. `agentserve telemetry status` shows the current state. Turning reporting off also stops the CLI from telling the API which coding agent, if any, is driving it. The CLI still identifies itself as the CLI on every request, the way every official client does; that is how a request is attributed, not usage data. ## The first-run notice [#the-first-run-notice] The first time the CLI would report from an interactive terminal it prints a short notice on stderr and does not report that run. The notice is not shown in CI or when stderr is redirected, and it is shown once per device. ## Self-hosted deployments [#self-hosted-deployments] Reporting is tied to the CLI build, not to the deployment it talks to. The published `agentserve` package reports to Agent Serve. A build made from the repository without `AGENT_SERVE_CLI_TELEMETRY_KEY` set has no destination and reports nothing; setting it to your own PostHog project token at build time reports to your own project. --- # Workflow MCP Servers (/cli/workflow-mcp-servers) Every command below also accepts the [global options](/cli/commands#global-options). ## Create workflow MCP server [#create-workflow-mcp-server] ```bash agentserve workflow-mcp-servers create [options] ``` Create Workflow MCP Server (OAuth login or personal API key required) **Options** | Option | Required | Description | | ----------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Server display name, shown to connecting MCP clients. | | `--description ` | No | Optional server description. | | `--is-public` | No | Whether the server answers MCP clients without an Agent Serve API key. Defaults to false — a public server executes the workflows it publishes for anyone holding its URL. | | `--no-is-public` | No | Send --is-public as false. | | `--workflow ` | No | Deployed workflows to publish as tools on the new server. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | ## Delete workflow MCP server [#delete-workflow-mcp-server] ```bash agentserve workflow-mcp-servers delete [options] ``` Delete Workflow MCP Server (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Publish workflow as MCP tool [#publish-workflow-as-mcp-tool] ```bash agentserve workflow-mcp-servers tools create [options] ``` Publish Workflow As MCP Tool (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ---------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow-id ` | Yes | Deployed workflow to publish. The workflow must already be deployed. | | `--tool-name ` | No | Name MCP clients call. Normalized to the MCP tool-name grammar, and derived from the workflow name when omitted. | | `--tool-description ` | No | Description shown to MCP clients. Derived from the workflow name when omitted. | | `--parameter-descriptions ` | No | Per-field description overrides applied to the schema generated from the deployed workflow inputs, as \[\{"name":"email","description":"Customer email address"}]. A name matching no input field is ignored (JSON, or @path / @- to read a file or stdin). | ## List workflow MCP tools [#list-workflow-mcp-tools] ```bash agentserve workflow-mcp-servers tools list ``` List Workflow MCP Tools (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | ## Unpublish workflow MCP tool [#unpublish-workflow-mcp-tool] ```bash agentserve workflow-mcp-servers tools delete [options] ``` Unpublish Workflow MCP Tool (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | -------------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | | `workflowId` | Yes | Workflow published as a tool on this server. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Get workflow MCP server [#get-workflow-mcp-server] ```bash agentserve workflow-mcp-servers get ``` Get Workflow MCP Server (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | ## List workflow MCP servers [#list-workflow-mcp-servers] ```bash agentserve workflow-mcp-servers list [options] ``` List Workflow MCP Servers (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Update workflow MCP server [#update-workflow-mcp-server] ```bash agentserve workflow-mcp-servers update [options] ``` Update Workflow MCP Server (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ---------- | -------- | -------------------------------------- | | `serverId` | Yes | Unique workflow-MCP server identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------ | | `--name ` | No | Server display name, shown to connecting MCP clients. | | `--description ` | No | New server description, or null to clear it. (--description null sends the word, not JSON null). | | `--is-public` | No | Whether the server answers MCP clients without an Agent Serve API key. | | `--no-is-public` | No | Send --is-public as false. | --- # Workflow imports and workspace sync (/cli/workflow-sync) Use an explicit profile and workspace for every environment. Fork administration requires a personal API key or OAuth login; workspace API keys cannot administer fork edges. Fork creation requires source admin access. Sync and mapping changes require admin access on both workspaces. These commands use the same v2 operations as a direct API client. See the [API workflow guide](/api-reference/workflow-sync) for HTTP requests, response envelopes, and the command-to-endpoint mapping. CLI JSON output unwraps single-resource responses, so read `.previewFingerprint`; raw HTTP clients read `.data.previewFingerprint`. ## Import a workflow with destination bindings [#import-a-workflow-with-destination-bindings] Portable export is opt-in. It adds a versioned reference manifest to the sanitized graph; credentials and secret values stay in their original workspace. ```sh agentserve --profile source --workspace "$SOURCE_WORKSPACE" --output json \ workflows export "$WORKFLOW_ID" --include-references > workflow.json agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ workflows import-preview --workflow @workflow.json > preview.json ``` Read `unresolvedBindings` and `unresolvedConfiguration`. Resource mappings select a destination by resource kind and source ID. For example, `mappings.json` can contain: ```json [ { "kind": "credential", "sourceId": "source-connection", "targetId": "destination-connection" }, { "kind": "sandbox", "sourceId": "source-sandbox", "targetId": "destination-sandbox" } ] ``` Use the existing credentials, tables, files, sandboxes, and other resource commands to discover or create destination resources. An older export without reference metadata can use `--bindings @bindings.json` to address individual source fields. For example, a nested Agent tool's credential binding is: ```json [ { "kind": "credential", "blockId": "source-agent", "subBlockKey": "tools", "valuePath": [0, "params", "oauthCredential"], "encoding": "scalar", "targetId": "destination-connection" } ] ``` Use the field path and encoding registered for the actual export. A top-level field uses its own `subBlockKey` and `valuePath: []`. Field bindings have no `sourceId`; they address an occurrence directly. Conflicting resource mappings and field bindings are rejected. Include `--bindings` on both preview and apply when using them. Dependent choices use the selector key and destination context returned by preview. For example: ```sh agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ selectors list --selector-key gmail.labels \ --context '{"oauthCredential":"destination-connection"}' ``` MCP tool discovery uses `mcp.tools` with `mcpServerId`. OAuth connections may require a human to authorize the provider before discovery can succeed. Import dependent values use source block IDs and field keys: ```json [{ "blockId": "source-agent", "subBlockKey": "tools[0].folder", "value": "destination-label" }] ``` Preview again with the exact choices, then apply with that fingerprint and a request ID saved by your client: ```sh agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ workflows import-preview --workflow @workflow.json \ --mappings @mappings.json --dependent-values @values.json > preview.json agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ workflows import --workflow @workflow.json \ --mappings @mappings.json --dependent-values @values.json \ --preview-fingerprint "$(jq -r .previewFingerprint preview.json)" \ --request-id "$REQUEST_ID" --wait ``` Mapped import creates a draft atomically after required bindings and configuration are resolved. The receipt includes the imported IDs and `idMap`. Imports without mapping options retain the existing behavior; they do not return a durable operation receipt. Supplying mapping options, even an empty `--mappings '[]'`, requires both `--request-id` and `--preview-fingerprint`. JSON flags accept `@file` and `@-` for stdin. ## Fork, push, and pull [#fork-push-and-pull] Inspect `workspaces fork-availability`, `lineage`, and `fork-resources`, then use `fork-preview` and `fork` with identical name and copy selections. A fork creates child drafts; resource copying must be explicitly selected. ```sh agentserve --profile source --workspace "$SOURCE_WORKSPACE" --output json \ workspaces fork-resources --kind tables --limit 50 agentserve --profile source --workspace "$SOURCE_WORKSPACE" --output json \ workspaces fork-preview --name "Review environment" \ --copy '{"tables":["source-table"]}' > fork-preview.json agentserve --profile source --workspace "$SOURCE_WORKSPACE" --output json \ workspaces fork --name "Review environment" \ --copy '{"tables":["source-table"]}' \ --preview-fingerprint "$(jq -r .previewFingerprint fork-preview.json)" \ --request-id "$FORK_REQUEST_ID" --wait ``` Push means the current workspace sends its deployed workflows to `--other-workspace-id`. Pull means the other workspace sends them to the current workspace. These meanings are the same on either side of the edge. ```sh agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ workspaces pull-preview --other-workspace-id "$SOURCE_WORKSPACE" > sync-preview.json agentserve --profile destination --workspace "$DESTINATION_WORKSPACE" --output json \ workspaces pull --other-workspace-id "$SOURCE_WORKSPACE" \ --preview-fingerprint "$(jq -r .previewFingerprint sync-preview.json)" \ --request-id "$SYNC_REQUEST_ID" --yes --wait ``` Include the same inline mappings and dependent values on preview and apply. Sync values identify `sourceWorkflowId`, `sourceBlockId`, and `subBlockKey`; preview target IDs are not stable public override identities. Sync mapping entries use `resourceType`, `sourceId`, and `targetId` as returned by mapping inspection; import entries use `kind`. Inline sync mappings persist on the fork edge in the same transaction as the sync. `workspaces mappings get` also returns a storage `id` on each row. Strip it before reusing a result as input: `jq '[.data[] | {resourceType, sourceId, targetId}]'`. Use `oauth_credential` or `service_account_credential` for sync credential mappings, according to the credential type. For example, `--mappings` and `--dependent-values` take these respective arrays: ```json [{ "resourceType": "oauth_credential", "sourceId": "source-connection", "targetId": "destination-connection" }] ``` ```json [{ "sourceWorkflowId": "source-workflow", "sourceBlockId": "source-agent", "subBlockKey": "tools[0].folder", "value": "destination-label" }] ``` Use `--copy-resources` for sync copies, such as `'{"tables":["source-table"]}'`; fork creation uses `--copy`. Fork `copy.files` takes workspace file IDs; sync `copyResources.files` takes storage keys. Neither copies credentials or secret values. For each sync configuration field, run selector discovery in its `discoveryWorkspaceId` with the returned context. This is the source workspace when the parent resource is being copied, and the destination workspace for an existing mapping. Use the returned field key unchanged, including nested tool indices. When `multiSelect` is true, send selected IDs as one comma-separated string. Saved sync choices apply when `--dependent-values` is omitted. Supplying the flag replaces saved choices for the affected workflows; an explicit `[]` clears them. Values that exist only in a target draft are not saved sync choices. Sync preview's `ready` describes whether the change can commit; it does not report deployment readiness. Sync replaces eligible target workflows and deploys the admitted snapshots. It preserves exclusions. Deleting a source can archive its mapped target; merely undeploying it does not. Rollback restores the latest target sync using prior deployed versions, and does not restore arbitrary drafts or undo every resource copy. Inspect preview's `triggerSlots` before replacing webhook triggers. Slots with `ownPath` keep it. For other slots, `--trigger-mappings` accepts entries with `sourceWorkflowId`, `sourceBlockId`, and `adoptPath` selected from `adoptablePaths`, or `null` for a new URL. Pass the identical choices to preview and apply; unknown, duplicate, and unavailable choices are rejected. ## Reconcile completion and retries [#reconcile-completion-and-retries] A successful apply returns `operationId`, `requestId`, `applied`, `status`, resource IDs, and structured issues. `applied: true` means the transaction committed, even if later copying or deployment fails. Poll in the receipt's `workspaceId`, which may differ from the workspace receiving workflows: | Operation | Receipt workspace | | ------------- | ---------------------------------------------- | | Import | Destination workspace | | Fork creation | Source workspace on which `fork` ran | | Push or pull | Current `--workspace` on which the command ran | ```sh agentserve --profile automation --workspace "$OPERATION_WORKSPACE_ID" --output json \ workspaces operations wait "$OPERATION_ID" --wait-timeout 300 ``` If the response was lost, use `workspaces operations list --request-id "$REQUEST_ID"` in that same workspace, or retry the identical mutation. List results retain `{ "data": [...], "nextCursor": ... }`; single operation and preview results are unwrapped. Operation lists contain stored snapshots; use `operations get` or `operations wait` to refresh completion status. Verify deployment readiness before treating a synced environment as ready. Inspect trigger URL changes and configuration issues in the report. Completion with warnings exits successfully; required configuration exits 3, failed completion exits 1, and wait timeout exits 4. Timeout and uncertain-mutation diagnostics retain reconciliation IDs. After a lost response, retry the exact mutation with the original request ID. Identical retries return the same operation. Changing inputs under that ID returns 409. If a preview is stale and nothing committed, request a new preview and use a new request ID for the revised request. The CLI never invents a fresh ID to retry an uncertain mutation. ## Validation boundary [#validation-boundary] The repository's `bun run test:workflow-sync` harness starts a disposable PostgreSQL database and exercises real authorization, v2 HTTP adapters, CLI subprocesses, transactions, receipts, and deployment workers. External provider responses and the separate realtime process use controlled fixtures. This covers platform behavior and failure recovery; a provider connection still needs validation in the destination environment. Completed imports and forks are drafts. For sync, check the report's deployment readiness and copied-resource progress before using the environment. --- # Workflows (/cli/workflows) `agentserve workflows` is also spelled `agentserve workflow`. Every command below also accepts the [global options](/cli/commands#global-options). ## Activate workflow version [#activate-workflow-version] ```bash agentserve workflows activate create [options] ``` Activate Workflow Version (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Edit a workflow’s blocks, connections and settings with a batch of operations [#edit-a-workflows-blocks-connections-and-settings-with-a-batch-of-operations] ```bash agentserve workflows operations apply [options] ``` Edit a workflow’s blocks, connections and settings with a batch of operations (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--dry-run` | No | Validate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect `lint` and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified. | | `--no-dry-run` | No | Send --dry-run as false. | | `--operations ` | Yes | Edits to apply, in a single batch, keyed by operation\_type: \[\{"operation\_type":"add","block\_id":"my-fn","params":\{"type":"function","name":"My Fn","inputs":\{"code":"return \{ok:true}"}}},\{"operation\_type":"edit","block\_id":"\","params":\{"name":"Renamed","connections":\{"success":"my-fn"}}},\{"operation\_type":"delete","block\_id":"\"}]. Also extract\_from\_subflow, whose params carry \{"subflowId":"\"}, and insert\_into\_subflow, which creates a block and so takes an add’s params plus that subflowId (JSON, or @path / @- to read a file or stdin). | | `--atomic` | No | Fail the whole batch when any operation is declined or any block input would be dropped. The default applies what it can and reports the rest in `skipped` and `inputValidationErrors`; `true` writes nothing and answers `409` instead. | | `--no-atomic` | No | Send --atomic as false. | | `--layout ` | No | Whether to reposition blocks the batch touched. `targeted` (default) nudges only the affected subgraph; `none` leaves every position exactly as supplied. Accepted values: `targeted`, `none`. | | `--set-block-enabled ` | No | Blocks to enable or disable, applied after --operations: \[\{"block\_id":"\","enabled":false}]. Disabling a loop or parallel cascades to its unlocked descendants; enabling a block whose container is disabled is declined (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | No | Confirm this operation (required unless --dry-run). | ## Update workflow variables [#update-workflow-variables] ```bash agentserve workflows variables update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--operations ` | Yes | Variable changes to apply in order, keyed by operation: \[\{"operation":"add","name":"my\_var","type":"string","value":"hello"},\{"operation":"edit","name":"my\_var","value":"updated"},\{"operation":"delete","name":"my\_var"}] (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | Yes | Confirm this operation. | ## Cancel a running workflow run [#cancel-a-running-workflow-run] ```bash agentserve workflows runs cancel [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | ------------ | | `--workflow ` | Yes | Workflow ID. | ## Show run status [#show-run-status] ```bash agentserve workflows runs get [options] ``` Show run status (requested outputs are included in JSON or YAML output) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ---------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--include-output` | No | Include the final output in JSON or YAML output. | | `--select-output ` | No | Include blockId or blockId.path values in JSON or YAML output; block names are not resolved on a finished run (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-file-base64` | No | Inline each produced file's bytes as base64. Requires `includeOutput`. A file above the inline ceiling answers `413` naming its download path; fetch large files from `downloadPath` instead. | | `--no-include-file-base64` | No | Send --include-file-base64 as false. | | `--base64-max-bytes ` | No | Per-file inline ceiling, lowering but never raising the server limit of 16 MiB. | ## List runs for a workflow [#list-runs-for-a-workflow] ```bash agentserve workflows runs list [options] ``` **Options** | Option | Required | Description | | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--status ` | No | Filter by run status. Accepted values: `pending`, `running`, `completed`, `failed`, `cancelled`, `paused`. | | `--trigger ` | No | Filter by trigger type. | | `--start-date ` | No | Only include runs started at or after this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--end-date ` | No | Only include runs started at or before this UTC ISO 8601 timestamp, e.g. `2026-08-06T00:00:00Z`. A date without a time, or a timestamp carrying a UTC offset instead of `Z`, is rejected, as is year `0000`, which names no storable instant. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--order ` | No | Sort direction by run start time. This list is sortable only by run start time, so it takes `order` in place of `sortBy`/`sortOrder`, which it rejects. Accepted values: `asc`, `desc`. | ## Resume a paused run [#resume-a-paused-run] ```bash agentserve workflows runs resume [options] ``` Resume a paused run (output is included in JSON or YAML output) **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | ------------------------- | -------- | ------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--context ` | Yes | Pause context ID returned by run status. | | `--input ` | No | Resume input as JSON (JSON, or @path / @- to read a file or stdin). | ## Wait for a run to reach a terminal state, then show it [#wait-for-a-run-to-reach-a-terminal-state-then-show-it] ```bash agentserve workflows runs wait [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------- | | `runId` | Yes | Unique workflow run identifier. | **Options** | Option | Required | Description | | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow ID. | | `--wait-timeout ` | No | Give up after this many seconds, or 0 to wait indefinitely (default: 3600). Bounds the whole wait; AGENT\_SERVE\_TIMEOUT\_SECONDS bounds one request. | ## Compare workflow versions [#compare-workflow-versions] ```bash agentserve workflows versions compare [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------- | | `--base ` | Yes | Deployment version to compare from. | | `--target ` | Yes | Deployment version to compare to, in the same workflow. | ## Get workflow version [#get-workflow-version] ```bash agentserve workflows versions get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | ## List workflow versions [#list-workflow-versions] ```bash agentserve workflows versions list [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | -------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Update workflow version [#update-workflow-version] ```bash agentserve workflows versions update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version. | **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | New label for the deployment version. | | `--description ` | No | New release note for the deployment version, or null to clear it. (--description null sends the word, not JSON null). | ## Create workflow [#create-workflow] ```bash agentserve workflows create [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------- | | `--name ` | Yes | Workflow name. | | `--description ` | No | Optional workflow description. | | `--folder ` | No | Existing folder path (leading / optional); create it first with agentserve workflows mkdir \. | ## Create a workflow folder at a path [#create-a-workflow-folder-at-a-path] ```bash agentserve workflows folders create ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete workflow folder [#delete-workflow-folder] ```bash agentserve workflows folders delete [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | **Options** | Option | Required | Description | | ------------- | -------- | -------------------------------------- | | `--recursive` | No | Delete the folder and its descendants. | | `-y, --yes` | Yes | Confirm this operation. | ## List workflow folders [#list-workflow-folders] ```bash agentserve workflows folders list [options] ``` Also available as `agentserve workflows folders ls`. **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--parent ` | No | Direct parent folder path. | | `--search ` | No | Case-insensitive substring match against the folder name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Rename or move a workflow folder [#rename-or-move-a-workflow-folder] ```bash agentserve workflows folders move ``` Also available as `agentserve workflows folders mv`. **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------------- | | `path` | Yes | Folder path as shown in the app; the leading / is optional | | `destination` | Yes | Folder path as shown in the app; the leading / is optional | ## Delete workflow [#delete-workflow] ```bash agentserve workflows delete [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Take a workflow’s chat deployment offline [#take-a-workflows-chat-deployment-offline] ```bash agentserve workflows chat unpublish [options] ``` Take a workflow’s chat deployment offline (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Show a workflow’s chat deployment [#show-a-workflows-chat-deployment] ```bash agentserve workflows chat status ``` Show a workflow’s chat deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ## Publish or replace a workflow’s chat deployment [#publish-or-replace-a-workflows-chat-deployment] ```bash agentserve workflows chat publish [options] ``` Publish or replace a workflow’s chat deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--identifier ` | Yes | URL slug the deployed chat answers on. Must be free across live deployments. | | `--title ` | Yes | Title shown to visitors. | | `--description ` | No | Description shown to visitors. Omitted clears it. | | `--customizations ` | No | Presentation overrides. Omitted fields take platform defaults. (JSON, or @path / @- to read a file or stdin). | | `--auth-type ` | No | How visitors are gated. `public` leaves the chat open to anyone holding the URL. Accepted values: `public`, `password`, `email`, `sso`. | | `--password ` | No | Write-only password. Required whenever `authType` is `password`, and rejected otherwise. Never readable back. | | `--allowed-emails ` | No | Email addresses or domains admitted under `email` and `sso` gating. At least one is required for those modes. (JSON, or @path / @- to read a file or stdin). | | `--output-configs ` | No | Block outputs to surface to visitors. Omitted surfaces none. (JSON, or @path / @- to read a file or stdin). | | `--include-thinking` | No | Allow visitors to receive provider thinking events. | | `--no-include-thinking` | No | Send --include-thinking as false. | | `--include-tool-calls` | No | Allow visitors to receive tool lifecycle events. | | `--no-include-tool-calls` | No | Send --include-tool-calls as false. | | `-y, --yes` | Yes | Confirm this operation. | ## Deploy workflow [#deploy-workflow] ```bash agentserve workflows deploy [options] ``` Deploy Workflow (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------- | | `--name ` | No | Optional label for the deployment version. | | `--description ` | No | Optional release note for the deployment version. | ## Duplicate workflow [#duplicate-workflow] ```bash agentserve workflows duplicate create [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------ | -------- | ------------------------------------------------------------------------------- | | `--name ` | No | Name for the copy. Defaults to the source name, deduplicated within the folder. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Run a deployed workflow or execute saved state manually [#run-a-deployed-workflow-or-execute-saved-state-manually] ```bash agentserve workflows run [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--input ` | No | Trigger input as JSON (JSON, or @path / @- to read a file or stdin). | | `--async` | No | Queue the run and return immediately. | | `--execution-timeout-seconds ` | No | Maximum duration of an asynchronous run, in seconds, capped by the plan's execution timeout. Requires `async: true`; otherwise returns `400`. | | `--select-output ` | No | Return streamed outputs as blockName.path or childWorkflowId.blockName.path; selecting a child workflow applies to every invocation, requires --follow (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--include-file-base64` | No | Inline eligible output files as base64 content. Rejected when `async` is true. | | `--no-include-file-base64` | No | Send --include-file-base64 as false. | | `--base64-max-bytes ` | No | Maximum total bytes of file content to inline as base64, lowering but never raising the server limit of 16 MiB. Rejected when `async` is true. | | `--run-id ` | No | One-shot identifier for this run; NOT an idempotency key — reusing a claimed value fails with RUN\_ID\_CONFLICT instead of replaying the first result, and a fresh value starts another run. | | `--manual` | No | Run the current saved workflow state instead of the active deployment. | | `--trigger ` | No | Enter a manual run through this runnable trigger (requires --manual). | | `--mock-payload` | No | Use the selected trigger's server-derived mock payload (requires --manual). | | `--from-block ` | No | Run manually from this saved workflow block. | | `--source-run ` | No | Prior run whose persisted state supplies upstream outputs (requires --from-block). | | `--stop-after ` | No | Stop the run after this saved block, failing it if the run takes a path that skips the block; with --from-block on the same block, re-runs only that block (implies --manual). | | `--follow` | No | Stream the run as it happens; progress on stderr, result on stdout. The stream reports only success and output, so the result omits the run id and timings a non-streaming run returns. | | `--include-thinking` | No | Show model reasoning while following (requires --follow). | | `--include-tool-calls` | No | Show tool calls while following (requires --follow). | ## Print a workflow as a portable JSON document [#print-a-workflow-as-a-portable-json-document] ```bash agentserve workflows export [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------- | | `--include-references` | No | Include non-secret resource identities for mapped import. | ## Get workflow [#get-workflow] ```bash agentserve workflows get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ## Show a workflow’s current deployment [#show-a-workflows-current-deployment] ```bash agentserve workflows deployment status ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ## Update workflow public API access [#update-workflow-public-api-access] ```bash agentserve workflows deployment update [options] ``` Update Workflow Public API Access (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------- | | `--is-public-api ` | Yes | Whether the deployed workflow should accept unauthenticated public API execution. Accepted values: `true`, `false`. | ## Get workflow state [#get-workflow-state] ```bash agentserve workflows state get ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ## Replace workflow state [#replace-workflow-state] ```bash agentserve workflows state replace [options] ``` Replace Workflow State (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--dry-run` | No | Validate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect `lint` and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified. | | `--no-dry-run` | No | Send --dry-run as false. | | `--blocks ` | Yes | Blocks keyed by block id. (JSON, or @path / @- to read a file or stdin). | | `--edges ` | Yes | Directed connections between blocks. (JSON, or @path / @- to read a file or stdin). | | `--loops ` | No | Ignored on write: loop containers are recomputed from `blocks`. (JSON, or @path / @- to read a file or stdin). | | `--parallels ` | No | Ignored on write: parallel containers are recomputed from `blocks`. (JSON, or @path / @- to read a file or stdin). | | `--variables ` | No | Replacement variable set. Omit to leave the stored variables untouched. (JSON, or @path / @- to read a file or stdin). | | `-y, --yes` | No | Confirm this operation (required unless --dry-run). | ## Import workflow [#import-workflow] ```bash agentserve workflows import [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--name ` | No | Override for the imported workflow name. | | `--description ` | No | Override for the imported workflow description. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--bindings ` | No | Resolved and unresolved source occurrences with their destination selections. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | No | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | No | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | ## List workflows [#list-workflows] ```bash agentserve workflows list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--scope ` | No | Which lifecycle set to list: `active` (default) for live workflows, `archived` for workflows a `DELETE` archived. The folder filter resolves against active folders only, so pairing it with `archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--deployed-only` | No | Return only workflows with an active deployment when true. | | `--no-deployed-only` | No | Send --deployed-only as false. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | | `--search ` | No | Case-insensitive substring match against the resource name. | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `position`, `name`, `createdAt`, `updatedAt`, `runCount`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | ## Move workflows [#move-workflows] ```bash agentserve workflows move [options] ``` **Options** | Option | Required | Description | | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflows to move. Duplicates are collapsed. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--to ` | Yes | Destination folder path; / moves the workflows to the workspace root. | ## Preview workflow import [#preview-workflow-import] ```bash agentserve workflows import-preview [options] ``` **Options** | Option | Required | Description | | ---------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | | `--name ` | No | Override for the imported workflow name. | | `--description ` | No | Override for the imported workflow description. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--bindings ` | No | Resolved and unresolved source occurrences with their destination selections. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | ## Restore an archived workflow [#restore-an-archived-workflow] ```bash agentserve workflows restore ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | ## Revert workflow to version [#revert-workflow-to-version] ```bash agentserve workflows revert create [options] ``` Revert Workflow To Version (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | ----------------------------------------------------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `version` | Yes | Numeric deployment version, or `active` for the currently live version. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Rollback workflow [#rollback-workflow] ```bash agentserve workflows rollback [options] ``` Rollback Workflow (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------- | | `--to-version ` | No | Deployment version to reactivate. Omit to select the previous active version. | | `-y, --yes` | Yes | Confirm this operation. | ## Take a workflow out of deployment [#take-a-workflow-out-of-deployment] ```bash agentserve workflows undeploy [options] ``` Take a workflow out of deployment (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------- | -------- | ----------------------- | | `-y, --yes` | Yes | Confirm this operation. | ## Update workflow [#update-workflow] ```bash agentserve workflows update [options] ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | --------------------------- | | `workflowId` | Yes | Unique workflow identifier. | **Options** | Option | Required | Description | | ----------------------- | -------- | ----------------------------------------------------------------------------------------------------- | | `--name ` | No | Replacement workflow name. | | `--description ` | No | Replacement workflow description; null clears it. (--description null sends the word, not JSON null). | | `--folder ` | No | Folder path as shown in the app; the leading / is optional. | ## Move a workflow to a folder [#move-a-workflow-to-a-folder] ```bash agentserve workflows mv ``` **Arguments** | Argument | Required | Description | | ------------ | -------- | ---------------------------------------------------------- | | `workflowId` | Yes | Unique workflow identifier. | | `folder` | Yes | Folder path as shown in the app; the leading / is optional | ## List workflow resources and child folders together [#list-workflow-resources-and-child-folders-together] ```bash agentserve workflows ls [path] [options] ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | No | Folder path to list; defaults to the root folder | **Options** | Option | Required | Description | | ----------------- | -------- | --------------------------------------------------------------------- | | `--search ` | No | Filter folders and resources by name. | | `--limit ` | No | Maximum combined items to return (0 for everything). Defaults to `0`. | ## Create a workflow directory at a path [#create-a-workflow-directory-at-a-path] ```bash agentserve workflows mkdir ``` **Arguments** | Argument | Required | Description | | -------- | -------- | ------------------------------------------------ | | `path` | Yes | Folder path to create; the leading / is optional | --- # Workspaces (/cli/workspaces) `agentserve workspaces` is also spelled `agentserve workspace`. Every command below also accepts the [global options](/cli/commands#global-options). ## Cancel workspace access request [#cancel-workspace-access-request] ```bash agentserve workspaces access-requests cancel ``` Cancel Workspace Access Request (OAuth login or personal API key required) **Arguments** | Argument | Required | Description | | ----------- | -------- | -------------------------- | | `requestId` | Yes | Access request identifier. | ## Create workspace access request [#create-workspace-access-request] ```bash agentserve workspaces access-requests create [options] ``` Create Workspace Access Request (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--target ` | Yes | Target returned by Discover Workspace Access Requests or Discover Organization Access Requests. The target must currently be requestable. (JSON, or @path / @- to read a file or stdin). | | `--reason ` | No | Why the acting user needs this access. | ## Discover workspace access requests [#discover-workspace-access-requests] ```bash agentserve workspaces access-requests discover [options] ``` Discover Workspace Access Requests (OAuth login or personal API key required) **Options** | Option | Required | Description | | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--search ` | No | Case-insensitive substring match against the access item label. | | `--target-kind ` | No | Category of access to discover. Accepted values: `feature`, `integration`, `provider`, `model`, `tool`, `knowledge_connector`, `file_share_auth`, `chat_deploy_auth`, `usage_limit`. | | `--state ` | No | Filter by the acting user’s current access. Requestable items can be submitted for review. Accepted values: `allowed`, `requestable`, `unavailable`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `label`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## List my workspace access requests [#list-my-workspace-access-requests] ```bash agentserve workspaces access-requests mine [options] ``` List My Workspace Access Requests (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--status ` | No | Filter by request status; omit to include all statuses. Accepted values: `pending`, `fulfilled`, `declined`, `cancelled`, `closed`. | | `--sort-by ` | No | Field used to sort the result. Accepted values: `createdAt`, `targetLabel`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | ## Create workspace invitations [#create-workspace-invitations] ```bash agentserve workspaces invitations create [options] ``` Create Workspace Invitations (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--emails ` | Yes | Email addresses to invite. Each address is processed separately; inspect failed for unsuccessful recipients. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--permission ` | No | Workspace permission to grant. Existing workspace access is preserved. Accepted values: `admin`, `write`, `read`. | | `--membership ` | No | Organization membership: member or admin uses a seat when billing is enabled. External grants workspace access only and requires an eligible paid account when billing is enabled. Existing members of another organization remain external. Accepted values: `member`, `admin`, `external`. | ## Fork workspace [#fork-workspace] ```bash agentserve workspaces fork [options] ``` Fork Workspace (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Display name of the workflow or workspace. | | `--copy ` | No | Explicit resource selections to copy into the new fork; omitted resource kinds are not copied. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | ## Get workspace [#get-workspace] ```bash agentserve workspaces get ``` ## Get workspace fork availability [#get-workspace-fork-availability] ```bash agentserve workspaces fork-availability ``` Get Workspace Fork Availability (OAuth login or personal API key required) ## Get workspace fork lineage [#get-workspace-fork-lineage] ```bash agentserve workspaces lineage ``` Get Workspace Fork Lineage (OAuth login or personal API key required) ## Get workspace fork mappings [#get-workspace-fork-mappings] ```bash agentserve workspaces mappings get [options] ``` Get Workspace Fork Mappings (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--direction ` | Yes | Push means current to other; pull means other to current, independent of parent/child orientation. Accepted values: `push`, `pull`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`. | ## Update workspace fork mappings [#update-workspace-fork-mappings] ```bash agentserve workspaces mappings update [options] ``` Update Workspace Fork Mappings (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--direction ` | Yes | Push means current to other; pull means other to current, independent of parent/child orientation. Accepted values: `push`, `pull`. | | `--mappings ` | Yes | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | ## Get workspace operation [#get-workspace-operation] ```bash agentserve workspaces operations get ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ------------------------------------------------ | | `operationId` | Yes | Durable operation identifier to use for polling. | ## List workspace operations [#list-workspace-operations] ```bash agentserve workspaces operations list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ------------------------------------------------------------------ | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--request-id ` | No | Stable client request ID for reconciliation and identical retries. | ## Wait for copy and deployment readiness; exit 3 for configuration, 1 for failure, or 4 for timeout [#wait-for-copy-and-deployment-readiness-exit-3-for-configuration-1-for-failure-or-4-for-timeout] ```bash agentserve workspaces operations wait [options] ``` **Arguments** | Argument | Required | Description | | ------------- | -------- | ---------------------------------------------------- | | `operationId` | Yes | Operation ID returned by import, fork, push, or pull | **Options** | Option | Required | Description | | -------------------------- | -------- | -------------------------------------------------------- | | `--wait-timeout ` | No | Maximum total wait (default 3600; 0 waits indefinitely). | ## Get workspace permission config [#get-workspace-permission-config] ```bash agentserve workspaces permission-config ``` Get Workspace Permission Config (OAuth login or personal API key required) ## List workspace fork children [#list-workspace-fork-children] ```bash agentserve workspaces children [options] ``` List Workspace Fork Children (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `createdAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `desc`. | ## List workspace fork resources [#list-workspace-fork-resources] ```bash agentserve workspaces fork-resources [options] ``` List Workspace Fork Resources (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `100`. | | `--cursor ` | No | Continue from nextCursor returned by a previous result. | | `--kind ` | Yes | Resource or operation kind. Accepted values: `files`, `tables`, `knowledgeBases`, `customTools`, `skills`, `mcpServers`, `workflowMcpServers`. | | `--sort-by ` | No | Supported stable sort key for this collection. Accepted values: `id`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`. | ## List workspace members [#list-workspace-members] ```bash agentserve workspaces members [options] ``` **Options** | Option | Required | Description | | ------------- | -------- | ------------------------------------------------------------ | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## List workspaces [#list-workspaces] ```bash agentserve workspaces list [options] ``` **Options** | Option | Required | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--sort-by ` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `createdAt`, `updatedAt`. | | `--sort-order ` | No | Sort direction. Accepted values: `asc`, `desc`. | | `--limit ` | No | Maximum items to return (0 for everything). Defaults to `0`. | ## Preview workspace fork [#preview-workspace-fork] ```bash agentserve workspaces fork-preview [options] ``` Preview Workspace Fork (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | No | Display name of the workflow or workspace. | | `--copy ` | No | Explicit resource selections to copy into the new fork; omitted resource kinds are not copied. (JSON, or @path / @- to read a file or stdin). | ## Preview workspace pull [#preview-workspace-pull] ```bash agentserve workspaces pull-preview [options] ``` Preview Workspace Pull (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | ## Preview workspace push [#preview-workspace-push] ```bash agentserve workspaces push-preview [options] ``` Preview Workspace Push (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | ## Pull workspace [#pull-workspace] ```bash agentserve workspaces pull [options] ``` Pull Workspace (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | | `-y, --yes` | Yes | Confirm this operation. | ## Push workspace [#push-workspace] ```bash agentserve workspaces push [options] ``` Push Workspace (OAuth login or personal API key required) **Options** | Option | Required | Description | | ---------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `--mappings ` | No | Mappings keyed by resource type and source identifier. (JSON, or @path / @- to read a file or stdin). | | `--dependent-values ` | No | Destination-dependent choices keyed by source workflow, block, and field identities. (JSON, or @path / @- to read a file or stdin). | | `--copy-resources ` | No | Explicit source resources to copy before syncing the workflows. (JSON, or @path / @- to read a file or stdin). | | `--drop-references ` | No | Source-deleted references explicitly acknowledged for removal; live source references cannot be dropped. (JSON, or @path / @- to read a file or stdin). | | `--trigger-mappings ` | No | Public trigger path choices from preview\.triggerSlots, addressed by source workflow and block IDs. Duplicate or unavailable choices are rejected. (JSON, or @path / @- to read a file or stdin). | | `--request-id ` | Yes | Stable client request ID for reconciliation and identical retries. | | `--preview-fingerprint ` | Yes | Fingerprint of the reviewed preview and its choices. | | `--wait` | No | Wait for the committed operation to finish; missing configuration and failure exit nonzero. | | `--wait-timeout ` | No | Maximum operation wait in seconds (default 3600; 0 waits indefinitely). | | `-y, --yes` | Yes | Confirm this operation. | ## Rollback workspace fork [#rollback-workspace-fork] ```bash agentserve workspaces fork-rollback [options] ``` Rollback Workspace Fork (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------ | -------- | ---------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `-y, --yes` | Yes | Confirm this operation. | ## Unlink workspace fork [#unlink-workspace-fork] ```bash agentserve workspaces unlink [options] ``` Unlink Workspace Fork (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------ | -------- | ---------------------------------------------------- | | `--other-workspace-id ` | Yes | Workspace on the other side of the direct fork edge. | | `-y, --yes` | Yes | Confirm this operation. | ## Update workspace fork exclusions [#update-workspace-fork-exclusions] ```bash agentserve workspaces sync-exclusions [options] ``` Update Workspace Fork Exclusions (OAuth login or personal API key required) **Options** | Option | Required | Description | | ------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `--workflow ` | Yes | Workflow identifiers in the current workspace. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). | | `--fork-sync-excluded ` | Yes | Whether the named workflows should be skipped as sync sources and targets. Accepted values: `true`, `false`. | --- # Editor (/files/editor) Every markdown file in your workspace opens in a **rich editor**. Type markdown and it renders as you go, or format visually with the toolbar and slash menu. The file is saved as plain markdown.
A markdown file rendered in the editor: headings, bold, italic, and a link, a nested bullet list, and a table
## Formatting text [#formatting-text] Select any text to bring up the formatting toolbar — bold, italic, strikethrough, inline code, and links. The same marks appear instantly as you type the markdown for them, like `**bold**` or `*italic*`. Links show a hover card so you can open, copy, edit, or remove them without hunting through the source. ## Structure [#structure] Headings, blockquotes, and dividers keep long documents scannable. Type `# ` through `###### ` for headings, `> ` for a quote, and `---` for a divider. ## Lists and checklists [#lists-and-checklists] Bullet, ordered, and nested lists all work, plus task lists you can tick right in the document. ## Tables [#tables] Insert a table from the slash menu, then click any cell for the floating table toolbar — add or remove rows and columns, toggle the header row, or delete the table. Drag a column border to resize it. ## Code blocks [#code-blocks] Fenced code blocks are syntax-highlighted, with a language picker in the corner. Pick `mermaid` to render a live diagram instead of code. ## Images [#images] Paste or drag an image straight into the document, then drag a corner to resize it. ## Slash menu and shortcuts [#slash-menu-and-shortcuts] Type `/` anywhere to insert any block — heading, list, table, code block, image, and more — without leaving the keyboard. Familiar shortcuts work too: **Cmd/Ctrl + B** for bold, **Cmd/Ctrl + I** for italic, and **Cmd/Ctrl + K** to add a link over selected text. ## Markdown fidelity [#markdown-fidelity] The editor round-trips your markdown exactly — it saves what you wrote, with no reformatting churn. A few constructs can't be represented visually without losing information on save — footnotes, raw HTML, and HTML comments. When a file contains one of these, it opens **read-only** so the original source is preserved untouched. Everything is still rendered faithfully; you just can't edit that file inline. --- # Generating files (/files/generating) A generated file is an artifact a workflow run creates: a report, a CSV, a rendered audio clip. It starts as a value a block produces and becomes a workspace file when a [File](/integrations/file) block writes it to the [Files](/files) store. Once saved, it has a name, a size, and a URL, and any later run can read it back. {/* VISUAL: flow diagram: [Agent/Function block produces content] → [File block, Write] → [Files panel, file visible] */} ## What produces file content [#what-produces-file-content] Most generated files start as the output of an earlier block. Two patterns are common. A block returns **text content** you want to keep. An [Agent](/workflows/blocks/agent) writes an analysis or summary; a [Function](/workflows/blocks/function) builds a CSV or formats a report. That text is part of the block's output, read by reference as `` or ``. To make it a file, you pass that value into a File block set to Write. A block returns a **file object** directly. ElevenLabs text-to-speech returns an `audioFile`; an image generator returns a generated image; the File block's own Read operation returns parsed files. These are already [UserFile](/files/passing-files) objects (an object with `id`, `name`, `url`, `size`, and `type`), so they appear in the output panel as files with no Write step. You can hand one to a downstream block, or write its content to the Files store to persist it. A block's output is remembered under the block's name for the rest of the run, and a later block reads it by key, like `` or ``. Producing content and saving it are two separate steps: the producing block holds the value, the File block persists it. ## Saving content with the File block [#saving-content-with-the-file-block] The [File](/integrations/file) block's **Write** operation creates a new workspace file. It takes two required fields: a `fileName` (like `report.md`) and the `content` string to store. It returns the saved file's details. {/* VISUAL: File Write anatomy: inputs (fileName, content, contentType?) → outputs (id, name, size, url) */} To save an Agent's analysis, connect Agent into a File block, set the operation to Write, and reference the Agent's output: `fileName` = `research_summary.md`, `content` = ``. When the workflow runs, the File block writes the file and produces: * `id`: the canonical file ID, used to fetch the file later. * `name`: the final file name after any deduplication (see below). * `size`: the byte count. * `url`: an absolute URL to download or preview the file. The content type is detected from the file extension: `.csv` becomes `text/csv`, `.pdf` becomes `application/pdf`, `.md` becomes `text/markdown`. To set it yourself, fill in `contentType` in advanced mode. If a file with the same name already exists in the workspace, Write does not overwrite it. It appends a numeric suffix instead: a second `data.csv` is saved as `data (1).csv`, a third as `data (2).csv`. To add to an existing file rather than create a new one, use the **Append** operation, which writes content to the end of a named file. ## Where the file goes [#where-the-file-goes] A saved file lands in the workspace [Files](/files) store, the same place uploads live. It shows up in the Files panel in the sidebar with its name, size, type icon, and modified date, grouped by category: document, image, audio, video, or code. From there you can preview it, rename it, move it into a folder, or download it by URL. {/* VISUAL: Files panel UI: generated files listed with name, size, type icon, owner, modified date, folder */} Files are scoped to the workspace, not to one workflow. A file written by one workflow is visible to every other workflow in the same workspace. Any later run can read it back with the File block's Read or Get operation, or by selecting it in a file picker. During a run, the file also appears in the output panel as the File block's output, shown as a structured object with its `id`, `name`, `url`, and `size`. The output panel shows you one run as it happens, while the Files store is where the file stays afterward. {/* VISUAL: output panel tree: file object (id, name, url, size, type) during a run, beside the same file in the Files store */} ## Returning a generated file from a deployment [#returning-a-generated-file-from-a-deployment] When a workflow is deployed as an [API](/workflows/deployment/api), a generated file can be part of the response. Reference the file in a [Response](/workflows/blocks/response) block, or include its ID in the object you return. The caller uses the `url` or `id` to fetch the file from the workspace store. The file itself stays in the Files store, and the response carries a pointer to it, not the bytes. --- # Library (/files) A **file** is a document, image, spreadsheet, or PDF in your workspace. Files are how documents and media move into and out of your agents. Your team uploads them, you create them in the editor, or a workflow produces them, and they all live in one store shared across the workspace. Files live in the **Library** tab of Team spaces (older versions of Agent Serve called it **Files**). Any [workflow](/workflows) can read a file or produce one. You might upload a contract for an agent to review, generate a report from a table, or hand a workflow the document it needs to answer a question. ## Working in the Library [#working-in-the-library] * **Views.** Switch between **All items**, **Uploaded by you**, **Pinned**, and **Shared links**, and between a list and a grid. * **Filters.** Filter by type (Documents, Images, Audio, Video) and by size (Small, under 1 MB; Medium, 1–10 MB; Large, over 10 MB). * **Organize.** Create folders, drag and drop files in, unzip an archive in place, pin the files you use most, and **Move to** another folder. * **Act on a file.** Download, Rename, Share, Delete, or Pin from a file's menu. Sharing can be public, password-protected, limited to email addresses, or limited to SSO, depending on what your admins allow. * **Preview and edit.** PDF, DOCX, PPTX, XLSX, CSV, images, Markdown (with a rich editor), and Mermaid diagrams open in the app. The [command palette](/workspace/command-palette) offers **New file**, **New folder**, and **Upload** while you are in the Library. ## How files fit the workspace [#how-files-fit-the-workspace] * **[Workflows](/workflows)** read files, like a PDF to summarize, and produce them, like a rendered report. See [using files in workflows](/files/using-in-workflows). * **[Knowledge bases](/knowledgebase)** are built from files you upload, turning their contents into searchable memory. * **[Deployments](/workflows/deployment)** can take a file as input and return one as output. * **[Relays](/relays/knowledge)** can learn from Library files, and attach them to emails they send after your approval. * **[Call Compliance](/dashboards/call-compliance)** saves uploaded call transcripts to a **Transcripts** folder in the Library. Use a file when the document or media itself is what matters. Use a [table](/tables) when you need structured rows and fields, and a [knowledge base](/knowledgebase) when an agent needs to search across many documents. --- # Passing files (/files/passing-files) A file moves through a workflow as a standardized **file object**. Blocks receive it, act on it, and pass it on — this page covers the object's shape, how to reference it between blocks, and how files enter and leave through the API. ## File Objects [#file-objects] When blocks output files (like Gmail attachments, generated images, or parsed documents), they return a standardized file object: ```json { "id": "f_8c2...", "name": "report.pdf", "url": "https://...", "size": 245678, "type": "application/pdf", "base64": "JVBERi0xLjQK..." } ``` You can access any of these properties when referencing files from previous blocks. ## The File Block [#the-file-block] The **File block** brings a file into a workflow. It accepts files from any source and outputs standardized file objects every block understands. **Inputs:** * **Uploaded files** - Drag and drop or select files directly * **External URLs** - Any publicly accessible file URL * **Files from other blocks** - Pass files from Gmail attachments, Slack downloads, etc. **Outputs:** * A list of `UserFile` objects with consistent structure (`id`, `name`, `url`, `size`, `type`, `base64`) * `contents` - Extracted text per file (the Get Content operation) * `combinedContent` - All fetched files' text merged into one string (the Fetch operation) **Example usage:** ``` // Get all files from the File block // Get the first file // Get the first file's extracted text (Get Content operation) ``` The File block automatically: * Detects file types from URLs and extensions * Extracts text from PDFs, CSVs, and documents * Generates base64 encoding for binary files * Creates presigned URLs for secure access Use the File block when you need to normalize files from different sources before passing them to other blocks like Vision, STT, or email integrations. ## Passing Files Between Blocks [#passing-files-between-blocks] Reference files from previous blocks using the tag dropdown. Click in any file input field and type `<` to see available outputs. **Common patterns:** ``` // Single file from a block // Pass the whole file object // Access specific properties ``` Most blocks accept the full file object and extract what they need automatically. You don't need to manually extract `base64` or `url` in most cases. ## Triggering Workflows with Files [#triggering-workflows-with-files] When calling a workflow via API that expects file input, include files in your request: ```bash curl -X POST "https://agentserve.valnoraelric.com/api/v2/workflows/YOUR_WORKFLOW_ID/execute" \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "document": { "name": "report.pdf", "base64": "JVBERi0xLjQK...", "type": "application/pdf" } }' ``` ```bash curl -X POST "https://agentserve.valnoraelric.com/api/v2/workflows/YOUR_WORKFLOW_ID/execute" \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "document": { "name": "report.pdf", "url": "https://example.com/report.pdf", "type": "application/pdf" } }' ``` The workflow's Start block should have an input field configured to receive the file parameter. ## Receiving Files in API Responses [#receiving-files-in-api-responses] When a workflow outputs files, they're included in the response: ```json { "success": true, "output": { "generatedFile": { "name": "output.png", "url": "https://...", "base64": "iVBORw0KGgo...", "type": "image/png", "size": 34567 } } } ``` Use `url` for direct downloads or `base64` for inline processing. ## Blocks That Work with Files [#blocks-that-work-with-files] **File inputs:** * **File** - Parse documents, images, and text files * **Agent** - Read images with a vision-capable model, or documents as text * **Mistral Parser** - Extract text from PDFs **File outputs:** * **Gmail** - Email attachments * **Slack** - Downloaded files * **TTS** - Generated audio files * **Video Generator** - Generated videos * **Image Generator** - Generated images **File storage:** * **Supabase** - Upload/download from storage * **S3** - AWS S3 operations * **Google Drive** - Drive file operations * **Dropbox** - Dropbox file operations Files are automatically available to downstream blocks. The engine handles all file transfer and format conversion. ## Best Practices [#best-practices] 1. **Use file objects directly** - Pass the full file object rather than extracting individual properties. Blocks handle the conversion automatically. 2. **Check file types** - Ensure the file type matches what the receiving block expects. An Agent using a vision-capable model can read images, while the File block handles documents. 3. **Consider file size** - Large files increase run time. For very large files, consider using storage blocks (S3, Supabase) for intermediate storage. --- # Using files in workflows (/files/using-in-workflows) A file is a document, image, spreadsheet, or PDF in your workspace. A workflow can read a file to act on its contents, pass a file to a block or tool that needs one (attach a PDF to an email, send an image to a vision model), or produce a new file and save it. The [File](/integrations/file) block is how a file enters or leaves a workflow; the work in between is done by whatever block the task calls for. What you do with a file depends on the task, so this page covers the File block's operations and how a file moves between blocks rather than one fixed recipe. The example we'll use throughout reads `report.pdf`, asks an agent to summarize it, and saves the summary as `summary.md`, which exercises reading, processing, and writing in one workflow. ## The File block [#the-file-block] The **File** block is one block with five operations, chosen from a dropdown. Each operation is a different way a file, or its contents, enters or leaves the workflow. | Operation | What it does | Outputs | | --------------- | -------------------------------------------------------------- | --------------------------- | | **Read** | Take an existing workspace file, by file picker or by file ID. | `files` | | **Get Content** | Extract a workspace file's text, by file picker or by file ID. | `contents` | | **Fetch** | Download and parse a file from an external URL. | `files`, `combinedContent` | | **Write** | Create a new workspace file from a name and text content. | `id`, `name`, `size`, `url` | | **Append** | Add text to the end of an existing workspace file. | `id`, `name`, `size`, `url` | Read hands the next block the **file itself**; Get Content hands it the **text inside**. Fetch brings in both for an external URL. Write and Append put a file out. A workflow uses only the operations its task needs, often just Read. The two sections below cover Read and Write; the other operations are variants noted alongside. {/* VISUAL: File block config UI. Operation dropdown open showing Read / Get Content / Fetch / Write / Append */} ## Reading a file in [#reading-a-file-in] In our example, the first File block is set to **Read**, with `report.pdf` chosen from the file picker. When it runs, it produces `files`: a list of **file objects**, one per file read. The first is ``. When the next step needs the file's *text* rather than the file itself, use **Get Content** instead: it extracts the text and outputs `contents`, an array with one string per file, read as ``. A **file object** is the standard shape Agent Serve uses for every file. It carries the file's details: ```jsonc { "id": "wf_V1StGXR8z5jdHi6B…", // workspace file ID "name": "report.pdf", "url": "https://…", // where to access it "size": 248120, // bytes "type": "application/pdf" } ``` You rarely type a reference by hand. Wherever a block parameter accepts a file or a value, the builder lists the available outputs and you pick the one you want. Read mode also takes a file ID directly in advanced mode, which is how you read a file produced earlier in the same run. **Fetch** brings in files that live outside the workspace. Point it at a URL, and add request headers (such as `Authorization: Bearer …`) when the download needs authentication. It outputs `files` like Read does, plus `combinedContent`: the fetched files' text merged into one string. {/* VISUAL: File block in Read mode, file picker open with report.pdf selected; callout on the files[] output */} ## Processing the file [#processing-the-file] Once a file is read, a processing block reads that output by name. Two blocks do this, and they consume the file differently. ### Agent block [#agent-block] An [Agent](/workflows/blocks/agent) block has a **Files** input. Reference the read file there, ``, and write the instruction in the prompt: "Summarize this document." The agent receives the file object, not just its text, so a **vision-capable model** can analyze images and scanned pages directly. Other models work from the file's text content. In our example the Agent reads ``, summarizes it, and keeps the summary under its own name as ``. {/* VISUAL: Agent block config. Files input bound to , prompt "Summarize this document" */} ### Function block [#function-block] A [Function](/workflows/blocks/function) block runs code, and it usually works with file **text**. Read the file with **Get Content** and pass the extracted text, ``, and the code can parse, filter, or reshape it and return the result as its own output. A Function can also take the file object itself and read it in code with the `agentserve.files` helpers, like `await agentserve.files.readText(file)` — see [the Function block](/workflows/blocks/function) for those. Use a Function when the file is structured text (a CSV or JSON dump) and you want exact, deterministic processing instead of a model's interpretation. The two blocks differ in what they take. An **Agent** takes the file object on its Files input, while a **Function** typically takes the file's text from Get Content's `contents`. Both store their result under their own name for the next block to read. ## Writing a file out [#writing-a-file-out] Writing a file is optional, and many workflows skip it. The agent's summary could be returned in the response, posted to Slack, or emailed as-is without ever becoming a workspace file. Write a file when you specifically need a new one to keep, download, or hand to a later run. The last block in our example is a File block set to **Write**. Give it a file name and the content to save: * `fileName`: `summary.md` * `content`: `` Write creates a new workspace file and returns its `id`, `name`, `size`, and `url`. If a file with that name already exists, Write keeps both by adding a numeric suffix to the new one. The saved file lands in your workspace [files](/files), ready for the next run, a download, or another workflow. {/* VISUAL: run log showing the File Write step with the returned file id, name, and url */} **Append** adds to a file instead of replacing it. Target an existing workspace file by name and give it the content to add to the end. Use it to accumulate across runs, such as appending each run's observation to one `notes.md`. ## Composing the steps [#composing-the-steps] Each block references the previous one by name, so you compose only the steps a task needs. A contract read by an Agent that returns a verdict stops at processing, and an uploaded image described by a vision model never touches Write, while a fetched CSV cleaned by a Function and saved as a new file uses all three. Reading a file in is common, and writing one out is only for when the result is itself a file. For the file-object schema in full, base64 access, and how files move across API and chat triggers, see [Passing files](/files/passing-files). --- # Getting Started (/getting-started) Build a people research agent in 10 minutes. It takes a name through a chat interface, searches the web with AI search tools, and returns structured JSON with the person's location, profession, and education. ## Tutorial [#tutorial] In the sidebar, click the **+** next to **Workflows** and name the new workflow "Getting Started". The **Start block** is already in the workflow builder — it's the entry point that receives your chat input. Open **Add steps** in the right panel, drag an **Agent** block into the workflow builder, and connect it to the Start block. Select the Agent and, on the **Configure** tab, set its **Messages**: * **System**: "You are a people research agent. When given a person's name, use your search tools to find their location, profession, educational background, and other relevant details." * **User**: insert `` so the agent reads whatever the chat receives. Leave the **Model** on the default (`claude-sonnet-5`), or pick any other.
The Getting Started workflow: a Start block connected to Agent 1, with the system and user messages and the claude-sonnet-5 model set on the Configure tab
In the Agent block's **Tools** section, add **Exa** and **Linkup**. The agent decides when to call them.
The Tools section of the Agent block with Exa and Linkup added
Click the chat icon next to **Run** to open the test chat, pick `agent1.content` from **Outputs**, and send: *"John is a software engineer from San Francisco who studied Computer Science at Stanford University."* The agent searches, then returns what it found. {/* Why this callout exists: the largest funnel drop in platform data (2026-06) is created-a-workflow -> first-successful-run, 92% -> 49% — this is the stall point it targets. */} If the run doesn't go green, open the output dropdown and read what each block returned — the failure is almost always visible there. The two most common causes are a missing API key on a tool and a reference pointing at a value that isn't there. For the full method, see [tracing a failure backward](/logs-debugging).
The test chat over the workflow builder, with the Outputs menu open on Agent 1 and content selected
In the Agent block's **Response Format**, click **Generate** and prompt: *"create a schema named person, that contains location, profession, and education"*. The schema is generated for you.
The Response Format section with a generated person schema containing location, profession, and education
Back in the test chat, pick the new structured fields from **Outputs** and send: *"Sarah is a marketing manager from New York who has an MBA from Harvard Business School."* The agent now returns JSON with `location`, `profession`, and `education` fields — ready for any downstream block to read by name.
The Outputs menu in the test chat listing the structured location, profession, and education fields for Agent 1
## Next [#next] The full model: blocks, connections, triggers, and how runs execute. Everything the block you just used can do — tools, memory, skills, structured output. supported services your agents can act on, from Gmail to HubSpot. Ship the workflow as an API, a chat, or an MCP server. --- # Introduction (/introduction) Agent Serve is the AI workspace where teams build, deploy, and manage AI agents. Build visually in the workflow builder, conversationally in **Chat**, or with code through the API. Connect the integration catalog and every major LLM to create agents that automate real work.
The Agent Serve workflow builder: a support ticket triage workflow with Start, Agent, Condition, and Function blocks, and the Configure panel open on the Classify ticket agent
## How you build [#how-you-build] When you open Agent Serve, the first thing you meet is **Chat**, a conversation over your whole workspace. You describe the system you want, and Agent Serve scaffolds it: workflows, tables, knowledge bases, and the wiring between them. You then open what it built, run it, and refine it. * **Chat.** Describe a system in natural language and Agent Serve creates and edits the resources for you. The fastest way to start. * **Workflow builder.** Design agent logic visually by connecting blocks in the builder. The clearest way to see and fine-tune what runs. * **API and SDK.** Build and trigger agents programmatically. You can mix these on one system, scaffolding in Chat and then fine-tuning in the builder. Agent Serve generates the architecture, and you verify the execution. Even when you build conversationally, it helps to understand the resources Agent Serve creates, so you can inspect, run, and improve them. ## The anatomy of a workspace [#the-anatomy-of-a-workspace] An Agent Serve system is not a single chat response. It is a set of resources that live in a **workspace** and connect to each other. The left rail of the app has entries for **Relays**, **Chat**, **Spaces**, **Team spaces**, **Apps**, and **Workflows**, and the rest of the workspace hangs off them. See [The workspace](/workspace) for a tour. * **[Relays](/relays)** are AI teammates. You give a Relay a role, the data and tools it may use, and the actions it needs your approval for, then hand it jobs and get finished work back. * **[Chat](/chat)** is where you build and manage everything in natural language. * **[Spaces](/spaces)** is where your team writes docs and draws on whiteboards, with Chat beside you to summarize, draft, and suggest edits. * **[Workflows](/workflows)** are visual programs made of blocks, where your logic runs. You design them in the workflow builder. * **[Agents and tools](/agents)** are how a workflow acts. An agent reasons with a model, and tools let it take actions like sending an email or querying an API. * **[Run history](/logs-debugging)**, in the Workflows pane, records every workflow run, block by block, so you can verify what happened. * **Team spaces** hold your team's shared data and analysis: * **[Data sources](/data/data-sources)** connect warehouses, databases, apps, and spreadsheets. * **[Tables](/tables)** hold structured rows your workflows and Relays read, write, and enrich. * **[Library](/files)** stores the documents and media your team and agents use. * **[Knowledge bases](/knowledgebase)** are searchable memory. An agent retrieves relevant passages from your documents to ground its answers. * **[Dashboards](/dashboards)** turn your data into charts, KPIs, and reports. * **[Workbooks](/data/workbooks)** let you query your data sources in SQL or plain English, then save a result as a dataset or a dashboard panel. * **[Metrics](/data/metrics)**, the **[semantic model](/data/semantic-model)**, and **[rules](/data/rules)** define your numbers and business logic once, so every dashboard and agent uses the same definitions. * **[Monitors](/data/monitors)** watch metrics and rules and alert you when something changes. * **[Apps](/apps)** are tools that run inside the workspace, on your own data. Your developers [build them](/developers) with the CLI and SDK. **[Plugins](/plugins)** are apps that also add Chat commands, menu actions, and background work across the workspace. * **[Deployments](/workflows/deployment)** expose a workflow to the outside world as an API, a chat, or an MCP server (Model Context Protocol, a standard way for AI tools to call each other). ## What you can build [#what-you-can-build] * **AI assistants and chatbots.** Conversational agents that search the web, manage calendars, send email, and act on your business systems. * **Business process automation.** Data entry, report generation, customer responses, and content workflows. * **Data processing and analysis.** Extract from documents, analyze datasets, and sync data across platforms. * **API integration workflows.** Unified endpoints that orchestrate multi-service logic and event-driven automation. ## Integrations [#integrations] Agent Serve provides native integrations with supported services: * **AI models.** OpenAI, Anthropic, Google Gemini, Groq, Cerebras, and local models via Ollama or VLLM. * **Communication.** Gmail, Slack, Microsoft Teams, Telegram, WhatsApp. * **Productivity.** Notion, Google Workspace, Airtable. * **Development.** GitHub, Jira, Linear, automated browser testing. * **Search and data.** Google Search, Perplexity, Firecrawl, Exa AI. * **Databases.** PostgreSQL, MySQL, Supabase, Pinecone, Qdrant. For anything not built in, [MCP support](/agents/mcp) connects any external service or tool. ## Deployment options [#deployment-options] * **Cloud-hosted.** Launch immediately at [agentserve.valnoraelric.com](https://agentserve.valnoraelric.com) with managed infrastructure, scaling, and observability. * **Self-hosted.** Deploy on your own infrastructure with Docker Compose or Kubernetes, with support for local models. ## Next steps [#next-steps] Build your first agent in 10 minutes Build and manage your workspace in natural language The executable center, and the blocks it's built from The building blocks of a workflow --- # Keyboard Shortcuts (/keyboard-shortcuts) Agent Serve has keyboard shortcuts for the workflow editor and for tables. Each set works when that surface is focused and you are not typing in a field. The macOS app adds its own window, tab, and navigation shortcuts on top of these — see [Agent Serve Desktop](/desktop#keyboard-shortcuts). **Mod** is `Cmd` on macOS and `Ctrl` on Windows and Linux. ## Workflow editor [#workflow-editor] ### Mouse [#mouse] | Action | Control | | ------------------------ | ---------------------------------------------------------- | | Pan the workflow builder | Middle-drag, left-drag in Hand mode, or scroll / trackpad | | Select multiple blocks | `Shift` + drag on empty space, or left-drag in Select mode | | Drag a block | Left-drag on the block header | | Add to selection | `Mod` + click on blocks | ### Actions [#actions] | Shortcut | Action | | ------------------------- | ---------------------------------------------- | | `Mod` + `Enter` | Run the workflow (or cancel if running) | | `Mod` + `Z` | Undo | | `Mod` + `Shift` + `Z` | Redo | | `Mod` + `C` / `X` / `V` | Copy / cut / paste selected blocks | | `Delete` or `Backspace` | Delete selected blocks or edges | | `Shift` + `L` | Auto-layout the workflow | | `Mod` + `Shift` + `F` | Fit to view | | `Mod` + `F` | Search and replace in the workflow | | `Mod` + `Shift` + `Enter` | Accept changes proposed by Chat | | `Mod` + `Alt` + `F` | Focus the step library search in **Add steps** | ## Tables [#tables] These work when a table is focused and no cell is being edited. ### Navigation [#navigation] | Shortcut | Action | | ----------------------- | -------------------------------- | | Arrow keys | Move one cell | | `Mod` + Arrow keys | Jump to the edge of the table | | `Tab` / `Shift` + `Tab` | Move to the next / previous cell | | `Escape` | Clear the selection | ### Selection [#selection] | Shortcut | Action | | ---------------------------- | -------------------------------- | | `Shift` + Arrow keys | Extend the selection by one cell | | `Mod` + `Shift` + Arrow keys | Extend the selection to the edge | | `Shift` + `Space` | Select the current row | | `Mod` + `Space` | Select the current column | ### Editing [#editing] | Shortcut | Action | | ----------------- | --------------------------------- | | `Enter` or `F2` | Start editing the selected cell | | Any character | Start editing with that character | | `Escape` | Cancel editing | | `Shift` + `Enter` | Insert a new row below | | `Space` | Expand row details | ### Clipboard [#clipboard] | Shortcut | Action | | ----------------------- | ------------------------ | | `Mod` + `C` / `X` / `V` | Copy / cut / paste cells | | `Delete` or `Backspace` | Clear the selected cells | ### History [#history] | Shortcut | Action | | ------------------------------------ | ------ | | `Mod` + `Z` | Undo | | `Mod` + `Shift` + `Z` or `Mod` + `Y` | Redo | ## Global [#global] | Shortcut | Action | | --------------------- | -------------------------- | | `Mod` + `K` | Open search | | `Mod` + `Shift` + `A` | Create a new agent | | `Mod` + `Shift` + `P` | Create a new workflow | | `Mod` + `L` | Go to logs | | `Mod` + `D` | Clear the terminal console | | `Mod` + `E` | Clear notifications | --- # Alerts (/logs-debugging/alerts) Use a [Agent Serve Workspace Events trigger](/workflows/triggers/agentserve) to run an alert workflow when another workflow fails, slows down, exceeds a cost threshold, or goes quiet. Add delivery blocks for the channel you use, such as Slack, email, or an incident API. ## Example: notify Slack after repeated failures [#example-notify-slack-after-repeated-failures] 1. Create a workflow with **Agent Serve Workspace Events** as its trigger. 2. Set **Event** to **Consecutive Failures** and **Consecutive Failures** to `3`. 3. Select the source **Workflows**. Leave the field empty to watch the workspace. 4. Add a Slack block that sends a message to your incident channel. Choose the intended Slack account and channel. 5. Include the trigger's `workflowName` and `triggeringRun.runId` in the message using the reference picker. For a trigger named `workspaceevent`, the message can be: ```text Workflow has failed repeatedly. Latest run: ``` 6. Deploy the alert workflow to activate it. Trigger representative failures in a watched test workflow, then inspect the alert workflow's [run log](/logs-debugging) and the Slack message. ## Choose another condition [#choose-another-condition] Choose **Run Error** to respond to each failed run. Other conditions include failure rate, error count, latency, cost, and inactivity. Cost thresholds use credits. See the [event and rule reference](/workflows/triggers/agentserve) for settings, defaults, and event-specific outputs. Rule-based subscriptions have a one-hour cooldown after firing; plain events such as Run Error do not. Rate-based rules need at least five runs in their window. A subscription does not receive events about its own workflow, and runs started by this trigger do not emit new workspace events. Delivery behavior comes from the action blocks you configure. If an alert is missing, check that the alert workflow is deployed, the source workflow matches its filter, the condition and cooldown allow it to fire, and the delivery block completed successfully. --- # Logs (/logs-debugging) A **log** is the recorded trace of one workflow run. Every time a workflow runs, Agent Serve writes down what triggered it, which blocks ran in what order, and for each block its exact input, its output, and any error. That trace is the ground truth for debugging: it replays what each block received, what it did, and what it returned, so you can find where something went wrong. The **Logs page** — **Run history**, linked at the top of the Workflows pane — lists every run across your workspace, one row per run. The [Logging reference](/logs-debugging/logging) covers the page itself: the columns, filters, and sidebar. This page covers what a log captures and how to trace a failure back to its cause. ## What a log records [#what-a-log-records] ### The run [#the-run] Each row in Run history is one **run**. It records the **trigger** that started it (manual, API, schedule, a deployed chat, webhook, MCP, Chat, or another workflow), a **status**, a **duration**, and the **cost** in credits. It also carries an **execution ID** that uniquely names the run. The status shows the run's outcome at a glance, with failed runs badged **Error**. When you are hunting a failure, you filter the list to the errors and start there. ### The blocks [#the-blocks] Open a run and **Log Details** shows the trace. The **Trace** tab lists each block as a span with its timing, in the order they ran; each **block execution** records the [block](/workflows#blocks)'s name and type, its own status, its **input**, its **output**, and an error message if it failed. The Log Details Trace tab for a successful run: Start, Fetch forecast, Fetch air quality, and Return conditions spans with their durations, and the selected span's input This is the level you debug at, because a run fails when one of its blocks fails, and a block usually fails because of the input it received. In this run, one glance at the spans shows where the time went: the two API calls took about 530ms each of the 1.08s total. ### Input and output [#input-and-output] Each block in the sidebar has two tabs. The **Input** tab shows the resolved values the block actually ran with: the literal values you typed, and the earlier outputs it read by reference. Exact values successfully substituted from Secrets through `{{KEY}}` are masked in this trace copy; see [Execution log protection](/platform/credentials#execution-log-protection). The **Output** tab shows what the block produced, formatted as an object, with markdown rendered for agent-generated text. The input tab is the important one. A block reads earlier outputs by name, written ``, and the input tab shows what those references resolved to at run time. If a reference pointed at a value that was not there, you see it here as missing or wrong, not as the tag you wrote. See [how blocks pass data](/workflows/data-flow) for how those references resolve. The same inspector follows you into the editor: during manual and chat runs, the console shows each block's Output and Input live, with values as a typed tree. The editor's run console: blocks with their durations on the left, and the selected Return conditions block's Output tab showing data, status, and headers as a typed tree ### The snapshot [#the-snapshot] A workflow changes over time. A log does not. Clicking **View Snapshot** opens a frozen copy of the workflow exactly as it was when that run happened: the blocks, the connections, the configuration. This matters when a run failed last week and you have edited the workflow since. The snapshot shows the version that actually ran, not today's version. ## Tracing a failure backward [#tracing-a-failure-backward] Debugging follows the same repeatable loop each time. You start at the block that failed and walk back to the block that caused it. 1. **Find the failed block.** Open the errored run. The sidebar marks the block whose status is **error**. Read its error message. 2. **Read its input.** Open the block's Input tab. This is what it actually ran with, after every reference resolved. 3. **Verify the input.** Ask whether that input is what the block expected. An empty field, a value of the wrong type, a missing nested key: the mismatch is usually visible here. 4. **Walk back to the source.** A bad input came from somewhere. Find the earlier block whose output the failed block referenced, and open that block's Output tab. Either it produced the wrong value, or it never ran. 5. **Fix and rerun.** Correct the reference, the configuration, or the upstream block, then run the workflow again. 6. **Compare the traces.** Open the new run's log next to the old one. The block that was **error** is now **success**, and its input is the value you expected. That confirms the fix. {/* VISUAL: the debugging loop as a flowchart: failed block → read input → verify expectation → walk back to source block → fix → rerun → compare logs. */} {/* VISUAL: side-by-side of a failed run and a successful run, same blocks, highlighting the one input/output that changed between them. */} ### Common failures [#common-failures] Most errors come down to a handful of input mismatches. Knowing the shape speeds up step 3. * **Missing input.** A field the block needs was left empty, or its reference resolved to nothing. * **Wrong reference.** The tag names an output that does not exist, or uses the wrong field name. * **Type mismatch.** A string where an object was expected, or the reverse. * **Missing nested key.** The referenced object exists, but the specific field inside it does not. * **Empty agent message.** An [Agent](/workflows/blocks/agent) returned nothing, so the next block had nothing to read. * **External error.** A tool or API the block called returned an error of its own, surfaced in the block's error message. When a value is the wrong shape, reshape it in a [Function](/workflows/blocks/function) block, whose result becomes its own output that later blocks can read. ## AI-assisted debugging [#ai-assisted-debugging] Agent Serve can read a run's logs and propose a fix from the trace: the error message, the input the block received, and the output the upstream block produced. The logs stay the ground truth. You confirm a proposed fix the same way you confirm your own: rerun the workflow and compare the new trace against the failed one. ## Retention [#retention] Logs are kept so you can debug a run after it happened. Free plans retain logs for **7 days**, after which they are archived to cloud storage and removed from the database. Pro, Team, and Enterprise plans retain logs indefinitely. --- # Logging (/logs-debugging/logging) Every workflow run is logged. There are two places to read them: the **Console** for the run you're watching, and the **Logs page** (**Run history**, at the top of the Workflows pane) for everything. ## Real-time Console [#real-time-console] During manual or chat runs, the **Logs** panel at the bottom of the editor shows each block as it runs — active-block highlighting, outputs as they complete, per-block timing, and success/error status.
The editor's Logs panel after a run: four blocks with their timings, and the selected Fetch forecast block's output as a typed tree
## Run history [#run-history] Every run from every trigger — manual, API, chat, schedule, webhook — lands in **Run history**, linked at the top of the **Workflows** pane. Filter by time range (from the past 30 minutes to the past 30 days, or a custom range), status, workflow, folder, and trigger; search the logs; and sort by date, duration, cost, or status. The list refreshes on its own as new runs are recorded. **Export** downloads the current list, and the **Dashboard** toggle switches to a chart view of the same runs. ## Log details [#log-details] Click any entry to open its sidebar: the run's timeline (start/end, total duration, per-block timing) and each block's data flow. The block's result — JSON-formatted structured data, markdown rendering for AI content, and a copy button. What the block received — resolved variable values, referenced outputs, and environment variables. Exact secret values activated by a successful `{{KEY}}` substitution are masked in this trace view. See [Execution log protection](/platform/credentials#execution-log-protection). ## Workflow snapshots [#workflow-snapshots] **View Snapshot** opens a frozen copy of the workflow exactly as it was at run time — structure, block states, connections — and each block is clickable to its inputs and outputs. This is how you debug a run of a workflow you've since changed.
The Workflow State snapshot of a run, with the Start block selected and its output shown beside the frozen workflow
Snapshots exist for runs after the enhanced logging system was introduced. Older migrated logs show "Logged State Not Found". ## Retention [#retention] * **Free**: 7 days — logs are archived to cloud storage, then deleted. * **Pro / Team / Enterprise**: retained indefinitely. ## Next [#next] * [Alerts](/logs-debugging/alerts) for notifications on failures and slow runs * [Cost calculation](/platform/costs) for what each run costs * [External API](/api-reference/getting-started) for programmatic log access --- # Chunking strategies (/knowledgebase/chunking-strategies) **Advanced.** Leave the strategy on **Auto** and the settings on their defaults unless you have a specific reason to change them and know how chunk boundaries affect retrieval. Auto inspects each file and routes it to the right chunker on its own. The rest of this page is for the case where you've confirmed Auto isn't producing the chunks you want. If you do override Auto, the short version: * Sentence integrity matters (Q\&A, legal text) → **[Sentence](#sentence)** * Content has structural markers Text misses (code, custom formats) → **[Recursive](#recursive)** * You need uniform chunk sizes → **[Token](#token)** * Content has explicit delimiters → **[Regex](#regex)** * Each record must be its own chunk → **[convert to JSONL](#one-record-per-chunk)** ## Settings [#settings] | Setting | Unit | Default | Range | Description | | -------------- | ---------- | ------- | --------- | ------------------------------------------------------------ | | Max Chunk Size | tokens | 1,024 | 100–4,000 | Upper bound on chunk size. 1 token ≈ 4 characters. | | Min Chunk Size | characters | 100 | 100–2,000 | Tiny fragments below this are dropped. | | Overlap | tokens | 200 | 0–500 | Tokens repeated between adjacent chunks to preserve context. | [Pinecone's chunking guide](https://www.pinecone.io/learn/chunking-strategies/) covers the size and overlap tradeoffs. Every strategy splits the document at boundaries, then packs adjacent splits together up to the max chunk size, so a chunk usually spans several splits and a split boundary is not a chunk boundary. This is why a precise [Regex](#regex) can still produce chunks containing multiple matches. ## Strategies [#strategies] ### Auto [#auto] Agent Serve inspects the file and routes to the right chunker: * `.json`, `.jsonl`, `.yaml`, `.yml` → structural chunking (records are never split mid-way; small records may still be batched together up to the chunk size) * `.csv`, `.xlsx`, `.xls`, `.tsv` → grouped by row, with headers preserved * Everything else (`.pdf`, `.docx`, `.txt`, `.md`, `.html`, `.pptx`, …) → Text strategy Routing is based on detected MIME type and content shape, not just the extension — a `.txt` file containing valid JSON is still routed structurally. Pick Auto unless you've confirmed it isn't producing the chunks you want. ### Text [#text] Hierarchical splitter that walks down a separator list: horizontal rules → markdown headings → paragraphs (`\n\n`) → lines (`\n`) → sentence punctuation (`. ! ?`) → clause punctuation (`; ,`) → spaces. It tries the largest separator first and falls back when a piece is still too large. Use it for general prose. ### Recursive [#recursive] Same algorithm as Text, but you supply your own separator hierarchy or pick a built-in recipe (`plain`, `markdown`, `code`). Use Recursive when your content has structural markers the default Text separators miss — splitting code on `\nclass `, `\nfunction `, then `\n\n`, for example. ### Sentence [#sentence] Splits on sentence boundaries (`. `, `! `, `? `, with abbreviation handling) and packs whole sentences up to the chunk size. A sentence is never split mid-way unless it individually exceeds the limit. Use it when sentence integrity matters — Q\&A, legal text, or anything where mid-sentence cuts hurt comprehension. ### Token [#token] Fixed-size sliding window aligned to word boundaries. No awareness of paragraphs or sentences. LlamaIndex provides the same as `TokenTextSplitter`. Useful when downstream processing requires uniform chunk sizes; otherwise prefer Text or Sentence. ### Regex [#regex] Splits on every match of a regex pattern you supply, then packs splits up to the chunk size by default — the same merge behavior as every other chunker. A precise boundary regex like `(?=\n\s*\{\s*"id"\s*:)` will still produce chunks containing multiple matches if those matches are small enough to fit together. This is standard across LangChain, LlamaIndex, Chonkie, and [Unstructured](https://docs.unstructured.io/api-reference/partition/chunking-documents). Use Regex when your content has explicit delimiters that don't fit any other strategy. #### Strict boundaries [#strict-boundaries] The regex strategy has an opt-in **"Each match is its own chunk (don't merge)"** checkbox. When enabled: * Every regex match becomes its own chunk * Adjacent splits are not packed together * Overlap is disabled * Splits that exceed the chunk size are still sub-split at word boundaries Turn it on when each match is a discrete record (one QA pair, one log entry) and you need each isolated for retrieval. ## One record per chunk [#one-record-per-chunk] Each record (each QA pair, each log line, each row) as its own chunk is structural chunking, not regex chunking. Two paths: 1. **Convert to JSONL** (one record per line) and upload. Agent Serve's Auto strategy treats it as structured data and never splits a record mid-way. Small records may still be batched together up to the chunk size. Lowering the size reduces batching; use strict Regex boundaries when each match must become its own chunk. See [LlamaIndex's `JSONNodeParser`](https://docs.llamaindex.ai/en/stable/module_guides/loading/node_parsers/) and [Unstructured's element-based chunking](https://docs.unstructured.io/api-reference/partition/chunking-documents). 2. **Use Regex with strict boundaries enabled** when you can't restructure the source. Prefer option 1. Structural parsers handle nested records, escaped delimiters, and malformed entries that regex won't. ## Further reading [#further-reading] * [LangChain — Text Splitters](https://python.langchain.com/docs/concepts/text_splitters/) * [LlamaIndex — Node Parsers](https://docs.llamaindex.ai/en/stable/module_guides/loading/node_parsers/) * [Chonkie](https://github.com/chonkie-inc/chonkie) * [Unstructured — Chunking](https://docs.unstructured.io/api-reference/partition/chunking-documents) * [Pinecone — Chunking Strategies](https://www.pinecone.io/learn/chunking-strategies/) ## FAQ [#faq] --- # Connectors (/knowledgebase/connectors) For organization Search with each person's source permissions, use the [Search connector guides](/search). This page covers connectors inside general knowledge bases. Connectors continuously sync documents from external services into your knowledge base, so you never have to upload files manually. New content is added, changed content is re-processed, and deleted content is removed — all automatically. ## Available Connectors [#available-connectors] The current Connect Source picker showing searchable connectors including Airtable, Asana, Ashby, Azure DevOps, Bitbucket, Box, and ClickUp Agent Serve ships with 64 built-in connectors: | Category | Connectors | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Productivity** | Notion, Confluence, Asana, Linear, Jira, Jira Service Management, Monday, Trello, ClickUp, Google Calendar, Google Sheets, Google Forms, Microsoft Excel, Typeform | | **Cloud Storage** | Google Drive, Dropbox, OneDrive, SharePoint, Box, Amazon S3, SFTP | | **Documents** | Google Docs, Google Slides, Mintlify, WordPress, Webflow, DocuSign | | **Development** | GitHub, GitLab, Bitbucket, Azure DevOps, Sentry | | **Communication** | Slack, Discord, Microsoft Teams, Google Chat, Reddit, X, YouTube | | **Email** | Gmail, Outlook | | **CRM** | HubSpot, Salesforce | | **Support** | Intercom, ServiceNow, Zendesk, Zoho Desk | | **Incident Management** | incident.io, Rootly, PagerDuty | | **Data** | Airtable, Databricks | | **Note-taking** | Obsidian | | **Meetings** | Zoom, Google Meet, Gong, Grain, Granola, Fathom, Fireflies | | **Recruiting** | Greenhouse, Ashby | | **HR** | Workday Help | | **Compliance** | Google Vault | ## Adding a Connector [#adding-a-connector] From inside a knowledge base, click **+ New connector** in the top right to open the connector picker. Select a service, then complete the setup steps: ### Authenticate [#authenticate] Most connectors use **OAuth** — select an existing credential from the dropdown or click **Connect new account** to authorize through the service. Tokens are refreshed automatically. Other connectors use **API keys** or **personal access tokens** instead. The setup modal tells you which credential each connector expects — for example: | Connector | Where to get the key | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Obsidian** | Install the [Local REST API](https://github.com/coddingtonbear/obsidian-local-rest-api) plugin, then copy the key from its settings | | **Fireflies** | Generate from the Integrations page in your Fireflies account | | **Typeform** | Personal access token from your Typeform account settings | | **Azure DevOps** | Personal access token with Wiki (Read), Work Items (Read), and Code (Read) scopes | | **GitLab** | Personal access token with `read_api` scope and access to the selected project | | **YouTube** | YouTube Data API key from the Google Cloud Console | | **Amazon S3** | Secret Access Key (the Access Key ID, region, and bucket are entered as config fields) | | **Sentry** | Auth token with `project:read` and `event:read` scopes | | **PagerDuty** | REST API key from Integrations → API Access Keys | | **SFTP** | Password or unencrypted private key, plus a required SHA-256 host key fingerprint (host, port, username, and root path are entered as config fields) | | **Mintlify** | API key — optional for public documentation sites, which sync from `llms.txt` | | **Databricks** | Personal access token from your workspace's user settings (the workspace host is entered as a config field) | | **Workday Help** | Register an API client for integrations in your tenant, then enter the client secret and refresh token together as `clientSecret:refreshToken` (the client ID, tenant host, and tenant name are entered as config fields) | Enter an API key directly, or type `{{` to select an accessible personal or workspace secret. Agent Serve resolves the secret when you connect and stores an encrypted copy of the token. Later changes to the secret do not automatically update the connector. If you rotate an API key in the external service, update it in Agent Serve as well — OAuth tokens refresh automatically, but API keys do not. For GitLab in a regular knowledge base, a project-readable PAT is enough. Imported content uses the knowledge base's access rules; it does not mirror each person's GitLab permissions. The administrator-token and non-admin CSV setup paths apply when using [GitLab source permissions](/search/gitlab). ### Configure [#configure] Each connector has source-specific fields that control what gets synced. Examples: * **Notion** — sync an entire workspace, a specific database, or a single page tree * **GitHub** — specify a repository, branch, and optional file extension filter * **GitLab** — specify a project path or ID and your instance host (leave blank for GitLab.com), then choose repository files, wiki pages, issues, or merge requests. Each connector syncs one project; submodules need their own connectors. * **Confluence** — enter your Atlassian domain and optionally filter by space key or content type * **Azure DevOps** — choose what to sync (wiki pages, work items, repository files, or all), with optional work item type/state filters, a custom WIQL query, and repository/branch/path filters * **Amazon S3** — point at a bucket with an optional key prefix and a customizable file extension allowlist; S3-compatible stores (Cloudflare R2, MinIO) are supported via a custom endpoint * **YouTube** — sync a channel (by `@handle` or ID) or playlist, with an optional published-after date filter and the option to exclude Shorts * **Sentry** — filter issues by search query (e.g. `is:unresolved`), environment, and time window; self-hosted Sentry is supported via a custom host * **Obsidian** — provide your vault URL (`https://127.0.0.1:27124` by default) and optionally restrict to a folder path * **Fireflies** — optionally filter by host email or cap the number of transcripts synced Configuration is validated on save — if a repository doesn't exist or a domain is unreachable, you'll see an error immediately. ### Choose sync frequency [#choose-sync-frequency] | Frequency | Notes | | ------------------- | ---------------------------------------------- | | Every hour | Best for fast-moving sources | | Every 6 hours | Good balance for most sources | | **Daily** (default) | Suitable for content that changes infrequently | | Weekly | For stable, rarely-updated sources | | Manual only | Sync only when you trigger it manually | Sub-hourly frequencies require a Max or Enterprise plan. ### Configure metadata tags (optional) [#configure-metadata-tags-optional] If the connector supports metadata tags, you'll see checkboxes for each available tag type (e.g., Labels, Last Modified, Notebook). All are enabled by default — uncheck any you don't need. Tag slots are shared across all documents in a knowledge base. See [Tags](/knowledgebase/tags) for details. ### Connect & Sync [#connect--sync] Click **Connect & Sync** to save the connector and trigger the first sync. Documents will start appearing as they're processed. ## Managing Connectors [#managing-connectors] Open **Connected Sources** from the knowledge base to see all active connectors. Each card shows the connector's status, the last sync time and document count, and the next scheduled sync: Connected Sources panel showing a Google Docs connector with Active status, last sync details, and a sync history log with dated entries The action buttons on each connector card: | Button | Action | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | **↻** (Refresh) | Trigger a manual sync immediately. Disabled while syncing or disabled; a 5-minute cooldown applies after each manual trigger | | **⚙** (Settings) | Open the edit modal to change source config or sync frequency | | **⏸ / ▶** (Pause / Resume) | Pause scheduled syncs without removing the connector. Resume works from both paused and disabled states | | **🗑** (Delete) | Remove the connector. A confirmation modal appears with an option to also delete all synced documents | | **∨** (Chevron) | Expand to show sync history | ### Editing a Connector [#editing-a-connector] Click the settings icon to open the edit modal. It has two tabs: **Settings** — change any source-specific config fields (e.g., switch the GitHub branch) and update the sync frequency. **Documents** — browse all documents this connector has synced and manage exclusions (see [Excluding Documents](#excluding-documents) below). ### Sync History [#sync-history] Expand any connector card by clicking the chevron to see a log of recent syncs: * Each row shows the date/time and a summary of what changed: **+N** (added, green), **\~N** (updated, amber), **-N** (deleted, red), **!N** (failed, red), or **No changes** * A spinner indicates a sync currently in progress * Error rows show a red icon and the failure message The log retains the most recent 10 sync runs. ## Excluding Documents [#excluding-documents] Sometimes a connector syncs documents you don't want in your knowledge base — drafts, templates, confidential pages, and so on. You can exclude them individually. Edit Google Docs modal showing the Documents tab with Active (37) and Excluded (0) filter buttons and a 'No excluded documents' message To exclude a document, open the connector's settings modal, go to the **Documents** tab, and click **Exclude** next to any document. Excluded documents are skipped on every subsequent sync even if the source content changes. To reverse an exclusion, switch to the **Excluded** tab and click **Restore** — the document will be pulled in on the next sync. ## How Syncing Works [#how-syncing-works] On each run the connector fetches documents from the source and compares them against what's already stored. Only changed documents are reprocessed — new content is added, updated content is re-chunked and re-embedded, deleted content is removed. A connector syncing thousands of documents will only do real work when something actually changes. ### Content Removed From View [#content-removed-from-view] Content that still exists at the source but is no longer current is treated the same as deleted, and is removed from your knowledge base. This covers an archived Confluence page, a task in an archived Asana project, an archived Webflow CMS item, a retired ServiceNow knowledge article, a spreadsheet in the Google Drive trash, a message moved to Outlook's Deleted Items, and a cancelled incident.io incident. This keeps agents from citing content your team has already retired. Restoring the item at the source brings it back on the next sync as a new document. ### Connector Status [#connector-status] | Status | Meaning | | ------------ | ----------------------------------------------------------------------- | | **Active** | Running normally on schedule | | **Syncing** | A sync is currently in progress | | **Paused** | Scheduled syncs are suspended; manual sync is still available | | **Error** | The last sync failed; will retry on the next scheduled run with backoff | | **Disabled** | Syncing has been paused automatically after 10 consecutive failures | A disabled connector requires intervention — either reconnect the OAuth account or use the Resume button to re-enable syncing. ### Handling Failures [#handling-failures] If a single document fails (e.g., a permission issue or timeout), the sync continues and retries that document next time. If an entire sync fails, the connector backs off and retries with increasing delays. After 10 consecutive full-sync failures the connector is automatically set to **Disabled** to avoid spinning indefinitely. ## Metadata Tags [#metadata-tags] Connectors can auto-populate [tags](/knowledgebase/tags) with metadata from the source — for example, a Notion connector can tag documents with their Labels and Last Modified date; a GitHub connector can tag documents with Repository and File Path. These tags are then available for filtered search in the Knowledge block. You can disable specific tag types during setup or at any time from the connector settings to free up tag slots for manual tagging or other connectors. Tag slots are shared across all documents in a knowledge base. If multiple connectors each populate tags, they draw from the same pool of 17 slots. ## Multiple Connectors [#multiple-connectors] You can add as many connectors as you need to a single knowledge base. Each manages its own documents independently, and all content is searchable together through the Knowledge block. Keep tag slot usage in mind when combining connectors that each populate metadata tags. --- # Debugging retrieval (/knowledgebase/debugging-retrieval) A [Knowledge block](/integrations/knowledge) search reads a query, embeds it as a vector, and returns the chunks of your documents that are closest to it. When the search misbehaves, it does so in one of three ways: it returns nothing, it returns the wrong chunks, or it returns the same content twice. Each one has a short list of causes you can check in the search results, in the document list, and in your tag filters. ## What a result looks like [#what-a-result-looks-like] A search returns a `results` array. Each entry is one chunk of one document, with the fields you use to diagnose retrieval: | Field | What it is | | --------------- | ------------------------------------------------------------------------------------------------- | | `documentName` | The source document the chunk came from. | | `sourceUrl` | Where the document was uploaded or synced from (`null` for manual uploads). | | `content` | The chunk text that matched. | | `chunkIndex` | The chunk's position in the document (`0` is the first chunk). | | `similarity` | How close the chunk is to your query, `0` to `1` (higher is closer). | | `rerankerScore` | An optional relevance score, present only when [Cohere reranking](/integrations/knowledge) is on. | | `metadata` | The chunk's tag values, by their display names. | {/* VISUAL: two result panels side by side. Left: empty `results: []`. Right: one populated result object with documentName, content, chunkIndex, similarity 0.92, metadata, sourceUrl annotated. */} The **similarity score** is the first thing to read. As a rough guide: above `0.8` is usually relevant, `0.6` to `0.8` is marginal, and below `0.6` is often noise. A search with a query always scores chunks this way. A tag-only search (filters, no query) returns every matching chunk with `similarity: 1`, because there's no query to measure distance against. ## Empty results [#empty-results] An empty `results` array means no chunk matched. There are three causes, listed here in the order worth checking. ### The documents aren't ready [#the-documents-arent-ready] Only documents that finished processing are searchable. Every document carries a `processingStatus`, and the Knowledge block silently skips anything that isn't `completed`. A knowledge base full of half-processed documents looks empty even though the upload succeeded. | `processingStatus` | Meaning | Searchable | | ------------------ | ------------------------------ | ---------- | | `pending` | Queued, not started. | No | | `processing` | Being chunked and embedded. | No | | `completed` | Ready. | Yes | | `failed` | Chunking or embedding errored. | No | {/* VISUAL: the four processingStatus states in a row, with a checkmark only on `completed`. */} Run the block's **List Documents** operation and check the status of each document. If a document is `pending` or `processing`, wait for it to finish. If it's `failed`, read its `processingError` (via **Get Document**) and re-upload. See [chunking strategies](/knowledgebase/chunking-strategies) for what happens during processing. ### The query doesn't match the content [#the-query-doesnt-match-the-content] If your documents are `completed` but the search still returns nothing, the query may not be close to anything stored. Confirm the content actually exists: run **List Chunks** and read what's in the knowledge base. If the answer is there but the search misses it, the problem is wording, not data. Try a simpler query, or use a term that appears in the content. See [wrong results](#wrong-results-or-low-relevance) below for the deeper version of this. ### Tag filters exclude everything [#tag-filters-exclude-everything] [Tag filters](/knowledgebase/tags) restrict the document set before the vector search runs, and they combine with AND logic: a document must match every filter to be searched. A filter like `Department equals 'engineering'` returns nothing if no document carries that tag value. Check the tag values actually set on your documents (**Get Document** shows them), and confirm the filter value matches exactly. To rule filters out as the cause, remove them and search by query alone. ## Wrong results or low relevance [#wrong-results-or-low-relevance] Wrong results are chunks that come back but don't answer the query, even though better content exists in the knowledge base. The vector search found something semantically near the query, but it wasn't near enough to be a good match. Read the `similarity` scores: a top result at `0.65` is the search telling you nothing good matched. Common causes: * **The query relies on an exact term or identifier.** Semantic search can match paraphrases, but a product code or error ID may need literal matching. Try [Hybrid retrieval](/knowledgebase/using-in-workflows#retrieval-mode) and include the exact identifier in the query. * **Chunks are too large.** A 1,024-token chunk blends many topics into one embedding, so its score is diluted across all of them. Smaller chunks (256 to 512 tokens) often retrieve more precisely. See [chunking strategies](/knowledgebase/chunking-strategies). * **Context is split across a chunk boundary.** The sentence that answers the query sits in one chunk and the subject it refers to sits in the previous one, so neither chunk scores well on its own. Overlap during chunking reduces this. Two fixes that don't require re-chunking: narrow the search with a tag filter first so the vector search runs over fewer, more relevant documents, or turn on **Cohere reranking**. Reranking re-scores the initial vector results with a model tuned for relevance and adds a `rerankerScore` to each result. It's worth enabling when you see marginal results (`0.6` to `0.75`) that a human would call relevant. It costs one search unit per call and adds latency, and if the reranker is unavailable the search falls back to vector ordering automatically. A high `similarity` score is not a guarantee the chunk answers the query, only that it's close in meaning. Vet the top results yourself, or use reranking, before trusting a search to ground an agent's answer. ## Duplicates [#duplicates] Duplicates are the same or near-identical content appearing more than once in `results`. Read the `documentName` and `chunkIndex` of the repeated entries to tell which case you have. * **Same document, adjacent `chunkIndex` values.** This is overlap. Chunking repeats some tokens between consecutive chunks (200 by default) to preserve context, so neighboring chunks share text and can both match. Lowering overlap reduces the repetition, at the cost of context at chunk boundaries. See [chunking strategies](/knowledgebase/chunking-strategies). * **Different `documentName`, identical content.** The same material was uploaded as two documents, or [synced from a connector](/knowledgebase/connectors) that holds it in more than one place. Consolidate the duplicate documents, or check the connector's source. ## Disabled chunks and claimed tag slots [#disabled-chunks-and-claimed-tag-slots] A chunk can be disabled with the **Update Chunk** operation (`enabled: false`), which removes it from all searches without deleting it. A disabled chunk never appears in results, even when it's the best match. If a chunk you know is relevant is missing from a search, confirm it isn't disabled. The same goes for tag slots when you use [connectors](/knowledgebase/connectors). Synced documents auto-populate tag values (a repository name, a last-modified date), and those occupy the same slots manual tags would. A filter that returns nothing can be filtering on a slot the connector already claimed. --- # Export (/knowledgebase/export-import) An **export** is a single archive that holds a knowledge base: every document, the chunks Agent Serve split it into, the tag definitions and values, and the chunking settings. Use it to keep a copy of a base outside Agent Serve. To export, right-click a base in the knowledge base list and choose **Export**, or open the base and click the **Export** button in the header. The download is named `.agentservekb.zip`. ## What the archive contains [#what-the-archive-contains] ```text .agentservekb.zip ├── manifest.json ├── files/ │ └── / └── chunks/ └── .ndjson ``` * **`manifest.json`** describes the export (format version 1): the base name, description, and chunking config; the embedding model and dimension and whether vectors are included; the tag definitions; and a document list with each document's filename, MIME type, size, enabled flag, tag values, entry paths, and chunk, token, and character counts. * **`files/`** holds each document's original file, when it has one. * **`chunks/`** holds one NDJSON file per document, with one JSON line per chunk: its index, content, token count, start and end offsets, enabled flag, and the vector when vectors are included. The export includes every document a workspace member can read, its file and its chunk text. Documents synced from a [connector](/knowledgebase/connectors) export as plain documents: their text and, where Agent Serve stored it, their file. ## What stays behind [#what-stays-behind] An export never includes: * Access-control lists * Connector links and credentials * Who uploaded each document * Internal storage keys Organization-wide search indexes cannot be exported. ## Vectors [#vectors] Vectors are embeddings, the numbers a model produces so search can compare chunks. They are included by default. Each chunk's vector is stored as base64-encoded float32 values in its NDJSON line. Vectors are only valid for a deployment that uses the same embedding model and dimension. The manifest records both for the base you exported. To skip vectors, set `vectors=false` on the API or pass `--no-vectors` to the CLI. ## Limits and governance [#limits-and-governance] A base with more than 2,000 documents cannot be exported. The request returns `413`. Organization admins can withhold export through the permission group setting **Knowledge Base Export** (enterprise). Every export records an audit event. ## API [#api] ```http GET /api/v2/knowledge/{knowledgeBaseId}/export?workspaceId={workspaceId}&vectors=true ``` The response is the archive. See the [API reference](/api-reference/getting-started) for authentication. ## CLI [#cli] ```bash agentserve knowledge export --output-file kb.zip agentserve knowledge export --output-file kb.zip --no-vectors ``` --- # Knowledge Base (/knowledgebase) A **knowledge base** is a store of documents your agents can search by meaning. You upload files, Agent Serve splits them into chunks and indexes them, and a [Knowledge block](/knowledgebase/using-in-workflows) retrieves the chunks most relevant to a query. This is how an agent answers from your own content instead of the model's general training.
The Support playbooks knowledge base with three processed Markdown documents, their size, tokens, chunks, and Enabled status
## How a document becomes searchable [#how-a-document-becomes-searchable] When you upload a document, Agent Serve processes it in the background: 1. **Extract** the text, with a parser for each file type and OCR for scanned PDFs. 2. **Chunk** it into passages, with a size and overlap you can tune. 3. **Embed** each chunk as a vector so it can be matched by meaning, not just keywords. A document is searchable once its status reads `completed`. Open any document to view, edit, merge, or split its chunks. Every knowledge base records the embedding model and the vector width it was built with, and keeps them for its lifetime. Two bases built differently cannot be searched in one request — vectors are only comparable when they come from the same model at the same size — so search them separately, or rebuild one to match. On Agent Serve Cloud every base uses `text-embedding-3-small` at 1,536 dimensions; self-hosted deployments choose both with [`KB_EMBEDDING_MODEL` and `EMBEDDING_OUTPUT_DIMS`](/platform/self-hosting/environment-variables), including models on their own Ollama. ## What you can upload [#what-you-can-upload] Agent Serve accepts PDF, Word, text, Markdown, HTML, Excel, PowerPoint, CSV, JSON, and YAML files, up to 100 MB each (best under 50 MB). Scanned PDFs work too: with Azure or [Mistral OCR](https://docs.mistral.ai/ocr/) configured, Agent Serve extracts text from image-based pages. ## Shaping what a search returns [#shaping-what-a-search-returns] Two things control retrieval quality, and each has its own page: * **Chunking** decides how a document is split. Smaller chunks are more precise; larger ones keep more context. See [chunking strategies](/knowledgebase/chunking-strategies). * **Tags** label documents so a search can filter to a subset. See [tags and filtering](/knowledgebase/tags). To keep a base in sync with an outside source like Google Drive, use a [connector](/knowledgebase/connectors). ## Next [#next] --- # Tags and filtering (/knowledgebase/tags) Tags let you attach structured metadata to documents so the Knowledge block can filter results precisely — by department, date, priority, status, or any dimension you define. ## How Tags Work [#how-tags-work] Tags have two layers: 1. **Tag definitions** — created at the knowledge base level. A definition has a name (e.g., "Department") and a type (Text, Number, Date, or Boolean). Definitions are shared across all documents. 2. **Tag values** — set per document. Once a definition exists, you assign a value to it on each document that needs it (e.g., `Department = "engineering"`). ## Tag Slots [#tag-slots] Each knowledge base has **17 tag slots** distributed across four types: | Type | Slots | Accepted values | | ----------- | ----- | ----------------------------------------- | | **Text** | 7 | Any string — matching is case-insensitive | | **Number** | 5 | Any valid number | | **Date** | 2 | `YYYY-MM-DD` format | | **Boolean** | 3 | `true` or `false` | The type dropdown in the creation form shows current slot usage for each type (e.g., `Text (0/7)` means none of the 7 text slots are in use yet). Slots are shared across all documents and connectors in a knowledge base. Connectors that auto-populate metadata tags draw from the same pool. Plan your schema with that in mind. ## Defining Tags [#defining-tags] Tag definitions live at the knowledge base level. To manage them, click the knowledge base name in the header to open the context menu and select **Tags**: Knowledge base header showing the dropdown menu with Rename, Tags, and Delete options This opens the Tags modal, which lists all defined tags and shows how many documents each one is assigned to. Click **Add Tag** to define a new one: Tags modal showing 0 defined tags, a Tag Name field set to Team, and a Type dropdown set to Text (0/7), with Cancel and Create Tag buttons Enter a **Tag Name** and pick a **Type**, then click **Create Tag**. The name must be unique within the knowledge base. The type dropdown only shows types that still have available slots. Press Enter to submit or Escape to cancel. To delete a tag definition, click the trash icon next to it. Deleting a definition removes the tag value from every document it was assigned to — the modal shows you which documents are affected before you confirm. Clicking any existing tag definition opens a dialog showing all documents that have a value set for it, along with their current tag values. ## Setting Tag Values on Documents [#setting-tag-values-on-documents] Once a definition exists, you assign values document by document. Right-click any document (or click the `…` menu) to open the document context menu, then select **Tags**: This opens the tag panel for that document where you can set a value for each defined tag. ## Viewing Tags in the Document List [#viewing-tags-in-the-document-list] The **Tags** column in the document list shows the current tag values for each document at a glance. Documents with no tags assigned show a dash: Knowledge base document list with Name, Size, Tokens, Chunks, Uploaded, Status, and Tags columns: refund-policy.md is tagged Billing, shipping-faq.md is tagged Logistics, and escalation-guide.md has no tag Use the **Filter** and **Sort** controls in the top right to narrow the list by tag values or sort by them. ## Using Tags in the Knowledge Block [#using-tags-in-the-knowledge-block] In a workflow, open the Knowledge block and configure **Tag Filters** to restrict which documents are searched: A Knowledge block searching the Support playbooks knowledge base, with the Configure panel showing Number of Results and a Tag Filters section containing Filter 1 with Tag, Operator: equals, and Value fields Each filter has three parts: * **Tag** — select a tag definition from the knowledge base * **Operator** — depends on the tag type (see below) * **Value** — the value to match against Add as many filters as you need with the **+** button. Multiple filters are combined with AND logic — a document must match all filters to be included in the search. ### Operators by Type [#operators-by-type] | Type | Available operators | | ----------- | ------------------------------------------------------------------------------------------------------------- | | **Text** | `equals`, `not equals`, `contains`, `does not contain`, `starts with`, `ends with` | | **Number** | `equals`, `not equals`, `greater than`, `greater than or equal`, `less than`, `less than or equal`, `between` | | **Date** | `equals`, `after`, `on or after`, `before`, `on or before`, `between` | | **Boolean** | `is`, `is not` | Tag values in filter fields can be static strings or workflow variable references (e.g., ``), so filtering can adapt dynamically at runtime. ## Search Modes [#search-modes] The Knowledge block behaves differently depending on what you provide: | What you provide | Behaviour | | ------------------------------- | -------------------------------------------------------------------------------------------- | | **Tags only** (no search query) | Returns matching chunks up to Number of Results, without vector ranking | | **Query only** (no tag filters) | Semantic vector search across all documents in the knowledge base | | **Both tags and query** | Tag filters run first to narrow the document set, then vector search runs within that subset | The combined mode is the most precise — tag filtering cuts down the candidate set cheaply before the more expensive vector similarity comparison runs. ## Connector-Populated Tags [#connector-populated-tags] Connectors can auto-populate tags with metadata from the source. A Notion connector might set **Last Modified** and **Labels**; a GitHub connector might set **Repository** and **File Path**. These work exactly like manually defined tags and are available in Knowledge block filters. You can disable specific metadata tag types during connector setup or in connector settings to free up slots for manual use. See [Connectors](/knowledgebase/connectors) for details. --- # Using a knowledge base in a workflow (/knowledgebase/using-in-workflows) A **Knowledge block** searches a [knowledge base](/knowledgebase) and hands the matching passages to a later block, so an [Agent](/workflows/blocks/agent) can answer from your documents instead of the model's memory alone. This page covers searching, narrowing with tags, reranking, and reading the results. In this workflow, the Knowledge block searches a base of product docs for the customer's question, and the Agent answers from the passages it returns. ## Search [#search] A **Knowledge block** set to **Search** takes a query, compares it against the chunks in a base, and returns the closest matches. (The block can also manage documents and chunks, but Search is what a workflow uses to retrieve context.) You point it at a knowledge base and give it a query; in our example the query is ``, the customer's question. Search is semantic, not keyword matching. The block turns the query into a vector and finds the chunks whose meaning is closest, so "refund timelines" can match a passage that says "we process returns within 14 days" with no shared words. **Number of Results** (topK) sets how many chunks come back, 10 by default. Fewer give the agent a tight, focused set; more widen the net at the cost of noise and tokens. You can also search by tags, instead of or alongside a query: | What you provide | What it does | | ---------------- | ------------------------------------------------------------------------------------------ | | Query only | Semantic search across every document in the base. The default. | | Tags only | Returns matching chunks up to Number of Results, without vector ranking. | | Query and tags | Tags narrow the document set first, then semantic search runs within it. The most precise. | ## Tag Filters [#tag-filters] **Tag Filters** restrict a search to documents carrying specific [tags](/knowledgebase/tags). Each filter has three parts: a **Tag** (a tag defined on the base, like `Department`), an **Operator** (`equals`, `contains`, `greater than`, and others depending on the tag's type), and a **Value** to match. In our example, adding `Department equals "Billing"` makes the search consider only billing documents. Add more filters with the **+** button; multiple filters combine with AND, so a document must match all of them. A filter value can be a fixed string or a reference like ``, so the scope can change per run. Filters run before the vector comparison, so they make a search both more precise and cheaper. See [Tags and filtering](/knowledgebase/tags) for the full operator list by tag type. ## Retrieval Mode [#retrieval-mode] **Retrieval Mode** is an advanced setting that chooses how matches are found. | Mode | What it does | | ----------- | ---------------------------------------------------------------------------- | | Vector only | The default. Ranks purely on meaning, as described above. | | Hybrid | Also runs a keyword search over the same chunks and blends the two rankings. | Semantic search is strong on paraphrase and weak on literal strings: an error code, a ticket key like `PROJ-1234`, a SKU, or a rare product name carries little meaning for the model, so the chunk containing it may not rank near the top. Hybrid adds a keyword pass that matches those tokens exactly, then merges the two lists so a chunk found by either signal can surface. Turn it on when your documents are full of identifiers, codes, or names people search for verbatim. Leave it off for prose-heavy bases where questions are asked in natural language. Hybrid costs no extra API calls — the keyword pass runs entirely in the database. ## Rerank Results [#rerank-results] **Rerank Results** is an optional second pass. Vector search ranks by raw similarity; reranking re-scores the top matches with a dedicated relevance model (Cohere's rerank models) and reorders them, which sharpens the ordering when the best answer isn't the literal closest vector. Leave it off for most searches. Turn it on when retrieval returns roughly the right documents but in the wrong order. When enabled, you pick a **Rerank Model**; self-hosted deployments also supply a Cohere API key. ## Retrieved chunks [#retrieved-chunks] The Search operation produces an **output** stored under the block's name, the same as any other block. Its main value is `results`: an array of the matched chunks, ranked best first. A later block reads it by reference, for example ``. Each result in the array is an object with these fields: | Field | What it is | | -------------- | ---------------------------------------------------------------------------------------------------------------------- | | `content` | The chunk's text. This is what the agent reads. | | `documentName` | The source document's filename, for citation. | | `sourceUrl` | A link to the original, if the document came from a [connector](/knowledgebase/connectors). `null` for uploaded files. | | `chunkIndex` | The chunk's position within its document. | | `similarity` | How close the chunk is to the query, higher is better. For example `0.92`. | | `metadata` | The document's attributes, including its tags. | | `documentId` | The source document's identifier. | The output also carries `query` (the text that was searched) and `totalResults` (the count). To ground an answer, wire the Knowledge block before an [Agent](/workflows/blocks/agent) block and reference the chunks in the Agent's prompt with ``. The agent reads the `content` of each result and can cite `documentName` and `sourceUrl`. See [how blocks reference output](/workflows/data-flow) for how one block reads another's output by name. ## When retrieval looks wrong [#when-retrieval-looks-wrong] When the agent's answer is off, the cause is usually in retrieval, not the agent. Read the Knowledge block's output in the [run logs](/logs-debugging) and check the chunks it actually returned: * **No results, or wrong documents.** A tag filter may be excluding what you want, or the documents may not be indexed yet. A document is only searchable once its processing status is `completed`; while it is `pending`, `processing`, or `failed`, its chunks won't appear. * **Low similarity scores across the board.** The query is too vague, or the information simply isn't in the base. Rewrite the query to match how the documents phrase things. * **Right documents, wrong order.** Turn on Rerank Results, or raise Number of Results so the relevant chunk is included. * **An exact code, ID, or name isn't found.** Switch Retrieval Mode to Hybrid so a keyword pass runs alongside the semantic one. See [debugging retrieval](/knowledgebase/debugging-retrieval) for the full diagnostic path, and [chunking strategies](/knowledgebase/chunking-strategies) for how chunk boundaries shape what a search can return. --- # Authentication (/mcp/authentication) ## OAuth [#oauth] Most apps sign in with OAuth. The first time you connect, your app opens Agent Serve in the browser, you sign in, and you approve its access. The app then holds a token that renews itself; you do not copy any secret. The approval screen names the app and what it can do: | Access | Scope | Allows | | --------- | ----------- | ----------------------------------------------------------------------------- | | Read-only | `api:read` | Reading workspaces, workflows, runs, tables, files, knowledge bases, and logs | | Full | `api:write` | Everything above, plus creating, changing, running, deploying, and deleting | Most apps request full access. To connect an app for reads only, configure it to request the `api:read` scope; changes then fail with an insufficient-scope error. Tokens are issued for the Agent Serve MCP server itself. An app cannot take one to another service and use it there. ### Revoke access [#revoke-access] Open **Settings → General → Authorized apps** in Agent Serve, find the app, and revoke it. The app's next request fails, and you can reconnect at any time. Revoking does not undo changes the app already made. ## API keys [#api-keys] Apps that cannot sign in through a browser, such as CI jobs and headless agents, can send a Agent Serve [API key](/api-reference/authentication) in the `X-API-Key` header, or as `Authorization: Bearer `. ```bash claude mcp add --transport http agentserve https://agentserve.valnoraelric.com/api/mcp \ --header "X-API-Key: $AGENT_SERVE_API_KEY" ``` ```json title="~/.cursor/mcp.json" { "mcpServers": { "agentserve": { "url": "https://agentserve.valnoraelric.com/api/mcp", "headers": { "X-API-Key": "${env:AGENT_SERVE_API_KEY}" } } } } ``` A personal key acts as you in every workspace you can access. A workspace key reaches only its own workspace, and a few account-level operations refuse it; `search_operations` marks them `personalCredentialOnly`. An API key does not expire until you revoke it. Prefer OAuth for any app that can open a browser, and store keys in your app's secret or environment settings rather than in a shared config file. ## Organization policy [#organization-policy] The server follows your organization's access policy. If an administrator turns off **OAuth apps** or **personal API keys** for your permission group, requests with that credential are refused in the affected workspaces. --- # Agent Serve MCP (/mcp) The Agent Serve MCP server gives an AI app the whole Agent Serve API through the [Model Context Protocol](https://modelcontextprotocol.io). Your agent can list workspaces, run and deploy workflows, query and edit tables, manage files and knowledge bases, read run logs, and more. It covers the same operations as the [API](/api-reference/getting-started) and the [CLI](/cli). | Deployment | Server URL | | ----------------- | ----------------------------------------------------------------------------------------------------------------------- | | Agent Serve Cloud | `https://agentserve.valnoraelric.com/api/mcp` | | Self-hosted | `https:///api/mcp`, or your [`AGENT_SERVE_MCP_URL`](/platform/self-hosting/environment-variables) | The server uses the Streamable HTTP transport. Sign in with OAuth, the default in every app below, or send an [API key](/mcp/authentication#api-keys). ## Connect an app [#connect-an-app] ```bash claude mcp add --transport http agentserve https://agentserve.valnoraelric.com/api/mcp ``` Open `/mcp` in Claude Code, select **agentserve**, and sign in to Agent Serve in the browser. Add `https://agentserve.valnoraelric.com/api/mcp` as a custom connector under **Settings → Connectors**, then connect it and sign in to Agent Serve. For Team or Enterprise, an owner first adds it under **Organization settings → Connectors**. See [Claude's custom connector instructions](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp). ```bash codex mcp add agentserve --url https://agentserve.valnoraelric.com/api/mcp ``` Complete the browser sign-in. To sign in again later, run `codex mcp login agentserve`. Add `agentserve` to `mcpServers` in `~/.cursor/mcp.json`, then enable it in Cursor and sign in to Agent Serve: ```json { "mcpServers": { "agentserve": { "url": "https://agentserve.valnoraelric.com/api/mcp" } } } ``` Add `agentserve` to `.vscode/mcp.json`, then start it and sign in to Agent Serve: ```json { "servers": { "agentserve": { "type": "http", "url": "https://agentserve.valnoraelric.com/api/mcp" } } } ``` Any other app that supports remote MCP servers with OAuth works the same way: give it the server URL and choose **Streamable HTTP** if asked. Claude's hosted connectors call your server from Claude's infrastructure, so a self-hosted Agent Serve must be reachable from the internet. A `localhost` URL works only with apps that run on your machine, such as Claude Code, Codex, Cursor, and VS Code. ## Try it [#try-it] Ask your app: * "List my Agent Serve workspaces and the tables in each." * "Run the `lead-scoring` workflow with this input and show me the result." * "Find failed runs from the last day and explain what went wrong." * "Create a table of our open support tickets and add these rows." The agent finds the right operation, reads its inputs, and calls it. See [Tools](/mcp/tools) for how that works. ## What your agent can do [#what-your-agent-can-do] The server acts as you. It sees the workspaces you can see, with your role in each, and every call is authorized, rate limited, and logged exactly like the same request to the API. Reads leave your resources unchanged, and apps can ask you to confirm each change. See [Authentication](/mcp/authentication) to limit an app to reads. ## Other Agent Serve MCP surfaces [#other-agent-serve-mcp-surfaces] This server is for operating Agent Serve. Two other MCP features do different jobs: * [Search MCP](/search/mcp) searches your organization's indexed sources. * [MCP deployment](/workflows/deployment/mcp) exposes your own workflows as tools, and [MCP tools](/agents/mcp) connect external servers to Agent Serve agents. --- # Tools (/mcp/tools) The Agent Serve API has more than 200 operations. Instead of one tool per operation, which would crowd your app's tool list and your agent's context, the server exposes four tools. The agent searches for an operation, reads its inputs, and calls it. | Tool | Does | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `search_operations` | Finds operations by keyword (`"table rows"`) or by area (`tables`, `workflows`, `knowledge`, …). Returns each operation's name, method, path, summary, and the tool that runs it. | | `describe_operation` | Returns an operation's description and the JSON Schema of its path parameters, query, body, and headers. | | `call_read_operation` | Runs an operation that only needs read access, such as `listWorkspaces`, `queryRows`, or `getWorkflowRun`. | | `call_write_operation` | Runs an operation that needs write access: one that creates, changes, runs, or deletes something, or reaches out to another service, such as `createTable`, `executeWorkflow`, or `listMcpServerTools`. | Reads and writes are separate tools so your app can approve reads once and still ask you before each change. ## Calling an operation [#calling-an-operation] Operation names match the [CLI](/cli/reference) and the [API reference](/api-reference/getting-started). A call names the operation and fills the parts of the request it needs: ```json { "operation": "listTableRows", "params": { "tableId": "tbl_8f2c" }, "query": { "workspaceId": "ws_91ab", "limit": 50 } } ``` | Field | Holds | | --------- | ----------------------------------------------------------- | | `params` | Path parameters, such as `tableId` or `workflowId` | | `query` | Query-string parameters; most operations need `workspaceId` | | `body` | The JSON request body (write operations only) | | `headers` | Headers the operation declares, such as `upload-token` | The result is the same JSON the API returns, usually `{ "data": … }`. List operations page with `limit` and `cursor`. A failed call returns the API's error, such as `{ "error": { "code": "NOT_FOUND", "message": "…" } }`, so the agent can correct its request. ## Limits [#limits] * **Same rules as the API.** Permissions, rate limits, and request validation are the API's own; nothing is looser through MCP. * **1 MiB per result.** Page through larger lists with `limit` and `cursor`. * **No streaming.** Run a workflow without `stream: true` to wait for its result, or with `async: true` and poll `getWorkflowRun`. * **No file bytes.** Downloads, knowledge base exports, and multipart document uploads are not available over MCP; use the [CLI](/cli/files) or the API. --- # Connected accounts (/platform/connected-accounts) **Connected accounts** collects people's accounts in one shared pool for your organization, also called a **credential group**. An organization admin chooses the providers, invites people to connect, and allows specific workspaces to use the pool. Workflows in those workspaces can find an account by email through the [Credential block](/workflows/blocks/credential). Each organization has at most one pool. Creating it does not give any workspace access; the workspace allowlist starts empty. ## Availability [#availability] Agent Serve Cloud requires an active Enterprise plan. Organization owners and admins manage the pool, subject to the organization's permission settings. A workspace admin who is not an organization admin cannot change the pool or its workspace access. For self-hosted deployments, set `CREDENTIAL_GROUPS=true`, or `ENTERPRISE_ENABLED=true` to enable the whole enterprise suite. Availability is organization-scoped; personal workspaces cannot use an organization pool. The setup instructions below describe **Settings → Connected accounts**, shown when Knowledge Member Access is disabled. When `KNOWLEDGE_MEMBER_ACCESS=true` and connected accounts is available, organization settings shows the Search **Integrations** page instead. Only the selected page is available, including through direct links. Switching pages does not remove existing connections or workspace access. ## Set up connected accounts [#set-up-connected-accounts] Open your organization’s **Settings → Connected accounts**. Select **Set up connected accounts** if this is your first time. The page has three tabs: | Tab | What you manage | | -------------------- | --------------------------------------------------------------------- | | **Providers** | Services people can connect and their shared configuration | | **People** | Connection requests, each person's connected accounts, and revocation | | **Workspace access** | Workspaces allowed to use the organization's accounts | ### 1. Add providers [#1-add-providers] In **Providers**, select **Add provider** and search the catalog. Complete any required configuration before adding the provider. Added providers appear in the list; use **Configure** to edit their settings or **Remove** in the row menu to remove them. | Provider | Organization setup | | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | OAuth providers, such as Gmail or Google Drive | Add the provider from the available catalog. Each invited person authorizes their account. | | Slack | Supply the Slack App ID, Slack workspace ID, OAuth client ID, and client secret, then complete app verification. The organization uses one app and Slack workspace. Existing workspace Slack bots remain separate. | | Fireflies and Granola | Add the provider. Agent Serve supplies the MCP endpoint and handles OAuth client registration. People only complete their own authorization. | | Databricks | Enter a name, the tenant's MCP URL, a registered OAuth client ID, and a client secret if required by that client. | For Databricks, **Add** validates and saves the configuration before the provider appears in the list. Cancelling the form leaves nothing added. Use an official Databricks HTTPS MCP endpoint, such as `https://your-workspace.cloud.databricks.com/api/2.0/mcp/sql`, and the OAuth client registered for your deployment. People connecting later use this organization configuration. When editing Databricks, leaving the client secret blank preserves the saved secret. Changing the MCP URL or OAuth client requires people to reconnect. Adding a provider makes account connections available without enabling indexing. Search source setup is managed on **Settings → Integrations** when Search is enabled. Connected accounts has no indexing controls or status indicators. Managed MCP providers currently support live tool calls only. ### 2. Invite people [#2-invite-people] For Search-enabled organizations, open **Settings → Integrations → People**. Otherwise, use **Settings → Connected accounts → People**. Set up a provider for personal account connections before inviting people; approving a Search integration alone is not enough. 1. Select **Request connections**. 2. Enter their email addresses and select **Send requests**. 3. Each person opens the invitation, signs in to Agent Serve with the verified invitation email, and authorizes the providers they want to connect. 4. They select **Submit** to finish the connection form. Invitees can contribute accounts without joining your organization. The invitation grants access to their connection form; it does not grant access to your workspaces or workflows. Use the invitation email in workflow lookups. For example, if you invite `alex@example.com`, **Find Organization Account** with that email and **Gmail** finds Alex's active Gmail contribution. #### How the email is associated with an Agent Serve user [#how-the-email-is-associated-with-an-agent-serve-user] On first use, the invitation email must match the signed-in user's verified Agent Serve email. Agent Serve then binds the invitation to that user's account. Another person cannot take it over by opening the link, and a later email change does not transfer it to a different Agent Serve user. The invitation email remains the workflow lookup key. OAuth account providers also verify that the provider email matches the invitation email. Managed MCP connections are associated with the verified Agent Serve user who completes authorization; they do not independently verify the MCP provider's account email. Keep using the invitation email when looking up those connections. In **People**, open a person's actions menu and select **Resend** when they need another invitation. **Revoke** stops the organization from using that person's contributions. The person cannot undo an administrator's revocation by reconnecting on their own. ### 3. Allow workspaces [#3-allow-workspaces] Open **Workspace access** and select **Add workspaces** to choose one or more workspaces. The list shows workspaces that have access; use a row's **Remove** action to withdraw it. Adding or removing a workspace applies immediately. Only workspaces in this organization can be allowed. An allowed workspace gives every authorized manual and deployed workflow in that workspace access to **every active account in the pool**. This includes scheduled, webhook, and public deployments that pass their normal workflow authorization. There is no separate workflow allowlist or restriction to the running user's own contributions. For example, allowing the Support workspace lets its authorized workflows use Alex's Gmail contribution even when someone else runs the workflow. Allowing the workspace does not grant anyone permission to edit or run a workflow they could not otherwise access. Removing a workspace stops subsequent use of the pool. It does not recall provider requests already in flight or remove data a workflow has already received. Chat continues to use each person's own connections; workspace access does not give Chat access to other people's accounts. ## Use accounts in workflows [#use-accounts-in-workflows] Use the **Credential** block's organization operations in an allowed workspace: * **Find Organization Account** selects an OAuth account by invitation email and provider. * **List Organization Accounts** returns a page of OAuth accounts, optionally filtered by email and providers. * **Find Organization MCP Connection** selects a person's managed MCP connection by invitation email and MCP provider. * **List Organization MCP Connections** returns a page of managed MCP connections, optionally filtered by email and provider. The organization is determined by the workflow's workspace. You do not enter a credential group ID or organization ID in the block. The outputs are account references, without tokens. Use an OAuth `credentialId` in the corresponding integration block's credential field. For managed MCP, `credentialId` identifies the person's connection; `mcpServerId` identifies shared configuration and cannot select that person's authorization by itself. See the [Credential block reference](/workflows/blocks/credential#organization-accounts) for inputs, outputs, pagination, and connection-event triggers. ## Reconnect or stop sharing [#reconnect-or-stop-sharing] People can open **Settings → Account → Connected accounts** to view accounts they contributed, including contributions to organizations they have not joined. **Reconnect** starts authorization again. **Disconnect** stops the organization from using that account in subsequent calls. For administrators, the controls have different scopes: | Action | Effect | | ------------------------------------- | ---------------------------------------------------------------- | | Remove a provider | Stops use of that provider's contributions in the pool | | Revoke a person | Stops use of all that person's contributions to the organization | | Remove a workspace from the allowlist | Stops that workspace's workflows from using the pool | ## Current limits and troubleshooting [#current-limits-and-troubleshooting] * **One pool per organization:** there are no additional groups, per-workflow grants, or per-account workspace allowlists. * **One Databricks configuration:** multiple tenant endpoints cannot be added as separate Databricks providers in the same pool. * **Organization operations are missing:** confirm the feature is enabled for the organization and the workflow's workspace is allowed. * **An invitation rejects your sign-in:** use the verified Agent Serve account matching the invitation email. For OAuth providers, connect the provider account with that same email. * **A Find operation fails:** it requires exactly one active matching connection. Check the invitation email, provider, connection status, and workspace access. It never chooses an arbitrary account when there are zero or multiple matches. * **A list seems incomplete:** organization list operations return up to 100 connections per page. Follow `nextCursor` while `hasMore` is true. * **A legacy Credential Group block fails:** replace it with the appropriate Credential block operation or trigger, update its output references, and redeploy the workflow. --- # Cost calculation (/platform/costs) Agent Serve calculates workflow usage from the base run charge, billable model usage, and hosted tool usage. ## Credits [#credits] Agent Serve uses **credits** as the unit of measurement for all usage. **1 credit = $0.005**. All plan limits, usage meters, and billing thresholds are displayed in credits throughout the Agent Serve UI. Dollar amounts in this documentation are provided for reference. ## How Costs Are Calculated [#how-costs-are-calculated] Workflow runs can include these cost components: **Base Run Charge**: 1 credit ($0.005) per run **AI Model Usage**: Variable cost based on token consumption. **Hosted Tool Usage**: Per-operation charges for tools using Agent Serve-provided keys. ```text modelCost = (inputTokens × inputPrice + outputTokens × outputPrice) / 1,000,000 totalCredits = baseRunCharge + (billableModelCost + hostedToolCost) × 200 ``` AI model prices are per million tokens. A workflow with no billable model usage or hosted tool usage incurs only the base run charge. ## Model Breakdown in Logs [#model-breakdown-in-logs] For workflows using AI blocks, you can view detailed cost information in the logs:
Model Breakdown
The model breakdown shows: * **Token Usage**: Input and output token counts for each model * **Cost Breakdown**: Individual costs per model and operation * **Model Distribution**: Which models were used and how many times * **Total Cost**: Aggregate cost for the entire workflow run ## Pricing Options [#pricing-options] With Agent Serve-provided model keys, model usage is billed through Agent Serve. With your own keys, you pay the provider directly; the workflow base charge still applies. Check the provider's current pricing when estimating a run, and use the run's recorded usage to compare configurations. ## Hosted Tool Pricing [#hosted-tool-pricing] When workflows use tool blocks with Agent Serve's hosted API keys, costs are charged per operation. Use your own keys via BYOK to pay providers directly instead. **Firecrawl** - Web scraping, crawling, search, and extraction | Operation | Cost | | --------- | ---------------------- | | Scrape | $0.001 per credit used | | Crawl | $0.001 per credit used | | Search | $0.001 per credit used | | Extract | $0.001 per credit used | | Map | $0.001 per credit used | **Exa** - AI-powered search and research | Operation | Cost | | ------------------ | ------------------------- | | Search | Dynamic (returned by API) | | Get Contents | Dynamic (returned by API) | | Find Similar Links | Dynamic (returned by API) | | Answer | Dynamic (returned by API) | **Serper** - Google search API | Operation | Cost | | -------------------- | ------ | | Search (≤10 results) | $0.001 | | Search (>10 results) | $0.002 | **Perplexity** - AI-powered chat and web search | Operation | Cost | | --------- | ----------------------------- | | Search | $0.005 per request | | Chat | Token-based (varies by model) | **Linkup** - Web search and content retrieval | Operation | Cost | | --------------- | -------- | | Standard search | \~$0.006 | | Deep search | \~$0.055 | **Parallel AI** - Web search, extraction, and deep research | Operation | Cost | | -------------------- | --------------------------------------- | | Search (≤10 results) | $0.005 | | Search (>10 results) | $0.005 + $0.001 per additional result | | Extract | $0.001 per URL | | Deep Research | $0.005–$2.40 (varies by processor tier) | **Jina AI** - Web reading and search | Operation | Cost | | --------- | ---------------------------------------- | | Read URL | $0.20 per 1M tokens | | Search | $0.20 per 1M tokens (minimum 10K tokens) | **Google Cloud** - Translate, Maps, PageSpeed, and Books APIs | Operation | Cost | | -------------------------------------------------------------------------------------------------------------- | ---------------------- | | Translate / Detect | $0.00002 per character | | Maps (Geocode, Directions, Distance Matrix, Elevation, Timezone, Reverse Geocode, Geolocate, Validate Address) | $0.005 per request | | Maps (Snap to Roads) | $0.01 per request | | Maps (Place Details) | $0.017 per request | | Maps (Places Search) | $0.032 per request | | PageSpeed | Free | | Books (Search, Details) | Free | **Brandfetch** - Brand assets, logos, colors, and company info | Operation | Cost | | --------- | ----------------- | | Search | Free | | Get Brand | $0.04 per request | ## Bring Your Own Key (BYOK) [#bring-your-own-key-byok] Use your own API keys for supported providers instead of Agent Serve's hosted keys to pay base prices with no markup. ### Supported Providers [#supported-providers] The BYOK settings page groups providers the same way. | Provider | Usage | | ------------ | --------------------------------------- | | OpenAI | LLM calls and Knowledge Base embeddings | | Anthropic | LLM calls | | Google | LLM calls | | Mistral | LLM calls and Knowledge Base OCR | | Z.ai | LLM calls | | Cohere | Embeddings and Knowledge Base reranking | | xAI | LLM calls | | Kimi | LLM calls | | Fireworks | LLM calls | | Together AI | LLM calls | | Baseten | LLM calls | | Ollama Cloud | LLM calls | | Fal.ai | Image and video generation | | Provider | Usage | | ------------ | ------------------------------------------------------ | | Firecrawl | Web scraping, crawling, search, and extraction | | Exa | AI-powered search and research | | Context.dev | Web scraping, crawling, search, and brand intelligence | | Serper | Google search API | | Linkup | Web search and content retrieval | | Parallel AI | Web search, extraction, and deep research | | Perplexity | AI-powered chat and web search | | Jina AI | Web reading and search | | Google Cloud | Translate, Maps, PageSpeed, and Books APIs | | Provider | Usage | | ---------------- | ---------------------------------------------------------- | | Brandfetch | Brand assets, logos, colors, and company info | | Hunter | Email finder, verification, and domain search | | People Data Labs | Person and company enrichment, search, and identity | | Findymail | Email finder, verification, and phone lookup | | Prospeo | Person and company enrichment and search | | Wiza | Prospect search, individual reveal, and company enrichment | | Datagma | Email, phone, person, and company enrichment | | Dropcontact | Contact enrichment and email finding | | LeadMagic | Email finding, validation, and B2B profile enrichment | | Icypeas | Email finding and verification | | Enrow | Email finding and verification | | ZeroBounce | Real-time email validation and deliverability checks | | NeverBounce | Real-time email verification and list cleaning | | MillionVerifier | Real-time email verification and deliverability checks | ### Key scopes [#key-scopes] A key is stored at one of two scopes. | Scope | Applies to | Who can manage | Plan | | ---------------- | ------------------------------------------------------ | ----------------------------------- | ---------------------------------------------------------------------------------------- | | **Workspace** | That workspace only | Workspace **admin** | Any plan on Agent Serve Cloud | | **Organization** | Every current and future workspace in the organization | Organization **admin** or **owner** | Any organization plan on Agent Serve Cloud — Pro for Teams, Max for Teams, or Enterprise | Organization keys let you set a provider key once instead of repeating it in every workspace. A new workspace added to the organization picks them up automatically. ### Which key a run uses [#which-key-a-run-uses] Precedence is resolved **per provider**, not per workspace: 1. The workspace's own key for that provider, if it has one 2. Otherwise, the organization's key for that provider 3. Otherwise, Agent Serve's hosted key, with the multiplier applied So a workspace that stores its own OpenAI key still inherits the organization's Anthropic key. A workspace key always wins over the organization key for the same provider — adding one is how you override inheritance for a single workspace. The BYOK settings page tags every provider your workspace is inheriting, so you can see which keys come from the organization before you override them. ### Setup [#setup] 1. Navigate to **Settings** → **BYOK** in your workspace 2. Choose **Workspace** or **Organization** (organization admins only) 3. Click **Add Key** for your provider 4. Enter your API key and save You can store several keys per provider per scope. Requests are distributed evenly across the keys in whichever scope is in effect. BYOK keys are encrypted at rest and are never returned to the browser in full — the settings page only ever shows a masked value. The Pi block's **Create PR**, **Update PR**, and **Plan** modes run the model client inside a sandbox, so the resolved key — including an inherited organization key — is exposed to that sandbox. To keep an organization key out of it, give the workspace its own key for that provider. Pi's optional web search never falls back to a stored key; it always requires an explicit key on the block. Deleting a workspace key makes that workspace fall back to the organization key if one exists, and to Agent Serve's hosted keys otherwise. Deleting an organization key makes every workspace that was inheriting it fall back the same way. If your organization's plan lapses, organization keys stop applying and those workspaces fall back to Agent Serve's hosted keys with the multiplier. The keys are retained, and organization admins can still delete them, but adding or updating them requires an active organization plan. ## Voice Input [#voice-input] Voice input uses ElevenLabs Scribe v2 Realtime for speech-to-text transcription. It is available in Chat and in deployed chat voice mode. | Context | Cost per session | Max duration | | -------------------------- | -------------------- | ------------ | | Chat (workspace) | \~5 credits ($0.024) | 3 minutes | | Deployed chat (voice mode) | \~2 credits ($0.008) | 1 minute | Each voice session is billed when it starts. In deployed chat voice mode, each conversation turn (speak → agent responds → speak again) is a separate session. Multi-turn conversations are billed per turn. Voice input requires `ELEVENLABS_API_KEY` to be configured. When the key is not set, voice input controls are hidden. ## Plans [#plans] Agent Serve has two paid plan tiers - **Pro** and **Max**. Either can be used individually or with a team. Team plans pool credits across all seats in the organization. | Plan | Price | Credits Included | Weekly Refresh | | -------------- | ------- | ---------------- | -------------- | | **Community** | $0 | 1,000 (one-time) | - | | **Pro** | $25/mo | 6,000/mo | +2,000/week | | **Max** | $100/mo | 25,000/mo | +4,000/week | | **Enterprise** | Custom | Custom | - | To use Pro or Max with a team, select **Get For Team** in subscription settings and choose the tier and number of seats. Credits are pooled across the organization at the per-seat rate (e.g. Max for Teams with 3 seats = 75,000 credits/mo pooled). Internal organization members use seats and contribute to the team's pooled credit allocation. External workspace members do not join your organization or count toward its seat total. They appear in the roster with an External label. ### Weekly Refresh Credits [#weekly-refresh-credits] Paid plans include a weekly credit allowance that does not count toward your plan limit. Each week, usage up to the weekly refresh amount is excluded from billable usage. This allowance resets every 7 days from your billing period start and does not carry over - use it or lose it. | Plan | Weekly Refresh | | ------- | --------------------------- | | **Pro** | 2,000 credits/week ($10.00) | | **Max** | 4,000 credits/week ($20.00) | For team plans, the weekly refresh scales with seats (e.g. Max for Teams with 3 seats = 12,000 credits/week). ### Annual Billing [#annual-billing] All paid plans are available with annual billing at a **15% discount**. Switch between monthly and annual billing in Settings → Subscription. | Plan | Monthly | Annual (per month) | Annual Total | | ------- | ------- | ------------------ | ------------ | | **Pro** | $25/mo | $21.25/mo | $255/yr | | **Max** | $100/mo | $85/mo | $1,020/yr | Team plans follow the same pricing per seat. ### On-Demand Billing [#on-demand-billing] By default, your usage is capped at the credits included in your plan. To allow usage beyond your plan's included amount, you can either enable **on-demand billing** or manually edit your usage limit to any value above your plan's minimum. * **Enable On-Demand**: Removes the usage cap entirely. You pay for any overage at the end of the billing period. * **Edit Usage Limit**: Set a specific cap above your plan's included amount to control how much overage you're willing to allow. * **Disable On-Demand**: Resets your usage limit back to the plan's included amount (only available if your current usage hasn't already exceeded it). On-demand billing for team plans is managed by organization owners and administrators. Workspace admin permission alone does not grant billing authority. ## Plan Limits [#plan-limits] ### Workspaces [#workspaces] | Plan | Personal Workspaces | Shared (Organization) Workspaces | | --------------------- | ------------------- | -------------------------------- | | **Free** | 1 | — | | **Pro** | Up to 3 | — | | **Max** | Up to 10 | — | | **Team / Enterprise** | — | Unlimited (Owners and Admins) | Team and Enterprise plans unlock shared workspaces that belong to your organization. Every workspace created under a Team or Enterprise plan is organization-owned: Owners and Admins can create unlimited shared workspaces, while organization Members cannot create workspaces. When someone joins the organization as an internal member, personal workspaces they own move into the organization and their usage is billed to it from then on. Internal members count toward your seat total — Enterprise invites require an available seat at invite time, while Team plans add a seat automatically when the invitee accepts. External workspace members get access to specific workspaces without joining your organization or using one of your seats; they must already be on a paid Agent Serve plan (their own Pro or Max subscription, or another organization that seats them), and invitees who already belong to another organization always join this way. When a Team or Enterprise subscription is cancelled or downgraded, existing shared workspaces remain accessible to current members but new invites are disabled until the organization is upgraded again. ### Rate Limits [#rate-limits] | Plan | Sync (req/min) | Async (req/min) | | -------------- | -------------- | --------------- | | **Free** | 50 | 200 | | **Pro** | 150 | 1,000 | | **Max** | 300 | 2,500 | | **Enterprise** | 600 | 5,000 | Rate limits follow the paid tier: Pro and Pro for Teams share the Pro limits, while Max and Max for Teams share the Max limits. ### Concurrent Executions [#concurrent-executions] | Plan | Concurrent Executions | | -------------- | ------------------------------- | | **Free** | 10 | | **Pro** | 50 | | **Max** | 200 | | **Enterprise** | 1,000 by default (customizable) | The concurrency limit applies per billing account. For organization-based plans, the limit is shared by all workspaces, members, and API keys under that organization. Teams plans follow their tier: Pro for Teams uses the Pro limit and Max for Teams uses the Max limit. An admitted async execution holds a slot while queued and running; synchronous executions hold one while running. Workflow-in-workflow blocks execute inside the parent run and do not consume another concurrency slot. ### File Storage [#file-storage] | Plan | Storage | | -------------- | --------------------- | | **Free** | 5 GB | | **Pro** | 50 GB | | **Max** | 500 GB | | **Enterprise** | 500 GB (customizable) | Storage follows the paid tier: Pro and Pro for Teams share the Pro limit, while Max and Max for Teams share the Max limit. Organization storage is pooled across the organization's workspaces. ### Run Time Limits [#run-time-limits] | Plan | Sync | Async | | -------------------- | ---------- | ------------------------------------------------ | | **Free** | 5 minutes | 90 minutes | | **Pro / Max / Team** | 50 minutes | 90 minutes | | **Enterprise** | 50 minutes | 90 minutes by default; configurable up to 7 days | **Sync runs** complete immediately and return results directly. These are triggered via the API with `async: false` (default) or through the UI. **Async runs** (triggered via API with `async: true`, webhooks, schedules, polling triggers, or table workflow columns) run in the background. A direct async API request can shorten the account policy for that request, but cannot extend it. If a workflow exceeds its time limit, it will be terminated and marked as failed with a timeout error. Design long-running workflows to use async runs or break them into smaller workflows. ## Billing Model [#billing-model] Agent Serve uses a **base subscription + overage** billing model: ### How It Works [#how-it-works] **Pro Plan ($25/month - 6,000 credits):** * Monthly subscription includes 6,000 credits of usage * Usage under 6,000 credits → No additional charges * Usage over 6,000 credits (with on-demand enabled) → Pay the overage at month end * Example: 7,000 credits used = $25 (subscription) + $5 (overage for 1,000 extra credits at $0.005/credit) **Team Plans:** * Usage is pooled across internal team members in the organization * Usage in an organization-owned workspace is billed to that workspace's organization, including work performed by external collaborators * Each authenticated actor's usage is also counted toward their member cap for that organization * Overage is calculated from total team usage against the pooled limit * Organization owner receives one bill **Enterprise Plans:** * Fixed monthly price, no overages * Custom usage limits per agreement ### Threshold Billing [#threshold-billing] When on-demand is enabled and unbilled overage reaches $100, Agent Serve automatically bills the full unbilled amount. **Example:** * Day 10: $120 overage → Bill $120 immediately * Day 15: Additional $60 usage ($180 total) → Already billed, no action * Day 20: Another $80 usage ($260 total, $140 unbilled) → Bill $140 immediately This spreads large overage charges throughout the month instead of one large bill at period end. ## Usage Monitoring [#usage-monitoring] Monitor your usage and billing in Settings → Subscription: * **Current Usage**: Real-time credit usage for the current billing period * **Usage Limits**: Plan limits with a visual progress bar * **On-Demand Billing**: Toggle on-demand billing to allow usage beyond your plan's included credits * **Plan Management**: Upgrade, downgrade, or switch between monthly and annual billing ### Programmatic Usage Tracking [#programmatic-usage-tracking] You can query your current usage and limits programmatically using the API: **Endpoint:** ```text GET /api/users/me/usage-limits ``` **Authentication:** * Include your API key in the `X-API-Key` header **Example Request:** ```bash curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" https://agentserve.valnoraelric.com/api/users/me/usage-limits ``` **Example Response:** ```json { "success": true, "rateLimit": { "sync": { "isLimited": false, "requestsPerMinute": 150, "maxBurst": 300, "remaining": 300, "resetAt": "2025-09-08T22:51:55.999Z" }, "async": { "isLimited": false, "requestsPerMinute": 1000, "maxBurst": 2000, "remaining": 2000, "resetAt": "2025-09-08T22:51:56.155Z" }, "authType": "api" }, "usage": { "currentPeriodCost": 12.34, "limit": 100, "plan": "pro_6000" } } ``` **Rate Limit Fields:** * `requestsPerMinute`: Sustained rate limit (tokens refill at this rate) * `maxBurst`: Maximum tokens you can accumulate (burst capacity) * `remaining`: Current tokens available (can be up to `maxBurst`) **Response Fields:** * `currentPeriodCost` reflects usage in the current billing period (in dollars) * `limit` is derived from individual limits (Free/Pro/Max) or pooled organization limits (Team/Enterprise) * `plan` is the highest-priority active plan associated with your user ## Purchasing Additional Credits [#purchasing-additional-credits] Pro and Team plan users can buy additional credits at any time in **Settings → Subscription → Credit Balance**: * **Range**: $10 to $1,000 per purchase * **Conversion**: 1 credit = $0.005 (a $10 purchase adds 2,000 credits) * **Availability**: Credits are added immediately after payment * **Expiration**: Purchased credits do not expire * **Refunds**: Purchases are non-refundable * **Team plans**: Only organization owners and admins can purchase credits. Purchased credits are added to the team's shared pool. Enterprise users should contact support for credit adjustments. ## Cost Optimization Strategies [#cost-optimization-strategies] * **Model Selection**: Choose models based on task complexity. Simple tasks can use GPT-4.1-nano while complex reasoning might need o1 or Claude Opus. * **Prompt Engineering**: Well-structured, concise prompts reduce token usage without sacrificing quality. * **Local Models**: Use Ollama or VLLM for non-critical tasks to eliminate API costs entirely. * **Caching and Reuse**: Store frequently used results in variables or files to avoid repeated AI model calls. * **Batch Processing**: Process multiple items in a single AI request rather than making individual calls. ## Next Steps [#next-steps] * Review your current usage in [Settings → Subscription](https://agentserve.valnoraelric.com/settings/subscription) * Learn about [Logging](/logs-debugging/logging) to track run details * Explore the [External API](/api-reference/getting-started) for programmatic cost monitoring * Check out [workflow optimization techniques](/workflows#blocks) to reduce costs --- # Secrets (/platform/credentials) Secrets are key-value pairs that store sensitive data like API keys, tokens, and passwords. Instead of hardcoding values into your workflows, you store them as secrets and reference them by name at runtime. ## Managing Secrets [#managing-secrets] To manage secrets, open your workspace **Settings** and navigate to the **Secrets** tab. Secrets settings page with Team space and Personal sections and inline name and value rows Secrets are organized into two sections: * **Team space** — shared with all members of your workspace * **Personal** — private to you External workspace members count as workspace members for workspace-scoped secrets. They can use workspace secrets according to their workspace permission level, even though they are not members of your organization. ### Adding a Secret [#adding-a-secret] Type a name (e.g. `OPENAI_API_KEY`) into the **Name** column and its value into the **Value** column in the last empty row. A new empty row appears automatically as you type. Existing values are masked by default. When you're done, click **Save** to persist all changes. Keys must use only letters, numbers, and underscores — no spaces or special characters. ### Bulk Import [#bulk-import] You can populate multiple secrets at once by pasting `.env`-style content into any key or value field. The parser supports standard `KEY=VALUE` pairs, `export KEY=VALUE`, quoted values, and inline comments. ### Editing and Deleting [#editing-and-deleting] Click directly into any key or value cell to edit it. To delete a secret, use the **…** menu on its row, then save. ## Using Secrets in Workflows [#using-secrets-in-workflows] To reference a secret in any input field, type `{{` to open the variable dropdown. Your available secrets are listed grouped by scope (workspace, then personal). Typing {{ in an input opens a dropdown showing available secrets Select the secret you want to use. The reference appears highlighted in blue and is resolved to its actual value at runtime. A resolved secret reference shown as {{OPENAI_API_KEY}} ### Execution log protection [#execution-log-protection] When a saved secret is successfully substituted through a `{{KEY}}` reference, Agent Serve masks exact, case-sensitive occurrences of its resolved value in log-facing content. This includes the editor's live block-log display, Logs Overview input and output, stored execution traces, log-read API responses, and the Logs block's **Get Run Details** output. Function and Agent span inputs, outputs, and errors, Agent thinking, and Agent tool-call arguments, results, and errors are protected. The replacement is normally shown as `{{KEY}}`. Secret resolution and functional workflow behavior are unchanged: blocks, tools, and downstream steps receive the real runtime value. Stored functional execution data, workflow execution responses, streams, callbacks, block state, and snapshots are not rewritten. Log-facing views and read APIs receive a separate protected copy, so the Logs Overview **Workflow Input** and **Workflow Output** are masked without changing the underlying workflow result. Model requests receive another protected projection: exact secret values known to the run are replaced with `{{KEY}}` before model-visible messages, prompts, tool arguments, or tool continuations leave Agent Serve. Code that reads a secret straight off the runtime environment — `environmentVariables['KEY']`, `environmentVariables.KEY`, or `const { KEY } = environmentVariables` in JavaScript, `environmentVariables['KEY']` or `environmentVariables.get('KEY')` in Python, `$KEY` or `${KEY}` in shell — also activates masking, provided Agent Serve can see the read in the code before it runs. A hardcoded literal never does: Agent Serve has no way to know it came from a secret. Direct reads are found by reading the code, not by running it, so recognition stops where the code stops being readable ahead of time. An unrecognized read is not masked, and does not appear under **See usage**. Where a read is recognized, Agent Serve reports it rather than trying to prove it is not one. Code that shadows the environment binding with its own object, overwrites a variable before reading it, or assigns to the name instead of reading it is still reported. Naming a secret costs only an exact value the code never emits; failing to name one leaves it unmasked. **See usage** can therefore occasionally list a secret the code had available but did not read. Assigning to the injected binding does not change the stored secret — it is an ordinary object built from the run's payload and discarded when the run ends. Edit a secret under **Settings → Secrets**. A read is **not** recognized when: * **The name is built at runtime.** `environmentVariables[keyName]`, `$@`, `${!indirect}`, `eval`, `printenv`, or a sourced file hide which secret is being read. * **The read is of a different object.** `other.environmentVariables['KEY']` reads something that merely shares the name. * **The read cannot be told apart from text.** A `$KEY` inside single quotes or a quoted heredoc (`<<'EOF'`) never expands, and Agent Serve treats anything its scanner cannot place as not running. Both masking and model-bound projection match only exact values in either case. Encoded, hashed, fragmented, or otherwise transformed versions are not matched, and a value assembled or emitted piece by piece cannot be matched at all — determining whether arbitrary code will eventually reveal a value is not decidable in general. Treat these as a safety net, not a boundary: do not deliberately return, print, or transmit secrets. ### Chat code execution [#chat-code-execution] Chat's Function and code-execution tools receive a saved secret only when their code explicitly contains a valid `{{KEY}}` reference. Direct `environmentVariables.KEY` access, shell `$KEY`, dynamic names, literals, and configured-but-unused secrets do not mount a value. Code execution requires workspace write access, and the caller must be allowed to **use** the secret — the same set a workflow resolves for them: your own Personal secrets, and Workspace secrets you hold an active grant on as a Credential Member or Credential Admin, which a workspace admin holds on every key. A secret you hold no grant on does not mount, and neither does one whose grant is revoked or still pending. This matches what a workflow Function block already resolves for the same person, deliberately. Being able to run a secret is not normally the same as being able to read it: Credential Members can reveal a workspace secret under **Settings → Secrets** only when a Credential Admin has enabled **Show value in logs and Chat**. **See usage** remains visible only to that secret's admins, so a Credential Member using a secret in code is recorded for whoever can rotate it. Headless surfaces use their saved **Secret access** setting: * **Agent Serve Chat block** — under **Show additional fields** * **Scheduled Tasks** — in the task modal * **Inbox** — under **Settings → Inbox → Secrets** Choose **All secrets** or **Selected secrets**. Existing configurations default to **All secrets** for compatibility. **All secrets** still means only secrets explicitly referenced with `{{KEY}}` that the execution actor may use; it never injects the full environment. Inbox messages from allowed external senders do not receive raw-secret access at all — an inbound message that Agent Serve cannot match to a workspace member runs with no secret actor, so no `{{KEY}}` resolves for it. Code receives the real authorized value at runtime. Before any tool result visible to Chat is returned, exact occurrences of activated secret values are replaced with `{{KEY}}`; local side effects and runtime results are not rewritten. Encoded, hashed, URL-encoded, otherwise transformed, or network-exfiltrated values cannot be inferred and masked reliably, so code should not deliberately return, transform, print, or transmit secrets to unintended destinations. ## Secret Details [#secret-details] Click **Details** on any secret row to open its detail view. From here you can: * View the **Key** and reveal the **Value** when visibility is enabled; Credential Admins can edit it * Toggle **Visibility** — show the value unmasked in run output; see [Visibility](#visibility) * Edit the **Description** — an optional note telling teammates what the secret is for. Workspace secrets only; a personal secret is not shared, so it has none * Manage **Members** — invite teammates by email and assign them an **Admin** or **Member** role * Open **See usage** — where this secret has actually been used Click **Save** to apply changes, or **Back** to return to the list. ### Visibility [#visibility] By default, a secret's resolved value is masked everywhere Agent Serve shows run output (see [Execution log protection](#execution-log-protection)). For values that aren't actually sensitive — a non-secret shared base URL — that masking makes your own logs harder to read. **Show value in logs and Chat** turns masking off for one workspace secret. With it on: * Run logs, Chat, and code output show the real value instead of `{{KEY}}` * Files a run writes with the value in them stay readable and attachable * The Secrets API list includes the value for this secret, so external agents can read it directly instead of scraping logs * Credential Members can reveal the value under **Settings → Secrets**, without gaining permission to edit it The value becomes visible to **anyone who can see this workspace's runs** — including publicly shared log links and log exports, and regardless of member restrictions on the secret itself. Only turn it on for values you'd be comfortable printing in a log. The switch applies to future runs only. Logs written while the secret was masked stay masked, and anything written while it was visible keeps the value even if you turn masking back on. If another secret holds the same value, that value stays masked — masking always wins a conflict. Workspace secrets only; the same people who can edit the description can flip it. ### See usage [#see-usage] **See usage** lists the runs that resolved this secret: when it was last used, what used it (a workflow, the Agent Serve agent, or an MCP server), how it was triggered, who it resolved under, and a link to the most recent run in Logs. Rows are grouped by day, so a workflow on a schedule reads as one row per day rather than thousands. This answers the question worth asking before rotating a key: who has been using it, inside what, and how recently. Only Credential Admins on a workspace secret, or the owner of a personal one, can see its usage. For everyone else the action is visible but disabled because the trail names workflows, people, and run IDs. Two people who each hold a personal secret under the same name see only their own runs. Usage is recorded independently of execution logs, so it outlives them: logs expire under your workspace's retention setting, while the record of who touched a credential does not. It records what a run resolved, subject to the recognition limits under [Execution log protection](#execution-log-protection) — a read Agent Serve cannot attribute is left out rather than guessed at, so treat an empty trail as "nothing recognized," not proof a secret was never used. ## Workspace vs. Personal [#workspace-vs-personal] | Feature | Workspace | Personal | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------- | | **Who sees the name** | All workspace members, including external workspace members | Only you | | **Who sees the value** | Workspace admins and that secret's Credential Admins; Credential Members when **Show value in logs and Chat** is enabled | Only you | | **Use in workflows and code** | Workspace admins and members with an active Credential Member or Credential Admin grant | Only you can use | | **Best for** | Production workflows, shared services | Testing, personal API keys | | **Who can edit** | Workspace admins and that secret's Credential Admins | Only you | Among secrets available to the execution actor, the **workspace secret takes precedence**. An inaccessible workspace secret does not shadow an authorized personal secret. ### Resolution Order [#resolution-order] When a workflow runs, secrets resolve in this order: 1. **Workspace secrets** are checked first, and always resolve against the identity running the workflow — the caller when one can be identified, otherwise the workspace's billing account. A run only sees the workspace secrets that identity is allowed to use. 2. **Personal secrets** are used as a fallback, from whichever identity is running: | Run started by | Personal secrets come from | | -------------------------------------------------------- | ---------------------------------------- | | Clicking Run, or a personal API key | The person running it | | A workspace API key, schedule, webhook, or deployed chat | The workflow owner | | A public API URL with no authentication | Nobody — personal secrets do not resolve | The workflow owner is the fallback only where nobody can be identified but somebody in the workspace set the trigger up, since those workflows are usually built against the owner's own keys. A public URL can be called by anyone, so it never borrows a person's keys at all — put every secret such a workflow needs in **Workspace**. If the workflow owner later leaves the workspace, the run keeps working: it resolves workspace secrets as normal and simply resolves no personal ones, so any block that needed a personal secret fails on its own with the missing key named. Move that secret to **Workspace** to fix it for good. ## Best Practices [#best-practices] * **Use workspace secrets for production** so workflows work regardless of who triggers them * **Use personal secrets for development** to keep test keys separate * **Name keys descriptively** — `STRIPE_SECRET_KEY` over `KEY1` * **Never hardcode secrets** in workflow input fields — always use `{{KEY}}` references --- # Organizing a workspace (/platform/organization) Folders group workflows in the sidebar. Nest or reorder them to organize a [workspace](/platform/workspaces) by team, customer, or purpose. {/* VISUAL: before/after sidebar. Left: a flat list of ~20 workflows, no grouping. Right: the same workflows under 3-4 top-level color-coded folders ("Internal", "Customer-Facing", "Ops"), some expanded to show nested subfolders. */} ## The parts of a folder [#the-parts-of-a-folder] Here's an example: a folder named **Customer Deployments**, colored red, holding five workflows and two subfolders. ### Name [#name] Choose category names such as `Internal`, `Customer-Facing`, or `Ops`. Use the same naming convention across your workspace. {/* VISUAL: a single sidebar folder row showing the expand chevron, color dot, and name "Customer Deployments". */} ### Color [#color] Folder colors appear as dots beside their names and default to gray (`#6B7280`). Change the color from the folder menu. Use color alongside clear names so the grouping is still understandable without color. {/* VISUAL: a short vertical stack of folders with distinct color dots: red "Production", gray "Internal", another color for "Customer-Facing", showing color as the grouping signal. */} ### Nesting [#nesting] Nest folders when a category needs subgroups, for example `Production` → `Customer A` → `Deployments`. Keep the hierarchy shallow enough to scan. {/* VISUAL: a three-level nested tree: "Production" (red, top level) > "Customer A" (yellow) > "Deployments" (purple), each row indented one step, showing the parent-to-child chain. */} ### Order [#order] Folders display in a set **order**, top to bottom, that you control by dragging them in the sidebar. Drag a folder up or down to reorder it within its level, or drag it onto another folder to move it inside as a subfolder. Order is a convention too: put the folders a team touches daily at the top. ### Locking [#locking] A **locked** folder is read-only: its workflows can be viewed but not edited. Locking is off by default. Lock a `Production` folder so members can open and run its workflows without changing them by accident. Locking a folder also locks everything inside it, so a locked parent protects its subfolders and their workflows in one move. Who can lock and unlock follows the workspace [roles and permissions](/platform/permissions). {/* VISUAL: the folder context menu open on a folder row, showing the options: rename, change color, lock, duplicate, export, new subfolder, delete. */} ### Archiving [#archiving] **Archiving** a folder removes it from your active sidebar without deleting it. An archived folder drops out of the normal view, and you restore it when you need it again. Use archiving for cleanup: a finished customer engagement or a retired experiment leaves the sidebar but stays recoverable. There is no permanent hard-delete in the folder menu, so archiving is the safe way to get something out of the way. ## Conventions [#conventions] Naming conventions make the structure legible to someone who did not build it. Nothing here is enforced, so the value comes from applying one rule consistently across the workspace. * **Group by audience or function at the top level.** A common split is `Internal`, `Customer-Facing`, and `Ops`. Someone new can find the right branch from the top-level names alone. * **Name folders as categories, workflows as actions.** A folder is a noun (`Billing`); a workflow is a thing it does (`Send overdue reminder`). The folder path plus the workflow name should read as a sentence. * **Use color for the top level, names for everything below.** Color carries the coarse grouping; names carry the detail. Mixing both at every level turns into noise. * **Mirror the convention everywhere.** The same category words you use for folders are worth reusing for [tables](/platform/workspaces), [secrets](/platform/credentials), and [integrations](/integrations), so a team learns one vocabulary instead of three. ## One workspace or several [#one-workspace-or-several] Folders organize workflows within a workspace. Use a separate workspace when the work needs its own members, settings, or resource ownership. * **Group in folders** when everything belongs to the same team and the same access rules, and you only want it easier to navigate. * **Split into workspaces** when a set of work needs its own members, its own integrations and secrets, or its own isolation. The classic case is one workspace per customer, where the workspace itself is the deliverable the customer owns. See [Workspace fundamentals](/platform/workspaces) for what the boundary scopes and [Roles and permissions](/platform/permissions) for how members and seats work across workspaces. ## Next [#next] --- # Roles and permissions (/platform/permissions) Access in Agent Serve is organized into three nested levels — your **organization**, the **workspaces** inside it, and the **credentials** (connected accounts and secrets) inside those. Each level has its own roles, and roles **inherit downward**: an admin at one level is automatically an admin at the level below. Inheritance only ever *adds* access — it never takes access away from someone who already has it. ## How roles inherit [#how-roles-inherit] Each level has its own set of roles: | Level | Roles | | ------------------------------------------------ | -------------------- | | **Organization** | Owner, Admin, Member | | **Workspace** | Read, Write, Admin | | **Credentials** (shared connections and secrets) | Member, Admin | Higher roles flow down automatically: * An organization **Owner or Admin** is automatically an **Admin of every workspace** in the organization — no per-workspace invite required. * A workspace **Admin** is automatically an **Admin of every shared credential** in that workspace — OAuth connections, service accounts, and workspace secrets. Put together, an organization Owner or Admin can administer every workspace and every shared credential in the organization, top to bottom. Inherited roles are **automatic and locked**. In member lists they show greyed out with a short tooltip saying where the role comes from (for example, *"Organization admins are automatically workspace admins"*), and they can't be lowered there — you change them at the level they come from. **Personal secrets are the one exception.** A user's personal environment variables stay private to them and are never shared or inherited — not by workspace Admins, not by organization Owners or Admins, not by anyone. ## Workspaces and Organizations [#workspaces-and-organizations] Agent Serve has two kinds of workspaces: * **Personal workspaces** live under your individual account. The number you can create depends on your plan. * **Shared (organization) workspaces** live under an organization and are available on Team and Enterprise plans. Any organization Owner or Admin can create them. When you invite someone to a shared workspace you choose their **Membership**: **Member** or **Admin** makes them an internal member of the organization — they use a seat, and their own workspaces move in with them (see [Joining an organization](#joining-an-organization)) — while **External** gives them access to the selected workspaces only. Invitees who already belong to another organization always become external, because an Agent Serve account belongs to at most one organization. ### Workspace Limits by Plan [#workspace-limits-by-plan] | Plan | Personal Workspaces | Shared Workspaces | | --------------------- | ------------------- | ----------------------------- | | **Free** | 1 | — | | **Pro** | Up to 3 | — | | **Max** | Up to 10 | — | | **Team / Enterprise** | — | Unlimited (Owners and Admins) | On Team and Enterprise plans, every workspace you create belongs to the organization. Organization Owners and Admins can create unlimited shared workspaces; organization Members cannot create workspaces. Personal workspaces you owned before joining move into the organization when you accept the invite — see [Joining an organization](#joining-an-organization). Enterprise invites require an available seat at invite time; on Team plans, a seat is added automatically when the invitee accepts. When a Team or Enterprise subscription is cancelled or downgraded, existing shared workspaces stay accessible to current members. New invitations are blocked until the organization is upgraded again. ## How to Invite Someone to a Workspace [#how-to-invite-someone-to-a-workspace] Invite teammates dialog with Emails, Team spaces, and Team space access fields One invite covers everything you give a person at once: enter their emails, select **one or more workspaces**, set the workspace access level, and choose their **Membership**. The same dialog opens from the workspace header and from organization settings. Invites to the same person add up rather than stacking. If you invite someone to another workspace while their first invite is still pending, the new workspace is added to that invitation — they get one link that grants everything, and accept once. Because one pending invite can span several workspaces, revoking is scoped to where you do it. Revoking from a workspace's **Teammates** list withdraws that workspace's access only and leaves the rest of the invitation pending; the invitation is cancelled outright when you remove its last workspace. To cancel the whole thing at once, revoke it from organization settings — that needs organization admin, or admin on every workspace the invite covers. ## Workspace Permission Levels [#workspace-permission-levels] When inviting someone to a workspace, you can assign one of three permission levels: | Permission | What They Can Do | | ---------- | ------------------------------------------------------------------------------- | | **Read** | View workflows, see execution results, but cannot make any changes | | **Write** | Create and edit workflows, run workflows, manage environment variables | | **Admin** | Everything Write can do, plus invite/remove users and manage workspace settings | ## Internal Members vs External Workspace Members [#internal-members-vs-external-workspace-members] Workspace permissions are separate from organization membership: * **Internal organization members** belong to your organization, appear in the organization roster, and count toward your seat total. Invite new teammates this way when they should be part of your company or team in Agent Serve. * **External workspace members** have access only to the workspaces they are invited to. They are not part of your organization: they do not count toward your seats, their own workspaces stay theirs, and they appear in your roster with an **External** label so admins can always see and revoke their access. Use external access for clients, partners, and contractors. You pick between the two with the **Membership** option when sending an invite. Three rules apply: * **External is only available for people already on a paid Agent Serve plan** — their own Pro or Max subscription, or membership in another organization that seats them. External collaborators do not use one of your seats, so they have to be paying for Agent Serve somewhere else. Inviting someone on the free plan as External is rejected with a message telling you to invite them as a Member or Admin instead, which adds a seat. * **Invitees who already belong to another organization are always external**, whatever you pick, because an account belongs to at most one organization. * **Inviting someone as a Member to the organization itself always includes access to at least one workspace**, so every new member has somewhere to land. Invitees see what they are agreeing to before they accept. The accept screen names every workspace they are being given, says whether they are joining as a member, an admin, or an external collaborator, says whether that uses one of your seats, and names any of their own workspaces that will move into the organization. External workspace members still receive a workspace permission level — Read, Write, or Admin — and that permission controls what they can do inside the workspace. ## Joining an organization [#joining-an-organization] Accepting an invite that makes you an **internal member** does more than grant access — it brings your work under the organization: * **Your workspaces move with you.** Every personal workspace you own, archived ones included, becomes an organization workspace. The accept screen names the workspaces that will move before you accept. * **You keep Admin on them.** You remain their administrator; organization Owners and Admins also gain Admin access through the normal [role inheritance](#how-roles-inherit), and usage in those workspaces is billed to the organization from then on. * **Your collaborators are not pulled in.** Anyone you had shared those workspaces with keeps their access as an **external member** — they never join the organization or consume a seat as a side effect of your joining. * **The workspaces stay if you leave.** If you later leave or are removed from the organization, workspaces you brought in remain with the organization. Accepting an **external** invite changes none of this: you get access to the invited workspace only, and everything you own stays yours. ## What Each Permission Level Can Do [#what-each-permission-level-can-do] Here's a detailed breakdown of what users can do with each permission level: ### Read Permission [#read-permission] **What they can do:** * View all workflows in the workspace * See workflow execution results and logs * Browse workflow configurations and settings * View environment variables (but not edit them) **What they cannot do:** * Create, edit, or delete workflows * Run or deploy workflows * Change any workspace settings * Invite other users ### Write Permission [#write-permission] **What they can do:** * Everything Read users can do, plus: * Create, edit, and delete workflows * Run workflows * Add, edit, and delete workspace environment variables * Use all available tools and integrations * Collaborate in real-time on workflow editing **What they cannot do:** * Invite or remove users from the workspace * Change workspace settings * Delete the workspace ### Admin Permission [#admin-permission] **What they can do:** * Everything Write users can do, plus: * Deploy workflows * Invite new users to the workspace with any permission level * Remove users from the workspace * Manage workspace settings and integrations * Administer every shared credential in the workspace (OAuth connections, service accounts, and workspace secrets) * Delete workflows created by other users * Delete the workspace **What they cannot do:** * Change a role that's inherited from a higher level — an organization admin's workspace role, or the owner's, is locked and managed where it comes from *** ## Workspace Owner [#workspace-owner] Every workspace has one **Owner** — usually the person who created it. The Owner is simply an Admin whose role is fixed: in the member list it shows as a locked **Admin** (tooltip *"Workspace owner"*), so it can't be lowered. An Owner has no abilities a regular Admin lacks. Any Admin — whether invited directly or an admin by way of their organization role — can manage members and settings and delete the workspace. On a shared workspace an Admin can also remove the Owner; ownership then passes to the organization's owner, so the workspace always has one. (The organization's owner is the one account that can't be removed this way — they're the final fallback.) On your personal workspace you are the Owner and can't be removed. *** ## Common Scenarios [#common-scenarios] ### Adding a New Developer to Your Team [#adding-a-new-developer-to-your-team] 1. **Organization level**: Invite them as an **Organization Member** 2. **Workspace level**: Give them **Write** permission so they can create and edit workflows ### Adding a Project Manager [#adding-a-project-manager] 1. **Organization level**: Invite them as an **Organization Member** 2. **Workspace level**: Give them **Admin** permission so they can manage the team and see everything ### Adding a Stakeholder or Client [#adding-a-stakeholder-or-client] 1. **Membership**: If they should not join your organization, set Membership to **External** — this needs them to already be on a paid Agent Serve plan, since external collaborators do not use one of your seats 2. **Workspace level**: Give them **Read** permission so they can see progress but not make changes *** ## Environment Variables [#environment-variables] Users can create two types of environment variables: ### Personal Environment Variables [#personal-environment-variables] * Only visible to the individual user, and never shared or inherited — not even by workspace or organization admins * Available in all workflows they run * Managed in **Settings**, then go to **Secrets** ### Workspace Environment Variables [#workspace-environment-variables] * **Read**: see variable names (the values stay hidden unless you're an admin of that secret) * **Write**: add new variables, and edit or delete ones you created * **Admin**: add, edit, delete, and view the values of any workspace variable * Workspace variables are a kind of workspace credential, so they follow the [Credential Access](#credential-access) rules below — workspace Admins are admins of all of them * Available to all workspace members. If a workspace variable and a personal variable share the same name, the **workspace** value wins when a workflow runs *** ## Credential Access [#credential-access] Workspace credentials — OAuth connections, service accounts, and workspace environment variables — have two roles of their own: * **Credential Member**: can use the credential in workflows. * **Credential Admin**: can use it and also edit, delete, and share it. These roles follow your workspace role: * **Workspace Admins are automatically Credential Admins** of every shared credential in the workspace (OAuth connections, service accounts, and workspace environment variables). Because organization Owners and Admins are workspace Admins everywhere, they are Credential Admins too. These automatic roles are fixed — they show greyed out with a tooltip in the credential's member list and cannot be changed. * **Read and Write members need an active credential grant** to use a shared credential. Credential Members have use access; Credential Admins can also edit, delete, and share it. You are an admin of credentials you create. * **Personal environment variables** are the exception: they stay private to their owner and are never shared with workspace admins. A Credential Admin can both use and manage a credential, so a workspace Admin can run workflows that use any shared OAuth connection in the workspace — including one another member added. *** ## Module access [#module-access] Roles decide what someone can do in a workspace. On Enterprise organizations, [permission groups](/platform/enterprise/access-control) can narrow that further, module by module. A group can withhold: | Area | Modules a group can withhold | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Agents** | Chat, Relays, Agent Serve Mailer, Live, Sandboxes | | **Building** | Workflow building (including deploying), dashboard building, data management, model management, app building (including the [browser IDE](/developers/ide)) | | **Data and analysis** | Dashboards, Monitors, [Workbooks](/data/workbooks), Knowledge Base, Tables, Files | | **Apps** | Opening installed [apps](/developers) | A withheld module is refused at the API, not only hidden in the app. Groups govern every workspace role, Admin included, and a group can apply only to members with chosen roles. Start a group from a preset — **Field user**, **Viewer**, **Analyst**, **Builder**, or **Admin** — and adjust it. For a scheduled, webhook, or API-key run, the group of the member who deployed the running version applies. The full list of rows, presets, and how a group is chosen for each person is in [Access Control](/platform/enterprise/access-control). To see which modules people actually use, open **Settings → Organization → Insights → Modules**. *** ## Organization Roles [#organization-roles] An organization has three roles: **Owner**, **Admin**, and **Member**. ### Organization Owner [#organization-owner] **What they can do:** * Everything an Admin can do * Transfer organization ownership to another user * Only one Owner exists per organization ### Organization Admin [#organization-admin] **What they can do:** * Invite and remove team members from the organization * Create new shared workspaces under the organization * Manage billing, seat count, and subscription settings * Access every shared workspace in the organization as a workspace Admin automatically (no per-workspace invite), including administering the credentials inside them * Promote members to Admin or demote Admins to Member Owners and Admins have the same day-to-day permissions. The only action reserved for the Owner is transferring ownership. ### Organization Member [#organization-member] **What they can do:** * Access shared workspaces they've been specifically invited to * View the list of organization members * Cannot invite new people, create shared workspaces, or manage organization settings --- # Settings (/platform/settings) Click the gear at the bottom of the left rail to open **Settings**. Use **Find a setting** to search. Sections are grouped as below; some only appear on certain plans, for certain roles, or on hosted or self-hosted deployments. | Group | Sections | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Account** | Profile & preferences, Subscription. In the desktop app also Desktop, Browser, and Terminal. | | **Team space** | Teammates, [Secrets](/platform/credentials), Model API keys (hosted only), Code environments, [Team space forks](/platform/enterprise/forks) | | **Tools & developer** | Tool connections, [Custom tools](/agents/custom-tools), Reusable steps (Enterprise), MCP servers (tools you expose to other AI apps; see [MCP](/workflows/deployment/mcp)), Agent Serve API keys, [Agent Serve Mailer](/chat/mailer) | | **Organization** | Members, Usage tracking (Enterprise), [Connected accounts](/platform/connected-accounts), Brand appearance (Enterprise) | | **Governance** | Access policies, Activity audit, Single sign-on, Security, Data retention, Log destinations — Enterprise, hosted only. See [Enterprise](/platform/enterprise). | | **System** | Recently deleted, Self hosting (self-hosted only), Admin and Agent control (admins) | **Help** (search for it in the [command palette](/workspace/command-palette)) opens **Contact support**, where you can send a bug report, feedback, a feature request, or another question. --- # Workspace fundamentals (/platform/workspaces) A **workspace** groups workflows and the resources they use, including tables, files, knowledge bases, integrations, and secrets. Workspace roles control access, with additional permissions for resources such as credentials. Deployments and explicit sharing can expose selected resources outside the workspace. {/* VISUAL: nesting diagram. Outer ring: user or organization. Middle ring: workspace. Inside: workflows, tables, files, knowledge bases, integrations, secrets. Members with permission levels attached at the workspace ring. */} ## What a workspace contains [#what-a-workspace-contains] The app labels a workspace a **team space**: the workspace switcher, the **Team spaces** rail entry, and the **Team space** settings group all refer to it. The left rail and the Team spaces tabs are the map of a workspace — see [The workspace](/workspace) for a tour. Each area holds one kind of resource: ### Relays [#relays] A **Relay** is an AI coworker that works on tasks for the person who delegated them, inside the limits you set. See [Relays](/relays). ### Workflows [#workflows] A **workflow** is a saved, repeatable procedure made of blocks: the primary resource in a workspace. You edit it, deploy it to surfaces like an API or a chat, and version it. See [Workflows](/workflows) for the full model. ### Tables [#tables] A **table** is structured data in the workspace, used as a source or an output inside workflows. ### Library [#library] The **Library** holds the workspace's files: documents and binaries readable by workflows, Chat, and Relays, organized into folders. See [Library](/files). ### Data sources, dashboards, and governed data [#data-sources-dashboards-and-governed-data] **Data sources** connect warehouses, databases, apps, and spreadsheets. **Dashboards** turn that data into charts and reports, and **metrics**, the **semantic model**, **rules**, and **monitors** define and watch your numbers. **Workbooks** query data sources in SQL or plain English. See [Data](/data), [Workbooks](/data/workbooks), and [Dashboards](/dashboards). ### Knowledge bases [#knowledge-bases] A **knowledge base** is a collection of documents or structured data that workflows search to give a model context at run time. ### Integrations [#integrations] An **integration** is a connected account for a third-party service (Gmail, Slack, GitHub, and so on). Each carries its own access control, so a team shares one connection. See [Integrations](/integrations). ### Secrets [#secrets] A **secret** is an API key or environment variable stored securely in the workspace. Secrets come in two scopes: **Workspace** secrets are shared with the workspace, and **Personal** secrets are private to you. See [Secrets](/platform/credentials). ### Run history [#run-history] **Run history** (the Logs page), linked at the top of the Workflows pane, lists every workflow run. A **log** is the execution trace of one workflow run: the trigger, the blocks that ran, and each block's input, output, and error. Logs are how you verify what happened. **Deployments** are not a section of their own. A deployment is a versioned snapshot of one workflow, published for outside use through an API, chat, or MCP server. Editing a workflow does not change a live deployment until you promote the new version, and rollback means promoting an earlier one. See [Deployments](/workflows/deployment). ## Access and isolation [#access-and-isolation] Everything is scoped to the workspace, so access, settings, and isolation work the same way: * **Access.** Workspace roles determine what members can do. Credential grants and permission groups can restrict particular resources or features. * **Settings.** Each workspace has its own configuration: integrations, secrets, access control, API keys, and more. The Settings page lists the full menu. * **Ownership.** Workflows, tables, files, and knowledge bases belong to a workspace. To edit a workflow in another workspace, move or copy it there; deployments and sharing determine how others can use it. Members join with one of three **permission levels**: **Read**, **Write**, or **Admin** (the creator is **Owner**). Read can view, Write can build and run, Admin can also manage members and settings. See [Roles and permissions](/platform/permissions) for the full breakdown. ## Personal and organization workspaces [#personal-and-organization-workspaces] Most workspaces are one of two kinds. A **personal workspace** lives under your own account. Use it for experimentation and individual work. Your plan sets how many you can create. When you join an organization as an internal member, personal workspaces you own move into it — the accept screen names them before you accept. An **organization workspace** (also called a shared workspace) lives under an organization, available on Team and Enterprise plans. You invite people to one or more workspaces at a time, each with a permission level, and choose whether they join as members or as external collaborators. Internal members join the organization, count toward its seat total, and bring their own workspaces with them. External members stay outside the organization — no seat, and everything they own stays theirs — that's how partners and clients get access, and it requires them to already be on a paid Agent Serve plan. For agencies and enterprises, this is the workspace you hand to the customer: the app they use, own, and maintain. Plan limits, seat counts, and the internal-versus-external distinction live in [Roles and permissions](/platform/permissions). This page covers what a workspace is, not how billing works. ## Next [#next] --- # Quick Reference (/quick-reference) A quick lookup for everyday actions in the Agent Serve workflow builder. For keyboard shortcuts, see [Keyboard Shortcuts](/keyboard-shortcuts). **Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux. ## Team spaces [#team-spaces]
Action How Preview
Create a team space Click the team space switcher at the top of the left rail → **New team space**
Switch team spaces Click the team space switcher → select a team space
Invite team members Team space switcher → **Invite teammates** . Internal invites join the organization; external members get team space access only.
Pin a team space Right-click a team space in the switcher → **Pin**
Rename a team space Right-click a team space in the switcher → **Rename**
Upload a logo Right-click a team space in the switcher → **Upload logo**
Delete a team space Right-click a team space in the switcher → **Delete**
## Workflows [#workflows]
Action How Preview
Create a workflow Click **+** next to **Workflows** in the sidebar, or `Mod+Shift+P`
Reorder / move workflows Drag a workflow up or down, or onto a folder
Import a workflow Click **…** next to **Workflows** → **Import workflow**
Create a folder Click **…** next to **Workflows** → **Create folder**
Multi-select workflows `Mod+Click` or `Shift+Click` workflows in the sidebar
Open in new tab Right-click a workflow → **Open in new tab**
Rename a workflow Right-click a workflow → **Rename**
Share a workflow Right-click a workflow → **Manage access**
Lock a workflow Right-click a workflow → **Lock**
Duplicate a workflow Right-click a workflow → **Duplicate**
Export a workflow Right-click a workflow → **Export**
Delete a workflow Right-click a workflow → **Delete**
Rename a folder Right-click a folder → **Rename**
Create workflow in folder Right-click a folder → **Create workflow**
Create folder in folder Right-click a folder → **Create folder**
Duplicate a folder Right-click a folder → **Duplicate**
Export a folder Right-click a folder → **Export**
Delete a folder Right-click a folder → **Delete**
## Blocks [#blocks]
Action How Preview
Add a block Drag from the **Add steps** tab, or right-click the workflow builder → **Add Block** ( `Mod+K` )
Multi-select blocks `Mod+Click` additional blocks, or shift-drag to draw a selection box
Copy, cut, or paste blocks `Mod+C` , `Mod+X` , `Mod+V` , or right-click a block → **Copy** / **Cut** / **Paste**
Duplicate blocks Right-click → **Duplicate**
Delete blocks `Delete` or `Backspace` key, or right-click → **Delete**
Rename a block Right-click → **Rename** , or click the pencil icon on the **Configure** tab
Enable/Disable a block Right-click → **Disable**
Lock/Unlock a block Right-click → **Lock** (Admin only)
Quick block actions Select a block to show its toolbar: **Run step** , **Disable** , **Lock** , **Duplicate** , **Delete**
Configure a block Select a block → use the **Configure** tab on the right
## Connections [#connections]
Action How Preview
Create a connection Drag from an output handle to an input handle
Delete a connection Click an edge to select it → `Delete` key
Use output in another block Type `<` in an input field and pick a value, or drag a connection tag into the field
## Panels & Views [#panels--views]
Action How Preview
Search everything `Mod+K`
Workflow builder actions Right-click an empty part of the workflow builder: undo, redo, paste, **Add Block** , **Auto-layout** , **Lock workflow** , **Fit to View** , **Search and replace** , **Open Run history** , **Open Variables** , **Open Chat**
Toggle manual mode Click the toggle button on a field to switch between manual entry and the selector
Collapse/expand sidebar Click the collapse button on the sidebar
## Running & Testing [#running--testing]
Action How Preview
Run workflow Click **Run** or `Mod+Enter`
Stop workflow Click **Stop** or `Mod+Enter` while running
Test with chat Click the chat icon next to **Run** to open the test chat
Select output to view Click **Outputs** in the test chat → select a block output
Clear chat history Open the **⋮** menu in the test chat and clear the conversation
Run from block Select a block → **Run step** , or right-click → **Run from block**
Run until block Right-click a block → **Run until block**
View execution logs Open the **Logs** panel at the bottom of the workflow builder
Search, copy, download, or clear logs Use the icons at the top right of the **Output** pane in the Logs panel; `Mod+D` clears the logs
Logs panel options Click **…** in the Logs panel → **Structured view** , **Wrap text** , or **Open on run**
Open run history `Mod+L` , or right-click the workflow builder → **Open Run history**
## Deployment [#deployment]
Action How Preview
Deploy a workflow Click **Deploy** in the toolbar
Update deployment Click **Update** when the workflow has changed since the last deployment
View deployment status Check the status badge ( **Draft** or **Deployed** ) next to the workflow name
Revert deployment Deploy modal → **General** → version menu ( **⋮** ) → **Promote to live**
Add version description Deploy modal → **General** → version menu ( **⋮** ) → **Add description**
Copy API endpoint Deploy modal → **API** → copy the cURL example
## Variables [#variables]
Action How Preview
Add / Edit / Delete workflow variable Right-click the workflow builder → **Open Variables**
Add environment variable Settings → **Secrets** → **Add**
Reference a workflow variable Use `` syntax in block inputs
Reference an environment variable Use `{{ENV_VAR}}` syntax in block inputs
--- # Discover (/plugins/discover) Open **Apps** on the left rail and click **Discover**. Discover has two shelves: **Plugins** and **Connectors**. Use the search box to find either by name. ## Plugins [#plugins]
Discover showing team packs and the first plugins in the catalog
### Team packs [#team-packs] A **team pack** is a set of plugins picked for one kind of team. Click a pack to see its plugins, then install the ones you want. | Pack | For | | ---------------- | ----------------------------------------------- | | **Everyone** | Useful to every team, from day one. | | **Sales pack** | Prep calls, log meetings and keep deals moving. | | **Finance pack** | Close faster and explain every number. | | **Legal pack** | Review contracts and track obligations. | | **Ops pack** | Watch exceptions and keep work on schedule. | ### The catalog [#the-catalog] Below the packs, **Plugins** lists every plugin. Filter by category: **Productivity**, **Sales**, **Finance**, **Legal**, **Operations**, **Support**, **Engineering**, or **Data**. Each card shows how many Chat commands and menu actions it adds, and a badge when it is **Installed** or has an **Update available**. **Name in use here** means an app with the same name is already in this workspace. ### A plugin's page [#a-plugins-page] Click a plugin to open its page. It shows: * **About** — what it does, its pages, and its settings. * **What it adds** — what runs on its own, its Chat commands, menu actions, and skills. * **What it can reach** — the tables, files, models, and other resources it may use. * **Version history**, the **team packs** it belongs to, and its **Monthly budget**.
The File briefs plugin page with About, What it adds, and What it can reach
Admins see **Install**. Once it is installed, everyone sees **Open**. ## Connectors [#connectors] The **Connectors** shelf is a directory of tools from other services that your agents can use, without installing a plugin. Each connector is an MCP server — a standard way for AI tools to call another service.
The connectors directory with GitHub, Google Drive, Supabase, Neon, Context7, Firecrawl, Browserbase, Slack, and Notion
The directory includes GitHub, Google Drive, Supabase, Neon, Context7, Firecrawl, Browserbase, Slack, Notion, Linear, Sentry, Atlassian, Asana, Stripe, HubSpot, and Cloudflare Docs. Each card shows: * **How it signs in** — **Sign in**, **Your own app** (you bring a client ID and secret), **API key**, or **No sign-in**. * **Its risk** — **Read only**, **Can change data**, or **Can act outside** (it can act beyond your workspace, such as posting a message). Click **Connect** to review what it can do and what it asks for, then connect. Some connectors offer **Connect to the read-only address**, which limits them to reading. Anyone with edit access to the workspace can connect one, and a connected card shows **Connected**. --- # Agent Serve plugins (/plugins/first-party) Agent Serve publishes seven plugins in [Discover](/plugins/discover). Each one creates the tables it needs at install, and is limited by a monthly budget you can change on [Manage](/plugins/manage). | Plugin | In one line | Team packs | | ----------------------------------------- | ------------------------------------------------ | -------------------- | | [Call prep](#call-prep) | A one-page brief before every customer call. | Sales | | [Content repurposer](#content-repurposer) | One source, written for every channel. | Everyone, Sales | | [Contract triage](#contract-triage) | Your playbook, applied clause by clause. | Legal | | [Doc Q\&A](#doc-qa) | Answers that quote their source. | Everyone, Legal | | [File briefs](#file-briefs) | A brief of any file in five lines. | Everyone, Legal, Ops | | [SQL explainer](#sql-explainer) | Any query, in plain English, checked for safety. | Ops | | [Variance explainer](#variance-explainer) | Why a number moved, with every figure cited. | Finance, Ops | ## Call prep [#call-prep] A one-page brief before a customer call: key figures from your [semantic model](/data/semantic-model), open deals and recent activity from your pipeline table, notes from earlier calls, and talking points, risks, and questions — each citing the fact it uses. * **Pages:** Prepare, Briefs * **Chat command:** `/prep account* date` — opens the brief for an account, for a call on that date (`today` and `tomorrow` work too). * **Menu actions:** **Prepare a call brief** on a row of your pipeline table; **Open this brief** on a saved brief. * **Resource:** **Pipeline table** — the table with your opportunities (suggested name `pipeline_opportunities`). * **Settings:** **Model**, and **Activity window (days)** — how far back to look, 30 to 365 days (default 180). * **Creates:** the `call_briefs` and `call_notes` tables. * **Budget:** $30 a month. ## Content repurposer [#content-repurposer] Turn one source — a file, a page, or pasted text — into LinkedIn posts, X threads, newsletters, blog summaries, and one-pagers, saved to [Files](/files). * **Pages:** Repurpose, Library * **Chat command:** `/repurpose file` * **Menu action:** **Repurpose this file** on text, Markdown, and HTML files. * **Settings:** **Default tone** (professional, friendly, bold, or plain), and **Model**. * **Creates:** the `repurposed_content` table. * **Budget:** $30 a month. ## Contract triage [#contract-triage] Check a contract against your NDA or MSA playbook. It scores the risk from 0 to 100, shows every clause beside the playbook's position, suggests redlines, exports a review memo to Files, and can **Send to legal** — handing the contract to its **Legal review** Relay. * **Pages:** Triage, Reviews, Playbooks * **Chat commands:** `/triage-contract file* playbook` and `/contract-playbook playbook` * **Menu actions:** **Triage contract** on PDF, Word, Markdown, and text files; **Open this review** on a saved review. * **Settings:** **Default playbook** (`nda` or `msa`). * **Creates:** the `contract_reviews` and `contract_playbooks` tables, and the **Legal review** Relay. The Relay works on **Assist** — it decides each flagged clause (accept, counter, or escalate) and asks before anything else — takes up to 2 jobs at once and 40 a day, and has a **Weekly review backlog** routine on Mondays at 09:00 UTC, off until you turn it on. Choose **Publish now** at install to put it to work straight away. * **Budget:** $40 a month. Contract triage flags what to look at. It is not legal advice. ## Doc Q\&A [#doc-qa] Ask questions about your documents and get answers that quote where they came from. Pin a brief of a document to keep it. * **Pages:** Ask, Brief * **Chat commands:** `/ask-docs question* files*`, `/summarize-doc file*`, and `/doc-brief` * **Menu action:** **Ask about this file** on PDF, Word, Markdown, text, CSV, and JSON files. * **Resource (optional):** **Knowledge base** — to also search a knowledge base (suggested name "Company docs"). * **Creates:** the `doc_briefs` table. * **Budget:** $30 a month. ## File briefs [#file-briefs] Short, plain briefs of your files — on demand from any file, and for every new file in your Inbox folder. * **Page:** Briefs * **Chat command:** `/brief file` — opens your briefs, or finds one by file name. * **Menu action:** **Summarise this file** on Markdown, text, CSV, and JSON files. The brief appears right there. * **Trigger:** **Log every file uploaded to Inbox, ready for a brief** — runs in the background once an admin approves it, with a $5 monthly background cap by default. * **Skill:** **brief-writing**, so Chat and Relays write briefs the same way. * **Settings:** **Brief style** (Plain, Bullet points, or Executive summary) and **Longest brief** (3 to 12 lines, default 5). * **Creates:** the `file_briefs` table. It only reads files. * **Budget:** $20 a month. ## SQL explainer [#sql-explainer] Paste a query to read it in plain English, step by step in the order the database runs it, with a safety and performance review and a suggested rewrite shown side by side. * **Pages:** Explain, History * **Chat command:** `/explain-sql sql* dialect` * **Menu action:** **Explain this query** on a query cell in a [workbook](/data/workbooks). * **Resource (optional):** **Sample table** — a table to try the query on (20 rows). * **Settings:** **Default dialect** — PostgreSQL, Snowflake, BigQuery, MySQL, SQL Server, or Standard SQL. * **Creates:** the `sql_reviews` table. * **Budget:** $20 a month. ## Variance explainer [#variance-explainer] Explain why a metric moved between two periods: the change, a breakdown by up to three dimensions shown as a waterfall chart, and a written explanation with every figure cited. * **Pages:** Explain, Saved * **Chat command:** `/explain metric* grain compare` * **Menu actions:** **Explain this change** on a [dashboard](/dashboards) panel; **Open this explanation** on a saved explanation. * **Settings:** **Model**. * **Uses:** your [semantic model](/data/semantic-model) for metric definitions. * **Creates:** the `variance_explanations` table. * **Budget:** $20 a month. --- # Plugins (/plugins) A **plugin** is an [app](/apps) that reaches beyond its own pages. Install one and it adds things to the places your team already works: * **Chat commands** — type `/brief` or `/triage-contract` in [Chat](/chat). * **Menu actions** — **Summarise this file** on a file, **Explain this query** on a workbook query, **Explain this change** on a dashboard panel. * **Background work** — triggers that run on a schedule or when something happens, such as a file landing in a folder. * **Settings** an admin fills in once. * **Connectors** — tools from other services, through MCP (the Model Context Protocol, an open standard for connecting AI agents to outside tools). * **Skills** — written instructions Chat and Relays follow, added to the workspace skill library. * **Relays** — some plugins bring an AI teammate, such as a Legal review Relay, ready to take work. Every plugin acts as the person using it and can never reach more than that person can. An admin reviews exactly what a plugin can access before it is installed. ## How it works [#how-it-works] 1. **Find a plugin** in [Discover](/plugins/discover), alone or as part of a team pack. 2. **Install it** — an admin reviews what it can access, picks the resources it should use, and approves any background work. See [Install a plugin](/plugins/install). 3. **Use it** — from Chat, from menus, or by opening its pages. See [Use plugins](/plugins/use). 4. **Manage it** — pause background runs, see every run, and set caps. See [Manage plugins](/plugins/manage). Agent Serve publishes seven plugins: **Call prep**, **Content repurposer**, **Contract triage**, **Doc Q\&A**, **File briefs**, **SQL explainer**, and **Variance explainer**. See [Agent Serve plugins](/plugins/first-party). --- # Install a plugin (/plugins/install) Only workspace admins can install plugins. Open a plugin in [Discover](/plugins/discover) and click **Install**. The **Install \[plugin]** review opens. Read it top to bottom — it is the full list of what the plugin can do in your workspace.
The install review for File briefs, with access, what it creates and adds, settings, and background runs
## Version and access [#version-and-access] * **Version** — the version you are installing. * **Can access** — each kind of access, in plain words: "Read and add rows to tables: …", "Read workspace files", "Use AI models, counted against its budget: …", "Run integration actions with your connected accounts, asking before any change: …", and so on. Access is **always limited to what the person using it can already access**. A plugin never gets more than its user has. ## Resources it uses [#resources-it-uses] Some plugins work on a resource your workspace names its own way — your pipeline table, your company knowledge base, a workflow, a Relay, or a model. Each one is a **slot**, shown as a field with its own description. * The picker starts on a resource whose name matches the plugin's suggestion, if there is one. Search to pick another. * If the workspace has nothing of that kind yet, you see a link to create one, such as **Create a table**. * A required slot must be filled to install (**Choose one to install**). Optional slots can be left empty. Picking a resource is what gives the plugin access to it. If the resource is deleted later, the slot shows **Needs setup** on [Manage](/plugins/manage). ## What it creates and adds [#what-it-creates-and-adds] * **Creates** — tables the workspace does not have yet, rules, and Relays the plugin brings. * **Adds to this workspace** — what **Runs on its own**, **Chat commands**, **Menu actions** (with where they appear: **In Files**, **In Table rows**, **In Workbook queries**, **In Dashboard panels**), **Connectors**, and **Skills**. ## Relays it creates [#relays-it-creates] Plugins can bring a [Relay](/relays) — an AI teammate that takes work. Each one is shown as a card with what it **Delivers**, its **Autonomy**, the workflows it **Runs**, and its **Routines** (off until you turn them on). Click **Read its instructions** to see exactly how it is told to work.
The Relays it creates section, with the Legal review Relay set to Publish now
Choose **Publish now** to put the Relay to work at install, or **Keep as draft** to finish its setup first. **Publish now** is only on when the Relay has everything it needs and you can publish Relays. Otherwise it is created as a draft and the card says what is missing before it can go live. ## Settings [#settings] Fill in the plugin's settings: switches, dropdowns, text, and numbers. A setting marked as a secret is stored as a secret, and can also be set later on Manage. ## Background runs [#background-runs] Plugins with triggers — work that runs on a schedule or when something happens — show **Background runs**. * **Run its triggers in the background** is on by default. Turn it off and the triggers stay off until an admin approves them on Manage. * Tick the access background runs may use, such as **Table: file\_briefs** or **AI model: claude-haiku-4-5**. Background runs **act as you, with only what you tick**. * **Monthly background cap (USD)** — background runs pause when they reach it. Leave it empty for no cap. Background runs act as the admin who approves them, narrowed to the access ticked here. If that admin later loses access, runs that need it are refused. Pause them at any time on [Manage](/plugins/manage#background-runs). **Monthly budget** shows the most the plugin may spend each month, from its manifest. You can change it on Manage. ## Install [#install] Click **Install**. If something could not be done — a table not created, or a Relay left as a draft — a follow-up shows **Not created** and **Relays to finish**, with **Finish setup** for each Relay. Otherwise the plugin is ready: click **Open**, or use it from Chat and menus right away. --- # Manage plugins (/plugins/manage) A plugin's **Manage** page has everything an [app's Manage page](/apps/manage) has — **Settings**, **Access**, budget, **Versions**, and **Uninstall** — plus the sections below. Open it from **Manage** on the plugin's card on the Apps page. ## Resources [#resources] Each [slot](/plugins/install#resources-it-uses) shows its state: **Set up**, **Using its default**, or **Needs setup**. Pick a different table, knowledge base, workflow, Relay, or model at any time. ## Plugin settings [#plugin-settings] Change the plugin's settings and click **Save settings**. For a secret setting, enter a **New value** to replace it. ## Background runs [#background-runs] This section shows whether the plugin's triggers may run on their own: | Status | Meaning | | ---------------- | ------------------------------------------------------------------------------- | | **Not approved** | Triggers do not run. An admin can click **Approve**. | | **On** | Triggers run, as the admin shown in **Runs as \[name], approved \[date]**. | | **Paused** | Triggers are approved but stopped. Click **Resume** to start them again. | * **Pause** stops background runs straight away. **Resume** starts them again. * **Change** reopens the approval, so you can change what runs may access and the **Monthly cap (USD)**. Approving makes the runs act as you. * **Withdraw** removes the approval. A meter shows spending against the cap, such as **$1.20 of $5.00 this month**. When runs reach the cap, they pause until next month. You also see how many runs may happen at once and how long each may take (by default one at a time, two minutes each), and each trigger with when it next runs. ## Connectors [#connectors] Connectors the plugin brought are listed with their address and how they sign in. Click **Sign in** if one needs it. Two switches decide who may use each connector: * **Offer to Chat** — Chat can use its tools. * **Offer to Relays** — Relays can use its tools. A connector that was already in the workspace before the plugin is marked **Already in the workspace; kept on uninstall**. ## Skills [#skills] The skills the plugin adds, each with **Open** to view it in the skill library. ## Runs [#runs] **Runs** is the history of everything the plugin did: each Chat command, menu action, and trigger, whether it ran **In the background** or **By a person**, its **Status**, when it **Started**, how long it **Took**, and its **Cost**. A summary line shows this month's totals. Use **Load more** for older runs and **Refresh runs** to update. | Status | Meaning | | ------------- | ----------------------------------------------------------------------------------------------- | | **Queued** | Waiting to start | | **Running** | In progress | | **Succeeded** | Finished | | **Failed** | Stopped with an error | | **Timed out** | Took too long and was stopped | | **Refused** | Stopped before it began — by a cap, an admin stop, or because the person it runs as lost access | A plugin has two spending limits. The **monthly budget** covers all its paid work, by anyone. The **monthly background cap** only covers background runs, and pauses them when reached. --- # Use plugins (/plugins/use) Once a plugin is installed, everyone in the workspace can use it. It always acts as you, with your access. ## Slash commands in Chat [#slash-commands-in-chat] Type `/` in [Chat](/chat). Plugin commands are listed after your playbooks and MCP tools, each with the plugin's icon. The list shows what each command expects — for example `/prep account* date`, where `*` marks a required value. * Type the values in order: `/brief launch-plan`. * Or name them: `/triage-contract file="Acme MSA.pdf" playbook=msa`. Put quotes around values with spaces. Most commands open the plugin's page with your values filled in. ## Menu actions [#menu-actions] Plugins add actions to the menus you already use. Each one shows the plugin's icon next to its name. | Where | How to find it | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Files** | The **⋯** menu or right-click menu on a file, or the menu on an open file. Plugin actions sit after **Download**, **Rename**, and **Share**, and only appear for file types the plugin handles. | | **Table rows** | Right-click a row, on the tables the plugin works with. | | **Workbook queries** | The menu on a query cell in a [workbook](/data/workbooks). | | **Dashboard panels** | A panel's menu, after the export and alert options. | Some actions open the plugin's page. Others do the work in place and show the result in a card you can **Copy**, **Dismiss**, or take further with **Ask Chat about this**. If a step needs a person to approve it, the result says **Some steps need a person to approve them. Open the plugin to approve.** ## Triggers [#triggers] Triggers let a plugin work without anyone asking. Each trigger runs on one of these events: * **On a schedule** * **When a row is added** or **When a row changes** * **When a file is uploaded** (optionally to one folder and of certain file types) * **When a Relay finishes a task** * **When a workflow run finishes** Triggers only run after an admin approves background runs, and stop when they are paused or reach their cap. See [Manage plugins](/plugins/manage#background-runs). A plugin can list a trigger on an event Agent Serve does not deliver yet. It shows as **(not available yet)** in the install review and **Waiting for its event source** on Manage, and does not run. ## Open a plugin's pages [#open-a-plugins-pages] Plugins have their own pages too. Open them from the plugin's card on the **Apps** page, from **Open** in Discover, or from the left rail if an admin pinned it there. ## Plugin skills [#plugin-skills] Skills a plugin adds — such as **brief-writing** from File briefs — join the workspace skill library. Chat and Relays can use them like any other skill. --- # Charter and rules (/relays/charter-and-rules) The **Charter** tab is a Relay's job description on one page.
The Charter tab with role, what it watches, cadence, autonomy, a suggested rule, and the Allowed, Needs approval, and Never columns
## Charter [#charter] | Row | Shows | | ------------ | ---------------------------------------------------------------------------------------------------- | | **Role** | Its starting point and description | | **Watches** | The data and sources it keeps an eye on | | **Cadence** | Its routines' schedules, the hours it acts, and its limits, such as "Up to 25 jobs a day, 2 at once" | | **Autonomy** | Its permission preset — **Observe**, **Assist**, or **Operate** — and who approves its actions | Click **Edit setup** to change any of it. If there are unpublished changes, the charter says so. ## Rules [#rules] **Rules** shows what the Relay may do in three columns: * **Allowed** — it does these on its own (after [auto-review](/relays/tasks-and-approvals#auto-review) for anything that changes something). * **Needs approval** — it stops and asks a person first. * **Never** — it cannot do these at all. Rules come from the permission preset you chose in [setup](/relays/setup#5-permissions), plus any rules you added for a specific tool, which are marked **Tool rule**. ## Suggested from your approvals [#suggested-from-your-approvals] A Relay watches how people respond to its requests and suggests rule changes in a box headed **Suggested from your approvals**: * **Let \[tool] run without approval** — when people approved an action at least 5 times in the last 30 days and never declined it. Evidence: "Approved N of N times in the last 30 days". Accepting **moves it to Allowed**. * **Ask before \[tool] runs again** — when an allowed action failed at least 3 times in the last 7 days. Accepting **moves it to Needs approval**. Click **Accept** to apply a suggestion. It publishes a new version of the Relay with only that one rule changed — any other edits you have in progress stay as a draft. A suggestion never touches anything in **Never**, and it goes away by itself once the history no longer supports it. Suggestions to allow an action only appear on **Assist** and **Operate**. A Relay on **Observe** stays read-only until you change its preset. ## Objectives [#objectives] **Objectives** are goals for the Relay, such as "Close every unmatched COD order within 2 days". Click **New goal** to add one. The Relay suggests next steps toward each goal, backed by evidence you can open, and you can dismiss any suggestion. Goals are **Active**, **Achieved**, or **Archived**. --- # Email and calendar (/relays/email-and-calendar) A Relay can send email and manage meetings through an account you connect in [setup](/relays/setup#3-what-it-can-use). Both actions **always** need approval, on every permission preset. The Relay drafts the action, the job waits at **Waiting for review**, and nothing leaves Agent Serve until someone approves the exact content. ## Email [#email] Choose the sending account in **What it can use → Email**: **My Gmail**, **My Outlook**, or **Workspace inbox**. **Email recipients** in Permissions limits who the Relay may write to — your organization's domain, a list of domains, or anyone. The review card shows the full message — sender, recipients, subject, body, and attachments — exactly as it will be sent. When you click **Approve & send**, the Relay checks again that the delegating person can still use the sending account, then sends it once. ### Attachments [#attachments] A Relay can attach files from the [Library](/files) or documents from a knowledge base. * Up to **10 files** per email. * Total size: up to **18 MB** for Gmail, **3 MB** for Outlook, and **10 MB** for the workspace inbox. * Executable file types (such as `.exe`, `.js`, `.sh`, and `.msi`) are blocked. * Each attachment is read with the delegating person's access, and the reviewer approves the exact file contents shown on the card. ## Calendar [#calendar] Choose the calendar in **What it can use → Calendar**: **My Google Calendar** or **My Outlook calendar**, and which calendar on that account. **Meetings** and **Meeting limits** in Permissions decide who it may invite, how long meetings can be, how far ahead it may book, and the working hours and time zone it books within. A Relay can: * **Book** a meeting — the card shows the time, attendees, and whether they will be notified. Button: **Approve & book**. * **Reschedule** a meeting — the card shows **Now** and **Moves to**. Button: **Approve & move**. * **Cancel** a meeting — button: **Approve & cancel meeting**. If the time slot was taken between the proposal and your approval, the meeting is not booked; the Relay offers new times instead. A Relay on **Observe** only proposes times and never books. Outside production you can choose **Test outbox** and **Test calendar** in setup. They go through the same review steps, but nothing is delivered or booked. --- # Browser and computer (/relays/equipment) Some work needs a real browser — reading a supplier portal, filling a form, downloading a report. A Relay's **equipment** is a browser or computer it can drive. Tick **Browser** or **Computer** in [What it can use](/relays/setup#3-what-it-can-use), then set it up under **More → Equipment** on the Relay. ## Providers [#providers] | Provider | Gives the Relay | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | **This server (local Chromium)** | A browser running on your Agent Serve server. Available outside production by default; in production your administrator turns it on. | | **Browserbase (hosted browser)** | A browser hosted by Browserbase. Needs Browserbase keys configured by your administrator. | | **E2B (isolated cloud computer)** | A separate cloud computer, with its own browser. Needs E2B configured by your administrator. | A provider that is not configured shows **needs setup**. ## Setup options [#setup-options] * **Allowed destinations** — the sites the Relay may visit, one per line. `*` allows any public site. Private networks stay blocked unless you list them. * **Profile** — **Keeps sign-ins between sessions** (default), or **Starts clean every session**. * **Suspend when idle (minutes)** — 1 to 240, default 10. * **Downloads folder** — where downloads are saved in the Library (default **Relay downloads**). * **Shell commands** — **Off**, or **Allowed (isolated machine only)**. Click **Save**, or **Save and provision** to start it. Equipment moves through **Not set up**, **Set up, not provisioned**, **Provisioning**, **Ready**, and can show **Needs attention**, **Suspended**, **Deleting**, **Deleted**, or **Failed**. Use **Provision** or **Retry**, **Resume**, **Suspend**, and **Delete** to manage it. ## Watch, take over, and return control [#watch-take-over-and-return-control] The Equipment panel, and the Relay's [Live](/relays/work-and-outputs#live) tab, show a live view of the Relay's screen. Click **Take over** to drive it yourself — for example to sign in to a site. While you have control, the Relay waits: "You have control. \[Relay name] cannot act until you give it back." Use the address bar, **Type**, and **Enter**, then click **Return control**. ## What needs approval [#what-needs-approval] Browsing and reading are part of the task. Any browser action that changes something outside the session — submitting a form, buying something, sending a message — stops for a [review](/relays/tasks-and-approvals#approvals) first. Screenshots and other evidence are saved on the job. You can also [teach a Relay a routine](/relays/routines#teach-by-showing) by doing it once on its browser. Channels under **Email, phone and calendar** in the Equipment panel can only be requested for now; they show **Requested · needs setup**. Use the Email and Calendar choices in setup to send email and book meetings. --- # Relays (/relays) A **Relay** is an AI teammate in your workspace. You set one up once — its role, how it should work, what it may read and use, and what it needs approval for. Then you hand it **jobs**, and it hands back **deliverables**: a report, a saved file, a table row, a sent email, a booked meeting. A Relay can also take on recurring work through **routines**, such as a weekly briefing or watching an inbox. A Relay always works **on behalf of the person who delegated the work**. It reads only what that person can read, and anything consequential — an email, a meeting invite, a change in another tool — is checked first, and waits for a person to approve the exact action when it needs to. See [Safety and accountability](/relays/safety). ## The Relays page [#the-relays-page] **Relays** is the first entry on the left rail, drawn as the Relay mascot. A blue dot means there are unread Relay updates. The pane beside it lists every Relay with its status. At the top of the page, a strip shows **Jobs done, 7 days**, **Hours on jobs, 7 days**, **Reviews approved**, **Spent today**, and **Needs you**. Below it, four views: * **Needs you** (the default) — everything waiting on a person, filtered by **All**, **Approvals**, **Questions**, or **Hand-offs**. * **Roster** — your Relays by team, the ones **Not on a team**, and **Job threads** that show how work was handed from Relay to Relay. * **Health** — whether each Relay is **Healthy**, **Needs attention**, **Failing**, **Paused**, or **Idle**, with its last and next run, success rate, and spend. * **Governance** (workspace admins only) — **Emergency pause** for every Relay, access requests, guardrails, and the action log.
The Needs you view with two approvals, a question from a Relay, and a stalled hand-off
Each item in **Needs you** can be handled in place: * **Approval** — **Approve**, **Decline** (with a reason, so the Relay can do better next time), or **Edit**, which opens the job. * **Question** — **Answer in Chat** or **Open job**. * **Stalled hand-off** — work passed to another Relay that has not moved for an hour. **Open thread** to see it, or **Resume** it if it was paused.
The Roster view with a team of three Relays, a Relay not on a team, and a job thread with two hand-offs
Relay statuses: | Status | Meaning | | ---------------------- | ------------------------------------------------------------ | | **Available** | Published and ready for work | | **Working** | Running a job | | **Waiting for review** | A job is waiting for someone to approve or decline an action | | **Needs setup** | Something the Relay needs is not connected yet | | **Paused** | Not taking new work until someone resumes it | | **Offline** | Not available | Every Relay has a robot avatar with a visor — never a photo or initials — and is always labelled **AI Relay**, so nobody can mistake it for a person. ## Create a Relay [#create-a-relay] 1. Click **New Relay**. 2. In **What should this Relay do?**, choose a starting point. There are ready-made roles grouped by area — **Ecommerce & D2C**, **Marketing & agencies**, **Sales & growth**, **Customer support**, **Finance**, **Banking, trading & compliance**, **Healthcare clinics**, **Operations & data**, and **General** — and you can search them. Or choose **Start from scratch**. A starting point fills in instructions, the data it expects, and suggested routines. 3. Give it a **Name**, adjust its **Look** if you like, and click **Create and set up**. 4. Finish the [six-step setup](/relays/setup) and click **Publish**. A draft Relay cannot take work. Once published, a Relay is **active**; you can **Pause** it, **Resume** it, or retire it with **Retire Relay** under **More → Settings**. Retiring stops it taking work and stops its routines, but keeps its jobs, versions, and log. ## Inside a Relay [#inside-a-relay] Open a Relay to see its header — role, owner, and version — with **Edit setup**, **Pause** or **Resume**, and **Assign job**. Below are five tabs: * **Work** — every job, in lanes. See [Work, Live, and Outputs](/relays/work-and-outputs). * **Live** — what it is doing right now, its screen, and its tool calls. * **Outputs** — everything it has delivered. * **Routines** — its recurring work and the skills it uses. See [Routines and skills](/relays/routines). * **Charter** — its role, cadence, autonomy, and rules. See [Charter and rules](/relays/charter-and-rules). **More** holds **Memory**, **Knowledge**, **Skills**, **Equipment**, **Log**, **Grants**, **Evaluations**, and **Settings**. **Chat sits beside the work.** The right-hand column is your conversation with the Relay, titled **Chat with \[Relay]**, so you can talk to it while you watch its jobs. **Collapse** shrinks it to a narrow rail with an unread count. On a phone, tap **Chat** in the header to open it full screen. See [Jobs and approvals](/relays/tasks-and-approvals).
A Relay's Work tab with the value strip and the Needs you, Doing now, Scheduled, and Done lanes
Only the Relay's owner, its steward, or a workspace admin can change a Relay. Usage from a Relay's jobs, chat updates, and routines is billed to the person who delegated the work, the same way their own usage is. See [Costs](/platform/costs). --- # Knowledge and data (/relays/knowledge) A Relay knows only what you connect to it in [What it can use](/relays/setup#3-what-it-can-use), and it reads everything **with the access of the person it is working for**. Access is checked again on every read, so if that person loses access to a table, the Relay does too. ## Connected data [#connected-data] Each starting point has data slots it expects — a Revenue Analyst expects revenue data, for example. Beyond those, add up to 30 **Other resources**: * [Knowledge bases](/knowledgebase) * [Tables](/tables) * [Dashboards](/dashboards) * [Metrics](/data/metrics) * [Semantic models](/data/semantic-model) * [Rules](/data/rules) The **Review & publish** step runs an **Access check** on each one before you publish. ## File knowledge [#file-knowledge] Give a Relay documents to learn from with **Add files** (upload) or **From Library** (pick existing files). The first time you add a file, Agent Serve creates an ordinary knowledge base named after the Relay ("\[Relay name] files") and indexes the files into it. Each file shows **Processing**, **Ready**, or **Failed**, and **More → Knowledge** on the Relay lists them. Because it is a normal knowledge base, it follows the usual knowledge base permissions, limits, and usage. When the Relay answers from a file, it cites where the answer came from. ## Tools in conversations [#tools-in-conversations] In **How it works**, you choose what the Relay may do while chatting: **Read workspace files and resources**, **Search knowledge bases**, **Query tables**, and **Search the web**. --- # Routines and skills (/relays/routines) A **routine** is work a Relay does without being asked each time — a daily reconciliation, a weekly summary, watching an inbox. Routines live on the Relay's **Routines** tab, and in the **Ongoing work** step of [setup](/relays/setup#4-ongoing-work).
The Routines tab with two scheduled routines, Teach by showing, and a published skill
## Add a routine [#add-a-routine] Click **Describe a routine**. Give it a name and an objective, and choose a trigger: * **On a schedule** — such as weekdays at 9:00, or a custom schedule. * **When a monitor alerts** — when one of your [monitors](/data/monitors) fires. * **Watch a source** — keep an eye on a Gmail, Outlook, or Google Calendar account, or a workspace table, and act on what needs attention. Each routine shows when it runs next and last ran, and who it runs on behalf of. Use **Run now**, **Edit**, **Turn on** or **Turn off**, and **Delete**. ## Teach by showing [#teach-by-showing] Some routines are easiest to show rather than describe — "open the supplier portal, download yesterday's report, upload it here". If the Relay has a [browser](/relays/equipment), you can do the routine once on its browser and it becomes a routine. 1. On the **Routines** tab, click **Teach by showing**. The panel shows the Relay's browser, live. 2. Click **Take over** and get the page ready, for example signed in. 3. Click **Start recording**, then do the routine once. Each step appears as you go: **Open \[address]**, **Click "\[button]"**, **Fill "\[field]" with "\[value]"**, and key presses such as **Press Enter**. 4. Click **Stop and review**. A **New routine** opens with the recorded steps as its objective and **On a schedule** as its trigger. Check it, set the schedule, and save. Or click **Discard** to throw the recording away. Things to know: * **Passwords are never recorded.** Keep the Relay's browser signed in instead (its profile keeps sign-ins between sessions by default). * A recording keeps up to 40 steps. Clicks on unnamed elements are noted but not recorded. * Only one person can record on a Relay's browser at a time. * When the routine runs, actions that change something outside — like submitting a form — still go through [review](/relays/tasks-and-approvals#approvals) each time. **Teach by showing** only appears when the Relay has a browser that is set up. See [Browser and computer](/relays/equipment). ## Skills [#skills] Under **How it does things**, a Relay's **skills** are written instructions for a specific kind of work, invoked with a slash name such as `/reconcile-cod`. Click **New skill** to write one. * Skills come from three places: **Built-in**, **This Relay**, and **Workspace** — including skills that [plugins](/plugins) add. * A skill is part of the Relay's published version. Its state shows **Published**, **Changed since publish**, or **Not published yet**. Publish the Relay to use a new or changed skill. * In Chat, you can call up to three skills in one message. --- # Safety and accountability (/relays/safety) Relays are built so that a person stays accountable for everything a Relay does. ## Acts on behalf of a person [#acts-on-behalf-of-a-person] Every job runs **on behalf of the person who delegated it** — the job shows this as **Runs on behalf of**. The Relay uses that person's access, checked again each time it reads or acts. It can never see or do more than that person could, and a [handoff](/relays/tasks-and-approvals#inside-a-job) to another Relay never adds access. ## Never impersonates [#never-impersonates] A Relay always has a robot avatar, never a photo or initials, and is always labelled **AI Relay** — on jobs it shows as "Accountable: \[Relay name] (AI Relay)". Emails and invites are sent through the account you chose in setup, after a person approves the exact content. ## Approval for anything outside [#approval-for-anything-outside] Sending email and booking, moving, or cancelling meetings always need approval. Saving to the Library, handing work off, changes in connected tools, running workflows, and browser or computer actions that change something outside need approval depending on the [permission preset](/relays/setup#5-permissions). Anything a preset allows that changes something is checked by [auto-review](/relays/tasks-and-approvals#auto-review) first, which sends it to a person when something looks off. Approvals cover the exact content shown, expire, and are re-checked before the action runs. See [Jobs and approvals](/relays/tasks-and-approvals#approvals). ## Audit trail [#audit-trail] The Relay's **Log** (under **More**) is read from the workspace audit log. Equipment actions are recorded under the delegating person, with the Relay named as the agent. Jobs keep their evidence, their tool calls, the version of the Relay they ran on, and the decisions made on each review. ## Who can change a Relay [#who-can-change-a-relay] Only the Relay's owner, its steward, or a workspace admin can edit, pause, or retire it. Workspace admins can stop every Relay at once with **Emergency pause** in the **Governance** view of the Relays page. Retiring keeps a Relay's jobs, versions, and log. ## Billing [#billing] Model usage for a Relay's jobs, chat updates, and routines is billed to the person who delegated the work. File knowledge is billed like any other knowledge base. See [Costs](/platform/costs). --- # Set up a Relay (/relays/setup) Click **Edit setup** on a Relay (or create a new one) to open setup. It has six steps, listed on the left: **Basics**, **How it works**, **What it can use** (optional), **Ongoing work** (optional), **Permissions**, and **Review & publish**. You can jump to any step, and finished steps get a check mark. A summary of every choice stays on the right. Use **Save draft** to keep your progress, **Next** and **Back** to move between steps, and **Publish** on the last step to put the Relay to work. ## 1. Basics [#1-basics] | Field | Notes | | -------------------- | -------------------------------------------------------------------------- | | **Name** | Up to 80 characters | | **Description** | Up to 500 characters | | **Owner** | The person who created the Relay. Read-only. | | **Steward** | An optional second person who can manage the Relay and approve its actions | | **Working language** | English by default | **Appearance** lets you build the Relay's robot avatar from parts — **Shell**, **Finish**, **Visor**, **Eyes**, **Colour**, **Markings**, and **Gear**. **Shuffle** picks a random combination and **Reset** goes back to the default. ## 2. How it works [#2-how-it-works] * **Instructions** — what the Relay is for and how it should work (up to 8,000 characters). * **Escalate when** — when it should stop and ask a person (up to 2,000 characters). * **Example jobs (one per line)** — up to 10. These appear as **Examples** when someone assigns a job. * **Tools in conversations** — what it may do while chatting: **Read workspace files and resources**, **Search knowledge bases**, **Query tables**, and **Search the web**. ## 3. What it can use [#3-what-it-can-use] A Relay reads only what you connect here, with the access of the person it is working for, and that access is checked again on every read. * **Data.** Fill the slots its specialization expects (optional slots are marked), and add **Other resources**: knowledge bases, tables, dashboards, metrics, semantic models, and rules — up to 30 in total. * **Files.** **Add files** uploads documents, and **From Library** picks existing ones. Each shows **Processing**, **Ready**, or **Failed**. See [Knowledge and data](/relays/knowledge). * **Email.** Choose how it sends email: **Does not send email**, **My Gmail**, **My Outlook**, or **Workspace inbox**. A **Needs connection** label means the account is not connected yet. * **Calendar.** Choose **Does not book meetings**, **My Google Calendar**, or **My Outlook calendar**, and which calendar to book on (`primary` by default). * **Integrations.** Pick the connected tools (MCP servers and integration accounts) it may use. Each shows whether it only reads or can make changes. * **Workflows.** Pick deployed [workflows](/workflows) it may run. Mark one **Runs on its own** to skip the approval **Assist** would otherwise ask for, or leave it on **Asks first**. A workflow that is not deployed shows **Not deployed**. * **Equipment.** Tick **Computer** or **Browser** if the Relay needs one. You then set it up from **More → Equipment** on the Relay. See [Browser and computer](/relays/equipment). Outside production, two test options also appear: **Test outbox (nothing is delivered)** and **Test calendar (nothing is booked)**. Use them to try a Relay without sending real email or creating real events. ## 4. Ongoing work [#4-ongoing-work] Ongoing work is a list of **routines** — jobs the Relay does without being asked each time. Start from one of the starting point's suggestions or click **Custom**. You can also add routines later on the Relay's [Routines](/relays/routines) tab, including by [showing it once](/relays/routines#teach-by-showing). Each responsibility has a **Name**, an **Objective**, and a **Trigger**: * **On a schedule** — **Weekdays at 9:00**, **Mondays at 8:00**, **Every day at 7:00**, **Every hour**, or **Custom** with a cron expression (a standard way to write a schedule, such as `0 9 * * 1-5`). * **When a monitor alerts** — pick one of your [monitors](/data/monitors). When it fires, the Relay picks up the work. * **Watch a source** — keep an eye on a **Gmail**, **Outlook**, or **Google Calendar** account, or a **Workspace table**: * **What needs your attention** — describe what to look for (up to 1,000 characters). * **Check** — every 1, 5, 15, 30, 60, or 240 minutes, or once a day. The default is 15 minutes; mail and calendar sources can't be checked more often than every 5 minutes. * **Quiet from** / **Quiet until** — hours when it should not check. * **Follow-up** — **Message me**, or **Message me and open a job**. A watch shows **Watching**, **Needs connection**, or **Error** on the Routines tab. ## 5. Permissions [#5-permissions] Pick how much the Relay may do on its own. There are three presets: | Action | Observe | Assist | Operate | | ------------------------------- | -------------- | -------------- | -------------- | | Read connected resources | Allowed | Allowed | Allowed | | Draft results | Allowed | Allowed | Allowed | | Save results to the Library | Blocked | Needs approval | Allowed | | Hand work to other Relays | Needs approval | Allowed | Allowed | | Send email | Blocked | Needs approval | Needs approval | | Book meetings | Blocked | Needs approval | Needs approval | | Make changes in connected tools | Blocked | Needs approval | Allowed | | Delete, cancel, refund or spend | Blocked | Needs approval | Needs approval | | Run workflows | Blocked | Needs approval | Allowed | | Click and type in computer apps | Needs approval | Needs approval | Allowed | New Relays start on **Observe**. Sending email and booking meetings **always** need approval, whatever the preset. On **Operate**, deleting, cancelling, refunding, or spending runs without approval only when it is within the Relay's delegated limits (below). Anything **Allowed** that changes something is still checked by [auto-review](/relays/tasks-and-approvals#auto-review) first, and the [Charter](/relays/charter-and-rules) tab shows the result as **Allowed**, **Needs approval**, and **Never**. **Spending and deleting** sets the Relay's delegated limits: **Always ask** (the default), **Paper** (spending and deleting are only simulated and recorded), or **Live within limits**. With limits on, set the **Currency**, how much it may spend **Per action**, **Per day**, and **Per week**, **Actions per day**, **Pause after failed calls in a row**, **Allowed instruments, accounts or campaigns**, **Pause at the daily limit**, and **Active hours**. You can also choose its **Reasoning model**, **Reasoning effort**, and **Decision model** — the model [auto-review](/relays/tasks-and-approvals#auto-review) uses to check that an action fits the job. The rest of the step sets limits and people: * **Result goes to** — **The job**, or **A Library file** in a **Library folder** (default **Relay briefings**). * **Jobs at once** — 1 to 10 (default 2). **Jobs per day** — 1 to 200 (default 25). * **Hand-off depth (max 2)** — how many times work can be passed on from Relay to Relay, 0 to 2 (default 1). * **Approval expires after (hours)** — 1 to 168 (default 24). See [Jobs and approvals](/relays/tasks-and-approvals). * **Email recipients** and **Meetings** — who it may email or invite: **Only my organization's domain**, **Only listed domains**, or **Anyone**, plus up to 20 extra domains. * **Meeting limits** — **Longest meeting** (15–480 minutes, default 60), **Book up to** (1–90 days ahead, default 30), **Working hours** (default 09:00–17:00), and **Time zone** (default UTC). * **Approvers** — who may approve its actions. If you name nobody, the owner, the steward, and workspace admins can approve. * **Can hand work to** — which other Relays it may pass part of a job to. By default, none. * **Notify on failure** — who hears about failed jobs. By default, the owner. ## 6. Review & publish [#6-review--publish] The last step lists anything still missing (for example **Add instructions** or **Connect** a data slot), runs an **Access check** on each connected resource, and takes an optional **Version note** (up to 500 characters). Click **Publish** to put this version to work. Every publish creates a new version, shown in the Relay's header. ## After publishing [#after-publishing] **More → Settings** on the Relay holds its operating controls: * **Run checks** — a go-live checklist: connected accounts work, tool connections answer, workflows are deployed, schedule and time zone are set, limits and approvers are set, and a paper run is done. Anything missing shows a **Fix:** hint. * **Dry run** — **Start a dry run** to try the Relay on a job without real effects. Everything other than reading is simulated. * **Budgets and limits** — including **Jobs at once**, **Jobs per day**, **Open hand-offs per job**, and **Review expires (hours)**. * **Versions**, and **Retire Relay**. --- # Jobs and approvals (/relays/tasks-and-approvals) ## Chat with a Relay [#chat-with-a-relay] Open a Relay. Its Chat column sits beside the work on the right, titled **Chat with \[Relay]**. If the Relay is also reachable on Slack, Teams, or email, the subtitle says so (**Also on …**). Type in the box labelled **Send message to** the Relay's name. The switch next to it decides what happens: * **Message** — a normal conversation. Ask questions, get explanations, or talk through a piece of work. * **Assign as job** — turn the message into a job the Relay works on and reports back about. A Relay has to be published before you can chat with it. A job started from Chat links back with **Started in your Chat with \[Relay]**. ## Assign a job [#assign-a-job] Click **Assign job** in the Relay's header. The **Assign to \[Relay]** dialog has: * **Examples** — the Relay's example jobs, to start from * **Title** * **What do you need?** * **Done when** — how the Relay can tell it is finished * **Use these resources** — any data it should focus on Click **Assign**. Anyone who can work in the team space can assign a job. Assignment fails if the Relay is paused, retired, not yet published, or has reached its daily job limit. Jobs also come from [routines](/relays/routines), from hand-offs by other Relays, from Slack, Teams, or email channels, and from sources a Relay watches. ## Job states [#job-states] | State | Meaning | | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Draft** | Not yet submitted | | **Queued** | Waiting for the Relay to pick it up | | **Running** | In progress | | **Waiting** | Paused for something. Shown as **Waiting for review** when an action needs approval, **Waiting for input** when it asked a question, or **Waiting for subtasks** while hand-offs finish | | **Paused** | Paused by a person | | **Completed** | Finished | | **Failed** | Stopped with an error | | **Cancelled** | Cancelled, or declined at review | ## Inside a job [#inside-a-job] Open a job from the [Work tab](/relays/work-and-outputs) or **Needs you**. It shows who is **Accountable** (the Relay), who it was **Requested by**, who it **Runs on behalf of**, the Relay **Version** it ran on, its **Source**, and when it was **Created** and **Completed**. Below are: * **Objective**, with **Done when** * the review card, if an action is waiting * **Outputs** — what it delivered. See [Outputs](/relays/work-and-outputs#outputs). * **Tool calls** — each step it took and its outcome: **Ran**, **Held for review**, **Refused**, **Failed**, or **Simulated**. Anything other than **Ran** also shows the rule and the reason. * **Result** — its write-up, marked **Written from evidence only** when every claim is backed by evidence * **Evidence** for each claim * **Handed-off jobs** Use **Pause**, **Resume**, **Hand off**, or **Cancel** from the job. **Hand off** passes part of a job to another Relay you allowed in setup. The receiving Relay must be published and active, works with its own connected resources for the same delegating person, and never gets more access. Work can be passed on at most twice in a chain, never back to a Relay already in it, and a job can hand off at most six times in all. On **Observe**, a hand-off needs approval. ## Auto-review [#auto-review] Before a Relay does something that changes anything — in a connected tool, a workflow, or a computer app — and its rules already allow it, **auto-review** checks the action first. It looks for signs that a person should look: * it is the **first time** this Relay uses that tool, * a person **declined** this tool in the last 7 days, * the tool **failed** 3 or more times in the last 24 hours, * the tool ran 20 or more times in the last hour (a **burst**), or * the action does not **fit** the job. This check uses the Relay's decision model, when one is set, and errs on the side of asking. If every check passes, the action runs, and its log entry says **auto-reviewed**. If any check fails, the job stops at **Waiting for review** with **Auto-review asked a person:** and the reasons. In Chat (outside a job), the action is refused instead, and the Relay suggests assigning it as a job. Auto-review can only send an action to a person. It never lets through anything the rules hold for approval or block. Reading data is never held. When a Relay types into a computer app, text that looks like a card number, bank account (IBAN), government ID, API key, password, or one-time code is always shown to a person first. ## Approvals [#approvals] When an action needs approval — because the [rules](/relays/charter-and-rules) say so, or auto-review asked — the job stops at **Waiting for review** and a review card appears on the job and in **Needs you**.
A job waiting for review, with a review card that shows the target, tool, effect, parameters, and why auto-review asked
The card shows exactly what will happen: the **Target**, the full email or event, attachments, attendees and whether they will be notified, and when the review **Expires**. For an action in a connected tool, it shows the **Tool**, **Service**, **Effect** (**Reads**, **Makes a change**, **Deletes or cancels**, **Moves money**, or **Runs a workflow**), **Why it asks**, and the **Parameters** (secrets hidden). * **Approve.** The button names the action — **Approve & send**, **Approve & book**, **Approve & move**, **Approve & cancel meeting**, **Approve & run once**, or **Approve**. Your approval covers **exactly the content shown**. The job goes back in the queue, the Relay checks access again, and carries out the action once. * **Decline.** You must give a reason. The job is cancelled and the reason is shown on it, so the Relay can learn from it. * **Edit** (in Needs you) opens the job. An approved action cannot be changed in place. * **Expiry.** A review that nobody decides before it expires (24 hours by default) shows **Review expired** and nothing is carried out. The first decision wins. Review states are **Waiting for review**, **Approved**, **Declined**, **Review expired**, **Done**, and **Not done**. Who can approve: the approvers named in setup, or — if none are named — the Relay's owner, its steward, and workspace admins. Approve the same kind of action often enough and the Relay will suggest a rule so you don't have to. See [Rules suggested from your approvals](/relays/charter-and-rules#suggested-from-your-approvals). ## How a Relay reports back [#how-a-relay-reports-back] A Relay posts updates into your Chat with it and raises a [notification](/workspace#notifications) at the same time. It reports when: * a job is completed or fails, * a review is needed, * it needs more input from you, * a hand-off comes back, or * something it is watching needs attention. Updates go to the person who delegated the work, plus the approvers for reviews and the failure contacts for failures. A Relay's update only claims an effect — "sent", "booked", "saved" — when the job's evidence shows it actually happened. --- # Work, Live, and Outputs (/relays/work-and-outputs) ## Work [#work] The **Work** tab is a Relay's board. At the top, a strip shows **Jobs done, 7 days**, **Hours on jobs, 7 days**, **Reviews approved**, **Spent today**, **Success, 7 days**, and **Needs you**. Below it, jobs sit in four lanes: | Lane | What is in it | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | **Needs you** | Jobs waiting for an approval or an answer from a person | | **Doing now** | Jobs in progress | | **Scheduled** | Drafts, queued jobs due later, and the Relay's routines with when they **Next** run. Click **Run now** to run a routine straight away. | | **Done** | Jobs finished in the last 7 days | Each card shows the job's title, where it came from (**Assigned by** a person, **Chat**, **Routine**, **Hand-off from** another Relay, a channel, or a watched source), its current step — such as **Waiting for you: \[action]**, **Waiting for your answer**, **Waiting on hand-offs**, **Working**, or **Up next** — and its state. If the job delivered something, the card shows it too. Click a card to open the job. See [Inside a job](/relays/tasks-and-approvals#inside-a-job). ## Live [#live] The **Live** tab shows what the Relay is doing right now.
The Live tab with the running job, the Relay's browser screen, its tool calls, and a box to correct it
* **Now** (or **Last job**) — the current job, with **Pause job** or **Resume job**. * **Screen** — the Relay's browser or computer, live. Click **Take over** to drive it yourself. A Relay without [equipment](/relays/equipment) has no screen to watch. * **Tool calls** — each step as it happens, with its outcome. * **Correct \[Relay]** — tell it what to do differently, such as "Use the finance alias, not the CFO's address", and click **Save correction**. The correction goes into the Relay's memory for future jobs. ## Outputs [#outputs] The **Outputs** tab lists everything the Relay delivered, newest first. Each output is typed, so you can see at a glance what it is: | Type | What it is | | ---------------- | -------------------------------------------------- | | **Report** | The Relay's write-up of a finished job | | **Library file** | A file it saved to the [Library](/files) | | **Table row** | A row it added or changed in a [table](/tables) | | **Dashboard** | A [dashboard](/dashboards) it created or updated | | **Email** | An email it sent | | **Meeting** | A meeting it booked | | **App record** | A record it created or changed in a connected tool | | **Workflow run** | A [workflow](/workflows) it ran |
The Outputs tab with type filters and two reports and a Library file
Use the filter chips to show one type. Each row shows the type and service, links back to the job it came **from**, and has an open link when the output has somewhere to open. A Relay only lists an output when the job's evidence shows it really happened, so nothing appears here that did not. Outputs also appear on job cards in **Work** and in each job under **Outputs**. --- # A2A (/integrations/a2a) {/* MANUAL-CONTENT-START:intro */} The A2A (Agent-to-Agent) protocol lets Agent Serve call external AI agents that expose an A2A-compatible endpoint. Use it to connect your workflows to remote agents — LLM-powered bots, microservices, and other AI systems — through a standardized message format. With the A2A block you can: * **Send messages to external agents**: Pass prompts, structured data, or files to a remote agent and get its response. * **Track and cancel tasks**: Poll the state of a long-running task or request its cancellation. * **Discover capabilities**: Fetch an agent's Agent Card to inspect its skills, capabilities, and supported modes. You need the external agent's endpoint URL and, if it requires authentication, an API key. {/* MANUAL-CONTENT-END */} ## Tools [#tools] ### A2A Send Message [#a2a-send-message] Send a message to an external A2A agent and return its response. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------- | | `agentUrl` | string | Yes | The A2A agent endpoint URL | | `message` | string | Yes | The message text to send | | `data` | string | No | Optional structured JSON data to attach (JSON string or object) | | `files` | array | No | Files to attach, uploaded or referenced from a previous block | | `taskId` | string | No | Existing task ID to continue | | `contextId` | string | No | Conversation context ID to continue | | `apiKey` | string | No | API key for authentication (if required) | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------------------------------- | | `content` | string | Agent response text | | `taskId` | string | Task identifier | | `contextId` | string | Conversation/context identifier | | `state` | string | Task lifecycle state: `submitted`, `working`, `input-required`, `auth-required`, `completed`, `failed`, `canceled`, or `rejected` | | `artifacts` | array | Structured task output artifacts | ### A2A Get Task [#a2a-get-task] Retrieve the current state and result of an A2A task. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------- | | `agentUrl` | string | Yes | The A2A agent endpoint URL | | `taskId` | string | Yes | The task ID to retrieve | | `historyLength` | number | No | Maximum number of history messages to include | | `apiKey` | string | No | API key for authentication (if required) | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------- | | `content` | string | Agent response text | | `taskId` | string | Task identifier | | `contextId` | string | Conversation/context identifier | | `state` | string | Task lifecycle state | | `artifacts` | array | Structured task output artifacts | ### A2A Cancel Task [#a2a-cancel-task] Request cancellation of an in-progress A2A task. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------- | | `agentUrl` | string | Yes | The A2A agent endpoint URL | | `taskId` | string | Yes | The task ID to cancel | | `apiKey` | string | No | API key for authentication (if required) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `taskId` | string | Task identifier | | `state` | string | Task lifecycle state after cancellation | | `canceled` | boolean | Whether the task reached the canceled state | ### A2A Get Agent Card [#a2a-get-agent-card] Fetch the Agent Card (discovery document) for an external A2A agent. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------- | | `agentUrl` | string | Yes | The A2A agent endpoint URL | | `apiKey` | string | No | API key for authentication (if required) | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------- | | `name` | string | Agent display name | | `description` | string | Agent description | | `url` | string | Agent endpoint URL | | `version` | string | The agent's own version | | `protocolVersion` | string | A2A protocol version the agent exposes | | `capabilities` | json | Agent capability flags | | `skills` | array | Skills the agent can perform | | `defaultInputModes` | array | Default accepted input media types | | `defaultOutputModes` | array | Default produced output media types | ## Notes [#notes] * Send Message blocks until the agent reaches a terminal (`completed`, `failed`, `canceled`, `rejected`) or interrupted (`input-required`, `auth-required`) state. Use Get Task to poll a task you continue later, and branch on `state`. * Task IDs are scoped to the external agent, not to Agent Serve. Anyone who knows an agent URL and task ID can read or cancel that task unless the agent enforces its own authentication — set an API key for agents that require one. --- # Affinity (/integrations/affinity) {/* MANUAL-CONTENT-START:intro */} [Affinity](https://www.affinity.co/) is a CRM for companies, people, opportunities, and relationship data. Its v2 integration can read and update records, lists, field values, notes, interactions, and transcripts. Discover a workspace’s list fields and dropdown options before writing values. Use bulk field operations for multiple changes and follow the field-value change feed from a stored cursor for incremental sync. Relationship and inferred-connection operations help find introduction paths; Semantic Search finds companies from an investment description. **Before you start** Generate an API key from the **Manage Apps** page in your Affinity settings; it authenticates as a bearer token. Two things gate what you will actually see: * **License.** The Affinity APIs are only available on select license types. Monthly call limits follow the plan tier — 100k on Scale and Advanced, unlimited on Enterprise — alongside a per-user limit of 900 calls per minute shared with the v1 API. Exceeding either returns a 429. * **Permissions.** The API respects in-product sharing, so it never returns a list, note, or interaction the key's user cannot already see. Several operations additionally require a role-based permission an Affinity admin grants: *Export All Organizations directory* for listing and searching companies, *Export All People directory* for listing and searching people, *Export data from Lists* for opportunities and for reading or writing list entries, *Manage duplicates* plus an admin role for merges, and *Manage Users* for user email addresses and roles. Some Affinity endpoints are still marked BETA — company, person, and list-entry search, the per-entity field-value reads, the inferred-connection operations, and the user operations. Affinity may change those without notice or versioning. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates the Affinity v2 API into the workflow. Read and search companies, people, and opportunities, page the rows of any list or saved view, read and write field values one at a time or a hundred at once, write and reply to notes, create reminders, follow logged calls, emails, meetings, and transcripts, find warm introductions through shared work and investment history, search notes and files by keyword, find companies from a description in plain language, and follow the field-value change feed for delta sync. What each operation can reach depends on the permissions granted to the API key. ## Actions [#actions] ### Affinity Batch Update Entity Fields [#affinity-batch-update-entity-fields] Write up to 100 non-list field values on one company or person in a single request. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to write the fields on: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `updates` | json | Yes | Up to 100 field updates as \[\{"id":"\","value":\{"type":"…","data":…}}], using the same value shapes as a single field update | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------- | | `operation` | string | The batch operation Affinity performed | ### Affinity Batch Update List Entry Fields [#affinity-batch-update-list-entry-fields] Write up to 100 field values on one list row in a single request. Requires the "Export data from Lists" permission. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `updates` | json | Yes | Up to 100 field updates as \[\{"id":"\","value":\{"type":"…","data":…}}], using the same value shapes as a single field update | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------- | | `operation` | string | The batch operation Affinity performed | ### Affinity Create List [#affinity-create-list] Create a list. Its type fixes which entities it can hold, and the API key holder becomes its creator and owner. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `name` | string | Yes | Name of the new list | | `type` | string | Yes | Entity kind the list holds: company, opportunity, or person | | `isPublic` | boolean | No | Whether everyone in the organization can see the list | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------------------------- | | `id` | number | The list's unique identifier | | `name` | string | The list name | | `creatorId` | number | User who created the list | | `ownerId` | number | User who owns the list | | `isPublic` | boolean | Whether the list is visible to the organization | | `createdAt` | string | When the list was created | | `type` | string | company, opportunity, or person — the entity kind the list holds | ### Affinity Create List Field Dropdown Option [#affinity-create-list-field-dropdown-option] Add a selectable option to a dropdown field on a list. A ranked or status option also needs a rank and a color. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldId` | string | Yes | The dropdown field ID on that list | | `type` | string | Yes | Kind of option to create, matching the field. dropdown takes only a label; ranked-dropdown also requires rank and color; status-dropdown additionally requires a status category. Sending a field the kind does not accept is rejected | | `text` | string | Yes | The option label | | `rank` | number | No | Sort order. Required on a ranked-dropdown or status-dropdown option | | `color` | string | No | Option color: white, gray, blue, green, purple, orange, or red. Required on a ranked-dropdown or status-dropdown option | | `statusCategory` | string | No | Pipeline meaning of the option: open, won, lost, or on-hold. Status-dropdown options only | | `winRate` | number | No | Expected win rate of the status. Status-dropdown options only | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------ | | `id` | number | The dropdown option's unique identifier | | `text` | string | The option label | | `type` | string | dropdown, ranked-dropdown, or status-dropdown | | `rank` | number | Sort order, on ranked and status options | | `color` | string | white, gray, blue, green, purple, orange, or red | | `statusCategory` | string | open, won, lost, or on-hold, on status options | | `winRate` | number | Win rate of a status option | ### Affinity Create Merge [#affinity-create-merge] Fold a duplicate company or person into the record you are keeping. The merge runs asynchronously — poll the returned task to see it finish. Requires the "Manage duplicates" permission and an admin role. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | What to merge: companies or persons | | `primaryId` | string | Yes | ID of the record to keep | | `duplicateId` | string | Yes | ID of the duplicate record to fold in | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `taskUrl` | string | URL of the merge task to poll for completion | ### Affinity Create Note [#affinity-create-note] Write a note — attached to companies, persons, and opportunities, anchored to a meeting, call, or chat message, or posted as a reply to an existing note. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `type` | string | Yes | Note shape: entities to attach it to records, interaction to anchor it to a meeting, call, or chat message, or user-reply to reply to a note | | `html` | string | Yes | The note body as HTML | | `companyIds` | json | No | Companies to attach the note to, e.g. \[1, 2]. Not used on a reply | | `personIds` | json | No | Persons to attach the note to, e.g. \[1, 2]. Not used on a reply | | `opportunityIds` | json | No | Opportunities to attach the note to, e.g. \[1, 2]. Not used on a reply | | `interactionId` | string | No | The interaction to anchor the note to. Required for an interaction note | | `interactionType` | string | No | Kind of the anchoring interaction: meeting, call, or chat-message. Required for an interaction note | | `parentId` | string | No | The note being replied to. Required for a user-reply note | | `creatorId` | string | No | Attribute the note to another internal person. Defaults to the API key holder | | `createdAt` | string | No | Backdate the note to this ISO 8601 timestamp | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------------------- | | `id` | number | The note's unique identifier | | `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply | | `content` | json | The note body as \{html} | | `creator` | object | Person who authored the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | `mentions` | array | Persons mentioned in the note body | | `createdAt` | string | When the note was created | | `updatedAt` | string | When the note was last updated | | `repliesCount` | number | Number of replies, on root notes only | | `parent` | json | The note being replied to, on reply notes only | | `interaction` | json | The meeting, call, chat message, or email the note is anchored to | | `transcriptId` | number | Transcript behind an AI Notetaker note | | `personsPreview` | json | Attached persons, with a count | | `companiesPreview` | json | Attached companies, with a count | | `opportunitiesPreview` | json | Attached opportunities, with a count | ### Affinity Create Reminder [#affinity-create-reminder] Create a reminder on one company, person, or opportunity. A recurring reminder resets whenever the chosen signal happens instead of firing once. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `type` | string | Yes | one-time to fire once, or recurring to reset on a signal | | `entityType` | string | Yes | What the reminder is about: company, person, or opportunity | | `entityId` | string | Yes | ID of that company, person, or opportunity | | `dueDate` | string | No | When the reminder is due, as an ISO 8601 timestamp. Required for a one-time reminder; on a recurring one Affinity computes it from the period when omitted | | `content` | string | No | What the reminder says | | `ownerId` | string | Yes | User the reminder is assigned to. Must be an internal user. The API key holder is recorded as the creator, which is a separate field | | `resetTrigger` | string | No | What restarts a recurring reminder: interaction, email, or event. Required when the type is recurring | | `periodDays` | number | No | Days between firings of a recurring reminder. Required when the type is recurring | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------------------------- | | `id` | number | The reminder's unique identifier | | `type` | string | one-time or recurring | | `status` | string | active, overdue, or completed | | `content` | string | The reminder text | | `dueDate` | string | When the reminder is due | | `creator` | json | User who created the reminder, as \{id} | | `owner` | json | User the reminder is assigned to, as \{id} | | `completer` | json | User who completed it, as \{id} | | `company` | json | Tagged company, as \{id} | | `person` | json | Tagged person, as \{id} | | `opportunity` | json | Tagged opportunity, as \{id} | | `completedAt` | string | When the reminder was completed | | `recurrence` | json | Recurrence as \{resetTrigger, periodDays}, null on a one-time reminder | | `createdAt` | string | When the reminder was created | | `updatedAt` | string | When the reminder was last updated | ### Affinity Delete List Field Dropdown Option [#affinity-delete-list-field-dropdown-option] Permanently delete a dropdown option on a list field. Every list entry currently set to it is cleared, and those values cannot be recovered. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldId` | string | Yes | The dropdown field ID on that list | | `dropdownOptionId` | string | Yes | The dropdown option ID to delete | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | ### Affinity Delete Note [#affinity-delete-note] Delete a note you created. Deleting a root note also deletes its replies; deleting a reply removes only that reply. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | ### Affinity Get Company [#affinity-get-company] Look up one company by ID. Field data is returned only for the Field IDs or Field Types asked for. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `companyId` | string | Yes | The company ID | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | The company's unique identifier | | `name` | string | The company name | | `domain` | string | The primary domain | | `domains` | array | Every domain associated with the company | | `isGlobal` | boolean | Whether this is an Affinity Data global company profile | | `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | ### Affinity Get Current User [#affinity-get-current-user] Verify an Affinity API key and return the tenant, the user behind the key, and the scopes the grant carries. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------ | | `tenant` | object | The Affinity organization the key belongs to | | ↳ `id` | number | The tenant's unique identifier | | ↳ `name` | string | The organization name | | ↳ `subdomain` | string | The subdomain under affinity.co | | `user` | object | The user the key authenticates as | | ↳ `id` | number | The user's unique identifier | | ↳ `firstName` | string | The user's first name | | ↳ `lastName` | string | The user's last name | | ↳ `emailAddress` | string | The user's email address | | `grant` | object | How the request is authenticated and what it may reach | | ↳ `type` | string | api-key or access-token | | ↳ `scopes` | array | Scopes available to the grant | | ↳ `createdAt` | string | When the grant was created | ### Affinity Get Entity Field Value [#affinity-get-entity-field-value] Read one non-list field value from a company or person. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to read the field from: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `fieldId` | string | Yes | The field ID to read | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | The field's unique identifier | | `name` | string | The field name | | `type` | string | enriched, global, list, relationship-intelligence, or hidden | | `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | ### Affinity Get List [#affinity-get-list] Read one list — its name, type, owner, and privacy setting. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | #### Output [#output-12] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------------------------- | | `id` | number | The list's unique identifier | | `name` | string | The list name | | `creatorId` | number | User who created the list | | `ownerId` | number | User who owns the list | | `isPublic` | boolean | Whether the list is visible to the organization | | `createdAt` | string | When the list was created | | `type` | string | company, opportunity, or person — the entity kind the list holds | ### Affinity Get List Entry [#affinity-get-list-entry] Read one row of a list with its entity. Field data is returned only for the Field IDs or Field Types asked for. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs | #### Output [#output-13] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------------- | | `id` | number | The list entry's unique identifier | | `type` | string | company, person, or opportunity | | `listId` | number | The list the entry belongs to | | `createdAt` | string | When the entity was added to the list | | `creatorId` | number | User who added the entity | | `entity` | json | The company, person, or opportunity on the row, including its field values | ### Affinity Get List Entry Field [#affinity-get-list-entry-field] Read one field value on a list row. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `fieldId` | string | Yes | The field ID to read | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | The field's unique identifier | | `name` | string | The field name | | `type` | string | enriched, global, list, relationship-intelligence, or hidden | | `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | ### Affinity Get List Field Dropdown Option [#affinity-get-list-field-dropdown-option] Read one dropdown option on a list field. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldId` | string | Yes | The dropdown field ID on that list | | `dropdownOptionId` | string | Yes | The dropdown option ID | #### Output [#output-15] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------ | | `id` | number | The dropdown option's unique identifier | | `text` | string | The option label | | `type` | string | dropdown, ranked-dropdown, or status-dropdown | | `rank` | number | Sort order, on ranked and status options | | `color` | string | white, gray, blue, green, purple, orange, or red | | `statusCategory` | string | open, won, lost, or on-hold, on status options | | `winRate` | number | Win rate of a status option | ### Affinity Get Merge [#affinity-get-merge] Read the status of one company or person merge, including why it failed if it did. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which merge to read: companies or persons | | `mergeId` | string | Yes | The merge ID | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------- | | `id` | number | The merge's unique identifier | | `status` | string | in-progress, success, or failed | | `taskId` | string | Task that groups this merge with its siblings | | `startedAt` | string | When the merge started | | `completedAt` | string | When the merge finished | | `errorMessage` | string | Why the merge failed | | `primaryCompanyId` | number | Company kept by a company merge | | `duplicateCompanyId` | number | Company folded in by a company merge | | `primaryPersonId` | number | Person kept by a person merge | | `duplicatePersonId` | number | Person folded in by a person merge | ### Affinity Get Merge Task [#affinity-get-merge-task] Read one merge task and how its merges are progressing. Poll this after starting a merge. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which merge task to read: companies or persons | | `taskId` | string | Yes | The merge task ID | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------------- | | `id` | string | The task's unique identifier | | `status` | string | in-progress, success, or failed | | `resultsSummary` | json | Counts of the grouped merges as \{total, inProgress, success, failed} | ### Affinity Get Note [#affinity-get-note] Read one note with its body, author, mentions, and attached records. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID | | `includes` | json | No | Extra properties to return, e.g. \["repliesCount","personsPreview","companiesPreview","opportunitiesPreview"]. Those four fields are omitted unless requested here | #### Output [#output-18] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------------------- | | `id` | number | The note's unique identifier | | `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply | | `content` | json | The note body as \{html} | | `creator` | object | Person who authored the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | `mentions` | array | Persons mentioned in the note body | | `createdAt` | string | When the note was created | | `updatedAt` | string | When the note was last updated | | `repliesCount` | number | Number of replies, on root notes only | | `parent` | json | The note being replied to, on reply notes only | | `interaction` | json | The meeting, call, chat message, or email the note is anchored to | | `transcriptId` | number | Transcript behind an AI Notetaker note | | `personsPreview` | json | Attached persons, with a count | | `companiesPreview` | json | Attached companies, with a count | | `opportunitiesPreview` | json | Attached opportunities, with a count | ### Affinity Get Opportunity [#affinity-get-opportunity] Read one opportunity and the list it belongs to. Its field data lives on the list entry. #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `opportunityId` | string | Yes | The opportunity ID | #### Output [#output-19] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------- | | `id` | number | The opportunity's unique identifier | | `name` | string | The opportunity name | | `listId` | number | The list the opportunity belongs to | | `listName` | string | Name of that list | | `isRestricted` | boolean | Whether list permissions restrict access to the opportunity | | `isRedacted` | boolean | Whether the opportunity fields were redacted | ### Affinity Get Person [#affinity-get-person] Look up one person by ID. Field data is returned only for the Field IDs or Field Types asked for. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `personId` | string | Yes | The person ID | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | #### Output [#output-20] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | The person's unique identifier | | `firstName` | string | The person's first name | | `lastName` | string | The person's last name | | `primaryEmailAddress` | string | The person's primary email address | | `emailAddresses` | array | Every email address on the person | | `type` | string | Whether the person is internal or external | | `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | ### Affinity Get Saved View [#affinity-get-saved-view] Read one saved view — its name, kind, and creation date. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `viewId` | string | Yes | The saved view ID | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------- | | `id` | number | The saved view's unique identifier | | `name` | string | The saved view name | | `type` | string | sheet, board, or dashboard | | `createdAt` | string | When the saved view was created | ### Affinity Get Transcript [#affinity-get-transcript] Read one transcript with its first 100 fragments. Page the fragments endpoint for a longer meeting. #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `transcriptId` | string | Yes | The transcript ID | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------- | | `id` | number | The transcript's unique identifier | | `note` | json | The AI Notetaker note the transcript belongs to | | `createdAt` | string | When the transcript was created | | `languageCode` | string | Language the meeting was held in | | `fragmentsPreview` | json | The first 100 fragments, with a total count | ### Affinity Get User [#affinity-get-user] Read one internal user. A user and their person record share the same numeric ID, so a person ID works here. #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `userId` | string | Yes | The user ID, which is also their person ID | #### Output [#output-23] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------- | | `id` | number | The user's unique identifier, shared with their person ID | | `firstName` | string | The user's first name | | `lastName` | string | The user's last name | | `primaryEmailAddress` | string | The user's primary email address | | `emailAddresses` | array | Every email address, for callers with the Manage Users permission | | `photoUrl` | string | URL of the user's photo | | `status` | string | active, invited, or deactivated | | `role` | string | Account role, for callers with the Manage Users permission | ### Affinity List Calls [#affinity-list-calls] Page through logged calls and their participants. Only calls the API key holder can see are returned. #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-24] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------- | | `calls` | array | Logged calls, newest page first | | ↳ `id` | number | The call's unique identifier | | ↳ `loggingType` | string | How the call was logged | | ↳ `title` | string | The call title | | ↳ `startTime` | string | When the call started | | ↳ `endTime` | string | When the call ended | | ↳ `allDay` | boolean | Whether the call spans the whole day | | ↳ `creator` | json | Who logged the call | | ↳ `createdAt` | string | When the record was created | | ↳ `updatedAt` | string | When the record was last updated | | ↳ `attendeesPreview` | json | Attendees, with a total count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Chat Messages [#affinity-list-chat-messages] Page through logged chat messages and their participants. Only messages the API key holder can see are returned. #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-25] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------- | | `chatMessages` | array | Logged chat messages | | ↳ `id` | number | The chat message's unique identifier | | ↳ `sentAt` | string | When the message was sent | | ↳ `loggingType` | string | How the message was logged | | ↳ `direction` | string | sent or received | | ↳ `creator` | object | Person who sent the message | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `createdAt` | string | When the record was created | | ↳ `updatedAt` | string | When the record was last updated | | ↳ `participantsPreview` | json | Participants, with a total count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Companies [#affinity-list-companies] Page through companies. Companies come back without field data unless Field IDs or Field Types asks for it. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `ids` | json | No | Restrict the page to these company IDs, e.g. \[1, 2, 3] | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-26] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `companies` | array | Companies with any requested field values | | ↳ `id` | number | The company's unique identifier | | ↳ `name` | string | The company name | | ↳ `domain` | string | The primary domain | | ↳ `domains` | array | Every domain associated with the company | | ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile | | ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Coworker Connections [#affinity-list-coworker-connections] Find warm paths into a company through shared work history: who in your Affinity data once worked alongside the people you want to reach. Grouped by target, strongest first. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | Yes | Required scope. The only supported filter is target.currentCompany.id, e.g. "target.currentCompany.id=123" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of targets to return per page, 1-50. Defaults to 20 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-27] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------------------------------- | | `connections` | array | Targets and the coworkers who might introduce you | | ↳ `target` | json | The person to reach, as \{fullName, title, linkedinUrl, currentCompany} | | ↳ `connections` | array | People in your Affinity data who might know the target, each with the inference that links them | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Emails [#affinity-list-emails] Page through email metadata — subject, participants, and timestamps. Affinity never exposes email bodies through the API. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-28] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------------------------------------------------- | | `emails` | array | Email metadata. Subjects are omitted when the caller lacks permission to see them | | ↳ `id` | number | The email's unique identifier | | ↳ `sentAt` | string | When the email was sent | | ↳ `loggingType` | string | How the email was logged | | ↳ `direction` | string | sent or received | | ↳ `subject` | string | The subject line | | ↳ `createdAt` | string | When the record was created | | ↳ `updatedAt` | string | When the record was last updated | | ↳ `from` | json | Sender, as \{emailAddress, person} | | ↳ `toParticipantsPreview` | json | To recipients, with a total count | | ↳ `ccParticipantsPreview` | json | Cc recipients, with a total count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Entity Field Values [#affinity-list-entity-field-values] Page through a company's or person's non-list field values. List fields are not returned here — read those through the list entry. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to read field values from: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `ids` | json | No | Restrict to these field IDs. Mutually exclusive with Field Types | | `types` | json | No | Restrict to these field categories: enriched, global, relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 20 | #### Output [#output-29] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fields` | array | Field values on the entity | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Entity List Entries [#affinity-list-entity-list-entries] Page through a company's or person's rows across every list, each carrying that list's field values and when the entity was added. #### Input [#input-30] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to look up the rows of: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-30] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `listEntries` | array | List rows holding the entity, one per list it appears on | | ↳ `id` | number | The list entry's unique identifier | | ↳ `listId` | number | The list the entry belongs to | | ↳ `listName` | string | Name of that list | | ↳ `createdAt` | string | When the entity was added to the list | | ↳ `creatorId` | number | User who added the entity | | ↳ `fields` | array | Field values on the row, including list-specific fields | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Entity Lists [#affinity-list-entity-lists] List every list a company or person appears on that the caller can view. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to look up the lists of: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-31] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------- | | `lists` | array | Lists the entity appears on | | ↳ `id` | number | The list's unique identifier | | ↳ `name` | string | The list name | | ↳ `creatorId` | number | User who created the list | | ↳ `ownerId` | number | User who owns the list | | ↳ `isPublic` | boolean | Whether the list is visible to the organization | | ↳ `createdAt` | string | When the list was created | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Entity Notes [#affinity-list-entity-notes] List the notes relevant to one company, person, or opportunity — directly attached notes plus notes reaching it through its people and meetings. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity the notes hang off: companies, persons, or opportunities | | `entityId` | string | Yes | ID of that company, person, or opportunity | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-32] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------- | | `notes` | array | Notes relevant to the entity | | ↳ `id` | number | The note's unique identifier | | ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply | | ↳ `content` | json | The note body as \{html} | | ↳ `creator` | object | Person who authored the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `mentions` | array | Persons mentioned in the note body | | ↳ `createdAt` | string | When the note was created | | ↳ `updatedAt` | string | When the note was last updated | | ↳ `repliesCount` | number | Number of replies, on root notes only | | ↳ `parent` | json | The note being replied to, on reply notes only | | ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to | | ↳ `transcriptId` | number | Transcript behind an AI Notetaker note | | ↳ `personsPreview` | json | Attached persons, with a count | | ↳ `companiesPreview` | json | Attached companies, with a count | | ↳ `opportunitiesPreview` | json | Attached opportunities, with a count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Entity Relationships [#affinity-list-entity-relationships] List who knows a company or person, scored 0.0 to 1.0 by how much the two actually interact. Strongest first by default. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to look up relationships for: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on interactionScore only, e.g. "interactionScore>=0.5" | | `orderBy` | json | No | Sort order: \["interactionScore"] for weakest first, \["-interactionScore"] for strongest first (the default) | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-33] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------- | | `relationships` | array | Scored relationships involving the entity | | ↳ `person1` | object | One side of the relationship | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `person2` | object | The other side of the relationship | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `interactionScore` | number | Strength of the relationship, between 0.0 and 1.0 | | ↳ `linkedIn` | json | When the two connected on LinkedIn, as \{connectedOn} | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Field Dropdown Options [#affinity-list-field-dropdown-options] List the selectable options on a dropdown or ranked-dropdown company or person field. Writing such a field needs the option ID, not its text. #### Input [#input-34] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which field family the field belongs to: companies or persons | | `fieldId` | string | Yes | The dropdown or ranked-dropdown field ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-34] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------- | | `options` | array | Selectable options on the field | | ↳ `id` | number | The dropdown option's unique identifier | | ↳ `text` | string | The option label | | ↳ `type` | string | dropdown, ranked-dropdown, or status-dropdown | | ↳ `rank` | number | Sort order, on ranked and status options | | ↳ `color` | string | white, gray, blue, green, purple, orange, or red | | ↳ `statusCategory` | string | open, won, lost, or on-hold, on status options | | ↳ `winRate` | number | Win rate of a status option | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Field Metadata [#affinity-list-field-metadata] List the non-list company or person fields, with the value type, filter operators, and sort support of each. Start here to find the Field IDs the read and write tools take. #### Input [#input-35] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which fields to describe: companies or persons | | `includes` | json | No | Extra properties to return: \["filterability","sortability"]. Both are omitted unless requested here | | `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on name only, e.g. "name=\~Status" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-35] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fields` | array | Field definitions available on the entity | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, or relationship-intelligence | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `valueType` | string | The value shape: person, person-multi, company, company-multi, filterable-text, filterable-text-multi, number, number-multi, datetime, location, location-multi, text, ranked-dropdown, dropdown, dropdown-multi, formula-number, or interaction | | ↳ `createdAt` | string | When the field was created | | ↳ `filterability` | json | Supported filter operators, or the attributes that can be filtered on. Only present when requested through Includes | | ↳ `sortability` | json | Whether the field can be sorted on, and by which attributes. Only present when requested through Includes | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Field Value Changes [#affinity-list-field-value-changes] Page through field value changes across the whole workspace. Built for delta sync: follow nextCursor to the end of a run, then resume from the last cursor next time. #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression over field.id, listEntry.id, changer.id, changedAt, or actionType. Resume a sync with e.g. "changedAt>2026-06-01T12:00:00Z" | | `orderBy` | json | No | Sort order: \["changedAt"] for oldest first (the default), \["-changedAt"] for newest first | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-36] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------- | | `changes` | array | Field value changes across the workspace | | ↳ `id` | number | The change's unique identifier | | ↳ `type` | string | The value type the change applies to | | ↳ `field` | json | The changed field as \{id, entityType, name, type} | | ↳ `entity` | json | The entity whose field changed, as \{id} | | ↳ `listEntry` | json | The list entry the change happened on, for list fields | | ↳ `changer` | json | User who made the change | | ↳ `changedAt` | string | When the change happened | | ↳ `actionType` | string | add, update, or delete | | ↳ `value` | json | The value that was added, set, or removed | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Investor Executive Connections [#affinity-list-investor-executive-connections] Find warm paths into a company through investment history: which investors in your Affinity data backed a company the people you want to reach once led. Grouped by target, strongest first. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | Yes | Required scope. The only supported filter is target.currentCompany.id, e.g. "target.currentCompany.id=123" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of targets to return per page, 1-50. Defaults to 20 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-37] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------------------------------- | | `connections` | array | Targets and the investors who might introduce you | | ↳ `target` | json | The person to reach, as \{fullName, title, linkedinUrl, currentCompany} | | ↳ `connections` | array | People in your Affinity data who might know the target, each with the inference that links them | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List List Entries [#affinity-list-list-entries] Page through the rows of a list. Rows come back without field data unless Field IDs or Field Types asks for it. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-38] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------- | | `listEntries` | array | Rows on the list, each with its entity inlined | | ↳ `id` | number | The list entry's unique identifier | | ↳ `type` | string | company, person, or opportunity | | ↳ `listId` | number | The list the entry belongs to | | ↳ `createdAt` | string | When the entity was added to the list | | ↳ `creatorId` | number | User who added the entity | | ↳ `entity` | json | The company, person, or opportunity on the row, including its field values | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List List Entry Field Value Changes [#affinity-list-list-entry-field-value-changes] Page through the history of one list row — who changed which field, when, and to what. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `filter` | string | No | Affinity Filtering Language expression over field.id, changer.id, changedAt, or actionType, e.g. "field.id=field-1234" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------- | | `changes` | array | Field value changes on the row | | ↳ `id` | number | The change's unique identifier | | ↳ `type` | string | The value type the change applies to | | ↳ `field` | json | The changed field as \{id, entityType, name, type} | | ↳ `entity` | json | The entity whose field changed, as \{id} | | ↳ `listEntry` | json | The list entry the change happened on, for list fields | | ↳ `changer` | json | User who made the change | | ↳ `changedAt` | string | When the change happened | | ↳ `actionType` | string | add, update, or delete | | ↳ `value` | json | The value that was added, set, or removed | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List List Entry Fields [#affinity-list-list-entry-fields] Page through every field value on one list row, including the list-specific columns. All fields are returned unless narrowed. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `ids` | json | No | Restrict to these field IDs. Mutually exclusive with Field Types | | `types` | json | No | Restrict to these field categories: enriched, global, list, relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 20 | #### Output [#output-40] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fields` | array | Field values on the list row | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List List Field Dropdown Options [#affinity-list-list-field-dropdown-options] List the selectable options on a dropdown, ranked-dropdown, or status-dropdown field of a list. #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldId` | string | Yes | The dropdown field ID on that list | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-41] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------- | | `options` | array | Selectable options on the list field | | ↳ `id` | number | The dropdown option's unique identifier | | ↳ `text` | string | The option label | | ↳ `type` | string | dropdown, ranked-dropdown, or status-dropdown | | ↳ `rank` | number | Sort order, on ranked and status options | | ↳ `color` | string | white, gray, blue, green, purple, orange, or red | | ↳ `statusCategory` | string | open, won, lost, or on-hold, on status options | | ↳ `winRate` | number | Win rate of a status option | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List List Fields [#affinity-list-list-fields] List the fields available on one list, including its list-specific columns. Use these Field IDs when reading or writing list entries. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `includes` | json | No | Extra properties to return: \["filterability","sortability"]. Both are omitted unless requested here | | `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on name only, e.g. "name=\~Stage" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-42] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fields` | array | Field definitions available on the list | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, or relationship-intelligence | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `valueType` | string | The value shape: person, person-multi, company, company-multi, filterable-text, filterable-text-multi, number, number-multi, datetime, location, location-multi, text, ranked-dropdown, dropdown, dropdown-multi, formula-number, or interaction | | ↳ `createdAt` | string | When the field was created | | ↳ `filterability` | json | Supported filter operators, or the attributes that can be filtered on. Only present when requested through Includes | | ↳ `sortability` | json | Whether the field can be sorted on, and by which attributes. Only present when requested through Includes | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Lists [#affinity-list-lists] Page through the lists in the organization that the caller can view. #### Input [#input-43] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `term` | string | No | Case-insensitive substring match on the list name | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-43] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------------------- | | `lists` | array | Lists the caller can view | | ↳ `id` | number | The list's unique identifier | | ↳ `name` | string | The list name | | ↳ `creatorId` | number | User who created the list | | ↳ `ownerId` | number | User who owns the list | | ↳ `isPublic` | boolean | Whether the list is visible to the organization | | ↳ `createdAt` | string | When the list was created | | ↳ `type` | string | company, opportunity, or person — the entity kind the list holds | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Meetings [#affinity-list-meetings] Page through past and upcoming meetings with their organizer and attendees. #### Input [#input-44] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-44] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------- | | `meetings` | array | Meetings with their attendees | | ↳ `id` | number | The call's unique identifier | | ↳ `loggingType` | string | automated or manual | | ↳ `title` | string | The call title | | ↳ `startTime` | string | When the call started | | ↳ `endTime` | string | When the call ended | | ↳ `allDay` | boolean | Whether the call spans the whole day | | ↳ `creator` | json | Who logged the call | | ↳ `createdAt` | string | When the record was created | | ↳ `updatedAt` | string | When the record was last updated | | ↳ `attendeesPreview` | json | Attendees, with a total count | | ↳ `organizer` | json | Who organized the meeting | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Merge Tasks [#affinity-list-merge-tasks] Page through merge tasks, each summarizing how many of its merges are in progress, succeeded, or failed. #### Input [#input-45] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which merge tasks to list: companies or persons | | `filter` | string | No | Affinity Filtering Language expression. This endpoint filters on status only, e.g. "status=in-progress" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-45] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------- | | `tasks` | array | Merge tasks and their result summaries | | ↳ `id` | string | The task's unique identifier | | ↳ `status` | string | in-progress, success, or failed | | ↳ `resultsSummary` | json | Counts of the grouped merges as \{total, inProgress, success, failed} | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Merges [#affinity-list-merges] Page through the company or person merges the organization has run, with the status and the records involved in each. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which merges to list: companies or persons | | `filter` | string | No | Affinity Filtering Language expression over status or taskId, e.g. "status=failed" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-46] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------- | | `merges` | array | Merges the organization has run | | ↳ `id` | number | The merge's unique identifier | | ↳ `status` | string | in-progress, success, or failed | | ↳ `taskId` | string | Task that groups this merge with its siblings | | ↳ `startedAt` | string | When the merge started | | ↳ `completedAt` | string | When the merge finished | | ↳ `errorMessage` | string | Why the merge failed | | ↳ `primaryCompanyId` | number | Company kept by a company merge | | ↳ `duplicateCompanyId` | number | Company folded in by a company merge | | ↳ `primaryPersonId` | number | Person kept by a person merge | | ↳ `duplicatePersonId` | number | Person folded in by a person merge | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Note Attached Companies [#affinity-list-note-attached-companies] List the companies directly attached to one note. #### Input [#input-47] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-47] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------------- | | `companies` | array | Companies attached to the note | | ↳ `id` | number | The company's unique identifier | | ↳ `name` | string | The company name | | ↳ `domain` | string | The company's primary domain | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Note Attached Opportunities [#affinity-list-note-attached-opportunities] List the opportunities directly attached to one note. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-48] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------- | | `opportunities` | array | Opportunities attached to the note | | ↳ `id` | number | The opportunity's unique identifier | | ↳ `name` | string | The opportunity name | | ↳ `listId` | number | The list the opportunity belongs to | | ↳ `listName` | string | Name of that list | | ↳ `isRestricted` | boolean | Whether list permissions restrict access to the opportunity | | ↳ `isRedacted` | boolean | Whether the opportunity fields were redacted | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Note Attached Persons [#affinity-list-note-attached-persons] List the persons directly attached to one note. #### Input [#input-49] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-49] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------- | | `persons` | array | Persons attached to the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Note Replies [#affinity-list-note-replies] Page through the replies on one note, including AI Notetaker replies. #### Input [#input-50] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID whose replies to read | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-50] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------- | | `replies` | array | Replies to the note | | ↳ `id` | number | The note's unique identifier | | ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply | | ↳ `content` | json | The note body as \{html} | | ↳ `creator` | object | Person who authored the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `mentions` | array | Persons mentioned in the note body | | ↳ `createdAt` | string | When the note was created | | ↳ `updatedAt` | string | When the note was last updated | | ↳ `repliesCount` | number | Number of replies, on root notes only | | ↳ `parent` | json | The note being replied to, on reply notes only | | ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to | | ↳ `transcriptId` | number | Transcript behind an AI Notetaker note | | ↳ `personsPreview` | json | Attached persons, with a count | | ↳ `companiesPreview` | json | Attached companies, with a count | | ↳ `opportunitiesPreview` | json | Attached opportunities, with a count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Notes [#affinity-list-notes] Page through every note the caller can see. Replies are excluded. #### Input [#input-51] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `includes` | json | No | Extra properties to return, e.g. \["repliesCount","personsPreview","companiesPreview","opportunitiesPreview"]. Those four fields are omitted unless requested here | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-51] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------- | | `notes` | array | Root notes, excluding replies | | ↳ `id` | number | The note's unique identifier | | ↳ `type` | string | entities, interaction, ai-notetaker, user-reply, or ai-notetaker-reply | | ↳ `content` | json | The note body as \{html} | | ↳ `creator` | object | Person who authored the note | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `type` | string | Whether the person is internal, a collaborator, or external | | ↳ `mentions` | array | Persons mentioned in the note body | | ↳ `createdAt` | string | When the note was created | | ↳ `updatedAt` | string | When the note was last updated | | ↳ `repliesCount` | number | Number of replies, on root notes only | | ↳ `parent` | json | The note being replied to, on reply notes only | | ↳ `interaction` | json | The meeting, call, chat message, or email the note is anchored to | | ↳ `transcriptId` | number | Transcript behind an AI Notetaker note | | ↳ `personsPreview` | json | Attached persons, with a count | | ↳ `companiesPreview` | json | Attached companies, with a count | | ↳ `opportunitiesPreview` | json | Attached opportunities, with a count | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Opportunities [#affinity-list-opportunities] Page through opportunities. Field data lives on the list entry, not here — read it through the list or saved view the opportunity belongs to. #### Input [#input-52] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `ids` | json | No | Restrict the page to these opportunity IDs, e.g. \[1, 2, 3] | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-52] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------- | | `opportunities` | array | Opportunities the caller can view | | ↳ `id` | number | The opportunity's unique identifier | | ↳ `name` | string | The opportunity name | | ↳ `listId` | number | The list the opportunity belongs to | | ↳ `listName` | string | Name of that list | | ↳ `isRestricted` | boolean | Whether list permissions restrict access to the opportunity | | ↳ `isRedacted` | boolean | Whether the opportunity fields were redacted | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Persons [#affinity-list-persons] Page through persons. Persons come back without field data unless Field IDs or Field Types asks for it. #### Input [#input-53] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `ids` | json | No | Restrict the page to these person IDs, e.g. \[1, 2, 3] | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-53] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `persons` | array | Persons with any requested field values | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `emailAddresses` | array | Every email address on the person | | ↳ `type` | string | Whether the person is internal or external | | ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Reminders [#affinity-list-reminders] Page through the reminders the caller can see. Filter by status to surface what is overdue. #### Input [#input-54] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-54] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------- | | `reminders` | array | Reminders visible to the caller | | ↳ `id` | number | The reminder's unique identifier | | ↳ `type` | string | one-time or recurring | | ↳ `status` | string | active, overdue, or completed | | ↳ `content` | string | The reminder text | | ↳ `dueDate` | string | When the reminder is due | | ↳ `creator` | json | User who created the reminder, as \{id} | | ↳ `owner` | json | User the reminder is assigned to, as \{id} | | ↳ `completer` | json | User who completed it, as \{id} | | ↳ `company` | json | Tagged company, as \{id} | | ↳ `person` | json | Tagged person, as \{id} | | ↳ `opportunity` | json | Tagged opportunity, as \{id} | | ↳ `completedAt` | string | When the reminder was completed | | ↳ `recurrence` | json | Recurrence as \{resetTrigger, periodDays}, null on a one-time reminder | | ↳ `createdAt` | string | When the reminder was created | | ↳ `updatedAt` | string | When the reminder was last updated | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Saved View Entries [#affinity-list-saved-view-entries] Page through the rows of a saved view. The view's own filters and columns decide which rows and which field data come back. #### Input [#input-55] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `viewId` | string | Yes | The saved view ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-55] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------- | | `listEntries` | array | Rows the saved view exposes | | ↳ `id` | number | The list entry's unique identifier | | ↳ `type` | string | company, person, or opportunity | | ↳ `listId` | number | The list the entry belongs to | | ↳ `createdAt` | string | When the entity was added to the list | | ↳ `creatorId` | number | User who added the entity | | ↳ `entity` | json | The company, person, or opportunity on the row, including its field values | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Saved Views [#affinity-list-saved-views] List the saved views on a list that the caller can view. #### Input [#input-56] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-56] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------- | | `savedViews` | array | Saved views on the list | | ↳ `id` | number | The saved view's unique identifier | | ↳ `name` | string | The saved view name | | ↳ `type` | string | sheet, board, or dashboard | | ↳ `createdAt` | string | When the saved view was created | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity List Transcript Fragments [#affinity-list-transcript-fragments] Page through everything said in a meeting, segment by segment with the speaker. #### Input [#input-57] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `transcriptId` | string | Yes | The transcript ID | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-57] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------- | | `fragments` | array | Spoken segments in order | | ↳ `content` | string | What was said | | ↳ `speaker` | string | Who said it | | ↳ `startTimestamp` | string | When the segment starts | | ↳ `endTimestamp` | string | When the segment ends | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Transcripts [#affinity-list-transcripts] Page through meeting transcript metadata. Read one transcript to get what was actually said. #### Input [#input-58] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filter` | string | No | Affinity Filtering Language expression, e.g. "createdAt>=2026-01-01" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-58] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------------- | | `transcripts` | array | Transcript metadata, without the spoken content | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity List Users [#affinity-list-users] Page through the internal users in the organization. Email addresses and roles are returned only to callers with the "Manage Users" permission. #### Input [#input-59] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `term` | string | No | Case-insensitive match across first name, last name, and primary email | | `filter` | string | No | Affinity Filtering Language expression over id or status, e.g. "status=active" | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | #### Output [#output-59] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------- | | `users` | array | Internal users in the organization | | ↳ `id` | number | The user's unique identifier, shared with their person ID | | ↳ `firstName` | string | The user's first name | | ↳ `lastName` | string | The user's last name | | ↳ `primaryEmailAddress` | string | The user's primary email address | | ↳ `emailAddresses` | array | Every email address, for callers with the Manage Users permission | | ↳ `photoUrl` | string | URL of the user's photo | | ↳ `status` | string | active, invited, or deactivated | | ↳ `role` | string | Account role, for callers with the Manage Users permission | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | ### Affinity Search Companies [#affinity-search-companies] Search companies by filters, sorts, and a free-text term. Requires the "Export All Organizations directory" permission. #### Input [#input-60] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group | | `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters | | `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields | | `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-60] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `companies` | array | Matching companies with any requested field values | | ↳ `id` | number | The company's unique identifier | | ↳ `name` | string | The company name | | ↳ `domain` | string | The primary domain | | ↳ `domains` | array | Every domain associated with the company | | ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile | | ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity Search Files [#affinity-search-files] Search files by keyword, ordered by relevance. Narrow to specific files or to one company, or leave both unset to search the whole account. #### Input [#input-61] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `prompt` | string | Yes | What to search for. Between 3 and 500 characters | | `ids` | json | No | Restrict the search to these file IDs. Cannot be combined with Company ID | | `companyId` | string | No | Restrict the search to one company's files. Cannot be combined with file IDs | | `limit` | number | No | Maximum number of files to return, 1-100. Defaults to 20 | #### Output [#output-61] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------- | | `results` | array | Matching files, most relevant first | | ↳ `file` | json | The matched file as \{id, name} | | ↳ `pageNumber` | number | Page the match was found on, for paginated documents | | ↳ `preview` | string | Snippet of the file around the match | | `count` | number | Number of matches returned | ### Affinity Search List Entries [#affinity-search-list-entries] Search the rows of one list by filters, sorts, and a free-text term. Requires the "Export data from Lists" permission. #### Input [#input-62] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID to search | | `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group | | `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters | | `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields | | `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, list, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-62] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------- | | `listEntries` | array | Matching rows on the list | | ↳ `id` | number | The list entry's unique identifier | | ↳ `type` | string | company, person, or opportunity | | ↳ `listId` | number | The list the entry belongs to | | ↳ `createdAt` | string | When the entity was added to the list | | ↳ `creatorId` | number | User who added the entity | | ↳ `entity` | json | The company, person, or opportunity on the row, including its field values | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity Search Notes [#affinity-search-notes] Search notes by keyword, ordered by relevance. Narrow to specific notes or to one company, or leave both unset to search the whole account. #### Input [#input-63] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `prompt` | string | Yes | What to search for. Between 3 and 500 characters | | `ids` | json | No | Restrict the search to these note IDs. Cannot be combined with Company ID | | `companyId` | string | No | Restrict the search to one company's notes. Cannot be combined with note IDs | | `limit` | number | No | Maximum number of notes to return, 1-100. Defaults to 20 | #### Output [#output-63] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------ | | `results` | array | Matching notes, most relevant first | | ↳ `note` | json | The matched note as \{id, kind} | | ↳ `preview` | string | Snippet of the note around the match | | `count` | number | Number of matches returned | ### Affinity Search Persons [#affinity-search-persons] Search persons by filters, sorts, and a free-text term. Requires the "Export All People directory" permission. #### Input [#input-64] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `filters` | json | No | Filter group as \{operator: "and"\|"or", filters: \[...]}, at most 50 leaves. Each leaf is \{valueType, fieldId, operator, value}, and a leaf may itself be a nested group | | `searchTerm` | string | No | Free-text term matched against the searchable fields. At least 3 characters | | `searchFieldIds` | json | No | Field IDs the search term is matched against. Defaults to the searchable fields | | `sorts` | json | No | Sort order as \[\{fieldId, direction: "asc"\|"desc", attributeId?}], up to 5, applied in order | | `fieldIds` | json | No | Field IDs to return values for, e.g. \["affinity-data-location"]. Mutually exclusive with Field Types | | `fieldTypes` | json | No | Field categories to return values for: enriched, global, or relationship-intelligence. Mutually exclusive with Field IDs | | `cursor` | string | No | Cursor from a previous page, returned as nextCursor or prevCursor | | `limit` | number | No | Number of items to return per page, 1-100. Defaults to 100 | | `totalCount` | boolean | No | Include the total size of the collection. Costs an extra query | #### Output [#output-64] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `persons` | array | Matching persons with any requested field values | | ↳ `id` | number | The person's unique identifier | | ↳ `firstName` | string | The person's first name | | ↳ `lastName` | string | The person's last name | | ↳ `primaryEmailAddress` | string | The person's primary email address | | ↳ `emailAddresses` | array | Every email address on the person | | ↳ `type` | string | Whether the person is internal or external | | ↳ `fields` | array | Requested field values. Absent unless Field IDs or Field Types was supplied | | ↳ `id` | string | The field's unique identifier | | ↳ `name` | string | The field name | | ↳ `type` | string | enriched, global, list, relationship-intelligence, or hidden | | ↳ `enrichmentSource` | string | affinity-data, dealroom, eventbrite, or mailchimp for an enriched field | | ↳ `value` | json | The typed value as \{type, data}, where type names the value type (person, company, dropdown, number, location, datetime, text, interaction, …) and data carries the value or null | | `count` | number | Number of rows on this page | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `prevCursor` | string | Cursor for the previous page, or null on the first page | | `totalCount` | number | Total size of the collection, only when Total Count was requested | ### Affinity Semantic Search [#affinity-semantic-search] Find companies from a description in plain language — industry, technology, stage, or business model. Currently searches companies only. #### Input [#input-65] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `prompt` | string | Yes | What to look for, in plain language, e.g. "climate tech companies in our pipeline". Up to 500 characters | | `listIds` | json | No | Restrict the search to companies on these lists, e.g. \[1, 2] | | `limit` | number | No | Maximum number of companies to return, 1-100. Defaults to 100 | #### Output [#output-65] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------- | | `companies` | array | Matching companies, best match first | | ↳ `id` | number | The company's unique identifier | | ↳ `name` | string | The company name | | ↳ `domain` | string | The company's primary domain | | ↳ `domains` | array | Every domain associated with the company | | ↳ `isGlobal` | boolean | Whether this is an Affinity Data global company profile | | ↳ `score` | string | How well the company matched the prompt | | `count` | number | Number of companies returned | | `entityType` | string | The entity kind that was searched | | `explanation` | string | How the search read the prompt | ### Affinity Update Entity Field Value [#affinity-update-entity-field-value] Write one non-list field value on a company or person. The value type must match how the field is defined. #### Input [#input-66] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `entityType` | string | Yes | Which entity to write the field on: companies or persons | | `entityId` | string | Yes | ID of that company or person | | `fieldId` | string | Yes | The field ID to write | | `value` | json | Yes | The new value as \{type, data}, where type matches the field's value type. Examples: \{"type":"text","data":"Series B"}, \{"type":"number","data":42}, \{"type":"dropdown","data":\{"dropdownOptionId":7}}, \{"type":"person","data":\{"id":123}}, \{"type":"person-multi","data":\[\{"id":123}]}. Pass data as null to clear the field | #### Output [#output-66] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | ### Affinity Update List Entry Field [#affinity-update-list-entry-field] Write one field value on a list row. Requires the "Export data from Lists" permission. #### Input [#input-67] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `listEntryId` | string | Yes | The list entry ID | | `fieldId` | string | Yes | The field ID to write | | `value` | json | Yes | The new value as \{type, data}, where type matches the field's value type. Examples: \{"type":"text","data":"Series B"}, \{"type":"number","data":42}, \{"type":"dropdown","data":\{"dropdownOptionId":7}}, \{"type":"person","data":\{"id":123}}, \{"type":"person-multi","data":\[\{"id":123}]}. Pass data as null to clear the field | #### Output [#output-67] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | ### Affinity Update List Field Dropdown Option [#affinity-update-list-field-dropdown-option] Change a dropdown option on a list field. Every field is optional — supply only what should change, and only fields the option's kind actually has. #### Input [#input-68] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `listId` | string | Yes | The list ID | | `fieldId` | string | Yes | The dropdown field ID on that list | | `dropdownOptionId` | string | Yes | The dropdown option ID to update | | `text` | string | No | Replacement option label. Supply at least one field to change | | `rank` | number | No | Sort order. Required on a ranked-dropdown or status-dropdown option | | `color` | string | No | Option color: white, gray, blue, green, purple, orange, or red. Required on a ranked-dropdown or status-dropdown option | | `statusCategory` | string | No | Pipeline meaning of the option: open, won, lost, or on-hold. Status-dropdown options only | | `winRate` | number | No | Expected win rate of the status. Status-dropdown options only | #### Output [#output-68] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | ### Affinity Update Note [#affinity-update-note] Rewrite a note's body or replace which records it is attached to. Each list of IDs replaces that association wholesale, an empty list clears it, and omitting one leaves it untouched. A note's type cannot be changed. #### Input [#input-69] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Affinity API key, sent as a bearer token | | `noteId` | string | Yes | The note ID to update | | `html` | string | No | Replacement note body as HTML | | `companyIds` | json | No | Replacement set of attached companies, e.g. \[1, 2]. Send \[] to detach every company; omit to leave them unchanged | | `personIds` | json | No | Replacement set of attached persons, e.g. \[1, 2]. Send \[] to detach every person; omit to leave them unchanged | | `opportunityIds` | json | No | Replacement set of attached opportunities, e.g. \[1, 2]. Send \[] to detach every opportunity; omit to leave them unchanged | #### Output [#output-69] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether Affinity accepted the change | | `id` | string | Identifier of the resource that was changed | --- # AgentMail (/integrations/agentmail) {/* MANUAL-CONTENT-START:intro */} [AgentMail](https://agentmail.to/) connects Agent Serve workflows to email inboxes using an API key. Create inboxes, send and read messages, reply to or forward conversations, manage drafts, and apply labels to threads and messages. For review-before-send workflows, create a draft, update it with the reviewed content, then send it. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AgentMail into your workflow. Create and manage email inboxes, send and receive messages, reply to threads, manage drafts, and organize threads with labels. Requires API Key. ## Actions [#actions] ### Create Draft [#create-draft] Create a new email draft in AgentMail #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to create the draft in | | `to` | string | No | Recipient email addresses (comma-separated) | | `subject` | string | No | Draft subject line | | `text` | string | No | Plain text draft body | | `html` | string | No | HTML draft body | | `cc` | string | No | CC recipient email addresses (comma-separated) | | `bcc` | string | No | BCC recipient email addresses (comma-separated) | | `inReplyTo` | string | No | ID of message being replied to | | `sendAt` | string | No | ISO 8601 timestamp to schedule sending | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `draftId` | string | Unique identifier for the draft | | `inboxId` | string | Inbox the draft belongs to | | `subject` | string | Draft subject | | `to` | array | Recipient email addresses | | `cc` | array | CC email addresses | | `bcc` | array | BCC email addresses | | `text` | string | Plain text content | | `html` | string | HTML content | | `preview` | string | Draft preview text | | `labels` | array | Labels assigned to the draft | | `inReplyTo` | string | Message ID this draft replies to | | `sendStatus` | string | Send status (scheduled, sending, failed) | | `sendAt` | string | Scheduled send time | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Create Inbox [#create-inbox] Create a new email inbox with AgentMail #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `username` | string | No | Username for the inbox email address | | `domain` | string | No | Domain for the inbox email address | | `displayName` | string | No | Display name for the inbox | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | ------------------------------- | | `inboxId` | string | Unique identifier for the inbox | | `email` | string | Email address of the inbox | | `displayName` | string | Display name of the inbox | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Delete Draft [#delete-draft] Delete an email draft in AgentMail #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the draft | | `draftId` | string | Yes | ID of the draft to delete | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the draft was successfully deleted | ### Delete Inbox [#delete-inbox] Delete an email inbox in AgentMail #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to delete | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the inbox was successfully deleted | ### Delete Thread [#delete-thread] Delete an email thread in AgentMail (moves to trash, or permanently deletes if already in trash) #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the thread | | `threadId` | string | Yes | ID of the thread to delete | | `permanent` | boolean | No | Force permanent deletion instead of moving to trash | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `deleted` | boolean | Whether the thread was successfully deleted | ### Forward Message [#forward-message] Forward an email message to new recipients in AgentMail #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the message | | `messageId` | string | Yes | ID of the message to forward | | `to` | string | Yes | Recipient email addresses (comma-separated) | | `subject` | string | No | Override subject line | | `text` | string | No | Additional plain text to prepend | | `html` | string | No | Additional HTML to prepend | | `cc` | string | No | CC recipient email addresses (comma-separated) | | `bcc` | string | No | BCC recipient email addresses (comma-separated) | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------ | --------------------------- | | `messageId` | string | ID of the forwarded message | | `threadId` | string | ID of the thread | ### Get Draft [#get-draft] Get details of a specific email draft in AgentMail #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox the draft belongs to | | `draftId` | string | Yes | ID of the draft to retrieve | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `draftId` | string | Unique identifier for the draft | | `inboxId` | string | Inbox the draft belongs to | | `subject` | string | Draft subject | | `to` | array | Recipient email addresses | | `cc` | array | CC email addresses | | `bcc` | array | BCC email addresses | | `text` | string | Plain text content | | `html` | string | HTML content | | `preview` | string | Draft preview text | | `labels` | array | Labels assigned to the draft | | `inReplyTo` | string | Message ID this draft replies to | | `sendStatus` | string | Send status (scheduled, sending, failed) | | `sendAt` | string | Scheduled send time | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Get Inbox [#get-inbox] Get details of a specific email inbox in AgentMail #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to retrieve | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------ | ------------------------------- | | `inboxId` | string | Unique identifier for the inbox | | `email` | string | Email address of the inbox | | `displayName` | string | Display name of the inbox | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Get Message [#get-message] Get details of a specific email message in AgentMail #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the message | | `messageId` | string | Yes | ID of the message to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------- | | `messageId` | string | Unique identifier for the message | | `threadId` | string | ID of the thread this message belongs to | | `from` | string | Sender email address | | `to` | array | Recipient email addresses | | `cc` | array | CC email addresses | | `bcc` | array | BCC email addresses | | `subject` | string | Message subject | | `text` | string | Plain text content | | `html` | string | HTML content | | `labels` | array | Labels assigned to the message | | `timestamp` | string | Time the message was sent or drafted | | `createdAt` | string | Creation timestamp | ### Get Thread [#get-thread] Get details of a specific email thread including messages in AgentMail #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the thread | | `threadId` | string | Yes | ID of the thread to retrieve | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------ | | `threadId` | string | Unique identifier for the thread | | `subject` | string | Thread subject | | `senders` | array | List of sender email addresses | | `recipients` | array | List of recipient email addresses | | `messageCount` | number | Number of messages in the thread | | `labels` | array | Labels assigned to the thread | | `lastMessageAt` | string | Timestamp of last message | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | | `messages` | array | Messages in the thread | | ↳ `messageId` | string | Unique identifier for the message | | ↳ `from` | string | Sender email address | | ↳ `to` | array | Recipient email addresses | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `subject` | string | Message subject | | ↳ `text` | string | Plain text content | | ↳ `html` | string | HTML content | | ↳ `labels` | array | Labels assigned to the message | | ↳ `timestamp` | string | Time the message was sent or drafted | | ↳ `createdAt` | string | Creation timestamp | ### List Drafts [#list-drafts] List email drafts in an inbox in AgentMail #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to list drafts from | | `limit` | number | No | Maximum number of drafts to return | | `pageToken` | string | No | Pagination token for next page of results | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `drafts` | array | List of drafts | | ↳ `draftId` | string | Unique identifier for the draft | | ↳ `inboxId` | string | Inbox the draft belongs to | | ↳ `subject` | string | Draft subject | | ↳ `to` | array | Recipient email addresses | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `preview` | string | Draft preview text | | ↳ `sendStatus` | string | Send status (scheduled, sending, failed) | | ↳ `sendAt` | string | Scheduled send time | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | `count` | number | Total number of drafts | | `nextPageToken` | string | Token for retrieving the next page | ### List Inboxes [#list-inboxes] List all email inboxes in AgentMail #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `limit` | number | No | Maximum number of inboxes to return | | `pageToken` | string | No | Pagination token for next page of results | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `inboxes` | array | List of inboxes | | ↳ `inboxId` | string | Unique identifier for the inbox | | ↳ `email` | string | Email address of the inbox | | ↳ `displayName` | string | Display name of the inbox | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | `count` | number | Total number of inboxes | | `nextPageToken` | string | Token for retrieving the next page | ### List Messages [#list-messages] List messages in an inbox in AgentMail #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to list messages from | | `limit` | number | No | Maximum number of messages to return | | `pageToken` | string | No | Pagination token for next page of results | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------ | | `messages` | array | List of messages in the inbox | | ↳ `messageId` | string | Unique identifier for the message | | ↳ `from` | string | Sender email address | | ↳ `to` | array | Recipient email addresses | | ↳ `subject` | string | Message subject | | ↳ `preview` | string | Message preview text | | ↳ `timestamp` | string | Time the message was sent or drafted | | ↳ `createdAt` | string | Creation timestamp | | `count` | number | Total number of messages | | `nextPageToken` | string | Token for retrieving the next page | ### List Threads [#list-threads] List email threads in AgentMail #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to list threads from | | `limit` | number | No | Maximum number of threads to return | | `pageToken` | string | No | Pagination token for next page of results | | `labels` | string | No | Comma-separated labels to filter threads by | | `before` | string | No | Filter threads before this ISO 8601 timestamp | | `after` | string | No | Filter threads after this ISO 8601 timestamp | #### Output [#output-13] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `threads` | array | List of email threads | | ↳ `threadId` | string | Unique identifier for the thread | | ↳ `subject` | string | Thread subject | | ↳ `senders` | array | List of sender email addresses | | ↳ `recipients` | array | List of recipient email addresses | | ↳ `messageCount` | number | Number of messages in the thread | | ↳ `lastMessageAt` | string | Timestamp of last message | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | `count` | number | Total number of threads | | `nextPageToken` | string | Token for retrieving the next page | ### Reply to Message [#reply-to-message] Reply to an existing email message in AgentMail #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to reply from | | `messageId` | string | Yes | ID of the message to reply to | | `text` | string | No | Plain text reply body | | `html` | string | No | HTML reply body | | `to` | string | No | Override recipient email addresses (comma-separated) | | `cc` | string | No | CC email addresses (comma-separated) | | `bcc` | string | No | BCC email addresses (comma-separated) | | `replyAll` | boolean | No | Reply to all recipients of the original message | #### Output [#output-14] | Parameter | Type | Description | | ----------- | ------ | ---------------------------- | | `messageId` | string | ID of the sent reply message | | `threadId` | string | ID of the thread | ### Send Draft [#send-draft] Send an existing email draft in AgentMail #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the draft | | `draftId` | string | Yes | ID of the draft to send | #### Output [#output-15] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `messageId` | string | ID of the sent message | | `threadId` | string | ID of the thread | ### Send Message [#send-message] Send an email message from an AgentMail inbox #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to send from | | `to` | string | Yes | Recipient email address (comma-separated for multiple) | | `subject` | string | Yes | Email subject line | | `text` | string | No | Plain text email body | | `html` | string | No | HTML email body | | `cc` | string | No | CC recipient email addresses (comma-separated) | | `bcc` | string | No | BCC recipient email addresses (comma-separated) | #### Output [#output-16] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `threadId` | string | ID of the created thread | | `messageId` | string | ID of the sent message | | `subject` | string | Email subject line | | `to` | string | Recipient email address | ### Update Draft [#update-draft] Update an existing email draft in AgentMail #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the draft | | `draftId` | string | Yes | ID of the draft to update | | `to` | string | No | Recipient email addresses (comma-separated) | | `subject` | string | No | Draft subject line | | `text` | string | No | Plain text draft body | | `html` | string | No | HTML draft body | | `cc` | string | No | CC recipient email addresses (comma-separated) | | `bcc` | string | No | BCC recipient email addresses (comma-separated) | | `sendAt` | string | No | ISO 8601 timestamp to schedule sending | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `draftId` | string | Unique identifier for the draft | | `inboxId` | string | Inbox the draft belongs to | | `subject` | string | Draft subject | | `to` | array | Recipient email addresses | | `cc` | array | CC email addresses | | `bcc` | array | BCC email addresses | | `text` | string | Plain text content | | `html` | string | HTML content | | `preview` | string | Draft preview text | | `labels` | array | Labels assigned to the draft | | `inReplyTo` | string | Message ID this draft replies to | | `sendStatus` | string | Send status (scheduled, sending, failed) | | `sendAt` | string | Scheduled send time | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Update Inbox [#update-inbox] Update the display name of an email inbox in AgentMail #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox to update | | `displayName` | string | Yes | New display name for the inbox | #### Output [#output-18] | Parameter | Type | Description | | ------------- | ------ | ------------------------------- | | `inboxId` | string | Unique identifier for the inbox | | `email` | string | Email address of the inbox | | `displayName` | string | Display name of the inbox | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | ### Update Message [#update-message] Add or remove labels on an email message in AgentMail #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the message | | `messageId` | string | Yes | ID of the message to update | | `addLabels` | string | No | Comma-separated labels to add to the message | | `removeLabels` | string | No | Comma-separated labels to remove from the message | #### Output [#output-19] | Parameter | Type | Description | | ----------- | ------ | --------------------------------- | | `messageId` | string | Unique identifier for the message | | `labels` | array | Current labels on the message | ### Update Thread Labels [#update-thread-labels] Add or remove labels on an email thread in AgentMail #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | AgentMail API key | | `inboxId` | string | Yes | ID of the inbox containing the thread | | `threadId` | string | Yes | ID of the thread to update | | `addLabels` | string | No | Comma-separated labels to add to the thread | | `removeLabels` | string | No | Comma-separated labels to remove from the thread | #### Output [#output-20] | Parameter | Type | Description | | ---------- | ------ | -------------------------------- | | `threadId` | string | Unique identifier for the thread | | `labels` | array | Current labels on the thread | --- # AgentPhone (/integrations/agentphone) {/* MANUAL-CONTENT-START:intro */} Use [AgentPhone](https://agentphone.to/) to provision phone numbers, place outbound voice calls, send SMS or iMessage, and manage contacts and conversations from a workflow. Connect with an AgentPhone API key. Retrieve call transcripts and conversation history for downstream processing, and check usage before starting more calls or messages. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Give your workflow a phone. Provision SMS- and voice-enabled numbers, send messages and tapback reactions, place outbound voice calls, manage conversations and contacts, and track usage — all through a single AgentPhone API key. ## Actions [#actions] ### Create Outbound Call [#create-outbound-call] Initiate an outbound voice call from an AgentPhone agent #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `agentId` | string | Yes | Agent that will handle the call | | `toNumber` | string | Yes | Phone number to call in E.164 format (e.g. +14155551234) | | `fromNumberId` | string | No | Phone number ID to use as caller ID. Must belong to the agent. If omitted, the agent's first assigned number is used. | | `initialGreeting` | string | No | Optional greeting spoken when the recipient answers | | `voice` | string | No | Voice ID override for this call (defaults to the agent's configured voice) | | `systemPrompt` | string | No | When provided, uses a built-in LLM for the conversation instead of forwarding to your webhook | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `id` | string | Unique call identifier | | `agentId` | string | Agent handling the call | | `status` | string | Initial call status | | `toNumber` | string | Destination phone number | | `fromNumber` | string | Caller ID used for the call | | `phoneNumberId` | string | ID of the phone number used as caller ID | | `direction` | string | Call direction (outbound) | | `startedAt` | string | ISO 8601 timestamp | ### Create Contact [#create-contact] Create a new contact in AgentPhone #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | AgentPhone API key | | `phoneNumber` | string | Yes | Phone number in E.164 format (e.g. +14155551234) | | `name` | string | Yes | Contact's full name | | `email` | string | No | Contact's email address | | `notes` | string | No | Freeform notes stored on the contact | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | ---------------------------- | | `id` | string | Contact ID | | `phoneNumber` | string | Phone number in E.164 format | | `name` | string | Contact name | | `email` | string | Contact email address | | `notes` | string | Freeform notes | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | ### Create Phone Number [#create-phone-number] Provision a new SMS- and voice-enabled phone number #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | AgentPhone API key | | `country` | string | No | Two-letter country code (e.g. US, CA). Defaults to US. | | `areaCode` | string | No | Preferred area code (US/CA only, e.g. "415"). Best-effort — may be ignored if unavailable. | | `agentId` | string | No | Optionally attach the number to an agent immediately | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------- | | `id` | string | Unique phone number ID | | `phoneNumber` | string | Provisioned phone number in E.164 format | | `country` | string | Two-letter country code | | `status` | string | Number status (e.g. active) | | `type` | string | Number type (e.g. sms) | | `agentId` | string | Agent the number is attached to | | `createdAt` | string | ISO 8601 timestamp when the number was created | ### Delete Contact [#delete-contact] Delete a contact by ID #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | AgentPhone API key | | `contactId` | string | Yes | Contact ID | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `id` | string | ID of the deleted contact | | `deleted` | boolean | Whether the contact was deleted successfully | ### Get Call [#get-call] Fetch a call and its full transcript #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `callId` | string | Yes | ID of the call to retrieve | #### Output [#output-4] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------- | | `id` | string | Call ID | | `agentId` | string | Agent that handled the call | | `phoneNumberId` | string | Phone number ID | | `phoneNumber` | string | Phone number used for the call | | `fromNumber` | string | Caller phone number | | `toNumber` | string | Recipient phone number | | `direction` | string | inbound or outbound | | `status` | string | Call status | | `startedAt` | string | ISO 8601 timestamp | | `endedAt` | string | ISO 8601 timestamp | | `durationSeconds` | number | Call duration in seconds | | `lastTranscriptSnippet` | string | Last transcript snippet | | `recordingUrl` | string | Recording audio URL | | `recordingAvailable` | boolean | Whether a recording is available | | `transcripts` | array | Ordered transcript turns for the call | | ↳ `id` | string | Transcript turn ID | | ↳ `transcript` | string | User utterance | | ↳ `confidence` | number | Speech recognition confidence | | ↳ `response` | string | Agent response (when available) | | ↳ `createdAt` | string | ISO 8601 timestamp | ### Get Call Transcript [#get-call-transcript] Get the full ordered transcript for a call #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `callId` | string | Yes | ID of the call to retrieve the transcript for | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------- | | `callId` | string | Call ID | | `transcript` | array | Ordered transcript turns for the call | | ↳ `role` | string | Speaker role (user or agent) | | ↳ `content` | string | Turn content | | ↳ `createdAt` | string | ISO 8601 timestamp | ### Get Contact [#get-contact] Fetch a single contact by ID #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | AgentPhone API key | | `contactId` | string | Yes | Contact ID | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------ | ---------------------------- | | `id` | string | Contact ID | | `phoneNumber` | string | Phone number in E.164 format | | `name` | string | Contact name | | `email` | string | Contact email address | | `notes` | string | Freeform notes | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | ### Get Conversation [#get-conversation] Get a conversation along with its recent messages #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `conversationId` | string | Yes | Conversation ID | | `messageLimit` | number | No | Number of recent messages to include (default 50, max 100) | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `id` | string | Conversation ID | | `agentId` | string | Agent ID | | `phoneNumberId` | string | Phone number ID | | `phoneNumber` | string | Phone number | | `participant` | string | External participant phone number | | `lastMessageAt` | string | ISO 8601 timestamp | | `messageCount` | number | Number of messages in the conversation | | `metadata` | json | Custom metadata stored on the conversation | | `createdAt` | string | ISO 8601 timestamp | | `messages` | array | Recent messages in the conversation | | ↳ `id` | string | Message ID | | ↳ `body` | string | Message text | | ↳ `fromNumber` | string | Sender phone number | | ↳ `toNumber` | string | Recipient phone number | | ↳ `direction` | string | inbound or outbound | | ↳ `channel` | string | sms, mms, or imessage | | ↳ `mediaUrl` | string | Attached media URL | | ↳ `mediaUrls` | array | All attached media URLs | | ↳ `receivedAt` | string | ISO 8601 timestamp | ### Get Conversation Messages [#get-conversation-messages] Get paginated messages for a conversation #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `conversationId` | string | Yes | Conversation ID | | `limit` | number | No | Number of messages to return (default 50, max 200) | | `before` | string | No | Return messages received before this ISO 8601 timestamp | | `after` | string | No | Return messages received after this ISO 8601 timestamp | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `data` | array | Messages in the conversation | | ↳ `id` | string | Message ID | | ↳ `body` | string | Message text | | ↳ `fromNumber` | string | Sender phone number | | ↳ `toNumber` | string | Recipient phone number | | ↳ `direction` | string | inbound or outbound | | ↳ `channel` | string | sms, mms, or imessage | | ↳ `mediaUrl` | string | Attached media URL | | ↳ `mediaUrls` | array | All attached media URLs | | ↳ `receivedAt` | string | ISO 8601 timestamp | | `hasMore` | boolean | Whether more messages are available | ### Get Phone Number Messages [#get-phone-number-messages] Fetch messages received on a specific phone number #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `numberId` | string | Yes | ID of the phone number | | `limit` | number | No | Number of messages to return (default 50, max 200) | | `before` | string | No | Return messages received before this ISO 8601 timestamp | | `after` | string | No | Return messages received after this ISO 8601 timestamp | #### Output [#output-9] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `data` | array | Messages received on the number | | ↳ `id` | string | Message ID | | ↳ `from_` | string | Sender phone number (E.164) | | ↳ `to` | string | Recipient phone number (E.164) | | ↳ `body` | string | Message text | | ↳ `direction` | string | inbound or outbound | | ↳ `channel` | string | Channel (sms, mms, etc.) | | ↳ `receivedAt` | string | ISO 8601 timestamp | | `hasMore` | boolean | Whether more messages are available | ### Get Usage [#get-usage] Retrieve current usage statistics for the AgentPhone account #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | AgentPhone API key | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `plan` | json | Plan name and limits (name, limits: numbers/messagesPerMonth/voiceMinutesPerMonth/maxCallDurationMinutes/concurrentCalls) | | `numbers` | json | Phone number usage (used, limit, remaining) | | `stats` | json | Usage stats: totalMessages, messagesLast24h/7d/30d, totalCalls, callsLast24h/7d/30d, totalWebhookDeliveries, successfulWebhookDeliveries, failedWebhookDeliveries | | `periodStart` | string | Billing period start | | `periodEnd` | string | Billing period end | ### Get Daily Usage [#get-daily-usage] Get a daily breakdown of usage (messages, calls, webhooks) for the last N days #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `days` | number | No | Number of days to return (1-365, default 30) | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------ | --------------------------- | | `data` | array | Daily usage entries | | ↳ `date` | string | Day (YYYY-MM-DD) | | ↳ `messages` | number | Messages that day | | ↳ `calls` | number | Calls that day | | ↳ `webhooks` | number | Webhook deliveries that day | | `days` | number | Number of days returned | ### Get Monthly Usage [#get-monthly-usage] Get monthly usage aggregation (messages, calls, webhooks) for the last N months #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `months` | number | No | Number of months to return (1-24, default 6) | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `data` | array | Monthly usage entries | | ↳ `month` | string | Month (YYYY-MM) | | ↳ `messages` | number | Messages that month | | ↳ `calls` | number | Calls that month | | ↳ `webhooks` | number | Webhook deliveries that month | | `months` | number | Number of months returned | ### List Calls [#list-calls] List voice calls for this AgentPhone account #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `limit` | number | No | Number of results to return (default 20, max 100) | | `offset` | number | No | Number of results to skip (min 0) | | `status` | string | No | Filter by status (completed, in-progress, failed) | | `direction` | string | No | Filter by direction (inbound, outbound) | | `type` | string | No | Filter by call type (pstn, web) | | `search` | string | No | Search by phone number (matches fromNumber or toNumber) | #### Output [#output-13] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------- | | `data` | array | Calls | | ↳ `id` | string | Call ID | | ↳ `agentId` | string | Agent that handled the call | | ↳ `phoneNumberId` | string | Phone number ID used for the call | | ↳ `phoneNumber` | string | Phone number used for the call | | ↳ `fromNumber` | string | Caller phone number | | ↳ `toNumber` | string | Recipient phone number | | ↳ `direction` | string | inbound or outbound | | ↳ `status` | string | Call status | | ↳ `startedAt` | string | ISO 8601 timestamp | | ↳ `endedAt` | string | ISO 8601 timestamp | | ↳ `durationSeconds` | number | Call duration in seconds | | ↳ `lastTranscriptSnippet` | string | Last transcript snippet | | ↳ `recordingUrl` | string | Recording audio URL | | ↳ `recordingAvailable` | boolean | Whether a recording is available | | `hasMore` | boolean | Whether more results are available | | `total` | number | Total number of matching calls | ### List Contacts [#list-contacts] List contacts for this AgentPhone account #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `search` | string | No | Filter by name or phone number (case-insensitive contains) | | `limit` | number | No | Number of results to return (default 50, max 200) | | `offset` | number | No | Number of results to skip (min 0) | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `data` | array | Contacts | | ↳ `id` | string | Contact ID | | ↳ `phoneNumber` | string | Phone number in E.164 format | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email address | | ↳ `notes` | string | Freeform notes | | ↳ `createdAt` | string | ISO 8601 creation timestamp | | ↳ `updatedAt` | string | ISO 8601 update timestamp | | `hasMore` | boolean | Whether more results are available | | `total` | number | Total number of contacts | ### List Conversations [#list-conversations] List conversations (message threads) for this AgentPhone account #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `limit` | number | No | Number of results to return (default 20, max 100) | | `offset` | number | No | Number of results to skip (min 0) | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------ | | `data` | array | Conversations | | ↳ `id` | string | Conversation ID | | ↳ `agentId` | string | Agent ID | | ↳ `phoneNumberId` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number | | ↳ `participant` | string | External participant phone number | | ↳ `lastMessageAt` | string | ISO 8601 timestamp | | ↳ `lastMessagePreview` | string | Last message preview | | ↳ `messageCount` | number | Number of messages in the conversation | | ↳ `metadata` | json | Custom metadata stored on the conversation | | ↳ `createdAt` | string | ISO 8601 timestamp | | `hasMore` | boolean | Whether more results are available | | `total` | number | Total number of conversations | ### List Phone Numbers [#list-phone-numbers] List all phone numbers provisioned for this AgentPhone account #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `limit` | number | No | Number of results to return (default 20, max 100) | | `offset` | number | No | Number of results to skip (min 0) | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `data` | array | Phone numbers | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number in E.164 format | | ↳ `country` | string | Two-letter country code | | ↳ `status` | string | Number status | | ↳ `type` | string | Number type (e.g. sms) | | ↳ `agentId` | string | Attached agent ID | | ↳ `createdAt` | string | ISO 8601 creation timestamp | | `hasMore` | boolean | Whether more results are available | | `total` | number | Total number of phone numbers | ### React to Message [#react-to-message] Send an iMessage tapback reaction to a message (iMessage only) #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `messageId` | string | Yes | ID of the message to react to | | `reaction` | string | Yes | Reaction type: love, like, dislike, laugh, emphasize, or question | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `id` | string | Reaction ID | | `reactionType` | string | Reaction type applied | | `messageId` | string | ID of the message that was reacted to | | `channel` | string | Channel (imessage) | ### Release Phone Number [#release-phone-number] Release (delete) a phone number. This action is irreversible. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `numberId` | string | Yes | ID of the phone number to release | #### Output [#output-18] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------- | | `id` | string | ID of the released phone number | | `released` | boolean | Whether the number was released successfully | ### Send Message [#send-message] Send an outbound SMS or iMessage from an AgentPhone agent #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | AgentPhone API key | | `agentId` | string | Yes | Agent sending the message | | `toNumber` | string | Yes | Recipient phone number in E.164 format (e.g. +14155551234) | | `body` | string | Yes | Message text to send | | `mediaUrl` | string | No | Optional URL of an image, video, or file to attach | | `numberId` | string | No | Phone number ID to send from. If omitted, the agent's first assigned number is used. | #### Output [#output-19] | Parameter | Type | Description | | ------------ | ------ | ---------------------- | | `id` | string | Message ID | | `status` | string | Delivery status | | `channel` | string | sms, mms, or imessage | | `fromNumber` | string | Sender phone number | | `toNumber` | string | Recipient phone number | ### Update Contact [#update-contact] Update a contact's fields #### Input [#input-20] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `contactId` | string | Yes | Contact ID | | `phoneNumber` | string | No | New phone number in E.164 format | | `name` | string | No | New contact name | | `email` | string | No | New email address | | `notes` | string | No | New freeform notes | #### Output [#output-20] | Parameter | Type | Description | | ------------- | ------ | ---------------------------- | | `id` | string | Contact ID | | `phoneNumber` | string | Phone number in E.164 format | | `name` | string | Contact name | | `email` | string | Contact email address | | `notes` | string | Freeform notes | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | ### Update Conversation [#update-conversation] Update conversation metadata (stored state). Pass null to clear existing metadata. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | AgentPhone API key | | `conversationId` | string | Yes | Conversation ID | | `metadata` | json | No | Custom key-value metadata to store on the conversation. Pass null to clear existing metadata. | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `id` | string | Conversation ID | | `agentId` | string | Agent ID | | `phoneNumberId` | string | Phone number ID | | `phoneNumber` | string | Phone number | | `participant` | string | External participant phone number | | `lastMessageAt` | string | ISO 8601 timestamp | | `messageCount` | number | Number of messages | | `metadata` | json | Custom metadata stored on the conversation | | `createdAt` | string | ISO 8601 timestamp | | `messages` | array | Messages in the conversation | | ↳ `id` | string | Message ID | | ↳ `body` | string | Message body | | ↳ `fromNumber` | string | Sender phone number | | ↳ `toNumber` | string | Recipient phone number | | ↳ `direction` | string | inbound or outbound | | ↳ `channel` | string | Channel (sms, mms, etc.) | | ↳ `mediaUrl` | string | Media URL if any | | ↳ `mediaUrls` | array | All attached media URLs | | ↳ `receivedAt` | string | ISO 8601 timestamp | --- # Agiloft (/integrations/agiloft) {/* MANUAL-CONTENT-START:intro */} [Agiloft](https://www.agiloft.com/) stores records in knowledge-base tables. Use this integration to find, create, update, and delete records, work with attachments, manage record locks, and run action buttons. Select the target knowledge base and table for each operation; the action reference below lists its required fields. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with Agiloft contract lifecycle management to create, read, update, delete, and search records. Supports file attachments, SQL-based selection, saved searches, record locking, and running action buttons across any table in your knowledge base. ## Actions [#actions] ### Agiloft Async Status [#agiloft-async-status] Check whether an asynchronous Agiloft call, such as a run action button, has completed. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table the asynchronous call was made against | | `callbackId` | string | Yes | Callback ID returned by the asynchronous call, e.g. from Run Action Button | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------- | | `callbackId` | string | Callback ID that was checked | | `statusCode` | number | Raw status code Agiloft returned | | `status` | string | completed, queued, in\_progress, failed, or unknown\_callback | | `complete` | boolean | True when the operation has finished, whether it succeeded or failed | ### Agiloft Attach File [#agiloft-attach-file] Attach a file to a field in an Agiloft record. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts") | | `recordId` | string | Yes | ID of the record to attach the file to | | `fieldName` | string | Yes | Name of the attachment field | | `file` | file | Yes | File to attach | | `fileName` | string | No | Name to assign to the file (defaults to original file name) | | `overwrite` | boolean | No | Replace the contents of the field instead of adding another file to it | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------- | | `recordId` | string | ID of the record the file was attached to | | `fieldName` | string | Name of the field the file was attached to | | `fileName` | string | Name of the attached file | | `totalAttachments` | number | Total number of files attached in the field after the operation | ### Agiloft Attachment Info [#agiloft-attachment-info] Get information about file attachments on a record field. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts") | | `recordId` | string | Yes | ID of the record to check attachments on | | `fieldName` | string | Yes | Name of the attachment field to inspect | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------- | | `attachments` | array | List of attachments with position, name, and size | | ↳ `position` | number | Position index of the attachment in the field | | ↳ `name` | string | File name of the attachment | | ↳ `size` | number | File size in bytes | | `totalCount` | number | Total number of attachments in the field | ### Agiloft Create Record [#agiloft-create-record] Create a new record in an Agiloft table. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `data` | string | Yes | Record field values as a JSON object (e.g., \{"first\_name": "John", "status": "Active"}) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `id` | string | ID of the created record | | `fields` | json | Field values of the created record | ### Agiloft Delete Record [#agiloft-delete-record] Delete a record from an Agiloft table. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `recordId` | string | Yes | ID of the record to delete | | `substituteIds` | string | No | Comma-separated IDs of records that adopt the dependants of the deleted record. Read only when the delete rule is REPLACE\_WITH\_ANOTHER. | | `deleteRule` | string | No | How to treat records that depend on this one: ERROR\_IF\_DEPENDANTS (default — fails rather than cascading), APPLY\_DELETE\_WHERE\_POSSIBLE, DELETE\_WHERE\_POSSIBLE\_OTHERWISE\_UNLINK, APPLY\_UNLINK, UNLINK\_WHERE\_POSSIBLE\_OTHERWISE\_DELETE, or REPLACE\_WITH\_ANOTHER | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `id` | string | ID of the deleted record | | `deleted` | boolean | Whether the record was successfully deleted | ### Agiloft Get Choice Line ID [#agiloft-get-choice-line-id] Resolve the internal numeric ID of a choice-list value, for use in EWSelect WHERE clauses against choice fields. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "case", "contracts") | | `fieldName` | string | Yes | Choice field name (e.g., "priority", "status") | | `value` | string | Yes | Choice display value to resolve (e.g., "High", "Active") | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------- | | `choiceLineId` | number | Internal numeric line ID of the choice value | ### Agiloft List Tables [#agiloft-list-tables] List the tables and fields in an Agiloft knowledge base, to discover the logical names other operations need. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | No | Logical name of a single table to describe (e.g., "contacts"). Leave empty to list every table in the knowledge base. | | `includeLinkedInfo` | boolean | No | Include the source table and column behind each linked field | | `skipColumnsInfo` | boolean | No | Return table names only, omitting field details, for a much smaller response | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `tables` | array | Tables in the knowledge base with their fields | | ↳ `label` | string | Display name of the table | | ↳ `logicalName` | string | Logical table name, as other Agiloft operations expect it | | ↳ `fields` | array | Fields on the table | | ↳ `columnName` | string | Logical field name | | ↳ `columnLabel` | string | Display label | | ↳ `columnType` | string | SQL column type | | ↳ `columnTypeDomain` | string | Agiloft field type | | ↳ `required` | boolean | Whether the field is mandatory | | ↳ `isLinked` | boolean | Whether the field is a linked field | | ↳ `linkedInfo` | array | Source table and column, when linked-field details were requested | | ↳ `linkedTable` | string | Source table | | ↳ `linkedColumn` | string | Source column | | ↳ `textFieldType` | string | Content type for text fields, e.g. text/plain | | `totalCount` | number | Number of tables returned | ### Agiloft Lock Record [#agiloft-lock-record] Lock, unlock, or check the lock status of an Agiloft record. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts") | | `recordId` | string | Yes | ID of the record to lock, unlock, or check | | `lockAction` | string | Yes | Action to perform: "lock", "unlock", or "check" | | `force` | boolean | No | Unlock only: release a lock held by another user. | #### Output [#output-7] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------- | | `id` | string | Record ID | | `tableId` | number | Numeric system identifier of the table holding the record | | `lockStatus` | string | Lock status: "LOCKED" when the record is held, "NO\_LOCK" when it is free | | `lockedBy` | string | Username of the user who locked the record | | `lockExpiresInMinutes` | number | Minutes until the lock expires | ### Agiloft Natural Language Search [#agiloft-natural-language-search] Search Agiloft records by describing what you want in plain language, such as "active NDAs submitted last month". #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `nlpQuery` | string | Yes | The request in plain language, e.g. "Show me open, high-priority contracts". Structured field filters are not accepted — use Search Records for those. | | `fields` | string | Yes | Comma-separated field names to return, e.g. "id, contract\_title1, company\_name" | | `page` | string | No | Page number, starting from 0 | | `limit` | string | No | Records per page | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------- | | `records` | json | Matching records with the requested field values | | `totalCount` | number | Number of records in this response | | `truncated` | boolean | True when more records were returned upstream than this call reports | ### Agiloft Read Record [#agiloft-read-record] Read a record by ID from an Agiloft table. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `recordId` | string | Yes | ID of the record to read | | `fields` | string | No | Comma-separated list of field names to include in the response | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `id` | string | ID of the record | | `fields` | json | Field values of the record | ### Agiloft Remove Attachment [#agiloft-remove-attachment] Remove an attached file from a field in an Agiloft record. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts") | | `recordId` | string | Yes | ID of the record containing the attachment | | `fieldName` | string | Yes | Name of the attachment field | | `position` | string | Yes | Position index of the file to remove (starting from 0) | #### Output [#output-10] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------- | | `recordId` | string | ID of the record | | `fieldName` | string | Name of the attachment field | | `remainingAttachments` | number | Number of attachments remaining in the field after removal | ### Agiloft Retrieve Attachment [#agiloft-retrieve-attachment] Download an attached file from an Agiloft record field. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts") | | `recordId` | string | Yes | ID of the record containing the attachment | | `fieldName` | string | Yes | Name of the attachment field | | `position` | string | Yes | Position index of the file in the field (starting from 0) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ---- | -------------------------- | | `file` | file | Downloaded attachment file | ### Agiloft Run Action Button [#agiloft-run-action-button] Run an action button on an Agiloft record, such as an approval or send-for-signature step. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "case") | | `recordId` | string | Yes | ID of the record to run the action button on | | `actionButtonField` | string | Yes | Logical name of the field holding the action button (e.g., "ab\_field") | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------- | | `recordId` | string | ID of the record the action button was run on | | `callbackId` | string | Callback identifier for the asynchronous run, which Agiloft returns as EWCALLBACK\_ID | ### Agiloft Saved Search [#agiloft-saved-search] List the saved searches defined for an Agiloft table. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Logical table name to list saved searches for (e.g., "contract") | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------- | | `searches` | array | Saved searches defined on the table | | ↳ `name` | string | Internal saved search name | | ↳ `label` | string | Display label, as used by Search Records | | ↳ `id` | number | Saved search identifier in the Agiloft database | | ↳ `description` | string | Saved search description | | `totalCount` | number | Number of saved searches returned | ### Agiloft Search Records [#agiloft-search-records] Search for records in an Agiloft table using a query. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name to search in (e.g., "contracts", "contacts.employees") | | `query` | string | No | Ad hoc EWSearch query. Combine conditions with && (and) or \|\| (or) and quote every value — e.g. "summary\~='test'&\&priority='High'". Required unless a saved search is given. | | `search` | string | No | Label of a saved search defined on the table (e.g., "C: Status is Closed"). Can be combined with a query to narrow it further. | | `fields` | string | No | Comma-separated list of field names to include in the results | | `page` | string | No | Page number for paginated results (starting from 0) | | `limit` | string | No | Maximum number of records to return per page. Agiloft treats 0 as "all records", so leave it unset or use a positive value to keep result sizes bounded. | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------------------------------------------------- | | `truncated` | boolean | True when more records were returned upstream than this call reports | | `records` | json | Array of matching records with their field values | | `totalCount` | number | Number of records in this response. Not a total match count — compare with `truncated`. | | `page` | number | Page number that was requested (0-based) | | `limit` | number | Page size that was requested; 0 when no limit was sent and Agiloft chose one | ### Agiloft Select Records [#agiloft-select-records] Select record IDs matching a SQL WHERE clause from an Agiloft table. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `where` | string | Yes | SQL WHERE clause using database column names (e.g., "summary like '%new%'" or "assigned\_person='John Doe'"). EWSelect has no page size and returns every matching ID, so append a database limit such as "limit 0,200" to bound the result. | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------------------- | | `truncated` | boolean | True when more IDs matched than this call reports | | `recordIds` | array | Array of record IDs matching the query | | `totalCount` | number | Number of IDs in this response — compare with `truncated` | ### Agiloft Update Record [#agiloft-update-record] Update an existing record in an Agiloft table. #### Input [#input-16] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `recordId` | string | Yes | ID of the record to update | | `data` | string | Yes | Updated field values as a JSON object (e.g., \{"status": "Active", "priority": "High"}) | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `id` | string | ID of the updated record | | `fields` | json | Updated field values of the record | ### Agiloft Upsert Record [#agiloft-upsert-record] Create an Agiloft record, or update it when a record already matches the given fields. #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | Agiloft instance URL (e.g., [https://mycompany.agiloft.com](https://mycompany.agiloft.com)) | | `knowledgeBase` | string | Yes | Knowledge base name | | `login` | string | Yes | Agiloft username | | `password` | string | Yes | Agiloft password | | `table` | string | Yes | Table name (e.g., "contracts", "contacts.employees") | | `match` | string | Yes | Field used to find an existing record (e.g., "ext\_id"). Pick something that identifies a record uniquely — if more than one record matches, Agiloft writes nothing and returns a conflict. | | `async` | boolean | No | Queue the write instead of waiting for it. Returns a callback ID instead of a record ID; pass that to Async Status to poll the result. | | `data` | string | Yes | Field values as a JSON object. On create these populate the new record; on update only the supplied fields change. | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------------- | | `id` | string | ID of the created or updated record | | `created` | boolean | True when a new record was created, false when an existing one was updated | | `callbackId` | string | Returned for a queued upsert; pass it to Async Status to poll the result | --- # Ahrefs (/integrations/ahrefs) {/* MANUAL-CONTENT-START:intro */} Use [Ahrefs](https://ahrefs.com/) in Agent Serve to retrieve domain and backlink metrics, organic keywords, top pages, and ranking data for SEO research and reports. The integration requires an Ahrefs Enterprise subscription with API access. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Ahrefs SEO tools into your workflow. Analyze domain ratings, backlinks, organic keywords, top pages, and more. Requires an Ahrefs Enterprise plan with API access. ## Actions [#actions] ### Ahrefs Domain Rating [#ahrefs-domain-rating] Get the Domain Rating (DR) and Ahrefs Rank for a target domain. Domain Rating shows the strength of a website's backlink profile on a scale from 0 to 100. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `target` | string | Yes | The target domain to analyze (e.g., example.com) | | `date` | string | No | Date for historical data in YYYY-MM-DD format (defaults to today) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------- | | `domainRating` | number | Domain Rating score (0-100) | | `ahrefsRank` | number | Ahrefs Rank - global ranking based on backlink profile strength | ### Ahrefs Metrics [#ahrefs-metrics] Get a one-call organic and paid search overview for a target domain or URL: organic traffic, organic keywords, paid traffic, paid keywords, and estimated traffic cost. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `country` | string | No | Country code for traffic data. Example: "us", "gb", "de" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-1] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------- | | `metrics` | object | Organic and paid search overview | | ↳ `organicTraffic` | number | Estimated monthly organic traffic | | ↳ `organicKeywords` | number | Number of organic keywords ranked | | ↳ `organicKeywordsTop3` | number | Number of organic keywords ranking in positions 1-3 | | ↳ `organicCost` | number | Estimated monthly cost to replicate organic traffic via ads (USD) | | ↳ `paidTraffic` | number | Estimated monthly paid search traffic | | ↳ `paidKeywords` | number | Number of paid keywords targeted | | ↳ `paidPages` | number | Number of pages receiving paid traffic | | ↳ `paidCost` | number | Estimated monthly paid search spend (USD) | ### Ahrefs Backlinks [#ahrefs-backlinks] Get a list of backlinks pointing to a target domain or URL. Returns details about each backlink including source URL, anchor text, and domain rating. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `history` | string | No | Historical scope: "live" (currently live backlinks), "all\_time" (default, includes lost backlinks), or "since:YYYY-MM-DD" (backlinks found since a date). | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------- | | `backlinks` | array | List of backlinks pointing to the target | | ↳ `urlFrom` | string | The URL of the page containing the backlink | | ↳ `urlTo` | string | The URL being linked to | | ↳ `anchor` | string | The anchor text of the link | | ↳ `domainRatingSource` | number | Domain Rating of the linking domain | | ↳ `isDofollow` | boolean | Whether the link is dofollow | | ↳ `firstSeen` | string | When the backlink was first discovered | | ↳ `lastVisited` | string | When the backlink was last checked | ### Ahrefs Backlinks Stats [#ahrefs-backlinks-stats] Get backlink and referring domain totals for a target domain or URL, both currently live and across all time. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-3] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------------------------------ | | `stats` | object | Backlink and referring domain totals | | ↳ `liveBacklinks` | number | Number of currently live backlinks | | ↳ `liveReferringDomains` | number | Number of currently live referring domains | | ↳ `allTimeBacklinks` | number | Total backlinks ever discovered, including lost ones | | ↳ `allTimeReferringDomains` | number | Total referring domains ever discovered, including lost ones | ### Ahrefs Referring Domains [#ahrefs-referring-domains] Get a list of domains that link to a target domain or URL. Returns unique referring domains with their domain rating, backlink counts, and discovery dates. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `history` | string | No | Historical scope: "live" (currently live), "all\_time" (default, includes lost domains), or "since:YYYY-MM-DD" (domains found since a date). | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------- | | `referringDomains` | array | List of domains linking to the target | | ↳ `domain` | string | The referring domain | | ↳ `domainRating` | number | Domain Rating of the referring domain | | ↳ `backlinks` | number | Total number of backlinks from this domain to the target | | ↳ `dofollowBacklinks` | number | Number of dofollow backlinks from this domain | | ↳ `firstSeen` | string | When the domain was first seen linking | | ↳ `lastVisited` | string | When the domain was last seen linking (null if never re-crawled) | ### Ahrefs Broken Backlinks [#ahrefs-broken-backlinks] Get a list of broken backlinks pointing to a target domain or URL. Useful for identifying link reclamation opportunities. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-5] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------- | | `brokenBacklinks` | array | List of broken backlinks | | ↳ `urlFrom` | string | The URL of the page containing the broken link | | ↳ `urlTo` | string | The broken URL being linked to | | ↳ `httpCode` | number | HTTP status code of the broken target URL (e.g., 404, 410) | | ↳ `anchor` | string | The anchor text of the link | | ↳ `domainRatingSource` | number | Domain Rating of the linking domain | ### Ahrefs Organic Keywords [#ahrefs-organic-keywords] Get organic keywords that a target domain or URL ranks for in Google search results. Returns keyword details including search volume, ranking position, and estimated traffic. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `country` | string | No | Country code for search results. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------- | | `keywords` | array | List of organic keywords the target ranks for | | ↳ `keyword` | string | The keyword | | ↳ `volume` | number | Monthly search volume | | ↳ `position` | number | Best ranking position for this keyword | | ↳ `url` | string | The URL that ranks at the best position for this keyword | | ↳ `traffic` | number | Estimated monthly organic traffic | | ↳ `keywordDifficulty` | number | Keyword difficulty score (0-100) | ### Ahrefs Organic Competitors [#ahrefs-organic-competitors] Get domains that compete with a target domain or URL for the same organic keywords, ranked by keyword overlap. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `country` | string | No | Country code for search results. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-7] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------ | | `competitors` | array | List of organic search competitors ranked by keyword overlap | | ↳ `domain` | string | The competitor domain | | ↳ `domainRating` | number | Domain Rating of the competitor | | ↳ `commonKeywords` | number | Number of keywords the competitor and target both rank for | | ↳ `targetKeywords` | number | Number of keywords the target ranks for | | ↳ `competitorKeywords` | number | Number of keywords the competitor ranks for | | ↳ `traffic` | number | Estimated monthly organic traffic for the competitor | ### Ahrefs Top Pages [#ahrefs-top-pages] Get the top pages of a target domain sorted by organic traffic. Returns page URLs with their traffic, keyword counts, and estimated traffic value. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain to analyze. Example: "example.com" | | `country` | string | No | Country code for traffic data. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match). Example: "domain" | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------- | | `pages` | array | List of top pages by organic traffic | | ↳ `url` | string | The page URL | | ↳ `traffic` | number | Estimated monthly organic traffic | | ↳ `keywords` | number | Number of keywords the page ranks for | | ↳ `topKeyword` | string | The top keyword driving traffic to this page | | ↳ `value` | number | Estimated traffic value in USD | ### Ahrefs Keyword Overview [#ahrefs-keyword-overview] Get detailed metrics for a keyword including search volume, keyword difficulty, CPC, clicks, and traffic potential. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `keyword` | string | Yes | The keyword to analyze | | `country` | string | No | Country code for keyword data. Example: "us", "gb", "de" (default: "us") | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------------------- | | `overview` | object | Keyword metrics overview | | ↳ `keyword` | string | The analyzed keyword | | ↳ `searchVolume` | number | Monthly search volume | | ↳ `keywordDifficulty` | number | Keyword difficulty score (0-100) | | ↳ `cpc` | number | Cost per click in USD | | ↳ `clicks` | number | Estimated clicks per month | | ↳ `clicksPercentage` | number | Percentage of searches that result in an organic click | | ↳ `parentTopic` | string | The parent topic for this keyword | | ↳ `trafficPotential` | number | Estimated traffic potential if ranking #1 | | ↳ `intents` | object | Search intent flags (informational, navigational, commercial, transactional, branded, local) | | ↳ `informational` | boolean | Query seeks information | | ↳ `navigational` | boolean | Query seeks a specific site or page | | ↳ `commercial` | boolean | Query researches a purchase decision | | ↳ `transactional` | boolean | Query intends to complete a purchase | | ↳ `branded` | boolean | Query references a specific brand | | ↳ `local` | boolean | Query seeks local results | ### Ahrefs Paid Pages [#ahrefs-paid-pages] Get a target domain's pages that receive paid search traffic, sorted by estimated paid traffic. Returns page URLs with their paid traffic, keyword counts, and estimated spend. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `country` | string | No | Country code for traffic data. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `date` | string | No | Date to report metrics on, in YYYY-MM-DD format (defaults to today) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------- | | `paidPages` | array | List of pages receiving paid search traffic | | ↳ `url` | string | The page URL | | ↳ `traffic` | number | Estimated monthly paid search traffic | | ↳ `keywords` | number | Number of paid keywords the page ranks for | | ↳ `topKeyword` | string | The top keyword driving paid traffic to this page | | ↳ `value` | number | Estimated monthly paid traffic cost in USD | | ↳ `adsCount` | number | Number of unique ads shown for this page | ### Ahrefs Anchors [#ahrefs-anchors] Get the anchor text distribution for a target domain or URL's backlinks, showing how many links and referring domains use each anchor text. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" or "[https://example.com/page](https://example.com/page)" | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `history` | string | No | Historical scope: "live" (currently live), "all\_time" (default, includes lost backlinks), or "since:YYYY-MM-DD" (backlinks found since a date) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------- | | `anchors` | array | Anchor text distribution for the backlink profile | | ↳ `anchor` | string | The anchor text | | ↳ `backlinks` | number | Total backlinks using this anchor text | | ↳ `dofollowBacklinks` | number | Number of dofollow backlinks using this anchor text | | ↳ `referringDomains` | number | Number of unique referring domains using this anchor text | | ↳ `firstSeen` | string | When a link with this anchor was first found | | ↳ `lastSeen` | string | When a backlink with this anchor was last seen (null if still live) | ### Ahrefs Related Terms [#ahrefs-related-terms] Get keyword ideas related to a seed keyword: terms the same top-ranking pages also rank for ("also rank for") or also discuss ("also talk about"), with volume, difficulty, and CPC. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `keyword` | string | Yes | The seed keyword to find related terms for | | `country` | string | No | Country code for keyword data. Example: "us", "gb", "de" (default: "us") | | `terms` | string | No | Type of related keywords to return: "also\_rank\_for", "also\_talk\_about", or "all" (default: "all") | | `viewFor` | string | No | Whether to derive related terms from the top 10 or top 100 ranking pages (default: "top\_10") | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------------------------- | | `relatedTerms` | array | Related keyword ideas for the seed keyword | | ↳ `keyword` | string | The related keyword | | ↳ `volume` | number | Average monthly search volume | | ↳ `keywordDifficulty` | number | Keyword difficulty score (0-100) | | ↳ `cpc` | number | Cost per click in USD | | ↳ `parentTopic` | string | The parent topic for this keyword | | ↳ `trafficPotential` | number | Estimated traffic potential if ranking #1 | | ↳ `intents` | object | Search intent flags (informational, navigational, commercial, transactional, branded, local) | | ↳ `serpFeatures` | array | SERP features present in the results | ### Ahrefs Domain Rating History [#ahrefs-domain-rating-history] Get the historical Domain Rating (DR) trend for a target domain or URL over a date range, grouped daily, weekly, or monthly. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `dateFrom` | string | Yes | Start date of the historical period, in YYYY-MM-DD format | | `dateTo` | string | No | End date of the historical period, in YYYY-MM-DD format (defaults to today) | | `historyGrouping` | string | No | Time interval for grouping data points: "daily", "weekly", or "monthly" (default: "monthly") | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------- | | `domainRatings` | array | Historical Domain Rating data points | | ↳ `date` | string | The date of the measurement | | ↳ `domainRating` | number | Domain Rating score (0-100) on this date | ### Ahrefs Metrics History [#ahrefs-metrics-history] Get the historical organic and paid traffic trend for a target domain or URL over a date range: organic traffic/cost and paid traffic/cost at each point in time. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `dateFrom` | string | Yes | Start date of the historical period, in YYYY-MM-DD format | | `dateTo` | string | No | End date of the historical period, in YYYY-MM-DD format (defaults to today) | | `volumeMode` | string | No | Search volume calculation: "monthly" or "average" (default: "monthly") | | `historyGrouping` | string | No | Time interval for grouping data points: "daily", "weekly", or "monthly" (default: "monthly") | | `country` | string | No | Country code for traffic data. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------- | | `metricsHistory` | array | Historical organic and paid traffic data points | | ↳ `date` | string | Date of the metric entry | | ↳ `organicTraffic` | number | Estimated monthly organic visits | | ↳ `organicCost` | number | Estimated monthly cost to replicate organic traffic via ads (USD) | | ↳ `paidTraffic` | number | Estimated monthly paid search visits | | ↳ `paidCost` | number | Estimated monthly paid search spend (USD) | ### Ahrefs Referring Domains History [#ahrefs-referring-domains-history] Get the historical referring domains trend for a target domain or URL over a date range, grouped daily, weekly, or monthly. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `dateFrom` | string | Yes | Start date of the historical period, in YYYY-MM-DD format | | `dateTo` | string | No | End date of the historical period, in YYYY-MM-DD format (defaults to today) | | `historyGrouping` | string | No | Time interval for grouping data points: "daily", "weekly", or "monthly" (default: "monthly") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-15] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------------------------------------------- | | `referringDomainsHistory` | array | Historical referring domains count data points | | ↳ `date` | string | The date of the data point | | ↳ `referringDomains` | number | Total number of unique domains linking to the target on this date | ### Ahrefs Keywords History [#ahrefs-keywords-history] Get the historical organic keyword ranking distribution for a target domain or URL over a date range: how many keywords rank in each position bucket at each point in time. #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `target` | string | Yes | The target domain or URL to analyze. Example: "example.com" | | `dateFrom` | string | Yes | Start date of the historical period, in YYYY-MM-DD format | | `dateTo` | string | No | End date of the historical period, in YYYY-MM-DD format (defaults to today) | | `historyGrouping` | string | No | Time interval for grouping data points: "daily", "weekly", or "monthly" (default: "monthly") | | `country` | string | No | Country code for search results. Example: "us", "gb", "de" (default: "us") | | `mode` | string | No | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-16] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------- | | `keywordsHistory` | array | Historical organic keyword ranking distribution | | ↳ `date` | string | Date of the record | | ↳ `top3` | number | Keywords ranking in top 3 organic results | | ↳ `top4To10` | number | Keywords ranking in positions 4-10 | | ↳ `top11To20` | number | Keywords ranking in positions 11-20 | | ↳ `top21To50` | number | Keywords ranking in positions 21-50 | | ↳ `top51Plus` | number | Keywords ranking in position 51 and beyond | ### Ahrefs Batch Analysis [#ahrefs-batch-analysis] Get bulk SEO metrics (Domain Rating, backlinks, referring domains, organic traffic, and more) for multiple domains or URLs in a single request. Useful for comparing many competitors at once. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `targets` | string | Yes | Comma-separated list of domains or URLs to analyze. Example: "example.com,competitor.com" | | `mode` | string | No | Analysis mode applied to every target: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains, default), exact (exact URL match) | | `protocol` | string | No | Protocol applied to every target: "both" (default), "http", or "https" | | `country` | string | No | Country code for traffic data. Example: "us", "gb", "de" (default: "us") | | `volumeMode` | string | No | Search volume calculation: "monthly" or "average" (default: "monthly") | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------- | | `results` | array | Bulk metrics for each analyzed target, in submission order | | ↳ `url` | string | The analyzed target URL or domain | | ↳ `index` | number | Index of the target in the submitted list | | ↳ `domainRating` | number | Domain Rating score (0-100) | | ↳ `ahrefsRank` | number | Ahrefs Rank (global ranking) | | ↳ `backlinks` | number | Total backlinks to the target | | ↳ `referringDomains` | number | Unique domains linking to the target | | ↳ `organicTraffic` | number | Estimated monthly organic traffic | | ↳ `organicKeywords` | number | Number of organic keywords ranked (top 100) | | ↳ `paidTraffic` | number | Estimated monthly paid search traffic | | ↳ `error` | string | Error message if this target could not be analyzed | ### Ahrefs Site Audit Page Explorer [#ahrefs-site-audit-page-explorer] Get crawled pages from an Ahrefs Site Audit project with health and SEO metrics: HTTP status, title, link counts, backlinks, indexability, and traffic. Optionally filter to pages affected by a specific issue. #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------- | | `projectId` | number | Yes | The Site Audit project ID (found in the project URL in Ahrefs) | | `date` | string | No | Crawl date in YYYY-MM-DDThh:mm:ss format (defaults to the most recent crawl) | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `offset` | number | No | Number of results to skip, for pagination | | `issueId` | string | No | Only return pages affected by this issue ID | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------------------- | | `auditPages` | array | List of crawled pages with health and SEO metrics | | ↳ `url` | string | The crawled page URL | | ↳ `httpCode` | number | HTTP status code returned by the URL | | ↳ `title` | array | Page title tag(s) | | ↳ `internalLinks` | number | Number of internal outgoing links | | ↳ `externalLinks` | number | Number of external outgoing links | | ↳ `backlinks` | number | Number of incoming external links to the page | | ↳ `compliant` | boolean | Whether the page is indexable (200 status, no canonical/noindex) | | ↳ `traffic` | number | Estimated monthly organic traffic to the page | ### Ahrefs Rank Tracker Overview [#ahrefs-rank-tracker-overview] Get ranking overview metrics for the keywords tracked in an Ahrefs Rank Tracker project: position, search volume, keyword difficulty, and estimated traffic. This endpoint is free and does not consume API units. #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------ | | `projectId` | number | Yes | The Rank Tracker project ID (found in the project URL in Ahrefs) | | `date` | string | Yes | Date to report rankings for, in YYYY-MM-DD format | | `device` | string | Yes | Rankings device type: "desktop" or "mobile" | | `dateCompared` | string | No | Comparison date in YYYY-MM-DD format, to compute position/traffic deltas | | `volumeMode` | string | No | Search volume calculation: "monthly" or "average" (default: "monthly") | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-19] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------- | | `overviews` | array | Ranking overview for each tracked keyword | | ↳ `keyword` | string | The tracked keyword | | ↳ `position` | number | Top organic search position | | ↳ `volume` | number | Average monthly search volume | | ↳ `keywordDifficulty` | number | Keyword difficulty score (0-100) | | ↳ `url` | string | Top-ranking URL | | ↳ `traffic` | number | Estimated monthly organic visits | | ↳ `serpFeatures` | array | SERP features present in the results | | ↳ `bestPositionKind` | string | Type of the top position (organic, paid, or SERP feature) | ### Ahrefs Rank Tracker SERP Overview [#ahrefs-rank-tracker-serp-overview] Get the full SERP (search engine results page) for a keyword tracked in an Ahrefs Rank Tracker project, including every ranking URL with its position, title, and authority metrics. This endpoint is free and does not consume API units. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `projectId` | number | Yes | The Rank Tracker project ID (found in the project URL in Ahrefs) | | `keyword` | string | Yes | The tracked keyword to retrieve SERP data for | | `country` | string | Yes | Country code for the tracked keyword. Example: "us", "gb", "de" | | `device` | string | Yes | Rankings device type: "desktop" or "mobile" | | `topPositions` | number | No | Number of top organic positions to return (defaults to all available) | | `date` | string | No | Timestamp to return the last available SERP Overview at, in YYYY-MM-DDThh:mm:ss format | | `locationId` | number | No | Location ID of the tracked keyword, if tracked at a specific location | | `languageCode` | string | No | Language code of the tracked keyword | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-20] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------- | | `positions` | array | Every ranking result on the SERP for the tracked keyword | | ↳ `position` | number | Position of the result in the SERP | | ↳ `url` | string | URL of the ranking page | | ↳ `title` | string | Page title | | ↳ `type` | array | The kind of the position: organic, paid, or a SERP feature | | ↳ `domainRating` | number | Domain Rating of the ranking domain | | ↳ `urlRating` | number | URL Rating of the ranking page | | ↳ `backlinks` | number | Total backlinks to the ranking domain | | ↳ `refdomains` | number | Unique referring domains | | ↳ `traffic` | number | Estimated monthly organic search traffic | | ↳ `value` | number | Estimated monthly traffic value (USD) | | ↳ `topKeyword` | string | Highest-traffic keyword ranking for this page | | ↳ `topKeywordVolume` | number | Monthly search volume for the top keyword | | ↳ `updateDate` | string | Date the SERP was last checked | ### Ahrefs Rank Tracker Competitors Overview [#ahrefs-rank-tracker-competitors-overview] Get competitor rankings for the keywords tracked in an Ahrefs Rank Tracker project: each tracked keyword's volume and difficulty alongside every competitor's position, traffic, and traffic value. This endpoint is free and does not consume API units. #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------ | | `projectId` | number | Yes | The Rank Tracker project ID (found in the project URL in Ahrefs) | | `date` | string | Yes | Date to report rankings for, in YYYY-MM-DD format | | `device` | string | Yes | Rankings device type: "desktop" or "mobile" | | `dateCompared` | string | No | Comparison date in YYYY-MM-DD format, to compute position/traffic deltas | | `volumeMode` | string | No | Search volume calculation: "monthly" or "average" (default: "monthly") | | `limit` | number | No | Maximum number of results to return. Example: 50 (default: 1000) | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-21] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------- | | `competitorKeywords` | array | Tracked keywords with competitor ranking data | | ↳ `keyword` | string | The tracked keyword | | ↳ `volume` | number | Average monthly search volume | | ↳ `keywordDifficulty` | number | Keyword difficulty score (0-100) | | ↳ `serpFeatures` | array | SERP features present in the results | | ↳ `competitorsList` | array | Ranking data for each tracked competitor on this keyword | | ↳ `url` | string | The competitor's ranking URL | | ↳ `position` | number | Current ranking position | | ↳ `bestPositionKind` | string | Type of the best position achieved | | ↳ `traffic` | number | Estimated traffic to the competitor | | ↳ `value` | number | Estimated traffic value (USD) | ### Ahrefs Rank Tracker Competitors Stats [#ahrefs-rank-tracker-competitors-stats] Get aggregate competitor stats for an Ahrefs Rank Tracker project: each competitor's traffic, traffic value, average position, and share of voice across all tracked keywords. This endpoint is free and does not consume API units. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------- | | `projectId` | number | Yes | The Rank Tracker project ID (found in the project URL in Ahrefs) | | `date` | string | Yes | Date to report metrics for, in YYYY-MM-DD format | | `device` | string | Yes | Rankings device type: "desktop" or "mobile" | | `volumeMode` | string | No | Search volume calculation: "monthly" or "average" (default: "monthly") | | `apiKey` | string | Yes | Ahrefs API Key | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------- | | `competitorsStats` | array | Aggregate stats for each tracked competitor | | ↳ `competitor` | string | The competitor's URL | | ↳ `traffic` | number | Estimated monthly organic visits | | ↳ `trafficValue` | number | Estimated monthly organic traffic value (USD) | | ↳ `averagePosition` | number | Average top organic position across tracked keywords | | ↳ `pos1To3` | number | Keywords ranking in top 3 positions | | ↳ `pos4To10` | number | Keywords ranking in positions 4-10 | | ↳ `shareOfVoice` | number | Organic traffic share percentage | | ↳ `shareOfTrafficValue` | number | Organic traffic value share percentage | --- # Aircall (/integrations/aircall) ## Usage Instructions [#usage-instructions] Integrate the Aircall cloud phone system into the workflow. Start a call from a rep's Aircall app, transfer live calls, add notes and tags, search call history, manage shared contacts, list users and numbers, and read AI transcripts, summaries, and sentiment. Can also run workflows on Aircall call, contact, user, and AI events. Requires an Aircall API ID and API token. ## Actions [#actions] ### Aircall Start Outbound Call [#aircall-start-outbound-call] Start a call from a user's Aircall Workspace (desktop app) to a phone number, using one of the user's Aircall numbers. The user must be available, not on a call, and assigned to the number. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `userId` | string | Yes | ID of the Aircall user whose Workspace places the call | | `numberId` | string | Yes | ID of the Aircall number to call from. The user must be assigned to it. | | `to` | string | Yes | Phone number to dial, in E.164 format (e.g. +18001231234) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------------------------------------- | | `started` | boolean | Whether Aircall accepted the call; it now rings in the user's Workspace | | `userId` | string | User whose Workspace places the call | | `numberId` | string | Aircall number the call is placed from | | `to` | string | Number being dialed | ### Aircall Transfer Call [#aircall-transfer-call] Cold-transfer an ongoing call to one user, one team, or one external number. External transfers only work for inbound calls that have not been answered yet. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | | `userId` | string | No | ID of the user to transfer to. Set only one of userId, teamId, or number. | | `teamId` | string | No | ID of the team to transfer to. Set only one of userId, teamId, or number. | | `number` | string | No | External number to transfer to, in E.164 format. Set only one of userId, teamId, or number. | | `dispatchingStrategy` | string | No | For team transfers only: "simultaneous" (default), "random", or "longest\_idle" | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------------------------------------------------------------------------------------- | | `transferred` | boolean | Whether Aircall accepted the transfer. A failed transfer later sends a call.unsuccessful\_transfer webhook event. | | `callId` | string | The transferred call | ### Aircall Get Call [#aircall-get-call] Get one call with its direction, status, duration, external number, user, recording, voicemail, comments, and tags. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | | `fetchContact` | boolean | No | Include the contact attached to the call | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ----------- | | `call` | object | The call | ### Aircall List Calls [#aircall-list-calls] List calls in the Aircall account, optionally within a creation-date window. Only the last six months are available. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `createdAfter` | string | No | Only return items created at or after this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `createdBefore` | string | No | Only return items created at or before this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `order` | string | No | Sort by creation date: "asc" (default) or "desc" for newest first | | `page` | number | No | Page number, starting at 1 | | `perPage` | number | No | Results per page, 1 to 50 (default 20) | | `fetchContact` | boolean | No | Include the contact attached to each call | #### Output [#output-3] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `calls` | array | Calls in this page | ### Aircall Search Calls [#aircall-search-calls] Search calls by external phone number, user, direction, or creation date. Only the last six months are available. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `phoneNumber` | string | No | Calling or receiving phone number, ideally in E.164 format | | `userId` | string | No | ID of the Aircall user who made or received the calls | | `direction` | string | No | "inbound" or "outbound" | | `createdAfter` | string | No | Only return items created at or after this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `createdBefore` | string | No | Only return items created at or before this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `order` | string | No | Sort by creation date: "asc" (default) or "desc" for newest first | | `page` | number | No | Page number, starting at 1 | | `perPage` | number | No | Results per page, 1 to 50 (default 20) | | `fetchContact` | boolean | No | Include the contact attached to each call | #### Output [#output-4] | Parameter | Type | Description | | --------- | ----- | --------------------------- | | `calls` | array | Matching calls in this page | ### Aircall Add Comment [#aircall-add-comment] Add a note to a call. A call holds at most five notes, and notes cannot be edited or deleted afterwards. Emojis are removed. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | | `content` | string | Yes | Text of the note | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | -------------------------- | | `commented` | boolean | Whether the note was added | | `callId` | string | The commented call | ### Aircall Add Tags [#aircall-add-tags] Tag a call with one or more existing tags by ID. Tags are created by admins in the Aircall Dashboard. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | | `tagIds` | string | Yes | Tag IDs to add, comma-separated (e.g. "545, 546") | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | --------------------------- | | `tagged` | boolean | Whether the tags were added | | `callId` | string | The tagged call | | `tagIds` | array | Tag IDs added | ### Aircall Archive Call [#aircall-archive-call] Mark a call as archived. In Aircall Workspace this only sets the archived flag on the call record; it does not close the conversation. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ----------------- | | `call` | object | The archived call | ### Aircall Create Contact [#aircall-create-contact] Create a shared contact in Aircall so reps see the caller name and details. Sending the same payload twice creates a duplicate, so search first. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `firstName` | string | No | First name (max 255 characters) | | `lastName` | string | No | Last name (max 255 characters) | | `companyName` | string | No | Company name (max 255 characters) | | `information` | string | No | Extra information, such as an external CRM ID | | `phoneNumbers` | string | Yes | Phone numbers, comma-separated (labeled "Work"), or a JSON array of \{"label", "value"} objects. Up to 20. | | `emails` | string | No | Email addresses, comma-separated (labeled "Work"), or a JSON array of \{"label", "value"} objects. Up to 20. | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `contact` | object | The created contact | ### Aircall Update Contact [#aircall-update-contact] Update a shared contact's name, company, or information. Phone numbers and emails are not changed. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `contactId` | string | Yes | Aircall Contact ID | | `firstName` | string | No | New first name | | `lastName` | string | No | New last name | | `companyName` | string | No | New company name | | `information` | string | No | New extra information | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `contact` | object | The updated contact | ### Aircall Get Contact [#aircall-get-contact] Get a shared contact with its phone numbers and emails. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `contactId` | string | Yes | Aircall Contact ID | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ----------- | | `contact` | object | The contact | ### Aircall Search Contacts [#aircall-search-contacts] Find shared contacts by phone number or email. Contacts synced from third-party integrations are not visible to the API. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `phoneNumber` | string | No | Phone number of the contact. Set this, email, or both. | | `email` | string | No | Email address of the contact. Set this, phone number, or both. | | `orderBy` | string | No | Sort field: "created\_at" (default) or "updated\_at" | | `createdAfter` | string | No | Only return items created at or after this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `createdBefore` | string | No | Only return items created at or before this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `order` | string | No | Sort by creation date: "asc" (default) or "desc" for newest first | | `page` | number | No | Page number, starting at 1 | | `perPage` | number | No | Results per page, 1 to 50 (default 20) | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ----- | ----------------- | | `contacts` | array | Matching contacts | ### Aircall List Users [#aircall-list-users] List the users (agents and admins) of the Aircall account with their availability. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `createdAfter` | string | No | Only return items created at or after this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `createdBefore` | string | No | Only return items created at or before this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `order` | string | No | Sort by creation date: "asc" (default) or "desc" for newest first | | `page` | number | No | Page number, starting at 1 | | `perPage` | number | No | Results per page, 1 to 50 (default 20) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `users` | array | Users in this page | ### Aircall Get User [#aircall-get-user] Get one Aircall user by ID or email, including availability and default number ID. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `userId` | string | Yes | User ID or the email address of the user | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ----------- | | `user` | object | The user | ### Aircall List Numbers [#aircall-list-numbers] List the phone numbers of the Aircall account. Use a number ID to start an outbound call. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `createdAfter` | string | No | Only return items created at or after this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `createdBefore` | string | No | Only return items created at or before this time, as a UNIX timestamp in seconds or an ISO 8601 date | | `order` | string | No | Sort by creation date: "asc" (default) or "desc" for newest first | | `page` | number | No | Page number, starting at 1 | | `perPage` | number | No | Results per page, 1 to 50 (default 20) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `numbers` | array | Numbers in this page | ### Aircall Get Call Transcription [#aircall-get-call-transcription] Get the transcript of an ended call or voicemail, split into timed utterances by speaker. Requires the Aircall AI Assist package. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | | `mode` | string | No | Transcription mode: "async" or "realtime" (realtime needs AI Assist Pro) | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------- | | `transcription` | object | The transcription | | ↳ `id` | number | Transcription ID | | ↳ `callId` | number | Call ID | | ↳ `callCreatedAt` | string | When the call was created (ISO 8601) | | ↳ `type` | string | "call" or "voicemail" | | ↳ `language` | string | Detected language | | ↳ `utterances` | array | Utterances in order | | ↳ `startTime` | number | Start offset in seconds | | ↳ `endTime` | number | End offset in seconds | | ↳ `text` | string | What was said | | ↳ `participantType` | string | "internal" (Aircall user) or "external" | | ↳ `phoneNumber` | string | Number of an external participant | | ↳ `userId` | number | User ID of an internal participant | | `transcriptText` | string | The utterances joined as "speaker: text" lines, where the speaker is "agent \" or the external phone number | ### Aircall Get Call Summary [#aircall-get-call-summary] Get the AI-generated summary of an ended call. Requires the Aircall AI Assist package. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------- | | `summary` | object | The call summary | | ↳ `id` | number | Summary ID | | ↳ `callId` | number | Call ID | | ↳ `createdAt` | string | When the summary was created (ISO 8601) | | ↳ `content` | string | Summary text | ### Aircall Get Call Sentiment [#aircall-get-call-sentiment] Get the AI sentiment of each external participant of an ended call. Requires the Aircall AI Assist package. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiId` | string | Yes | Aircall API ID (the Basic auth username), from Company Settings > API Keys | | `apiToken` | string | Yes | Aircall API token (the Basic auth password), from Company Settings > API Keys | | `callId` | string | Yes | Aircall Call ID | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `sentiment` | object | The call sentiment | | ↳ `id` | number | Sentiment ID | | ↳ `callId` | number | Call ID | | ↳ `participants` | array | Sentiment per participant | | ↳ `phoneNumber` | string | Participant phone number | | ↳ `value` | string | Sentiment, e.g. POSITIVE | | ↳ `type` | string | Participant type, e.g. external | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Aircall Webhook [#aircall-webhook] Trigger a workflow on Aircall call, voicemail, contact, user, number, message, and AI events. --- # Airtable Personal Access Tokens (/integrations/airtable-service-account) Use an Airtable personal access token (PAT) to connect with explicit scopes and base access. The token can only perform actions allowed by both its scopes and its owner's Airtable permissions. On Airtable Enterprise Scale plans, admins can create the same tokens from a dedicated **service account** in the Admin Panel. Those tokens are wire-identical to personal access tokens and are the better choice for organization-level use: they don't stop working when an employee leaves. ## Prerequisites [#prerequisites] Any Airtable user can create a personal access token for the bases they have access to. Keep in mind the token is capped by its creator's own permissions — a PAT created by a read-only collaborator cannot write, no matter which scopes it has. Create the token from an account with the access level your workflows need. For service-account tokens, you need an Enterprise Scale plan and an admin with access to the Admin Panel. ## Creating the Token [#creating-the-token] Open [airtable.com/create/tokens](https://airtable.com/create/tokens) and click **Create token** {/* TODO(screenshot): Airtable token builder page with the "Create token" button */} Give the token a name (e.g. `agentserve-airtable-bot`) Add the scopes your workflows need. The full set Agent Serve's Airtable tools and triggers use is: ``` data.records:read data.records:write schema.bases:read user.email:read webhook:manage ``` Reading records needs `data.records:read`; creating, updating, upserting, and deleting records need `data.records:write`; listing bases and tables and reading base schemas need `schema.bases:read`; `user.email:read` lets Agent Serve show the token owner's email as the credential name; and `webhook:manage` is only needed if you use Airtable triggers in Agent Serve. {/* TODO(screenshot): token builder scopes section with the five scopes added */} Under **Access**, add the bases or entire workspaces the token should reach. The token can only see what you list here — a token with all five scopes but no base access can't read anything. {/* TODO(screenshot): token builder access section with a workspace added */} Click **Create token** and copy it when it's shown. Airtable only displays it once — if you close the dialog, you'll have to regenerate it. The token is bearer credentials for every base you granted. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the token at rest. ### Enterprise Scale: Service Account Tokens [#enterprise-scale-service-account-tokens] On Enterprise Scale plans, create the service account in the **Admin Panel**, then create its token from **Personal access tokens**. Choose scopes and base access as above and paste the resulting token into the same field in Agent Serve. The token belongs to the service account; keep that account's access in place when managing team membership. Enterprise organizations can enable "Block API access to organization-owned bases and workspaces". If your organization uses this setting, the service account must be allowlisted or every call fails despite a valid token. ## Adding the Personal Access Token to Agent Serve [#adding-the-personal-access-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Airtable" and open it, then click **Add to Agent Serve** and choose **Add personal access token** {/* TODO(screenshot): Airtable integration page with the service-account connect option */} Paste the **Personal access token**, and optionally set a display name and description {/* TODO(screenshot): Add Airtable personal access token dialog with the personal access token filled in */} Click **Add personal access token**. Agent Serve verifies the token by calling Airtable's `whoami` endpoint — if it fails, you'll see a specific error explaining what went wrong. Validation only proves the token is real — Airtable doesn't expose a PAT's scopes or base access for inspection. A token that validates fine can still fail every tool call if you skipped a scope or forgot to grant base access. If a block returns a 403 (`INVALID_PERMISSIONS`) or an unexpected 404 (`NOT_FOUND`), check the token's scopes and base access first. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add an Airtable block to your workflow. In the credential dropdown, select the saved Airtable personal access token. Select it and configure the block as you normally would. {/* TODO(screenshot): Airtable block in a workflow with the Airtable service account selected as the credential */} Run a read operation against a base you granted to the token. If your workflow writes records or uses triggers, test those operations too; successful connection validation does not check all required scopes or base access. --- # Airtable (/integrations/airtable) {/* MANUAL-CONTENT-START:intro */} Use [Airtable](https://airtable.com/) to list bases and table schemas, read or write records, and start workflows from record changes. For token setup, see [Personal Access Tokens](/integrations/airtable-service-account). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates Airtable into the workflow. Can list bases, list tables (with schema), and create, get, list, update, upsert, or delete records. Can also be used in trigger mode to trigger a workflow when an update is made to an Airtable table. ## Actions [#actions] ### Airtable List Bases [#airtable-list-bases] List all bases the authenticated user has access to #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `offset` | string | No | Pagination offset for retrieving additional bases | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------- | | `bases` | array | Array of Airtable bases with id, name, and permissionLevel | | ↳ `id` | string | Base ID (starts with "app") | | ↳ `name` | string | Base name | | ↳ `permissionLevel` | string | Permission level (none, read, comment, edit, create) | | `metadata` | json | Pagination and count metadata | | ↳ `offset` | string | Offset for next page of results | | ↳ `totalBases` | number | Number of bases returned | ### Airtable List Tables [#airtable-list-tables] List all tables and their schema in an Airtable base #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | | `tables` | array | List of tables in the base with their schema | | ↳ `id` | string | Table ID (starts with "tbl") | | ↳ `name` | string | Table name | | ↳ `description` | string | Table description | | ↳ `primaryFieldId` | string | ID of the primary field | | ↳ `fields` | array | List of fields in the table | | ↳ `id` | string | Field ID (starts with "fld") | | ↳ `name` | string | Field name | | ↳ `type` | string | Field type (singleLineText, multilineText, number, checkbox, singleSelect, multipleSelects, date, dateTime, attachment, linkedRecord, etc.) | | ↳ `description` | string | Field description | | ↳ `options` | json | Field-specific options (choices, etc.) | | `metadata` | json | Base info and count metadata | | ↳ `baseId` | string | The base ID queried | | ↳ `totalTables` | number | Number of tables in the base | ### Airtable List Records [#airtable-list-records] Read records from an Airtable table #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `maxRecords` | number | No | Maximum number of records to return (default: all records) | | `filterFormula` | string | No | Formula to filter records (e.g., "(\{Field Name} = 'Value')") | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `records` | array | Array of retrieved Airtable records | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `metadata` | json | Operation metadata including pagination offset and total records count | | ↳ `offset` | string | Pagination offset for next page | | ↳ `totalRecords` | number | Number of records returned | ### Airtable Get Record [#airtable-get-record] Retrieve a single record from an Airtable table by its ID #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `recordId` | string | Yes | Record ID to retrieve (starts with "rec", e.g., "recXXXXXXXXXXXXXX") | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `record` | json | Retrieved Airtable record | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of records returned (always 1) | ### Airtable Create Records [#airtable-create-records] Write new records to an Airtable table #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `records` | json | Yes | Array of records to create, each with a `fields` object | | `typecast` | boolean | No | When true, Airtable automatically converts string values to the field type | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------ | --------------------------------- | | `records` | array | Array of created Airtable records | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of records created | ### Airtable Update Record [#airtable-update-record] Update an existing record in an Airtable table by ID #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `recordId` | string | Yes | Record ID to update (starts with "rec", e.g., "recXXXXXXXXXXXXXX") | | `fields` | json | Yes | An object containing the field names and their new values | | `typecast` | boolean | No | When true, Airtable automatically converts string values to the field type | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------- | | `record` | json | Updated Airtable record | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of records updated (always 1) | | ↳ `updatedFields` | array | List of field names that were updated | ### Airtable Update Multiple Records [#airtable-update-multiple-records] Update multiple existing records in an Airtable table #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `records` | json | Yes | Array of records to update, each with an `id` and a `fields` object | | `typecast` | boolean | No | When true, Airtable automatically converts string values to the field type | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `records` | array | Array of updated Airtable records | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of records updated | | ↳ `updatedRecordIds` | array | List of updated record IDs | ### Airtable Upsert Records [#airtable-upsert-records] Update existing records or create new ones in an Airtable table, matching on the specified merge fields #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `records` | json | Yes | Array of records to upsert, each with a `fields` object | | `fieldsToMergeOn` | json | Yes | Array of field names used to match existing records (max 3). A record is updated when all merge fields match, otherwise it is created. Example: \["Name"] | | `typecast` | boolean | No | When true, Airtable automatically converts string values to the field type | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------- | | `records` | array | Array of upserted Airtable records | | ↳ `id` | string | Record ID | | ↳ `createdTime` | string | Record creation timestamp | | ↳ `fields` | json | Record field values | | `createdRecords` | array | IDs of records that were created | | `updatedRecords` | array | IDs of records that were updated | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Total number of records returned | | ↳ `createdCount` | number | Number of records created | | ↳ `updatedCount` | number | Number of records updated | ### Airtable Delete Records [#airtable-delete-records] Delete one or more records from an Airtable table by ID #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | | `tableId` | string | Yes | Table ID (starts with "tbl") or table name | | `recordIds` | json | Yes | Array of record IDs to delete (each starts with "rec", e.g., \["recXXXXXXXXXXXXXX"]). Pass a single-element array to delete one record. | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------- | | `records` | array | Array of deleted Airtable records | | ↳ `id` | string | Record ID | | ↳ `deleted` | boolean | Whether the record was deleted | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of records deleted | | ↳ `deletedRecordIds` | array | List of deleted record IDs | ### Airtable Get Base Schema [#airtable-get-base-schema] Get the schema of all tables, fields, and views in an Airtable base #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `baseId` | string | Yes | Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ---- | ----------------------------------------------- | | `tables` | json | Array of table schemas with fields and views | | `metadata` | json | Operation metadata including total tables count | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Airtable Webhook [#airtable-webhook] Trigger workflow from Airtable record changes like create, update, and delete events (requires Airtable credentials) #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | This trigger requires airtable credentials to access your account. | | `baseId` | string | Yes | The ID of the Airtable Base this webhook will monitor. | | `tableId` | string | Yes | The ID of the table within the Base that the webhook will monitor. | | `includeCellValues` | boolean | No | Enable to receive the complete record data in the payload, not just changes. | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------------------- | | `payloads` | array | The payloads of the Airtable changes | | ↳ `timestamp` | string | Timestamp of the change | | ↳ `baseTransactionNumber` | number | Transaction number | | `latestPayload` | object | The most recent payload from Airtable | | ↳ `timestamp` | string | ISO 8601 timestamp of the change | | ↳ `baseTransactionNumber` | number | Transaction number | | ↳ `payloadFormat` | string | Payload format version (e.g., v0) | | ↳ `actionMetadata` | object | Metadata about who made the change | | ↳ `source` | string | Source of the change (e.g., client, publicApi) | | ↳ `sourceMetadata` | object | Source metadata including user info | | ↳ `user` | object | User who made the change | | ↳ `id` | string | User ID | | ↳ `email` | string | User email | | ↳ `name` | string | User name | | ↳ `permissionLevel` | string | User permission level | | ↳ `changedTablesById` | object | Tables that were changed (keyed by table ID) | | ↳ `changedRecordsById` | object | Changed records keyed by record ID | | ↳ `current` | object | Current state of the record | | ↳ `cellValuesByFieldId` | object | Cell values keyed by field ID | | ↳ `createdRecordsById` | object | Created records by ID | | ↳ `destroyedRecordIds` | array | Array of destroyed record IDs | | `airtableChanges` | array | Changes made to the Airtable table | | ↳ `tableId` | string | Table ID | | ↳ `recordId` | string | Record ID | | ↳ `changeType` | string | Type of change (created, changed, destroyed) | | ↳ `cellValuesByFieldId` | object | Cell values by field ID | --- # Airweave (/integrations/airweave) {/* MANUAL-CONTENT-START:intro */} [Airweave](https://airweave.ai/) searches connected data collections. Use the integration to run hybrid, neural, or keyword searches, with optional query expansion, reranking, and generated answers. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Search across your synced data sources using Airweave. Supports semantic search with hybrid, neural, or keyword retrieval strategies. Optionally generate AI-powered answers from search results. ## Actions [#actions] ### Airweave Search [#airweave-search] Search your synced data collections using Airweave. Supports semantic search with hybrid, neural, or keyword retrieval strategies. Optionally generate AI-powered answers from search results. #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Airweave API Key for authentication | | `collectionId` | string | Yes | The readable ID of the collection to search | | `query` | string | Yes | The search query text | | `limit` | number | No | Maximum number of results to return (default: 100) | | `retrievalStrategy` | string | No | Retrieval strategy: hybrid (default), neural, or keyword | | `expandQuery` | boolean | No | Generate query variations to improve recall | | `rerank` | boolean | No | Reorder results for improved relevance using LLM | | `generateAnswer` | boolean | No | Generate a natural-language answer to the query | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------- | | `results` | array | Search results with content, scores, and metadata from your synced data | | ↳ `entity_id` | string | Unique identifier for the search result entity | | ↳ `source_name` | string | Name of the data source (e.g., "GitHub", "Slack") | | ↳ `md_content` | string | Markdown-formatted content of the result | | ↳ `score` | number | Relevance score from the search | | ↳ `metadata` | object | Additional metadata associated with the result | | ↳ `breadcrumbs` | array | Navigation path to the result within its source | | ↳ `url` | string | URL to the original content | | `completion` | string | AI-generated answer to the query (when generateAnswer is enabled) | --- # Algolia (/integrations/algolia) {/* MANUAL-CONTENT-START:intro */} Use [Algolia](https://www.algolia.com/) in Agent Serve to search indices, add or update records, run batch operations, and manage index settings. The actions below also cover browsing records, deleting by filter, copying or moving indices, and checking task status. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Algolia into your workflow. Search indices, manage records (add, update, delete, browse), configure index settings, and perform batch operations. ## Actions [#actions] ### Algolia Search [#algolia-search] Search an Algolia index #### Input [#input] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `indexName` | string | Yes | Name of the Algolia index to search | | `query` | string | Yes | Search query text | | `hitsPerPage` | number | No | Number of hits per page (default: 20) | | `page` | number | No | Page number to retrieve (default: 0) | | `filters` | string | No | Filter string (e.g., "category:electronics AND price \< 100") | | `attributesToRetrieve` | string | No | Comma-separated list of attributes to retrieve | | `facets` | string | No | Comma-separated list of facet attribute names to retrieve counts for (use "\*" for all) | | `getRankingInfo` | boolean | No | Whether to include detailed ranking information in each hit | | `aroundLatLng` | string | No | Coordinates for geo-search (e.g., "40.71,-74.01") | | `aroundRadius` | string | No | Maximum radius in meters for geo-search, or "all" for unlimited | | `insideBoundingBox` | json | No | Bounding box coordinates as \[\[lat1, lng1, lat2, lng2]] for geo-search | | `insidePolygon` | json | No | Polygon coordinates as \[\[lat1, lng1, lat2, lng2, lat3, lng3, ...]] for geo-search | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------- | | `hits` | array | Array of matching records | | ↳ `objectID` | string | Unique identifier of the record | | ↳ `_highlightResult` | object | Highlighted attributes matching the query. Each attribute has value, matchLevel (none, partial, full), and matchedWords | | ↳ `_snippetResult` | object | Snippeted attributes matching the query. Each attribute has value and matchLevel | | ↳ `_rankingInfo` | object | Ranking information for the hit. Only present when getRankingInfo is enabled | | ↳ `nbTypos` | number | Number of typos in the query match | | ↳ `firstMatchedWord` | number | Position of the first matched word | | ↳ `geoDistance` | number | Distance in meters for geo-search results | | ↳ `nbExactWords` | number | Number of exactly matched words | | ↳ `userScore` | number | Custom ranking score | | ↳ `words` | number | Number of matched words | | `nbHits` | number | Total number of matching hits | | `page` | number | Current page number (zero-based) | | `nbPages` | number | Total number of pages available | | `hitsPerPage` | number | Number of hits per page (1-1000, default 20) | | `processingTimeMS` | number | Server-side processing time in milliseconds | | `query` | string | The search query that was executed | | `parsedQuery` | string | The query string after normalization and stop word removal | | `facets` | object | Facet counts keyed by facet name, each containing value-count pairs | | `facets_stats` | object | Statistics (min, max, avg, sum) for numeric facets | | `exhaustive` | object | Exhaustiveness flags for facetsCount, facetValues, nbHits, rulesMatch, and typo | ### Algolia Add Record [#algolia-add-record] Add or replace a record in an Algolia index #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key | | `indexName` | string | Yes | Name of the Algolia index | | `objectID` | string | No | Object ID for the record (auto-generated if not provided) | | `record` | json | Yes | JSON object representing the record to add | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the indexing operation | | `objectID` | string | The object ID of the added or replaced record | | `createdAt` | string | Timestamp when the record was created (only present when objectID is auto-generated) | | `updatedAt` | string | Timestamp when the record was updated (only present when replacing an existing record) | ### Algolia Get Record [#algolia-get-record] Get a record by objectID from an Algolia index #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `indexName` | string | Yes | Name of the Algolia index | | `objectID` | string | Yes | The objectID of the record to retrieve | | `attributesToRetrieve` | string | No | Comma-separated list of attributes to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------ | | `objectID` | string | The objectID of the retrieved record | | `record` | object | The record data (all attributes) | ### Algolia Get Records [#algolia-get-records] Retrieve multiple records by objectID from one or more Algolia indices #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `indexName` | string | Yes | Default index name for all requests | | `requests` | json | Yes | Array of objects specifying records to retrieve. Each must have "objectID" and optionally "indexName" and "attributesToRetrieve". | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------- | | `results` | array | Array of retrieved records (null entries for records not found) | | ↳ `objectID` | string | Unique identifier of the record | ### Algolia Partial Update Record [#algolia-partial-update-record] Partially update a record in an Algolia index without replacing it entirely #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key | | `indexName` | string | Yes | Name of the Algolia index | | `objectID` | string | Yes | The objectID of the record to update | | `attributes` | json | Yes | JSON object with attributes to update. Supports built-in operations like \{"stock": \{"\_operation": "Decrement", "value": 1}} | | `createIfNotExists` | boolean | No | Whether to create the record if it does not exist (default: true) | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the update operation | | `objectID` | string | The objectID of the updated record | | `updatedAt` | string | Timestamp when the record was updated | ### Algolia Delete Record [#algolia-delete-record] Delete a record by objectID from an Algolia index #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------ | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key | | `indexName` | string | Yes | Name of the Algolia index | | `objectID` | string | Yes | The objectID of the record to delete | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------- | | `taskID` | number | Algolia task ID for tracking the deletion | | `deletedAt` | string | Timestamp when the record was deleted | ### Algolia Browse Records [#algolia-browse-records] Browse and iterate over all records in an Algolia index using cursor pagination #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key (must have browse ACL) | | `indexName` | string | Yes | Name of the Algolia index to browse | | `query` | string | No | Search query to filter browsed records | | `filters` | string | No | Filter string to narrow down results | | `attributesToRetrieve` | string | No | Comma-separated list of attributes to retrieve | | `hitsPerPage` | number | No | Number of hits per page (default: 1000, max: 1000) | | `cursor` | string | No | Cursor from a previous browse response for pagination | | `aroundLatLng` | string | No | Coordinates for geo-search (e.g., "40.71,-74.01") | | `aroundRadius` | string | No | Maximum radius in meters for geo-search, or "all" for unlimited | | `insideBoundingBox` | json | No | Bounding box coordinates as \[\[lat1, lng1, lat2, lng2]] for geo-search | | `insidePolygon` | json | No | Polygon coordinates as \[\[lat1, lng1, lat2, lng2, lat3, lng3, ...]] for geo-search | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `hits` | array | Array of records from the index (up to 1000 per request) | | ↳ `objectID` | string | Unique identifier of the record | | `cursor` | string | Opaque cursor string for retrieving the next page of results. Absent when no more results exist. | | `nbHits` | number | Total number of records matching the browse criteria | | `page` | number | Current page number (zero-based) | | `nbPages` | number | Total number of pages available | | `hitsPerPage` | number | Number of hits per page (1-1000, default 1000 for browse) | | `processingTimeMS` | number | Server-side processing time in milliseconds | ### Algolia Batch Operations [#algolia-batch-operations] Perform batch add, update, partial update, or delete operations on records in an Algolia index #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key | | `indexName` | string | Yes | Name of the Algolia index | | `requests` | json | Yes | Array of batch operations. Each item has "action" (addObject, updateObject, partialUpdateObject, partialUpdateObjectNoCreate, deleteObject, delete, clear) and "body" (the record data; must include objectID for update/delete; use an empty object \{} for the index-level delete/clear actions) | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the batch operation | | `objectIDs` | array | Array of object IDs affected by the batch operation | ### Algolia List Indices [#algolia-list-indices] List all indices in an Algolia application #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `page` | number | No | Page number for paginating indices (default: not paginated) | | `hitsPerPage` | number | No | Number of indices per page (default: 100) | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------ | | `indices` | array | List of indices in the application | | ↳ `name` | string | Name of the index | | ↳ `entries` | number | Number of records in the index | | ↳ `dataSize` | number | Size of the index data in bytes | | ↳ `fileSize` | number | Size of the index files in bytes | | ↳ `lastBuildTimeS` | number | Last build duration in seconds | | ↳ `numberOfPendingTasks` | number | Number of pending indexing tasks | | ↳ `pendingTask` | boolean | Whether the index has pending tasks | | ↳ `createdAt` | string | Timestamp when the index was created | | ↳ `updatedAt` | string | Timestamp when the index was last updated | | ↳ `primary` | string | Name of the primary index (if this is a replica) | | ↳ `replicas` | array | List of replica index names | | ↳ `virtual` | boolean | Whether the index is a virtual replica | | `nbPages` | number | Total number of pages of indices | ### Algolia Get Settings [#algolia-get-settings] Retrieve the settings of an Algolia index #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `indexName` | string | Yes | Name of the Algolia index | #### Output [#output-9] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------ | | `searchableAttributes` | array | List of searchable attributes | | `attributesForFaceting` | array | Attributes used for faceting | | `ranking` | array | Ranking criteria | | `customRanking` | array | Custom ranking criteria | | `replicas` | array | List of replica index names | | `hitsPerPage` | number | Default number of hits per page | | `maxValuesPerFacet` | number | Maximum number of facet values returned | | `highlightPreTag` | string | HTML tag inserted before highlighted parts | | `highlightPostTag` | string | HTML tag inserted after highlighted parts | | `paginationLimitedTo` | number | Maximum number of hits accessible via pagination | ### Algolia Update Settings [#algolia-update-settings] Update the settings of an Algolia index #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key (must have editSettings ACL) | | `indexName` | string | Yes | Name of the Algolia index | | `settings` | json | Yes | JSON object with settings to update (e.g., \{"searchableAttributes": \["name", "description"], "customRanking": \["desc(popularity)"]}) | | `forwardToReplicas` | boolean | No | Whether to apply changes to replica indices (default: false) | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------ | | `taskID` | number | Algolia task ID for tracking the settings update | | `updatedAt` | string | Timestamp when the settings were updated | ### Algolia Delete Index [#algolia-delete-index] Delete an entire Algolia index and all its records #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key (must have deleteIndex ACL) | | `indexName` | string | Yes | Name of the Algolia index to delete | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the index deletion | | `deletedAt` | string | Timestamp when the index was deleted | ### Algolia Copy/Move Index [#algolia-copymove-index] Copy or move an Algolia index to a new destination #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key | | `indexName` | string | Yes | Name of the source index | | `operation` | string | Yes | Operation to perform: "copy" or "move" | | `destination` | string | Yes | Name of the destination index | | `scope` | json | No | Array of scopes to copy (only for "copy" operation): \["settings", "synonyms", "rules"]. Omit to copy everything including records. | #### Output [#output-12] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the copy/move operation | | `updatedAt` | string | Timestamp when the operation was performed | ### Algolia Clear Records [#algolia-clear-records] Clear all records from an Algolia index while keeping settings, synonyms, and rules #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key (must have deleteIndex ACL) | | `indexName` | string | Yes | Name of the Algolia index to clear | #### Output [#output-13] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------ | | `taskID` | number | Algolia task ID for tracking the clear operation | | `updatedAt` | string | Timestamp when the records were cleared | ### Algolia Delete By Filter [#algolia-delete-by-filter] Delete all records matching a filter from an Algolia index #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia Admin API Key (must have deleteIndex ACL) | | `indexName` | string | Yes | Name of the Algolia index | | `filters` | string | No | Filter expression to match records for deletion (e.g., "category:outdated") | | `facetFilters` | json | No | Array of facet filters (e.g., \["brand:Acme"]) | | `numericFilters` | json | No | Array of numeric filters (e.g., \["price > 100"]) | | `tagFilters` | json | No | Array of tag filters using the \_tags attribute (e.g., \["published"]) | | `aroundLatLng` | string | No | Coordinates for geo-search filter (e.g., "40.71,-74.01") | | `aroundRadius` | string | No | Maximum radius in meters for geo-search, or "all" for unlimited | | `insideBoundingBox` | json | No | Bounding box coordinates as \[\[lat1, lng1, lat2, lng2]] for geo-search filter | | `insidePolygon` | json | No | Polygon coordinates as \[\[lat1, lng1, lat2, lng2, lat3, lng3, ...]] for geo-search filter | #### Output [#output-14] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `taskID` | number | Algolia task ID for tracking the delete-by-filter operation | | `updatedAt` | string | Timestamp when the operation was performed | ### Algolia Get Task Status [#algolia-get-task-status] Check whether an Algolia indexing task has finished publishing #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `applicationId` | string | Yes | Algolia Application ID | | `apiKey` | string | Yes | Algolia API Key | | `indexName` | string | Yes | Name of the Algolia index the task ran against | | `taskID` | number | Yes | The taskID returned by a previous write operation | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------ | | `status` | string | Task status: "published" once the operation has been applied, "notPublished" while still pending | --- # Amplitude (/integrations/amplitude) {/* MANUAL-CONTENT-START:intro */} Use [Amplitude](https://amplitude.com/) to send events, update user and group properties, and query product analytics from a workflow. The HTTP and Dashboard REST APIs use API-key and secret-key authentication. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Amplitude into your workflow to track events, identify users and groups, search for users, query analytics, analyze funnels and retention, and retrieve revenue data. ## Actions [#actions] ### Amplitude Send Event [#amplitude-send-event] Track an event in Amplitude using the HTTP V2 API. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `userId` | string | No | User ID (required if no device\_id) | | `deviceId` | string | No | Device ID (required if no user\_id) | | `eventType` | string | Yes | Name of the event (e.g., "page\_view", "purchase") | | `eventProperties` | string | No | JSON object of custom event properties | | `userProperties` | string | No | JSON object of user properties to set (supports $set, $setOnce, $add, $append, $unset) | | `time` | string | No | Event timestamp in milliseconds since epoch | | `sessionId` | string | No | Session start time in milliseconds since epoch | | `insertId` | string | No | Unique ID for deduplication (within 7-day window) | | `appVersion` | string | No | Application version string | | `platform` | string | No | Platform (e.g., "Web", "iOS", "Android") | | `country` | string | No | Two-letter country code | | `language` | string | No | Language code (e.g., "en") | | `ip` | string | No | IP address for geo-location | | `price` | string | No | Price of the item purchased | | `quantity` | string | No | Quantity of items purchased | | `revenue` | string | No | Revenue amount | | `productId` | string | No | Product identifier | | `revenueType` | string | No | Revenue type (e.g., "purchase", "refund") | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------- | | `code` | number | Response code (200 for success) | | `eventsIngested` | number | Number of events ingested | | `payloadSizeBytes` | number | Size of the payload in bytes | | `serverUploadTime` | number | Server upload timestamp | ### Amplitude Identify User [#amplitude-identify-user] Set user properties in Amplitude using the Identify API. Supports $set, $setOnce, $add, $append, $unset operations. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Amplitude API Key | | `userId` | string | No | User ID (required if no device\_id) | | `deviceId` | string | No | Device ID (required if no user\_id) | | `userProperties` | string | Yes | JSON object of user properties. Use operations like $set, $setOnce, $add, $append, $unset. | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `code` | number | HTTP response status code | | `message` | string | Response message | ### Amplitude Group Identify [#amplitude-group-identify] Set group-level properties in Amplitude. Supports $set, $setOnce, $add, $append, $unset operations. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `groupType` | string | Yes | Group classification (e.g., "company", "org\_id") | | `groupValue` | string | Yes | Specific group identifier (e.g., "Acme Corp") | | `groupProperties` | string | Yes | JSON object of group properties. Use operations like $set, $setOnce, $add, $append, $unset. | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `code` | number | HTTP response status code | | `message` | string | Response message | ### Amplitude User Search [#amplitude-user-search] Search for a user by User ID, Device ID, or Amplitude ID using the Dashboard REST API. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `user` | string | Yes | User ID, Device ID, or Amplitude ID to search for | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------- | | `matches` | array | List of matching users | | ↳ `amplitudeId` | number | Amplitude internal user ID | | ↳ `userId` | string | External user ID | | `type` | string | Match type (e.g., match\_user\_or\_device\_id) | ### Amplitude User Activity [#amplitude-user-activity] Get the event stream for a specific user by their Amplitude ID. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `amplitudeId` | string | Yes | Amplitude internal user ID | | `offset` | string | No | Offset for pagination (default 0) | | `limit` | string | No | Maximum number of events to return (default 1000, max 1000) | | `direction` | string | No | Sort direction: "latest" or "earliest" (default: latest) | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-4] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------- | | `events` | array | List of user events | | ↳ `eventType` | string | Type of event | | ↳ `eventTime` | string | Event timestamp | | ↳ `eventProperties` | json | Custom event properties | | ↳ `userProperties` | json | User properties at event time | | ↳ `sessionId` | number | Session ID | | ↳ `platform` | string | Platform | | ↳ `country` | string | Country | | ↳ `city` | string | City | | `userData` | json | User metadata | | ↳ `userId` | string | External user ID | | ↳ `canonicalAmplitudeId` | number | Canonical Amplitude ID | | ↳ `numEvents` | number | Total event count | | ↳ `numSessions` | number | Total session count | | ↳ `platform` | string | Primary platform | | ↳ `country` | string | Country | | ↳ `firstUsed` | string | Date the user first appeared | | ↳ `lastUsed` | string | Date of most recent user activity | ### Amplitude User Profile [#amplitude-user-profile] Get a user profile including properties, cohort memberships, and computed properties. Not available for EU data-residency projects. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | Amplitude Secret Key | | `userId` | string | No | External user ID (required if no device\_id) | | `deviceId` | string | No | Device ID (required if no user\_id) | | `getAmpProps` | string | No | Include Amplitude user properties (true/false, default: false) | | `getCohortIds` | string | No | Include cohort IDs the user belongs to (true/false, default: false) | | `getComputations` | string | No | Include computed user properties (true/false, default: false) | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------- | | `userId` | string | External user ID | | `deviceId` | string | Device ID | | `ampProps` | json | Amplitude user properties (library, first\_used, last\_used, custom properties) | | `cohortIds` | array | List of cohort IDs the user belongs to | | `computations` | json | Computed user properties | ### Amplitude Event Segmentation [#amplitude-event-segmentation] Query event analytics data with segmentation. Get event counts, uniques, averages, and more. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `eventType` | string | Yes | Event type name to analyze | | `start` | string | Yes | Start date in YYYYMMDD format | | `end` | string | Yes | End date in YYYYMMDD format | | `metric` | string | No | Metric type: uniques, totals, pct\_dau, average, histogram, sums, value\_avg, or formula (default: uniques) | | `interval` | string | No | Time interval: 1 (daily), 7 (weekly), or 30 (monthly) | | `groupBy` | string | No | Property name to group by (prefix custom user properties with "gp:") | | `groupBy2` | string | No | Second property name to group by (prefix custom user properties with "gp:") | | `limit` | string | No | Maximum number of group-by values (max 1000) | | `filters` | string | No | JSON array of filter objects applied to the event, e.g. \[\{"subprop\_type":"event","subprop\_key":"city","subprop\_op":"is","subprop\_value":\["San Francisco"]}] | | `formula` | string | No | Required when metric is "formula", e.g. "UNIQUES(A)/UNIQUES(B)" | | `segment` | string | No | JSON segment definition(s) applied to the query | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ----- | ----------------------------------------- | | `series` | json | Time-series data arrays indexed by series | | `seriesLabels` | array | Labels for each data series | | `seriesCollapsed` | json | Collapsed aggregate totals per series | | `xValues` | array | Date values for the x-axis | ### Amplitude Get Active Users [#amplitude-get-active-users] Get active or new user counts over a date range from the Dashboard REST API. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `start` | string | Yes | Start date in YYYYMMDD format | | `end` | string | Yes | End date in YYYYMMDD format | | `metric` | string | No | Metric type: "active" or "new" (default: active) | | `interval` | string | No | Time interval: 1 (daily), 7 (weekly), or 30 (monthly) | | `groupBy` | string | No | Property name to group by | | `segment` | string | No | JSON segment definition(s) applied to the query | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ----- | ---------------------------------------------------------- | | `series` | json | Array of data series with user counts per time interval | | `seriesMeta` | array | Metadata labels for each data series (e.g., segment names) | | `xValues` | array | Date values for the x-axis | ### Amplitude Real-time Active Users [#amplitude-real-time-active-users] Get real-time active user counts at 5-minute granularity for the last 2 days. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ----- | ------------------------------------------------------------------ | | `series` | json | Array of data series with active user counts at 5-minute intervals | | `seriesLabels` | array | Labels for each series (e.g., "Today", "Yesterday") | | `xValues` | array | Time values for the x-axis (e.g., "15:00", "15:05") | ### Amplitude List Events [#amplitude-list-events] List all event types in the Amplitude project with their weekly totals and unique counts. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------- | | `events` | array | List of event types in the project | | ↳ `value` | string | Event type name | | ↳ `displayName` | string | Event display name | | ↳ `totals` | number | Weekly total count | | ↳ `hidden` | boolean | Whether the event is hidden | | ↳ `deleted` | boolean | Whether the event is deleted | | ↳ `nonActive` | boolean | Whether the event is excluded from active user calculations | | ↳ `flowHidden` | boolean | Whether the event is hidden from user flow charts | ### Amplitude Get Revenue [#amplitude-get-revenue] Get revenue LTV data including ARPU, ARPPU, total revenue, and paying user counts. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `start` | string | Yes | Start date in YYYYMMDD format | | `end` | string | Yes | End date in YYYYMMDD format | | `metric` | string | No | Metric: 0 (ARPU), 1 (ARPPU), 2 (Total Revenue), 3 (Paying Users) | | `interval` | string | No | Time interval: 1 (daily), 7 (weekly), or 30 (monthly) | | `groupBy` | string | No | Property name to group by (limit: one) | | `segment` | string | No | JSON segment definition(s) applied to the query | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ----- | ------------------------------------------------------------------------------------------------------------ | | `series` | array | Revenue data series \[\{dates: \[YYYY-MM-DD], values: \{\: \{r1d..r90d, count, paid, total\_amount}}}] | | ↳ `dates` | array | Dates covered by this series | | ↳ `values` | json | Per-date metric values keyed by date (r1d..r90d, count, paid, total\_amount) | | `seriesLabels` | array | Labels for each data series | ### Amplitude Funnels [#amplitude-funnels] Analyze conversion rates and drop-off between a sequence of events. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `events` | string | Yes | JSON array of event objects, one per funnel step in order, e.g. \[\{"event\_type":"signup"},\{"event\_type":"purchase"}] | | `start` | string | Yes | Start date in YYYYMMDD format | | `end` | string | Yes | End date in YYYYMMDD format | | `mode` | string | No | Funnel ordering: "ordered", "unordered", or "sequential" (default: ordered) | | `userType` | string | No | User type: "new" or "active" (default: active) | | `interval` | string | No | Time interval: -300000 (real-time), -3600000 (hourly), 1 (daily), 7 (weekly), or 30 (monthly) | | `conversionWindowSeconds` | string | No | Conversion window in seconds (default: 2592000, i.e. 30 days) | | `groupBy` | string | No | Property to group by (limit: one; prefix custom properties with "gp:") | | `limit` | string | No | Maximum number of group-by values (default: 100, max: 1000) | | `segment` | string | No | JSON segment definition(s) applied to the query | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-11] | Parameter | Type | Description | | -------------------- | ----- | --------------------------------------------- | | `funnels` | array | Funnel results, one entry per segment | | ↳ `stepByStep` | json | Conversion count at each step | | ↳ `cumulative` | json | Cumulative conversion percentage at each step | | ↳ `cumulativeRaw` | json | Cumulative conversion count at each step | | ↳ `medianTransTimes` | json | Median transition time between steps (ms) | | ↳ `avgTransTimes` | json | Average transition time between steps (ms) | | ↳ `events` | json | Event names for each funnel step | | ↳ `dayFunnels` | json | Daily funnel breakdown \{series, xValues} | ### Amplitude Retention [#amplitude-retention] Measure how many users return to perform an action after a starting action. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Amplitude API Key | | `secretKey` | string | Yes | Amplitude Secret Key | | `startEvent` | string | Yes | JSON starting event object, e.g. \{"event\_type":"\_new"} or \{"event\_type":"\_active"} | | `returnEvent` | string | Yes | JSON returning event object, e.g. \{"event\_type":"\_all"} or \{"event\_type":"\_active"} | | `start` | string | Yes | Start date in YYYYMMDD format | | `end` | string | Yes | End date in YYYYMMDD format | | `retentionMode` | string | No | Retention type: "bracket", "rolling", or "n-day" (default: n-day) | | `retentionBrackets` | string | No | Required when Retention Mode is "bracket". Day ranges, e.g. \[\[0,4]] | | `interval` | string | No | Time interval: 1 (daily), 7 (weekly), or 30 (monthly) | | `groupBy` | string | No | Property to group by (limit: one; prefix custom properties with "gp:") | | `segment` | string | No | JSON segment definition(s) applied to the query | | `dataResidency` | string | No | Data residency region: "us" (default) or "eu" | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------- | | `series` | array | Retention data series \[\{dates, values: \{\: \[\{count, outof, incomplete}]}, combined: \[\{count, outof, incomplete}]}] | | ↳ `dates` | array | Cohort dates | | ↳ `values` | json | Per-cohort-date retention counts keyed by date | | ↳ `combined` | json | Deduplicated aggregate retention across all cohorts | | `seriesMeta` | array | Segment/event index metadata for each series entry | --- # Apify (/integrations/apify) {/* MANUAL-CONTENT-START:intro */} [Apify](https://apify.com/) runs Actors for web scraping and browser automation. Run an Actor synchronously when you need its result in the same call, or start an asynchronous run and check its status before retrieving the dataset. You can also run saved Actor tasks and retrieve dataset items. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Apify into your workflow. Run any Apify actor or saved task with custom input, fetch dataset items, and check run status. Supports both synchronous and asynchronous execution with automatic dataset fetching. ## Actions [#actions] ### APIFY Run Actor (Sync) [#apify-run-actor-sync] Run an APIFY actor synchronously and get results (max 5 minutes) #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations | | `actorId` | string | Yes | Actor ID or username/actor-name. Examples: "apify/web-scraper", "janedoe/my-actor", "moJRLRc85AitArpNN" | | `input` | string | No | Actor input as JSON string. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ], "maxPages": 10 } | | `memory` | number | No | Memory in megabytes allocated for the actor run (128-32768). Example: 1024 for 1GB, 2048 for 2GB | | `timeout` | number | No | Timeout in seconds for the actor run. Example: 300 for 5 minutes, 3600 for 1 hour | | `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3", "build-tag-name" | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the actor run succeeded | | `runId` | string | APIFY run ID | | `status` | string | Run status (SUCCEEDED, FAILED, etc.) | | `items` | array | Dataset items (if completed) | ### APIFY Run Actor (Async) [#apify-run-actor-async] Run an APIFY actor asynchronously with polling for long-running tasks #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations | | `actorId` | string | Yes | Actor ID or username/actor-name. Examples: "apify/web-scraper", "janedoe/my-actor", "moJRLRc85AitArpNN" | | `input` | string | No | Actor input as JSON string. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ], "maxPages": 10 } | | `waitForFinish` | number | No | Initial wait time in seconds (0-60) before polling starts. Example: 30 | | `itemLimit` | number | No | Max dataset items to fetch (1-250000). Default: 100. Example: 500 | | `memory` | number | No | Memory in megabytes allocated for the actor run (128-32768). Example: 1024 for 1GB, 2048 for 2GB | | `timeout` | number | No | Timeout in seconds for the actor run. Example: 300 for 5 minutes, 3600 for 1 hour | | `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3", "build-tag-name" | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------ | | `success` | boolean | Whether the actor run succeeded | | `runId` | string | APIFY run ID | | `status` | string | Run status (SUCCEEDED, FAILED, etc.) | | `datasetId` | string | Dataset ID containing results | | `items` | array | Dataset items (if completed) | ### APIFY Run Task [#apify-run-task] Run a saved APIFY actor task synchronously and get dataset items (max 5 minutes) #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations | | `taskId` | string | Yes | Task ID or username/task-name. Examples: "janedoe/my-task", "moJRLRc85AitArpNN" | | `input` | string | No | JSON string that overrides the task's saved input. Example: \{ "startUrls": \[ \{ "url": "[https://example.com](https://example.com)" } ] } | | `itemLimit` | number | No | Max dataset items to return (1-250000). Example: 500 | | `memory` | number | No | Memory in megabytes allocated for the run (128-32768). Example: 1024 for 1GB | | `timeout` | number | No | Timeout in seconds for the run. Example: 300 for 5 minutes | | `build` | string | No | Actor build to run. Examples: "latest", "beta", "1.2.3" | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the task run succeeded | | `status` | string | Run status (SUCCEEDED, FAILED, etc.) | | `items` | array | Dataset items produced by the run | ### APIFY Get Dataset Items [#apify-get-dataset-items] Retrieve items stored in an APIFY dataset #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations | | `datasetId` | string | Yes | Dataset ID to read items from. Example: "9RnD3Pql2vGZkc5H5" | | `itemLimit` | number | No | Max items to return (1-250000). Default: all items. Example: 500 | | `offset` | number | No | Number of items to skip at the start. Default: 0 | | `fields` | string | No | Comma-separated list of fields to include. Example: "title,url,price" | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `success` | boolean | Whether the items were retrieved | | `datasetId` | string | Dataset ID the items were read from | | `items` | array | Items stored in the dataset | | `count` | number | Number of items returned | ### APIFY Get Run [#apify-get-run] Get the status and details of an APIFY actor run #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | APIFY API token from console.apify.com/account#/integrations | | `runId` | string | Yes | Actor run ID to fetch. Example: "HG7ML7M8z78YcAPEB" | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------- | | `success` | boolean | Whether the run was found | | `runId` | string | APIFY run ID | | `status` | string | Run status (READY, RUNNING, SUCCEEDED, FAILED, etc.) | | `startedAt` | string | When the run started (ISO timestamp) | | `finishedAt` | string | When the run finished (ISO timestamp) | | `datasetId` | string | Default dataset ID for the run | | `keyValueStoreId` | string | Default key-value store ID for the run | | `stats` | json | Run statistics (memory, CPU, duration) | --- # Apollo (/integrations/apollo) {/* MANUAL-CONTENT-START:intro */} Use [Apollo.io](https://apollo.io/) in Agent Serve to search and enrich people and companies, manage CRM contacts and accounts, add contacts to sequences, and create follow-up tasks. Single-record and bulk enrichment operations are documented below. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates Apollo.io into the workflow. Search for people and companies, enrich contact data, manage your CRM contacts and accounts, add contacts to sequences, and create tasks. ## Actions [#actions] ### Apollo People Search [#apollo-people-search] Search Apollo's database for people using demographic filters #### Input [#input] | Parameter | Type | Required | Description | | ----------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `person_titles` | array | No | Job titles to search for (e.g., \["CEO", "VP of Sales"]) | | `include_similar_titles` | boolean | No | Whether to return people with job titles similar to person\_titles | | `person_locations` | array | No | Locations to search in (e.g., \["San Francisco, CA", "New York, NY"]) | | `person_seniorities` | array | No | Seniority levels (one of: owner, founder, c\_suite, partner, vp, head, director, manager, senior, entry, intern) | | `organization_ids` | array | No | Apollo organization IDs to filter by (e.g., \["5e66b6381e05b4008c8331b8"]) | | `organization_names` | array | No | Company names to search within (legacy filter) | | `organization_locations` | array | No | Headquarters locations of the people's current employer (e.g., \['texas', 'tokyo', 'spain']) | | `q_organization_domains_list` | array | No | Employer domain names (e.g., \["apollo.io", "microsoft.com"]) — up to 1,000, no [www](http://www). or @ | | `organization_num_employees_ranges` | array | No | Employee count ranges for the person's current employer. Each entry is "min,max" (e.g., \["1,10", "250,500", "10000,20000"]) | | `contact_email_status` | array | No | Email statuses to filter by: "verified", "unverified", "likely to engage", "unavailable" | | `q_keywords` | string | No | Keywords to search for | | `page` | number | No | Page number for pagination, default 1 (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, default 25, max 100 (e.g., 25, 50, 100) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `people` | json | Array of people matching the search criteria | | `page` | number | Current page number | | `per_page` | number | Results per page | | `total_entries` | number | Total matching entries | ### Apollo People Enrichment [#apollo-people-enrichment] Enrich data for a single person using Apollo #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `first_name` | string | No | First name of the person | | `last_name` | string | No | Last name of the person | | `name` | string | No | Full name of the person (alternative to first\_name/last\_name) | | `id` | string | No | Apollo ID for the person | | `hashed_email` | string | No | MD5 or SHA-256 hashed email | | `email` | string | No | Email address of the person | | `organization_name` | string | No | Company name where the person works | | `domain` | string | No | Company domain (e.g., "apollo.io", "acme.com") | | `linkedin_url` | string | No | LinkedIn profile URL | | `reveal_personal_emails` | boolean | No | Reveal personal email addresses (uses credits) | | `reveal_phone_number` | boolean | No | Reveal phone numbers (uses credits, requires webhook\_url) | | `webhook_url` | string | No | Webhook URL for async phone number delivery (required when reveal\_phone\_number is true) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------- | | `person` | json | Enriched person data from Apollo | | `enriched` | boolean | Whether the person was successfully enriched | ### Apollo Bulk People Enrichment [#apollo-bulk-people-enrichment] Enrich data for up to 10 people at once using Apollo #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `people` | array | Yes | Array of people to enrich (max 10) | | `reveal_personal_emails` | boolean | No | Reveal personal email addresses (uses credits) | | `reveal_phone_number` | boolean | No | Reveal phone numbers (uses credits, requires webhook\_url) | | `webhook_url` | string | No | Webhook URL for async phone number delivery (required when reveal\_phone\_number is true) | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------- | ------ | --------------------------------------------------------- | | `matches` | json | Array of enriched people (null entries indicate no match) | | `total_requested_enrichments` | number | Total number of records submitted for enrichment | | `unique_enriched_records` | number | Number of records successfully enriched | | `missing_records` | number | Number of records that could not be enriched | | `credits_consumed` | number | Number of Apollo credits consumed by this request | ### Apollo Organization Search [#apollo-organization-search] Search Apollo's database for companies using filters #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `organization_locations` | array | No | Company HQ locations (cities, US states, or countries) | | `organization_not_locations` | array | No | Exclude companies whose HQ is in these locations | | `organization_num_employees_ranges` | array | No | Employee count ranges as "min,max" strings (e.g., \["1,10", "250,500", "10000,20000"]) | | `q_organization_keyword_tags` | array | No | Industry or keyword tags | | `q_organization_name` | string | No | Organization name to search for (e.g., "Acme", "TechCorp") | | `organization_ids` | array | No | Apollo organization IDs to include (e.g., \["5e66b6381e05b4008c8331b8"]) | | `q_organization_domains_list` | array | No | Domain names to filter by (no [www](http://www). or @, up to 1,000) | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------- | | `organizations` | json | Array of organizations matching the search criteria | | `page` | number | Current page number | | `per_page` | number | Results per page | | `total_entries` | number | Total matching entries | ### Apollo Organization Enrichment [#apollo-organization-enrichment] Enrich data for a single organization using Apollo #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `domain` | string | Yes | Company domain (e.g., "apollo.io", "acme.com") | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------- | -------------------------------------------------- | | `organization` | json | Enriched organization data from Apollo | | `enriched` | boolean | Whether the organization was successfully enriched | ### Apollo Bulk Organization Enrichment [#apollo-bulk-organization-enrichment] Enrich data for up to 10 organizations at once using Apollo #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `domains` | array | Yes | Array of company domains to enrich (max 10, no [www](http://www). or @, e.g., \["apollo.io", "stripe.com"]) | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------- | | `organizations` | json | Array of enriched organization data | | `total` | number | Total number of domains requested | | `enriched` | number | Number of unique enriched records | | `missing_records` | number | Number of domains that could not be enriched | | `unique_domains` | number | Number of unique domains processed | ### Apollo Create Contact [#apollo-create-contact] Create a new contact in your Apollo database #### Input [#input-6] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `first_name` | string | Yes | First name of the contact | | `last_name` | string | Yes | Last name of the contact | | `email` | string | No | Email address of the contact | | `title` | string | No | Job title (e.g., "VP of Sales", "Software Engineer") | | `account_id` | string | No | Apollo account ID to associate with (e.g., "acc\_abc123") | | `owner_id` | string | No | User ID of the contact owner (accepted by Apollo but not officially documented for POST /contacts) | | `organization_name` | string | No | Name of the contact's employer (e.g., "Apollo") | | `website_url` | string | No | Corporate website URL (e.g., "[https://www.apollo.io/](https://www.apollo.io/)") | | `label_names` | array | No | Lists/labels to add the contact to (e.g., \["Prospects"]) | | `contact_stage_id` | string | No | Apollo ID for the contact stage | | `present_raw_address` | string | No | Personal location for the contact (e.g., "Atlanta, United States") | | `direct_phone` | string | No | Primary phone number | | `corporate_phone` | string | No | Work/office phone number | | `mobile_phone` | string | No | Mobile phone number | | `home_phone` | string | No | Home phone number | | `other_phone` | string | No | Alternative phone number | | `typed_custom_fields` | json | No | Custom field values keyed by custom field ID | | `run_dedupe` | boolean | No | When true, Apollo deduplicates against existing contacts | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `contact` | json | Created contact data from Apollo | | `created` | boolean | Whether the contact was successfully created | ### Apollo Update Contact [#apollo-update-contact] Update an existing contact in your Apollo database #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `contact_id` | string | Yes | ID of the contact to update (e.g., "con\_abc123") | | `first_name` | string | No | First name of the contact | | `last_name` | string | No | Last name of the contact | | `email` | string | No | Email address | | `title` | string | No | Job title (e.g., "VP of Sales", "Software Engineer") | | `account_id` | string | No | Apollo account ID (e.g., "acc\_abc123") | | `owner_id` | string | No | User ID of the contact owner (accepted by Apollo but not officially documented for PATCH /contacts/\{id}) | | `organization_name` | string | No | Name of the contact's employer (e.g., "Apollo") | | `website_url` | string | No | Corporate website URL (e.g., "[https://www.apollo.io/](https://www.apollo.io/)") | | `label_names` | array | No | Lists/labels to add the contact to (e.g., \["Prospects"]) | | `contact_stage_id` | string | No | Apollo ID for the contact stage | | `present_raw_address` | string | No | Personal location for the contact (e.g., "Atlanta, United States") | | `direct_phone` | string | No | Primary phone number | | `corporate_phone` | string | No | Work/office phone number | | `mobile_phone` | string | No | Mobile phone number | | `home_phone` | string | No | Home phone number | | `other_phone` | string | No | Alternative phone number | | `typed_custom_fields` | json | No | Custom field values keyed by custom field ID | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `contact` | json | Updated contact data from Apollo | | `updated` | boolean | Whether the contact was successfully updated | ### Apollo Search Contacts [#apollo-search-contacts] Search your team's contacts in Apollo #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `q_keywords` | string | No | Keywords to search for | | `contact_stage_ids` | array | No | Filter by contact stage IDs | | `contact_label_ids` | array | No | Filter by Apollo label IDs (lists) | | `sort_by_field` | string | No | Sort field: contact\_last\_activity\_date, contact\_email\_last\_opened\_at, contact\_email\_last\_clicked\_at, contact\_created\_at, or contact\_updated\_at | | `sort_ascending` | boolean | No | When true, sort ascending. Must be used together with sort\_by\_field | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ---- | ---------------------------------------------- | | `contacts` | json | Array of contacts matching the search criteria | | `pagination` | json | Pagination information | ### Apollo Bulk Create Contacts [#apollo-bulk-create-contacts] Create up to 100 contacts at once in your Apollo database. Supports deduplication to prevent creating duplicate contacts. Master key required. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `contacts` | array | Yes | Array of contacts to create (max 100). Each contact may include first\_name, last\_name, email, title, organization\_name, account\_id, owner\_id, contact\_stage\_id, linkedin\_url, phone (single string) or phone\_numbers (array of \{raw\_number, position}), contact\_emails, typed\_custom\_fields, and CRM IDs (salesforce\_contact\_id, hubspot\_id, team\_id) for cross-system matching | | `append_label_names` | array | No | Label names to add to all contacts in this request (e.g., \["Hot Lead"]) | | `run_dedupe` | boolean | No | Enable deduplication to prevent creating duplicate contacts. When true, existing contacts are returned without modification | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------- | | `created_contacts` | json | Array of newly created contacts | | `existing_contacts` | json | Array of existing contacts (when deduplication is enabled) | | `total_submitted` | number | Total number of contacts submitted | | `created` | number | Number of contacts successfully created | | `existing` | number | Number of existing contacts found | ### Apollo Bulk Update Contacts [#apollo-bulk-update-contacts] Update up to 100 existing contacts at once in your Apollo database. Each contact must include an id field. Master key required. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `contact_ids` | array | No | Array of contact IDs to update. Must be paired with an object-form contact\_attributes specifying the fields to apply uniformly to all listed contacts. | | `contact_attributes` | json | No | Required. Either an array of per-contact updates (each with id) — used standalone — or a single object of attributes to apply to all contact\_ids. Supported fields: owner\_id, email, organization\_name, title, first\_name, last\_name, account\_id, present\_raw\_address, linkedin\_url, typed\_custom\_fields | | `async` | boolean | No | Force asynchronous processing. Automatically enabled for >100 contacts | #### Output [#output-10] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------------- | | `contacts` | json | Updated contacts (synchronous response, ≤100 contacts) | | `entity_progress_job` | json | Async job descriptor (>100 contacts or async=true): \{id, status, ...} | | `job_id` | string | Async job ID extracted from entity\_progress\_job | | `message` | string | Optional confirmation message from Apollo | ### Apollo Create Account [#apollo-create-account] Create a new account (company) in your Apollo database #### Input [#input-11] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `name` | string | Yes | Company name (e.g., "Acme Corporation") | | `domain` | string | No | Company domain without [www](http://www). prefix (e.g., "acme.com") | | `phone` | string | No | Primary phone number for the account | | `owner_id` | string | No | Apollo user ID of the account owner | | `account_stage_id` | string | No | Apollo ID for the account stage to assign this account to | | `raw_address` | string | No | Corporate location (e.g., "San Francisco, CA, USA") | | `typed_custom_fields` | json | No | Custom field values as \{ custom\_field\_id: value } map | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `account` | json | Created account data from Apollo | | `created` | boolean | Whether the account was successfully created | ### Apollo Update Account [#apollo-update-account] Update an existing account in your Apollo database #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `account_id` | string | Yes | ID of the account to update (e.g., "acc\_abc123") | | `name` | string | No | Company name (e.g., "Acme Corporation") | | `domain` | string | No | Company domain (e.g., "acme.com") | | `phone` | string | No | Company phone number | | `owner_id` | string | No | Apollo user ID of the account owner | | `account_stage_id` | string | No | Apollo ID for the account stage to assign this account to | | `raw_address` | string | No | Corporate location (e.g., "San Francisco, CA, USA") | | `typed_custom_fields` | json | No | Custom field values as \{ custom\_field\_id: value } map | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `account` | json | Updated account data from Apollo | | `updated` | boolean | Whether the account was successfully updated | ### Apollo Search Accounts [#apollo-search-accounts] Search your team's accounts in Apollo. Display limit: 50,000 records (100 records per page, 500 pages max). Use filters to narrow results. Master key required. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `q_organization_name` | string | No | Filter accounts by organization name (partial-match search) | | `account_stage_ids` | array | No | Filter by account stage IDs | | `account_label_ids` | array | No | Filter by account label IDs | | `sort_by_field` | string | No | Sort field: "account\_last\_activity\_date", "account\_created\_at", or "account\_updated\_at" | | `sort_ascending` | boolean | No | Sort ascending when true. Defaults to descending. | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ---- | ---------------------------------------------- | | `accounts` | json | Array of accounts matching the search criteria | | `pagination` | json | Pagination information | ### Apollo Bulk Create Accounts [#apollo-bulk-create-accounts] Create up to 100 accounts at once in your Apollo database. Set run\_dedupe=true to deduplicate by domain, organization\_id, and name. Master key required. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `accounts` | array | Yes | Array of accounts to create (max 100). Each account should include a name, and may optionally include domain, phone, phone\_status\_cd, raw\_address, owner\_id, linkedin\_url, facebook\_url, twitter\_url, salesforce\_id, and hubspot\_id. | | `append_label_names` | array | No | Array of label names to add to ALL accounts in this request | | `run_dedupe` | boolean | No | When true, performs aggressive deduplication by domain, organization\_id, and name (defaults to false) | #### Output [#output-14] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------- | | `created_accounts` | json | Array of newly created accounts | | `existing_accounts` | json | Array of existing accounts returned by Apollo (when duplicates are detected) | | `failed_accounts` | json | Array of accounts that failed to be created, with reasons for failure | | `total_submitted` | number | Total number of accounts in the response (created + existing + failed) | | `created` | number | Number of accounts successfully created | | `existing` | number | Number of existing accounts found | | `failed` | number | Number of accounts that failed to be created | ### Apollo Bulk Update Accounts [#apollo-bulk-update-accounts] Update up to 1000 existing accounts at once in your Apollo database (higher limit than contacts!). Each account must include an id field. Master key required. #### Input [#input-15] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `account_ids` | array | No | Array of account IDs to update with the same values (max 1000). Use with name/owner\_id for uniform updates. Use either this OR account\_attributes. | | `name` | string | No | When using account\_ids, apply this name to all accounts | | `owner_id` | string | No | When using account\_ids, apply this owner to all accounts | | `account_stage_id` | string | No | When using account\_ids, apply this account stage to all accounts | | `account_attributes` | json | No | Array of account objects with individual updates (each must include id). Example: \[\{"id": "acc1", "name": "Acme", "owner\_id": "u1", "account\_stage\_id": "s1", "typed\_custom\_fields": \{"field\_id": "value"}}] | | `async` | boolean | No | When true, processes the update asynchronously. Only supported when using account\_ids; returns 422 if used with account\_attributes. | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------- | | `accounts` | json | Updated accounts (synchronous response): \[\{id, account\_stage\_id, ...}] | | `account_ids` | json | IDs of accounts that were updated | | `entity_progress_job` | json | Async job descriptor (when async=true is passed with account\_ids) | | `job_id` | string | Async job ID extracted from entity\_progress\_job | | `message` | string | Optional confirmation message from Apollo | ### Apollo Create Opportunity [#apollo-create-opportunity] Create a new deal for an account in your Apollo database (master key required) #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `name` | string | Yes | Name of the opportunity/deal (e.g., "Enterprise License - Q1") | | `account_id` | string | No | ID of the account this opportunity belongs to (e.g., "acc\_abc123") | | `amount` | string | No | Monetary value as a plain number string with no commas or currency symbols | | `opportunity_stage_id` | string | No | ID of the opportunity stage | | `owner_id` | string | No | User ID of the opportunity owner | | `closed_date` | string | No | Expected close date in YYYY-MM-DD format | | `typed_custom_fields` | json | No | Custom field values as \{ custom\_field\_id: value } map | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------ | | `opportunity` | json | Created opportunity data from Apollo | | `created` | boolean | Whether the opportunity was successfully created | ### Apollo Search Opportunities [#apollo-search-opportunities] Search and list all deals/opportunities in your team's Apollo account #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | Apollo API key | | `sort_by_field` | string | No | Sort field: "amount", "is\_closed", or "is\_won" | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-17] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------- | | `opportunities` | json | Array of opportunities matching the search criteria | | `page` | number | Current page number | | `per_page` | number | Results per page | | `total_entries` | number | Total matching entries | ### Apollo Get Opportunity [#apollo-get-opportunity] Retrieve complete details of a specific deal/opportunity by ID #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `opportunity_id` | string | Yes | ID of the opportunity to retrieve (e.g., "opp\_abc123") | #### Output [#output-18] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------- | | `opportunity` | json | Complete opportunity data from Apollo | | `found` | boolean | Whether the opportunity was found | ### Apollo Update Opportunity [#apollo-update-opportunity] Update an existing deal/opportunity in your Apollo database #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key | | `opportunity_id` | string | Yes | ID of the opportunity to update (e.g., "opp\_abc123") | | `name` | string | No | Name of the opportunity/deal (e.g., "Enterprise License - Q1") | | `amount` | string | No | Monetary value as a plain number string with no commas or currency symbols | | `opportunity_stage_id` | string | No | ID of the opportunity stage | | `owner_id` | string | No | User ID of the opportunity owner | | `closed_date` | string | No | Expected close date in YYYY-MM-DD format | | `typed_custom_fields` | json | No | Custom field values as \{ custom\_field\_id: value } map | #### Output [#output-19] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------ | | `opportunity` | json | Updated opportunity data from Apollo | | `updated` | boolean | Whether the opportunity was successfully updated | ### Apollo Search Sequences [#apollo-search-sequences] Search for sequences/campaigns in your team's Apollo account (master key required) #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `q_name` | string | No | Search sequences by name (e.g., "Outbound Q1", "Follow-up") | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------- | | `sequences` | json | Array of sequences/campaigns matching the search criteria | | `page` | number | Current page number | | `per_page` | number | Results per page | | `total_entries` | number | Total matching entries | ### Apollo Add Contacts to Sequence [#apollo-add-contacts-to-sequence] Add contacts to an Apollo sequence #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Apollo API key (master key required) | | `sequence_id` | string | Yes | ID of the sequence to add contacts to (e.g., "seq\_abc123") | | `contact_ids` | array | No | Array of contact IDs to add to the sequence (e.g., \["con\_abc123", "con\_def456"]). Either contact\_ids or label\_names must be provided. | | `label_names` | array | No | Array of label names to identify contacts to add to the sequence. Either contact\_ids or label\_names must be provided. | | `send_email_from_email_account_id` | string | Yes | ID of the email account to send from. Use the Get Email Accounts operation to look this up. | | `send_email_from_email_address` | string | No | Specific email address to send from within the email account. | | `sequence_no_email` | boolean | No | Add contacts even if they have no email address | | `sequence_unverified_email` | boolean | No | Add contacts with unverified email addresses | | `sequence_job_change` | boolean | No | Add contacts who recently changed jobs | | `sequence_active_in_other_campaigns` | boolean | No | Add contacts active in other campaigns | | `sequence_finished_in_other_campaigns` | boolean | No | Add contacts who finished other campaigns | | `sequence_same_company_in_same_campaign` | boolean | No | Add contacts even if others from the same company are in the sequence | | `contacts_without_ownership_permission` | boolean | No | Add contacts without ownership permission | | `add_if_in_queue` | boolean | No | Add contacts even if they are in the queue | | `contact_verification_skipped` | boolean | No | Skip contact verification when adding | | `user_id` | string | No | ID of the user performing the action | | `status` | string | No | Initial status for added contacts: "active" or "paused" | | `auto_unpause_at` | string | No | ISO 8601 datetime to automatically unpause contacts | #### Output [#output-21] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------- | | `added` | json | Array of contact objects successfully added to the sequence | | `skipped` | json | Array of contact objects that were skipped, with reasons | | `skipped_contact_ids` | json | Skipped contact IDs — either an array of IDs or a hash mapping ID → reason code | | `emailer_campaign` | json | Details of the emailer campaign (id, name) | | `sequence_id` | string | ID of the sequence contacts were added to | | `total_added` | number | Total number of contacts added | | `total_skipped` | number | Total number of contacts skipped | ### Apollo Create Task [#apollo-create-task] Create one or more tasks in Apollo (one task per contact\_id, master key required) #### Input [#input-22] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `user_id` | string | Yes | ID of the Apollo user the task is assigned to | | `contact_ids` | array | Yes | Array of contact IDs. One task is created per contact. | | `priority` | string | No | Task priority: "high", "medium", or "low" (defaults to "medium") | | `due_at` | string | Yes | Due date/time in ISO 8601 format (e.g., "2024-12-31T23:59:59Z") | | `type` | string | Yes | Task type: "call", "outreach\_manual\_email", "linkedin\_step\_connect", "linkedin\_step\_message", "linkedin\_step\_view\_profile", "linkedin\_step\_interact\_post", or "action\_item" | | `status` | string | Yes | Task status: "scheduled", "completed", or "skipped" | | `note` | string | No | Free-form note providing context for the task | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------ | | `tasks` | json | Array of created tasks (when returned by Apollo) | | `created` | boolean | Whether the request succeeded | ### Apollo Search Tasks [#apollo-search-tasks] Search for tasks in Apollo #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Apollo API key (master key required) | | `sort_by_field` | string | No | Sort field: "task\_due\_at" or "task\_priority" | | `open_factor_names` | array | No | Filter by status. Common values: \["task\_types"] for open tasks, \["task\_completed\_at"] for completed tasks. | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `per_page` | number | No | Results per page, max 100 (e.g., 25, 50, 100) | #### Output [#output-23] | Parameter | Type | Description | | ------------ | ---- | ------------------------------------------- | | `tasks` | json | Array of tasks matching the search criteria | | `pagination` | json | Pagination information | ### Apollo Get Email Accounts [#apollo-get-email-accounts] Get list of team's linked email accounts in Apollo #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Apollo API key (master key required) | #### Output [#output-24] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------- | | `email_accounts` | json | Array of team email accounts linked in Apollo | | `total` | number | Total count of email accounts | --- # AWS AppConfig (/integrations/appconfig) {/* MANUAL-CONTENT-START:intro */} Use [AWS AppConfig](https://docs.aws.amazon.com/appconfig/) to manage applications, environments, configuration profiles, and deployments. Read deployed configuration at runtime or create hosted configuration versions for a rollout. Authentication uses an AWS access key ID and secret access key. The associated IAM principal needs the relevant `appconfig:*` permissions (for example `appconfig:GetLatestConfiguration` and `appconfig:StartConfigurationSession` for retrieval, and `appconfig:StartDeployment` for rollouts). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS AppConfig into workflows. Manage applications, environments, and configuration profiles, create and read hosted configuration versions, run and inspect deployments, and retrieve the latest deployed configuration at runtime. Requires AWS access key and secret access key. ## Actions [#actions] ### AppConfig Get Configuration [#appconfig-get-configuration] Retrieve the latest deployed configuration for an AppConfig application, environment, and profile #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID or name to retrieve configuration for | | `environmentId` | string | Yes | The environment ID or name to retrieve configuration for | | `configurationProfileId` | string | Yes | The configuration profile ID or name to retrieve | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `configuration` | string | The deployed configuration content | | `contentType` | string | Content type of the configuration | | `versionLabel` | string | Label of the retrieved configuration version | ### AppConfig List Applications [#appconfig-list-applications] List applications in AWS AppConfig #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum number of applications to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `applications` | array | List of AppConfig applications | | ↳ `id` | string | Application ID | | ↳ `name` | string | Application name | | ↳ `description` | string | Application description | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of applications returned | ### AppConfig Create Application [#appconfig-create-application] Create an application in AWS AppConfig #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `name` | string | Yes | Name of the application to create | | `description` | string | No | Description of the application | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `message` | string | Operation status message | | `id` | string | ID of the created application | | `name` | string | Name of the created application | | `description` | string | Description of the created application | ### AppConfig Get Application [#appconfig-get-application] Get details about a single AWS AppConfig application #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to retrieve | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ----------------------- | | `id` | string | Application ID | | `name` | string | Application name | | `description` | string | Application description | ### AppConfig Update Application [#appconfig-update-application] Update the name or description of an AWS AppConfig application #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to update | | `name` | string | No | New name for the application | | `description` | string | No | New description for the application | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `message` | string | Operation status message | | `id` | string | ID of the updated application | | `name` | string | Name of the updated application | | `description` | string | Description of the updated application | ### AppConfig Delete Application [#appconfig-delete-application] Delete an AWS AppConfig application #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to delete | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `message` | string | Operation status message | | `id` | string | ID of the deleted application | ### AppConfig List Environments [#appconfig-list-environments] List environments for an AWS AppConfig application #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the environments | | `maxResults` | number | No | Maximum number of environments to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `environments` | array | List of AppConfig environments | | ↳ `applicationId` | string | Owning application ID | | ↳ `id` | string | Environment ID | | ↳ `name` | string | Environment name | | ↳ `description` | string | Environment description | | ↳ `state` | string | Environment state | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of environments returned | ### AppConfig Create Environment [#appconfig-create-environment] Create an environment for an AWS AppConfig application #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to create the environment in | | `name` | string | Yes | Name of the environment to create | | `description` | string | No | Description of the environment | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the created environment | | `name` | string | Name of the created environment | | `state` | string | State of the created environment | ### AppConfig Get Environment [#appconfig-get-environment] Get details about a single AWS AppConfig environment #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the environment | | `environmentId` | string | Yes | The environment ID to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------- | | `applicationId` | string | Owning application ID | | `id` | string | Environment ID | | `name` | string | Environment name | | `description` | string | Environment description | | `state` | string | Environment state | | `monitors` | array | CloudWatch alarms monitoring this environment | | ↳ `alarmArn` | string | CloudWatch alarm ARN | | ↳ `alarmRoleArn` | string | IAM role ARN for the alarm | ### AppConfig Update Environment [#appconfig-update-environment] Update the name or description of an AWS AppConfig environment #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the environment | | `environmentId` | string | Yes | The environment ID to update | | `name` | string | No | New name for the environment | | `description` | string | No | New description for the environment | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the updated environment | | `name` | string | Name of the updated environment | | `state` | string | State of the updated environment | ### AppConfig Delete Environment [#appconfig-delete-environment] Delete an AWS AppConfig environment #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the environment | | `environmentId` | string | Yes | The environment ID to delete | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the deleted environment | ### AppConfig List Configuration Profiles [#appconfig-list-configuration-profiles] List configuration profiles for an AWS AppConfig application #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profiles | | `maxResults` | number | No | Maximum number of configuration profiles to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------- | | `configurationProfiles` | array | List of AppConfig configuration profiles | | ↳ `applicationId` | string | Owning application ID | | ↳ `id` | string | Configuration profile ID | | ↳ `name` | string | Configuration profile name | | ↳ `locationUri` | string | Location URI of the config | | ↳ `type` | string | Profile type (e.g., AWS.Freeform) | | ↳ `validatorTypes` | array | Validator types configured | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of configuration profiles returned | ### AppConfig Create Configuration Profile [#appconfig-create-configuration-profile] Create a configuration profile in an AWS AppConfig application #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to create the configuration profile in | | `name` | string | Yes | Name of the configuration profile | | `locationUri` | string | Yes | Where the configuration is stored. Use "hosted" for AppConfig-hosted configurations, or an SSM/S3 URI | | `description` | string | No | Description of the configuration profile | | `retrievalRoleArn` | string | No | ARN of an IAM role to retrieve the configuration (required for non-hosted URIs) | | `type` | string | No | Profile type: AWS.Freeform (default) or AWS.AppConfig.FeatureFlags | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the created configuration profile | | `name` | string | Name of the created configuration profile | | `locationUri` | string | Location URI of the config | | `type` | string | Profile type | ### AppConfig Get Configuration Profile [#appconfig-get-configuration-profile] Get details about a single AWS AppConfig configuration profile #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to retrieve | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------- | | `applicationId` | string | Owning application ID | | `id` | string | Configuration profile ID | | `name` | string | Configuration profile name | | `description` | string | Profile description | | `locationUri` | string | Location URI of the config | | `retrievalRoleArn` | string | IAM retrieval role ARN | | `type` | string | Profile type (e.g., AWS.Freeform) | | `validators` | array | Validators configured on the profile | | ↳ `type` | string | Validator type (JSON\_SCHEMA or LAMBDA) | ### AppConfig Update Configuration Profile [#appconfig-update-configuration-profile] Update the name, description, or retrieval role of an AppConfig configuration profile #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to update | | `name` | string | No | New name for the configuration profile | | `description` | string | No | New description for the configuration profile | | `retrievalRoleArn` | string | No | New ARN of the IAM role used to retrieve the configuration | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the updated configuration profile | | `name` | string | Name of the updated configuration profile | | `description` | string | Description of the profile | | `type` | string | Profile type | ### AppConfig Delete Configuration Profile [#appconfig-delete-configuration-profile] Delete an AWS AppConfig configuration profile #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to delete | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `id` | string | ID of the deleted configuration profile | ### AppConfig Create Hosted Configuration Version [#appconfig-create-hosted-configuration-version] Create a new hosted configuration version for an AppConfig configuration profile #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to add the version to | | `content` | string | Yes | The configuration content (e.g., a JSON or YAML document) | | `contentType` | string | Yes | Content type of the configuration (e.g., application/json, text/plain) | | `description` | string | No | Description of the configuration version | | `latestVersionNumber` | number | No | The version number of the latest version, used for optimistic concurrency | | `versionLabel` | string | No | A user-defined label for the configuration version | #### Output [#output-16] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `configurationProfileId` | string | Owning configuration profile ID | | `versionNumber` | number | Version number of the created configuration | | `contentType` | string | Content type of the configuration | | `versionLabel` | string | Label of the configuration version | ### AppConfig Get Hosted Configuration Version [#appconfig-get-hosted-configuration-version] Retrieve a specific hosted configuration version from an AppConfig profile #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to read the version from | | `versionNumber` | number | Yes | The version number to retrieve | #### Output [#output-17] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------- | | `applicationId` | string | Owning application ID | | `configurationProfileId` | string | Owning configuration profile ID | | `versionNumber` | number | Version number | | `description` | string | Description of the version | | `content` | string | The configuration content | | `contentType` | string | Content type of the configuration | | `versionLabel` | string | Label of the configuration version | ### AppConfig List Hosted Configuration Versions [#appconfig-list-hosted-configuration-versions] List hosted configuration versions for an AWS AppConfig configuration profile #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID to list versions for | | `maxResults` | number | No | Maximum number of versions to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-18] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------- | | `versions` | array | List of hosted configuration versions | | ↳ `applicationId` | string | Owning application ID | | ↳ `configurationProfileId` | string | Owning configuration profile ID | | ↳ `versionNumber` | number | Version number | | ↳ `description` | string | Description of the version | | ↳ `contentType` | string | Content type of the configuration | | ↳ `versionLabel` | string | Label of the configuration version | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of versions returned | ### AppConfig Delete Hosted Configuration Version [#appconfig-delete-hosted-configuration-version] Delete a specific hosted configuration version from an AppConfig profile #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID that owns the configuration profile | | `configurationProfileId` | string | Yes | The configuration profile ID that owns the version | | `versionNumber` | number | Yes | The version number to delete | #### Output [#output-19] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------- | | `message` | string | Operation status message | | `applicationId` | string | Owning application ID | | `configurationProfileId` | string | Owning configuration profile ID | | `versionNumber` | number | Version number that was deleted | ### AppConfig List Deployment Strategies [#appconfig-list-deployment-strategies] List deployment strategies available in AWS AppConfig #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum number of deployment strategies to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-20] | Parameter | Type | Description | | ------------------------------- | ------ | ---------------------------------------- | | `deploymentStrategies` | array | List of AppConfig deployment strategies | | ↳ `id` | string | Deployment strategy ID | | ↳ `name` | string | Deployment strategy name | | ↳ `description` | string | Strategy description | | ↳ `deploymentDurationInMinutes` | number | Total deployment duration in minutes | | ↳ `growthType` | string | Growth type (LINEAR or EXPONENTIAL) | | ↳ `growthFactor` | number | Growth factor percentage | | ↳ `finalBakeTimeInMinutes` | number | Final bake time in minutes | | ↳ `replicateTo` | string | Where the strategy is replicated | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of deployment strategies returned | ### AppConfig Start Deployment [#appconfig-start-deployment] Start deploying a configuration version to an AWS AppConfig environment #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID to deploy in | | `environmentId` | string | Yes | The environment ID to deploy to | | `deploymentStrategyId` | string | Yes | The deployment strategy ID to use | | `configurationProfileId` | string | Yes | The configuration profile ID to deploy | | `configurationVersion` | string | Yes | The configuration version to deploy | | `description` | string | No | Description of the deployment | #### Output [#output-21] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------- | | `message` | string | Operation status message | | `deploymentNumber` | number | Sequence number of the deployment | | `state` | string | Current deployment state | | `percentageComplete` | number | Percentage of the deployment that has completed | ### AppConfig Get Deployment [#appconfig-get-deployment] Get details about a specific AWS AppConfig deployment #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID of the deployment | | `environmentId` | string | Yes | The environment ID of the deployment | | `deploymentNumber` | number | Yes | The sequence number of the deployment | #### Output [#output-22] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------- | | `applicationId` | string | Application ID | | `environmentId` | string | Environment ID | | `deploymentStrategyId` | string | Deployment strategy ID | | `configurationProfileId` | string | Configuration profile ID | | `deploymentNumber` | number | Deployment sequence number | | `configurationName` | string | Configuration name | | `configurationVersion` | string | Configuration version | | `description` | string | Deployment description | | `state` | string | Current deployment state | | `percentageComplete` | number | Percentage completed | | `startedAt` | string | When the deployment started | | `completedAt` | string | When the deployment completed | ### AppConfig List Deployments [#appconfig-list-deployments] List deployments for an AWS AppConfig environment #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID of the deployments | | `environmentId` | string | Yes | The environment ID of the deployments | | `maxResults` | number | No | Maximum number of deployments to return (1-50) | | `nextToken` | string | No | Pagination token from a previous response | #### Output [#output-23] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------- | | `deployments` | array | List of AppConfig deployments | | ↳ `deploymentNumber` | number | Deployment sequence number | | ↳ `configurationName` | string | Configuration name | | ↳ `configurationVersion` | string | Configuration version | | ↳ `state` | string | Current deployment state | | ↳ `percentageComplete` | number | Percentage completed | | ↳ `startedAt` | string | When the deployment started | | ↳ `completedAt` | string | When the deployment completed | | ↳ `versionLabel` | string | Configuration version label | | `nextToken` | string | Pagination token for the next page | | `count` | number | Number of deployments returned | ### AppConfig Stop Deployment [#appconfig-stop-deployment] Stop an in-progress AWS AppConfig deployment #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `applicationId` | string | Yes | The application ID of the deployment | | `environmentId` | string | Yes | The environment ID of the deployment | | `deploymentNumber` | number | Yes | The sequence number of the deployment to stop | #### Output [#output-24] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------- | | `message` | string | Operation status message | | `deploymentNumber` | number | Deployment sequence number | | `state` | string | Deployment state after stopping | --- # ArXiv (/integrations/arxiv) {/* MANUAL-CONTENT-START:intro */} [arXiv](https://arxiv.org/) hosts research papers. Search by keyword, author, title, or category, retrieve a paper’s metadata, or list papers by an author. This integration does not require an API key or OAuth connection. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates ArXiv into the workflow. Can search for papers, get paper details, and get author papers. Does not require OAuth or an API key. ## Actions [#actions] ### ArXiv Search [#arxiv-search] Search for academic papers on ArXiv by keywords, authors, titles, or other fields. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `searchQuery` | string | Yes | The search query to execute | | `searchField` | string | No | Field to search in: all, ti (title), au (author), abs (abstract), co (comment), jr (journal), cat (category), rn (report number) | | `maxResults` | number | No | Maximum number of results to return (default: 10, max: 2000) | | `sortBy` | string | No | Sort by: relevance, lastUpdatedDate, submittedDate (default: relevance) | | `sortOrder` | string | No | Sort order: ascending, descending (default: descending) | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------- | | `papers` | json | Array of papers matching the search query | | `totalResults` | number | Total number of results found for the search query | ### ArXiv Get Paper [#arxiv-get-paper] Get detailed information about a specific ArXiv paper by its ID. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `paperId` | string | Yes | ArXiv paper ID (e.g., "1706.03762") | #### Output [#output-1] | Parameter | Type | Description | | --------- | ---- | ---------------------------------------------------- | | `paper` | json | Detailed information about the requested ArXiv paper | ### ArXiv Get Author Papers [#arxiv-get-author-papers] Search for papers by a specific author on ArXiv. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `authorName` | string | Yes | Author name to search for | | `maxResults` | number | No | Maximum number of results to return (default: 10, max: 2000) | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `authorPapers` | json | Array of papers authored by the specified author | | `totalResults` | number | Total number of papers found for the author | --- # Asana Service Accounts & Personal Access Tokens (/integrations/asana-service-account) Agent Serve accepts an Asana service account token or a personal access token. Service accounts use a separate bot identity; personal access tokens use the permissions of the user who created them. There are two ways to get a token, and both work in Agent Serve: * **Service account token** (recommended for teams) — available on Asana **Enterprise** and **Enterprise+** plans, created by a super admin in the Admin Console. * **Personal access token (PAT)** — available on any plan, created from any user account. For production workflows, create it from a dedicated bot account rather than a personal one. Both token types use the same format and paste into the same field in Agent Serve. ## Option A: Service Account Token (Enterprise / Enterprise+) [#option-a-service-account-token-enterprise--enterprise] ### Prerequisites [#prerequisites] You need an Asana **super admin** on an **Enterprise** or **Enterprise+** plan. Service accounts are an organization-level feature — regular users cannot create them. ### Create the Service Account [#create-the-service-account] Open the Asana **Admin Console** and go to **Apps** → **Service accounts** {/* TODO(screenshot): Asana Admin Console with Apps → Service accounts highlighted */} Click **Add service account**, give it a name (e.g. `Agent Serve Integration`) — this is the name that will appear on tasks and comments the workflows create Grant the service account **Full Permissions**. Scoped service accounts (for example, ones limited to User Provisioning / SCIM) cannot call the standard Asana API and will fail when you connect them to Agent Serve {/* TODO(screenshot): service account permission picker with "Full Permissions" selected */} Copy the token when it's shown. Asana only displays it once — if you lose it, you'll have to regenerate it — plan to update the credential in Agent Serve at the same time, since the old token stops working once it's replaced. A service account with Full Permissions has org-wide access to all data in your Asana organization, including private projects. Treat the token like an admin password. ## Option B: Personal Access Token [#option-b-personal-access-token] If you're not on an Enterprise plan, a personal access token works identically on the wire. For production workflows, create a dedicated bot user account (e.g. `agentserve-bot@yourcompany.com`) and generate the PAT from that account — a PAT is tied to the user who created it, inherits only that user's permissions, and stops working if the user is deprovisioned. Log in as the bot account and open the developer console at [app.asana.com/0/my-apps](https://app.asana.com/0/my-apps) {/* TODO(screenshot): Asana developer console "My apps" page with "Create new token" button */} Click **+ Create new token**, give it a name that describes its use (e.g. `Agent Serve Integration`), and click **Create token** Copy the token immediately — Asana only shows it once. Add the bot account to the workspaces and projects your workflows need. A PAT can only see what its user can see. ## Adding the Token to Agent Serve [#adding-the-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Asana" and open it, then click **Add to Agent Serve** and choose **Add access token** {/* TODO(screenshot): Asana integration page with the service-account connect option */} Paste the token — service account token or personal access token, both work in the same field — and optionally set a display name and description {/* TODO(screenshot): Add Asana access token dialog with the access token filled in */} Click **Add access token**. Agent Serve verifies the token by calling Asana's `/users/me` endpoint — if it fails, you'll see a specific error explaining what went wrong. If a brand-new token fails validation with an authentication error, wait a few minutes and try again — newly created service account tokens can take a short time to become active. The token is encrypted before being stored. ## Using the Service Account in Workflows [#using-the-service-account-in-workflows] Add an Asana block to your workflow. In the credential dropdown, your Asana service account appears alongside any OAuth credentials. Select it and configure the block as you normally would. {/* TODO(screenshot): Asana block in a workflow with the service account selected as the credential */} The block calls the Asana API (`app.asana.com/api/1.0`) with the token as a standard Bearer credential. There's no impersonation step — the token acts as itself: the service account identity, or the bot user for a PAT. --- # Asana (/integrations/asana) {/* MANUAL-CONTENT-START:intro */} Use [Asana](https://asana.com/) in Agent Serve to manage tasks, projects, sections, comments, and followers. Workflows can create tasks, update their status or assignees, and read project and workspace data. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Asana into the workflow. Can read, write, and update tasks. ## Actions [#actions] ### Asana Get Task [#asana-get-task] Retrieve a single task by GID or get multiple tasks with filters #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `taskGid` | string | No | The globally unique identifier (GID) of the task. If not provided, will get multiple tasks. | | `workspace` | string | No | Asana workspace GID (numeric string) to filter tasks (required when not using taskGid) | | `project` | string | No | Asana project GID (numeric string) to filter tasks | | `limit` | number | No | Maximum number of tasks to return (default: 50) | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Task globally unique identifier | | `resource_type` | string | Resource type (task) | | `resource_subtype` | string | Resource subtype | | `name` | string | Task name | | `notes` | string | Task notes or description | | `completed` | boolean | Whether the task is completed | | `assignee` | object | Assignee details | | ↳ `gid` | string | Assignee GID | | ↳ `name` | string | Assignee name | | `created_by` | object | Creator details | | ↳ `gid` | string | Creator GID | | ↳ `name` | string | Creator name | | `due_on` | string | Due date (YYYY-MM-DD) | | `created_at` | string | Task creation timestamp | | `modified_at` | string | Task last modified timestamp | | `tasks` | array | Array of tasks (when fetching multiple) | | ↳ `gid` | string | Task GID | | ↳ `name` | string | Task name | | ↳ `completed` | boolean | Completion status | ### Asana Create Task [#asana-create-task] Create a new task in Asana #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `workspace` | string | Yes | Asana workspace GID (numeric string) where the task will be created | | `name` | string | Yes | Name of the task | | `notes` | string | No | Notes or description for the task | | `assignee` | string | No | User GID to assign the task to | | `due_on` | string | No | Due date in YYYY-MM-DD format | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Task globally unique identifier | | `name` | string | Task name | | `notes` | string | Task notes or description | | `completed` | boolean | Whether the task is completed | | `created_at` | string | Task creation timestamp | | `permalink_url` | string | URL to the task in Asana | ### Asana Update Task [#asana-update-task] Update an existing task in Asana #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------- | | `taskGid` | string | Yes | Asana task GID (numeric string) of the task to update | | `name` | string | No | Updated name for the task | | `notes` | string | No | Updated notes or description for the task | | `assignee` | string | No | Updated assignee user GID | | `completed` | boolean | No | Mark task as completed or not completed | | `due_on` | string | No | Updated due date in YYYY-MM-DD format | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------- | ------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Task globally unique identifier | | `name` | string | Task name | | `notes` | string | Task notes or description | | `completed` | boolean | Whether the task is completed | | `modified_at` | string | Task last modified timestamp | ### Asana Get Projects [#asana-get-projects] Retrieve all projects from an Asana workspace #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------- | | `workspace` | string | Yes | Asana workspace GID (numeric string) to retrieve projects from | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `projects` | array | Array of projects | | ↳ `gid` | string | Project GID | | ↳ `name` | string | Project name | | ↳ `resource_type` | string | Resource type (project) | ### Asana Search Tasks [#asana-search-tasks] Search for tasks in an Asana workspace #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------------------- | | `workspace` | string | Yes | Asana workspace GID (numeric string) to search tasks in | | `text` | string | No | Text to search for in task names | | `assignee` | string | No | Filter tasks by assignee user GID | | `projects` | array | No | Array of Asana project GIDs (numeric strings) to filter tasks by | | `completed` | boolean | No | Filter by completion status | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `tasks` | array | Array of matching tasks | | ↳ `gid` | string | Task GID | | ↳ `resource_type` | string | Resource type | | ↳ `resource_subtype` | string | Resource subtype | | ↳ `name` | string | Task name | | ↳ `notes` | string | Task notes | | ↳ `completed` | boolean | Completion status | | ↳ `assignee` | object | Assignee details | | ↳ `gid` | string | Assignee GID | | ↳ `name` | string | Assignee name | | ↳ `due_on` | string | Due date | | ↳ `created_at` | string | Creation timestamp | | ↳ `modified_at` | string | Modified timestamp | | `next_page` | object | Pagination info | | ↳ `offset` | string | Offset token | | ↳ `path` | string | API path | | ↳ `uri` | string | Full URI | ### Asana Add Comment [#asana-add-comment] Add a comment (story) to an Asana task #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `taskGid` | string | Yes | Asana task GID (numeric string) | | `text` | string | Yes | The text content of the comment | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Comment globally unique identifier | | `text` | string | Comment text content | | `created_at` | string | Comment creation timestamp | | `created_by` | object | Comment author details | | ↳ `gid` | string | Author GID | | ↳ `name` | string | Author name | ### Asana Create Subtask [#asana-create-subtask] Create a subtask under an existing Asana task #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------- | | `taskGid` | string | Yes | GID of the parent Asana task (numeric string) | | `name` | string | Yes | Name of the subtask | | `notes` | string | No | Notes or description for the subtask | | `assignee` | string | No | User GID to assign the subtask to | | `due_on` | string | No | Due date in YYYY-MM-DD format | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Subtask globally unique identifier | | `name` | string | Subtask name | | `notes` | string | Subtask notes or description | | `completed` | boolean | Whether the subtask is completed | | `created_at` | string | Subtask creation timestamp | | `permalink_url` | string | URL to the subtask in Asana | ### Asana Delete Task [#asana-delete-task] Delete an Asana task by its GID (moves it to the trash) #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `taskGid` | string | Yes | GID of the Asana task to delete (numeric string) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | GID of the deleted task | | `deleted` | boolean | Whether the task was deleted | ### Asana Add Followers [#asana-add-followers] Add one or more followers to an Asana task #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `taskGid` | string | Yes | GID of the Asana task (numeric string) | | `followers` | array | Yes | Array of user GIDs to add as followers to the task | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Task globally unique identifier | | `name` | string | Task name | | `followers` | array | Current followers on the task after the update | | ↳ `gid` | string | Follower GID | | ↳ `name` | string | Follower name | ### Asana Create Project [#asana-create-project] Create a new project in an Asana workspace #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `workspace` | string | Yes | Asana workspace GID (numeric string) where the project will be created | | `name` | string | Yes | Name of the project | | `notes` | string | No | Notes or description for the project | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Project globally unique identifier | | `name` | string | Project name | | `notes` | string | Project notes or description | | `archived` | boolean | Whether the project is archived | | `color` | string | Project color | | `created_at` | string | Project creation timestamp | | `modified_at` | string | Project last modified timestamp | | `permalink_url` | string | URL to the project in Asana | ### Asana Get Project [#asana-get-project] Retrieve a single Asana project by its GID #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `projectGid` | string | Yes | Asana project GID (numeric string) to retrieve | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Project globally unique identifier | | `name` | string | Project name | | `notes` | string | Project notes or description | | `archived` | boolean | Whether the project is archived | | `color` | string | Project color | | `created_at` | string | Project creation timestamp | | `modified_at` | string | Project last modified timestamp | | `permalink_url` | string | URL to the project in Asana | ### Asana List Workspaces [#asana-list-workspaces] List all Asana workspaces and organizations the authenticated user belongs to #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------- | ------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `workspaces` | array | Array of workspaces | | ↳ `gid` | string | Workspace GID | | ↳ `name` | string | Workspace name | | ↳ `resource_type` | string | Resource type (workspace) | ### Asana Create Section [#asana-create-section] Create a new section in an Asana project #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `projectGid` | string | Yes | GID of the Asana project (numeric string) to add the section to | | `name` | string | Yes | Name of the section | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `gid` | string | Section globally unique identifier | | `name` | string | Section name | | `created_at` | string | Section creation timestamp | ### Asana List Sections [#asana-list-sections] List all sections in an Asana project #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `projectGid` | string | Yes | GID of the Asana project (numeric string) to list sections from | #### Output [#output-13] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------- | | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `sections` | array | Array of sections in the project | | ↳ `gid` | string | Section GID | | ↳ `name` | string | Section name | | ↳ `resource_type` | string | Resource type (section) | --- # Ashby (/integrations/ashby) {/* MANUAL-CONTENT-START:intro */} Use [Ashby](https://www.ashbyhq.com/) to manage recruiting records and react to hiring events. List Jobs supports incremental sync tokens; custom-field actions annotate jobs, openings, applications, and candidates. The Ashby block also supports **webhook triggers** that automatically start workflows in response to Ashby events. Available triggers include Application Submitted, Candidate Stage Change, Candidate Hired, Candidate Deleted, Job Created, and Offer Created. Webhooks are fully managed — Agent Serve automatically creates the webhook in Ashby when you save the trigger and deletes it when you remove it, so there's no manual webhook configuration needed. Just provide your Ashby API key (with `apiKeysWrite` permission) and select the event type. ## API key permissions [#api-key-permissions] Ashby grants permissions per module rather than per endpoint, and a missing permission fails at **runtime**, not when you build the workflow. A key without the right scope returns a 403 in the middle of a run, so check the key before scheduling anything against it. | Permission | Covers | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | | `jobsRead` | List Jobs, Get Job, List Job Postings, Get Job Posting | | `candidatesRead` | Application and candidate reads | | `candidatesWrite` | Create Candidate, Create Application, Set Custom Field Value, Set Custom Field Values, Change Application Source, Anonymize Candidate | | `candidatesDelete` | Delete Application. This is separate from `candidatesWrite` - a read and write key returns 403 here | | `apiKeysWrite` | Managed webhook triggers | `candidatesDelete` is a module permission, not an endpoint one, and Delete Application sits under the Candidates module. Two more settings on the API key are checkboxes rather than module scopes, and both are easy to miss: * **Allow access to confidential jobs and projects.** Without it, confidential reqs and the candidates on them are invisible to the key entirely - they do not appear in List Jobs at all, rather than appearing with fields hidden. * **Allow access to non-offer private fields.** This gates custom fields marked private outside of offers. Every job returned by List Jobs carries a `confidential` flag, so you can filter confidential reqs out at sync time before they reach a prompt or a downstream surface. ## Ashby API limitations [#ashby-api-limitations] These are constraints of the Ashby API itself, not of the Agent Serve block: * **No notes or tags on a job or req.** Both are candidate-scoped in Ashby. Custom field values are the only way to annotate a job, which is what Set Custom Field Value is for. Writing `null` clears a value, so the annotation is reversible. * **No pagination on List Job Postings.** The endpoint returns every posting in one response, with no cursor, page limit, or sync token. Paginate through List Jobs instead when you need to page. * **No way to delete, archive, or update a custom field definition.** Creating one is irreversible, so never create throwaway field definitions against a shared organization. * **No note deletion endpoint.** Notes can be created and listed but never removed. * **No candidate deletion endpoint.** Anonymize Candidate strips personal information but leaves the record and its applications in place. Real deletion is available only in the Ashby UI, is limited to a 10-day window, and is restricted to certain roles. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Ashby into the workflow. Manage and search candidates, applications, jobs, users, and openings; transfer applications; upload resumes and candidate files; read application history and interview feedback; manage offers, notes, tags, stages, sources, and custom fields; and react to hiring lifecycle webhooks. ## Actions [#actions] ### Ashby Add Candidate Tag [#ashby-add-candidate-tag] Adds a tag to a candidate in Ashby and returns the updated candidate. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `candidateId` | string | Yes | The UUID of the candidate to add the tag to | | `tagId` | string | Yes | The UUID of the tag to add | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Anonymize Candidate [#ashby-anonymize-candidate] Strips personally identifiable information from a candidate in Ashby. This does not delete the candidate - the record and its applications remain, with the PII removed. Ashby exposes no candidate deletion endpoint; true deletion is UI-only, restricted by role, and limited to a 10-day window. Requires the candidatesWrite permission. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `candidateId` | string | Yes | UUID of the candidate to anonymize | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Change Application Source [#ashby-change-application-source] Changes the source attributed to an existing application, so programmatically created applications report correctly on the recruiting side. Requires the candidatesWrite permission. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `applicationId` | string | Yes | UUID of the application whose source should change | | `sourceId` | string | No | UUID of the source to attribute the application to, as returned by List Sources. Omit only when unsetSource is true. | | `unsetSource` | boolean | No | Set true to deliberately clear the application source. Required to unset, so that a missing or empty sourceId cannot wipe attribution by accident. | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Change Application Stage [#ashby-change-application-stage] Moves an application to a different interview stage. Requires an archive reason when moving to an Archived stage. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `applicationId` | string | Yes | The UUID of the application to update the stage of | | `interviewStageId` | string | Yes | The UUID of the interview stage to move the application to | | `archiveReasonId` | string | No | Archive reason UUID. Required when moving to an Archived stage, ignored otherwise | | `archiveEmail` | json | No | Archive email configuration with communicationTemplateId and optional sendAt ISO 8601 timestamp. Pass null or omit to send no archive email. | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Create Application [#ashby-create-application] Creates a new application for a candidate on a job. Optionally specify interview plan, stage, source, and credited user. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `candidateId` | string | Yes | The UUID of the candidate to consider for the job | | `jobId` | string | Yes | The UUID of the job to consider the candidate for | | `interviewPlanId` | string | No | UUID of the interview plan to use (defaults to the job default plan) | | `interviewStageId` | string | No | UUID of the interview stage to place the application in, or FirstPreInterviewScreen (defaults to the first Lead stage) | | `sourceId` | string | No | UUID of the source to set on the application | | `creditedToUserId` | string | No | UUID of the user the application is credited to | | `createdAt` | string | No | ISO 8601 timestamp to set as the application creation date (defaults to now) | | `applicationHistory` | json | No | Optional documented application history entries to create with the application | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Create Candidate [#ashby-create-candidate] Creates a new candidate record in Ashby. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `name` | string | Yes | The candidate full name | | `email` | string | No | Primary email address for the candidate | | `phoneNumber` | string | No | Primary phone number for the candidate | | `linkedInUrl` | string | No | LinkedIn profile URL | | `githubUrl` | string | No | GitHub profile URL | | `website` | string | No | Personal website URL | | `sourceId` | string | No | UUID of the source to attribute the candidate to | | `creditedToUserId` | string | No | UUID of the Ashby user to credit with sourcing this candidate | | `createdAt` | string | No | Backdated creation timestamp in ISO 8601 (e.g. 2024-01-01T00:00:00Z). Defaults to now. | | `alternateEmailAddresses` | json | No | Array of additional email address strings to add to the candidate, e.g. \["[a@x.com](mailto:a@x.com)","[b@y.com](mailto:b@y.com)"] | | `location` | json | No | Candidate location object with optional city, region, and country | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidates` | json | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) | | `jobs` | json | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion) | | `applications` | json | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt) | | `notes` | json | List of notes (id, content, author, isPrivate, createdAt) | | `offers` | json | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus) | | `archiveReasons` | json | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived) | | `sources` | json | List of sources (id, title, isArchived, sourceType \{id, title, isArchived}) | | `customFields` | json | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value) | | `customField` | json | A single custom field value after a write (id, title, isPrivate, valueLabel, value) | | `departments` | json | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt) | | `locations` | json | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress) | | `jobPostings` | json | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt) | | `openings` | json | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[]) | | `users` | json | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt) | | `interviewSchedules` | json | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt) | | `interviewPlans` | json | Interview plans (id, title, isArchived, createdAt, updatedAt) | | `interviewStages` | json | Ordered interview stages for a plan | | `feedback` | json | Submitted application feedback with form definitions and values | | `history` | json | Application stage history and allowed actions | | `tags` | json | List of candidate tags (id, title, isArchived) | | `id` | string | Resource UUID | | `name` | string | Resource name | | `title` | string | Job title or job posting title | | `status` | string | Status | | `candidate` | json | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations. | | `job` | json | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt) | | `application` | json | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt) | | `offer` | json | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion) | | `jobPosting` | json | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true]) | | `content` | string | Note content | | `author` | json | Note author (id, firstName, lastName, email) | | `isPrivate` | boolean | Whether the note is private | | `createdAt` | string | ISO 8601 creation timestamp | | `applicationId` | string | UUID of the deleted application | | `moreDataAvailable` | boolean | Whether more pages exist | | `nextCursor` | string | Pagination cursor for next page | | `nextSyncCursor` | string | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output | ### Ashby Create Note [#ashby-create-note] Creates a note on a candidate in Ashby. Supports plain text and HTML content (bold, italic, underline, links, lists, code). #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Ashby API Key | | `onBehalfOfUserId` | string | No | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls | | `candidateId` | string | Yes | The UUID of the candidate to add the note to | | `note` | string | Yes | The note content. If noteType is text/html, supports: \, \, \, \, \
    , \
      , \
    1. , \, \
       |
      | `noteType`          | string  | No       | Content type of the note: text/plain (default) or text/html                                                        |
      | `sendNotifications` | boolean | No       | Whether to send notifications to subscribed users (default false)                                                  |
      | `isPrivate`         | boolean | No       | Whether the note is private (only visible to the author)                                                           |
      | `createdAt`         | string  | No       | Backdated creation timestamp in ISO 8601 (e.g. 2024-01-01T00:00:00Z). Defaults to now.                             |
      
      #### Output [#output-6]
      
      | Parameter     | Type    | Description                 |
      | ------------- | ------- | --------------------------- |
      | `id`          | string  | Created note UUID           |
      | `createdAt`   | string  | ISO 8601 creation timestamp |
      | `isPrivate`   | boolean | Whether the note is private |
      | `content`     | string  | Note content                |
      | `author`      | object  | Author of the note          |
      | ↳ `id`        | string  | Author user UUID            |
      | ↳ `firstName` | string  | Author first name           |
      | ↳ `lastName`  | string  | Author last name            |
      | ↳ `email`     | string  | Author email                |
      
      ### Ashby Delete Application [#ashby-delete-application]
      
      Permanently deletes an application in Ashby. Requires the candidatesDelete permission, which is a separate module permission from candidatesWrite - a read and write key returns 403 here. There is no equivalent endpoint for deleting a candidate; candidate deletion is UI-only.
      
      #### Input [#input-7]
      
      | Parameter          | Type   | Required | Description                                                                                      |
      | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                                    |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
      | `applicationId`    | string | Yes      | UUID of the application to delete                                                                |
      
      #### Output [#output-7]
      
      | Parameter       | Type   | Description                     |
      | --------------- | ------ | ------------------------------- |
      | `applicationId` | string | UUID of the deleted application |
      
      ### Ashby Get Application [#ashby-get-application]
      
      Retrieves full details about a single application by its ID.
      
      #### Input [#input-8]
      
      | Parameter                 | Type   | Required | Description                                                              |
      | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ |
      | `apiKey`                  | string | Yes      | Ashby API Key                                                            |
      | `applicationId`           | string | No       | The UUID of the application to fetch                                     |
      | `submittedFormInstanceId` | string | No       | Submitted application-form instance UUID to use instead of applicationId |
      | `expand`                  | json   | No       | Ashby-supported application expansions to include                        |
      
      #### Output [#output-8]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Get Candidate [#ashby-get-candidate]
      
      Retrieves full details about a single candidate by their ID.
      
      #### Input [#input-9]
      
      | Parameter           | Type   | Required | Description                                                    |
      | ------------------- | ------ | -------- | -------------------------------------------------------------- |
      | `apiKey`            | string | Yes      | Ashby API Key                                                  |
      | `candidateId`       | string | No       | The UUID of the candidate to fetch                             |
      | `externalMappingId` | string | No       | External mapping ID to use instead of the Ashby candidate UUID |
      
      #### Output [#output-9]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Get Job [#ashby-get-job]
      
      Retrieves full details about a single job by its ID.
      
      #### Input [#input-10]
      
      | Parameter                         | Type    | Required | Description                                          |
      | --------------------------------- | ------- | -------- | ---------------------------------------------------- |
      | `apiKey`                          | string  | Yes      | Ashby API Key                                        |
      | `jobId`                           | string  | Yes      | The UUID of the job to fetch                         |
      | `includeUnpublishedJobPostingIds` | boolean | No       | Include IDs for unpublished job postings on this job |
      
      #### Output [#output-10]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Get Job Posting [#ashby-get-job-posting]
      
      Retrieves full details about a single job posting by its ID.
      
      #### Input [#input-11]
      
      | Parameter                       | Type    | Required | Description                                                                      |
      | ------------------------------- | ------- | -------- | -------------------------------------------------------------------------------- |
      | `apiKey`                        | string  | Yes      | Ashby API Key                                                                    |
      | `jobPostingId`                  | string  | Yes      | The UUID of the job posting to fetch                                             |
      | `jobBoardId`                    | string  | No       | Optional job board UUID. If omitted, returns posting for the external job board. |
      | `expandJob`                     | boolean | No       | Whether to expand and include the related job object in the response             |
      | `includeUnpublishedJobPostings` | boolean | No       | Allow retrieval of an unpublished or draft job posting                           |
      
      #### Output [#output-11]
      
      | Parameter                               | Type    | Description                                                                         |
      | --------------------------------------- | ------- | ----------------------------------------------------------------------------------- |
      | `id`                                    | string  | Job posting UUID                                                                    |
      | `title`                                 | string  | Job posting title                                                                   |
      | `descriptionPlain`                      | string  | Full description in plain text                                                      |
      | `descriptionHtml`                       | string  | Full description in HTML                                                            |
      | `descriptionSocial`                     | string  | Shortened description for social sharing (max 200 chars)                            |
      | `descriptionParts`                      | object  | Description broken into opening, body, and closing sections                         |
      | ↳ `descriptionOpening`                  | object  | Opening (from Job Boards theme settings)                                            |
      | ↳ `html`                                | string  | HTML content                                                                        |
      | ↳ `plain`                               | string  | Plain text content                                                                  |
      | ↳ `descriptionBody`                     | object  | Main description body                                                               |
      | ↳ `html`                                | string  | HTML content                                                                        |
      | ↳ `plain`                               | string  | Plain text content                                                                  |
      | ↳ `descriptionClosing`                  | object  | Closing (from Job Boards theme settings)                                            |
      | ↳ `html`                                | string  | HTML content                                                                        |
      | ↳ `plain`                               | string  | Plain text content                                                                  |
      | `departmentName`                        | string  | Department name                                                                     |
      | `teamName`                              | string  | Team name                                                                           |
      | `teamNameHierarchy`                     | array   | Hierarchy of team names from root to team                                           |
      | `jobId`                                 | string  | Associated job UUID                                                                 |
      | `locationName`                          | string  | Primary location name                                                               |
      | `locationIds`                           | object  | Primary and secondary location UUIDs                                                |
      | ↳ `primaryLocationId`                   | string  | Primary location UUID                                                               |
      | ↳ `secondaryLocationIds`                | array   | Secondary location UUIDs                                                            |
      | `address`                               | object  | Postal address of the posting location                                              |
      | ↳ `postalAddress`                       | object  | Structured postal address                                                           |
      | ↳ `addressCountry`                      | string  | Country                                                                             |
      | ↳ `addressRegion`                       | string  | State or region                                                                     |
      | ↳ `addressLocality`                     | string  | City or locality                                                                    |
      | ↳ `postalCode`                          | string  | Postal code                                                                         |
      | ↳ `streetAddress`                       | string  | Street address                                                                      |
      | `isRemote`                              | boolean | Whether the posting is remote                                                       |
      | `workplaceType`                         | string  | Workplace type (OnSite, Remote, Hybrid)                                             |
      | `employmentType`                        | string  | Employment type (FullTime, PartTime, Intern, Contract, Temporary)                   |
      | `isListed`                              | boolean | Whether publicly listed on the job board                                            |
      | `suppressDescriptionOpening`            | boolean | Whether the theme opening is hidden on this posting                                 |
      | `suppressDescriptionClosing`            | boolean | Whether the theme closing is hidden on this posting                                 |
      | `publishedDate`                         | string  | ISO 8601 published date                                                             |
      | `applicationDeadline`                   | string  | ISO 8601 application deadline                                                       |
      | `externalLink`                          | string  | External link to the job posting                                                    |
      | `applyLink`                             | string  | Direct apply link                                                                   |
      | `compensation`                          | object  | Compensation details for the posting                                                |
      | ↳ `compensationTierSummary`             | string  | Human-readable tier summary                                                         |
      | ↳ `summaryComponents`                   | array   | Structured compensation components                                                  |
      | ↳ `summary`                             | string  | Component summary                                                                   |
      | ↳ `compensationTypeLabel`               | string  | Component type label (Salary, Commission, Bonus, Equity, etc.)                      |
      | ↳ `interval`                            | string  | Payment interval (e.g. annual, hourly)                                              |
      | ↳ `currencyCode`                        | string  | ISO 4217 currency code                                                              |
      | ↳ `minValue`                            | number  | Minimum value                                                                       |
      | ↳ `maxValue`                            | number  | Maximum value                                                                       |
      | ↳ `shouldDisplayCompensationOnJobBoard` | boolean | Whether compensation is shown on the job board                                      |
      | `applicationLimitCalloutHtml`           | string  | HTML callout shown when the application limit is reached                            |
      | `updatedAt`                             | string  | ISO 8601 last update timestamp                                                      |
      | `job`                                   | object  | The expanded job object, only present when the request was made with expandJob=true |
      
      ### Ashby Get Offer [#ashby-get-offer]
      
      Retrieves full details about a single offer by its ID.
      
      #### Input [#input-12]
      
      | Parameter               | Type    | Required | Description                                      |
      | ----------------------- | ------- | -------- | ------------------------------------------------ |
      | `apiKey`                | string  | Yes      | Ashby API Key                                    |
      | `offerId`               | string  | Yes      | The UUID of the offer to fetch                   |
      | `excludeFormDefinition` | boolean | No       | Omit the offer form definition from the response |
      
      #### Output [#output-12]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Get Opening [#ashby-get-opening]
      
      Retrieves one Ashby headcount opening by UUID.
      
      #### Input [#input-13]
      
      | Parameter   | Type   | Required | Description   |
      | ----------- | ------ | -------- | ------------- |
      | `apiKey`    | string | Yes      | Ashby API Key |
      | `openingId` | string | Yes      | Opening UUID  |
      
      #### Output [#output-13]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby List Application Feedback [#ashby-list-application-feedback]
      
      Lists submitted interview feedback, optionally for one application, with pagination and incremental sync.
      
      #### Input [#input-14]
      
      | Parameter       | Type   | Required | Description                                           |
      | --------------- | ------ | -------- | ----------------------------------------------------- |
      | `apiKey`        | string | Yes      | Ashby API Key                                         |
      | `applicationId` | string | No       | Application UUID                                      |
      | `cursor`        | string | No       | Pagination cursor                                     |
      | `perPage`       | number | No       | Results per page (1-100)                              |
      | `syncToken`     | string | No       | Opaque token from a completed prior sync run          |
      | `createdAfter`  | string | No       | Only feedback submitted after this ISO 8601 timestamp |
      
      #### Output [#output-14]
      
      | Parameter                    | Type    | Description                                             |
      | ---------------------------- | ------- | ------------------------------------------------------- |
      | `feedback`                   | array   | Submitted application feedback                          |
      | ↳ `id`                       | string  | Feedback UUID                                           |
      | ↳ `formDefinition`           | json    | Feedback form sections and documented field definitions |
      | ↳ `feedbackFormDefinitionId` | string  | Feedback form definition UUID                           |
      | ↳ `applicationId`            | string  | Application UUID                                        |
      | ↳ `submittedValues`          | json    | Submitted field values keyed by form field path         |
      | ↳ `interviewId`              | string  | Interview UUID                                          |
      | ↳ `interviewEventId`         | string  | Interview event UUID                                    |
      | ↳ `applicationHistoryId`     | string  | Application history UUID                                |
      | ↳ `submittedAt`              | string  | Submission timestamp                                    |
      | `moreDataAvailable`          | boolean | Whether more pages exist                                |
      | `nextCursor`                 | string  | Next page cursor                                        |
      | `nextSyncCursor`             | string  | Next incremental sync token                             |
      
      ### Ashby List Application History [#ashby-list-application-history]
      
      Lists the full stage history and allowed actions for an application.
      
      #### Input [#input-15]
      
      | Parameter       | Type   | Required | Description              |
      | --------------- | ------ | -------- | ------------------------ |
      | `apiKey`        | string | Yes      | Ashby API Key            |
      | `applicationId` | string | Yes      | Application UUID         |
      | `cursor`        | string | No       | Pagination cursor        |
      | `perPage`       | number | No       | Results per page (1-100) |
      
      #### Output [#output-15]
      
      | Parameter           | Type    | Description                             |
      | ------------------- | ------- | --------------------------------------- |
      | `history`           | array   | Application stage history               |
      | ↳ `id`              | string  | History entry UUID                      |
      | ↳ `stageId`         | string  | Stage UUID                              |
      | ↳ `title`           | string  | Stage title                             |
      | ↳ `enteredStageAt`  | string  | Stage entry timestamp                   |
      | ↳ `leftStageAt`     | string  | Stage exit timestamp                    |
      | ↳ `stageNumber`     | number  | Stage sequence number                   |
      | ↳ `allowedActions`  | array   | Actions permitted at this history point |
      | ↳ `actorId`         | string  | Acting user UUID                        |
      | `moreDataAvailable` | boolean | Whether more pages exist                |
      | `nextCursor`        | string  | Next page cursor                        |
      
      ### Ashby List Applications [#ashby-list-applications]
      
      Lists all applications in an Ashby organization with pagination and optional filters for status, job, and creation date.
      
      #### Input [#input-16]
      
      | Parameter       | Type   | Required | Description                                                                              |
      | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
      | `apiKey`        | string | Yes      | Ashby API Key                                                                            |
      | `cursor`        | string | No       | Opaque pagination cursor from a previous response nextCursor value                       |
      | `perPage`       | number | No       | Number of results per page (default 100)                                                 |
      | `status`        | string | No       | Application status to include: Active, Hired, Archived, or Lead                          |
      | `jobId`         | string | No       | Filter applications by a specific job UUID                                               |
      | `createdAfter`  | string | No       | Filter to applications created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
      | `createdBefore` | string | No       | Filter to applications created before this ISO 8601 timestamp                            |
      | `syncToken`     | string | No       | Opaque token from a completed prior sync run                                             |
      | `expand`        | json   | No       | Ashby-supported application expansions to request                                        |
      
      #### Output [#output-16]
      
      | Parameter           | Type    | Description                                                            |
      | ------------------- | ------- | ---------------------------------------------------------------------- |
      | `applications`      | array   | List of applications                                                   |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                                    |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                               |
      | `nextSyncCursor`    | string  | Opaque token for the next incremental sync, returned on the final page |
      
      ### Ashby List Archive Reasons [#ashby-list-archive-reasons]
      
      Lists all archive reasons configured in Ashby.
      
      #### Input [#input-17]
      
      | Parameter         | Type    | Required | Description                                                                 |
      | ----------------- | ------- | -------- | --------------------------------------------------------------------------- |
      | `apiKey`          | string  | Yes      | Ashby API Key                                                               |
      | `includeArchived` | boolean | No       | Whether to include archived archive reasons in the response (default false) |
      
      #### Output [#output-17]
      
      | Parameter        | Type    | Description                                             |
      | ---------------- | ------- | ------------------------------------------------------- |
      | `archiveReasons` | array   | List of archive reasons                                 |
      | ↳ `id`           | string  | Archive reason UUID                                     |
      | ↳ `text`         | string  | Archive reason text                                     |
      | ↳ `reasonType`   | string  | Reason type (RejectedByCandidate, RejectedByOrg, Other) |
      | ↳ `isArchived`   | boolean | Whether the reason is archived                          |
      
      ### Ashby List Candidate Tags [#ashby-list-candidate-tags]
      
      Lists all candidate tags configured in Ashby.
      
      #### Input [#input-18]
      
      | Parameter         | Type    | Required | Description                                                        |
      | ----------------- | ------- | -------- | ------------------------------------------------------------------ |
      | `apiKey`          | string  | Yes      | Ashby API Key                                                      |
      | `includeArchived` | boolean | No       | Whether to include archived candidate tags (default false)         |
      | `cursor`          | string  | No       | Opaque pagination cursor from a previous response nextCursor value |
      | `syncToken`       | string  | No       | Sync token from a previous response to fetch only changed results  |
      | `perPage`         | number  | No       | Number of results per page (default 100)                           |
      
      #### Output [#output-18]
      
      | Parameter           | Type    | Description                                                  |
      | ------------------- | ------- | ------------------------------------------------------------ |
      | `tags`              | array   | List of candidate tags                                       |
      | ↳ `id`              | string  | Tag UUID                                                     |
      | ↳ `title`           | string  | Tag title                                                    |
      | ↳ `isArchived`      | boolean | Whether the tag is archived                                  |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                          |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                     |
      | `nextSyncCursor`    | string  | Sync token to use for incremental updates in future requests |
      
      ### Ashby List Candidates [#ashby-list-candidates]
      
      Lists all candidates in an Ashby organization with cursor-based pagination.
      
      #### Input [#input-19]
      
      | Parameter       | Type   | Required | Description                                                                              |
      | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
      | `apiKey`        | string | Yes      | Ashby API Key                                                                            |
      | `cursor`        | string | No       | Opaque pagination cursor from a previous response nextCursor value                       |
      | `perPage`       | number | No       | Number of results per page (default 100)                                                 |
      | `createdAfter`  | string | No       | Only return candidates created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
      | `createdBefore` | string | No       | Only return candidates created before this ISO 8601 timestamp                            |
      | `syncToken`     | string | No       | Opaque token from a completed prior sync run                                             |
      
      #### Output [#output-19]
      
      | Parameter           | Type    | Description                                                            |
      | ------------------- | ------- | ---------------------------------------------------------------------- |
      | `candidates`        | array   | List of candidates                                                     |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                                    |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                               |
      | `nextSyncCursor`    | string  | Opaque token for the next incremental sync, returned on the final page |
      
      ### Ashby List Custom Fields [#ashby-list-custom-fields]
      
      Lists all custom field definitions configured in Ashby.
      
      #### Input [#input-20]
      
      | Parameter         | Type    | Required | Description                                                           |
      | ----------------- | ------- | -------- | --------------------------------------------------------------------- |
      | `apiKey`          | string  | Yes      | Ashby API Key                                                         |
      | `cursor`          | string  | No       | Opaque pagination cursor from a previous response nextCursor value    |
      | `perPage`         | number  | No       | Number of results per page (default and max 100)                      |
      | `syncToken`       | string  | No       | Opaque token from a prior sync to fetch only items changed since then |
      | `includeArchived` | boolean | No       | When true, includes archived custom fields in results (default false) |
      
      #### Output [#output-20]
      
      | Parameter            | Type    | Description                                                                                                                        |
      | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
      | `customFields`       | array   | List of custom field definitions                                                                                                   |
      | ↳ `id`               | string  | Custom field UUID                                                                                                                  |
      | ↳ `title`            | string  | Custom field title                                                                                                                 |
      | ↳ `isPrivate`        | boolean | Whether the custom field is private                                                                                                |
      | ↳ `fieldType`        | string  | Field data type (MultiValueSelect, NumberRange, String, Date, ValueSelect, Number, Currency, Boolean, LongText, CompensationRange) |
      | ↳ `objectType`       | string  | Object type the field applies to (Application, Candidate, Employee, Job, Offer, Opening, Talent\_Project)                          |
      | ↳ `isArchived`       | boolean | Whether the custom field is archived                                                                                               |
      | ↳ `isRequired`       | boolean | Whether a value is required                                                                                                        |
      | ↳ `selectableValues` | array   | Selectable values for MultiValueSelect fields (empty for other field types)                                                        |
      | ↳ `label`            | string  | Display label                                                                                                                      |
      | ↳ `value`            | string  | Stored value                                                                                                                       |
      | ↳ `isArchived`       | boolean | Whether archived                                                                                                                   |
      | `moreDataAvailable`  | boolean | Whether more pages of results exist                                                                                                |
      | `nextCursor`         | string  | Opaque cursor for fetching the next page                                                                                           |
      | `nextSyncCursor`     | string  | Opaque sync token returned after the last page; pass on next sync                                                                  |
      
      ### Ashby List Departments [#ashby-list-departments]
      
      Lists all departments in Ashby.
      
      #### Input [#input-21]
      
      | Parameter         | Type    | Required | Description                                                           |
      | ----------------- | ------- | -------- | --------------------------------------------------------------------- |
      | `apiKey`          | string  | Yes      | Ashby API Key                                                         |
      | `cursor`          | string  | No       | Opaque pagination cursor from a previous response nextCursor value    |
      | `perPage`         | number  | No       | Number of results per page (default and max 100)                      |
      | `syncToken`       | string  | No       | Opaque token from a prior sync to fetch only items changed since then |
      | `includeArchived` | boolean | No       | When true, includes archived departments in results (default false)   |
      
      #### Output [#output-21]
      
      | Parameter           | Type    | Description                                                       |
      | ------------------- | ------- | ----------------------------------------------------------------- |
      | `departments`       | array   | List of departments                                               |
      | ↳ `id`              | string  | Department UUID                                                   |
      | ↳ `name`            | string  | Department name                                                   |
      | ↳ `externalName`    | string  | Candidate-facing name used on job boards                          |
      | ↳ `isArchived`      | boolean | Whether the department is archived                                |
      | ↳ `parentId`        | string  | Parent department UUID                                            |
      | ↳ `createdAt`       | string  | ISO 8601 creation timestamp                                       |
      | ↳ `updatedAt`       | string  | ISO 8601 last update timestamp                                    |
      | ↳ `extraData`       | json    | Free-form key-value metadata                                      |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                               |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                          |
      | `nextSyncCursor`    | string  | Opaque sync token returned after the last page; pass on next sync |
      
      ### Ashby List Interview Schedules [#ashby-list-interview-schedules]
      
      Lists interview schedules in Ashby, optionally filtered by application or interview stage.
      
      #### Input [#input-22]
      
      | Parameter          | Type   | Required | Description                                                                                       |
      | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------- |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                                     |
      | `applicationId`    | string | No       | The UUID of the application to list interview schedules for                                       |
      | `interviewStageId` | string | No       | The UUID of the interview stage to list interview schedules for                                   |
      | `cursor`           | string | No       | Opaque pagination cursor from a previous response nextCursor value                                |
      | `perPage`          | number | No       | Number of results per page (default 100)                                                          |
      | `createdAfter`     | string | No       | Only return interview schedules created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
      | `syncToken`        | string | No       | Opaque token from a completed prior sync run                                                      |
      
      #### Output [#output-22]
      
      | Parameter                | Type    | Description                                                                                                |
      | ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------- |
      | `interviewSchedules`     | array   | List of interview schedules                                                                                |
      | ↳ `id`                   | string  | Interview schedule UUID                                                                                    |
      | ↳ `status`               | string  | Schedule status (NeedsScheduling, WaitingOnCandidateBooking, Scheduled, Complete, Cancelled, OnHold, etc.) |
      | ↳ `applicationId`        | string  | Associated application UUID                                                                                |
      | ↳ `interviewStageId`     | string  | Interview stage UUID                                                                                       |
      | ↳ `createdAt`            | string  | ISO 8601 creation timestamp                                                                                |
      | ↳ `updatedAt`            | string  | ISO 8601 last update timestamp                                                                             |
      | ↳ `interviewEvents`      | array   | Scheduled interview events on this schedule                                                                |
      | ↳ `id`                   | string  | Event UUID                                                                                                 |
      | ↳ `interviewId`          | string  | Interview template UUID                                                                                    |
      | ↳ `interviewScheduleId`  | string  | Parent schedule UUID                                                                                       |
      | ↳ `interviewerUserIds`   | array   | User UUIDs of interviewers assigned to the event                                                           |
      | ↳ `createdAt`            | string  | Event creation timestamp                                                                                   |
      | ↳ `updatedAt`            | string  | Event last updated timestamp                                                                               |
      | ↳ `startTime`            | string  | Event start time                                                                                           |
      | ↳ `endTime`              | string  | Event end time                                                                                             |
      | ↳ `feedbackLink`         | string  | URL to submit feedback for the event                                                                       |
      | ↳ `location`             | string  | Physical location                                                                                          |
      | ↳ `meetingLink`          | string  | Virtual meeting URL                                                                                        |
      | ↳ `hasSubmittedFeedback` | boolean | Whether any feedback has been submitted                                                                    |
      | `moreDataAvailable`      | boolean | Whether more pages of results exist                                                                        |
      | `nextCursor`             | string  | Opaque cursor for fetching the next page                                                                   |
      | `nextSyncCursor`         | string  | Opaque token for the next incremental sync                                                                 |
      
      ### Ashby List Interview Plans [#ashby-list-interview-plans]
      
      Lists Ashby interview plans, including optional archived plans and incremental changes.
      
      #### Input [#input-23]
      
      | Parameter         | Type    | Required | Description                                  |
      | ----------------- | ------- | -------- | -------------------------------------------- |
      | `apiKey`          | string  | Yes      | Ashby API Key                                |
      | `includeArchived` | boolean | No       | Include archived interview plans             |
      | `cursor`          | string  | No       | Pagination cursor                            |
      | `perPage`         | number  | No       | Results per page (1-100)                     |
      | `syncToken`       | string  | No       | Opaque token from a completed prior sync run |
      
      #### Output [#output-23]
      
      | Parameter           | Type    | Description                 |
      | ------------------- | ------- | --------------------------- |
      | `interviewPlans`    | array   | Interview plans             |
      | ↳ `id`              | string  | Interview plan UUID         |
      | ↳ `title`           | string  | Plan title                  |
      | ↳ `isArchived`      | boolean | Whether archived            |
      | ↳ `createdAt`       | string  | Creation timestamp          |
      | ↳ `updatedAt`       | string  | Last update timestamp       |
      | `moreDataAvailable` | boolean | Whether more pages exist    |
      | `nextCursor`        | string  | Next page cursor            |
      | `nextSyncCursor`    | string  | Next incremental sync token |
      
      ### Ashby List Interview Stages [#ashby-list-interview-stages]
      
      Lists the ordered stages in an Ashby interview plan.
      
      #### Input [#input-24]
      
      | Parameter         | Type   | Required | Description         |
      | ----------------- | ------ | -------- | ------------------- |
      | `apiKey`          | string | Yes      | Ashby API Key       |
      | `interviewPlanId` | string | Yes      | Interview plan UUID |
      
      #### Output [#output-24]
      
      | Parameter                 | Type   | Description                    |
      | ------------------------- | ------ | ------------------------------ |
      | `interviewStages`         | array  | Interview stages in plan order |
      | ↳ `id`                    | string | Stage UUID                     |
      | ↳ `title`                 | string | Stage title                    |
      | ↳ `type`                  | string | Stage type                     |
      | ↳ `interviewPlanId`       | string | Parent plan UUID               |
      | ↳ `orderInInterviewPlan`  | number | Zero-based plan order          |
      | ↳ `interviewStageGroupId` | string | Stage group UUID               |
      
      ### Ashby List Job Postings [#ashby-list-job-postings]
      
      Lists all job postings in Ashby.
      
      #### Input [#input-25]
      
      | Parameter                       | Type    | Required | Description                                                                                                                                                              |
      | ------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
      | `apiKey`                        | string  | Yes      | Ashby API Key                                                                                                                                                            |
      | `location`                      | string  | No       | Filter by location name (case sensitive)                                                                                                                                 |
      | `department`                    | string  | No       | Filter by department name (case sensitive)                                                                                                                               |
      | `listedOnly`                    | boolean | No       | When true, only returns listed (publicly visible) job postings (default false)                                                                                           |
      | `includeUnpublishedJobPostings` | boolean | No       | When true, also returns unpublished (Draft) job postings. The endpoint already returns both listed and unlisted published postings by default, so this only adds drafts. |
      | `jobBoardId`                    | string  | No       | UUID of a specific job board to filter postings to. If omitted, returns postings on the primary external job board.                                                      |
      
      #### Output [#output-25]
      
      | Parameter                               | Type    | Description                                                       |
      | --------------------------------------- | ------- | ----------------------------------------------------------------- |
      | `jobPostings`                           | array   | List of job postings                                              |
      | ↳ `id`                                  | string  | Job posting UUID                                                  |
      | ↳ `title`                               | string  | Job posting title                                                 |
      | ↳ `jobId`                               | string  | Associated job UUID                                               |
      | ↳ `departmentName`                      | string  | Department name                                                   |
      | ↳ `teamName`                            | string  | Team name                                                         |
      | ↳ `locationName`                        | string  | Primary location display name                                     |
      | ↳ `locationIds`                         | object  | Primary and secondary location UUIDs                              |
      | ↳ `primaryLocationId`                   | string  | Primary location UUID                                             |
      | ↳ `secondaryLocationIds`                | array   | Secondary location UUIDs                                          |
      | ↳ `workplaceType`                       | string  | Workplace type (OnSite, Remote, Hybrid)                           |
      | ↳ `employmentType`                      | string  | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
      | ↳ `status`                              | string  | Posting status (Draft or Published)                               |
      | ↳ `isListed`                            | boolean | Whether the posting is publicly listed                            |
      | ↳ `publishedDate`                       | string  | ISO 8601 published date                                           |
      | ↳ `applicationDeadline`                 | string  | ISO 8601 application deadline                                     |
      | ↳ `externalLink`                        | string  | External link to the job posting                                  |
      | ↳ `applyLink`                           | string  | Direct apply link for the job posting                             |
      | ↳ `compensationTierSummary`             | string  | Compensation tier summary for job boards                          |
      | ↳ `shouldDisplayCompensationOnJobBoard` | boolean | Whether compensation is shown on the job board                    |
      | ↳ `updatedAt`                           | string  | ISO 8601 last update timestamp                                    |
      
      ### Ashby List Jobs [#ashby-list-jobs]
      
      Lists all jobs in an Ashby organization. By default returns Open, Closed, and Archived jobs. Specify status to filter.
      
      #### Input [#input-26]
      
      | Parameter                          | Type    | Required | Description                                                                                                                                                                            |
      | ---------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `apiKey`                           | string  | Yes      | Ashby API Key                                                                                                                                                                          |
      | `cursor`                           | string  | No       | Opaque pagination cursor from a previous response nextCursor value                                                                                                                     |
      | `perPage`                          | number  | No       | Number of results per page (default and max 100). Ashby silently caps larger values rather than erroring.                                                                              |
      | `syncToken`                        | string  | No       | Opaque token from a prior sync to fetch only jobs changed since then. Ashby only returns a new syncToken on the last page, so drain moreDataAvailable/nextCursor before persisting it. |
      | `status`                           | array   | No       | One job status or an array of statuses to include: Open, Closed, Archived, or Draft                                                                                                    |
      | `createdAfter`                     | string  | No       | Only return jobs created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z)                                                                                                     |
      | `openedAfter`                      | string  | No       | Only return jobs opened after this ISO 8601 timestamp                                                                                                                                  |
      | `openedBefore`                     | string  | No       | Only return jobs opened before this ISO 8601 timestamp                                                                                                                                 |
      | `closedAfter`                      | string  | No       | Only return jobs closed after this ISO 8601 timestamp                                                                                                                                  |
      | `closedBefore`                     | string  | No       | Only return jobs closed before this ISO 8601 timestamp                                                                                                                                 |
      | `includeUnpublishedJobPostingsIds` | boolean | No       | Include IDs for unpublished job postings on each job                                                                                                                                   |
      
      #### Output [#output-26]
      
      | Parameter           | Type    | Description                                                                                                                                                                                                                                            |
      | ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
      | `jobs`              | array   | List of jobs                                                                                                                                                                                                                                           |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                                                                                                                                                                                                                    |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                                                                                                                                                                                                               |
      | `nextSyncCursor`    | string  | Ashby's syncToken for the next incremental run, returned only once the last page is drained. Named as a cursor because that is what it is - an opaque resumption marker, not a credential - so it stays readable in block output alongside nextCursor. |
      
      ### Ashby List Locations [#ashby-list-locations]
      
      Lists all locations configured in Ashby.
      
      #### Input [#input-27]
      
      | Parameter                  | Type    | Required | Description                                                               |
      | -------------------------- | ------- | -------- | ------------------------------------------------------------------------- |
      | `apiKey`                   | string  | Yes      | Ashby API Key                                                             |
      | `cursor`                   | string  | No       | Opaque pagination cursor from a previous response nextCursor value        |
      | `perPage`                  | number  | No       | Number of results per page (default and max 100)                          |
      | `syncToken`                | string  | No       | Opaque token from a prior sync to fetch only items changed since then     |
      | `includeArchived`          | boolean | No       | When true, includes archived locations in results (default false)         |
      | `includeLocationHierarchy` | boolean | No       | When true, includes location hierarchy components/regions (default false) |
      
      #### Output [#output-27]
      
      | Parameter            | Type    | Description                                                       |
      | -------------------- | ------- | ----------------------------------------------------------------- |
      | `locations`          | array   | List of locations                                                 |
      | ↳ `id`               | string  | Location UUID                                                     |
      | ↳ `name`             | string  | Location name                                                     |
      | ↳ `externalName`     | string  | Candidate-facing name used on job boards                          |
      | ↳ `isArchived`       | boolean | Whether the location is archived                                  |
      | ↳ `isRemote`         | boolean | Whether the location is remote (use workplaceType instead)        |
      | ↳ `workplaceType`    | string  | Workplace type (OnSite, Hybrid, Remote)                           |
      | ↳ `parentLocationId` | string  | Parent location UUID                                              |
      | ↳ `type`             | string  | Location component type (Location, LocationHierarchy)             |
      | ↳ `address`          | object  | Location postal address                                           |
      | ↳ `addressCountry`   | string  | Country                                                           |
      | ↳ `addressRegion`    | string  | State or region                                                   |
      | ↳ `addressLocality`  | string  | City or locality                                                  |
      | ↳ `postalCode`       | string  | Postal code                                                       |
      | ↳ `streetAddress`    | string  | Street address                                                    |
      | ↳ `extraData`        | json    | Free-form key-value metadata                                      |
      | `moreDataAvailable`  | boolean | Whether more pages of results exist                               |
      | `nextCursor`         | string  | Opaque cursor for fetching the next page                          |
      | `nextSyncCursor`     | string  | Opaque sync token returned after the last page; pass on next sync |
      
      ### Ashby List Notes [#ashby-list-notes]
      
      Lists all notes on a candidate with pagination support.
      
      #### Input [#input-28]
      
      | Parameter     | Type   | Required | Description                                                        |
      | ------------- | ------ | -------- | ------------------------------------------------------------------ |
      | `apiKey`      | string | Yes      | Ashby API Key                                                      |
      | `candidateId` | string | Yes      | The UUID of the candidate to list notes for                        |
      | `cursor`      | string | No       | Opaque pagination cursor from a previous response nextCursor value |
      | `perPage`     | number | No       | Number of results per page (1-100)                                 |
      
      #### Output [#output-28]
      
      | Parameter           | Type    | Description                              |
      | ------------------- | ------- | ---------------------------------------- |
      | `notes`             | array   | List of notes on the candidate           |
      | ↳ `id`              | string  | Note UUID                                |
      | ↳ `content`         | string  | Note content                             |
      | ↳ `isPrivate`       | boolean | Whether the note is private              |
      | ↳ `author`          | object  | Note author                              |
      | ↳ `id`              | string  | Author user UUID                         |
      | ↳ `firstName`       | string  | First name                               |
      | ↳ `lastName`        | string  | Last name                                |
      | ↳ `email`           | string  | Email address                            |
      | ↳ `createdAt`       | string  | ISO 8601 creation timestamp              |
      | `moreDataAvailable` | boolean | Whether more pages of results exist      |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page |
      
      ### Ashby List Offers [#ashby-list-offers]
      
      Lists all offers with their latest version in an Ashby organization.
      
      #### Input [#input-29]
      
      | Parameter          | Type   | Required | Description                                                                          |
      | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------ |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                        |
      | `cursor`           | string | No       | Opaque pagination cursor from a previous response nextCursor value                   |
      | `perPage`          | number | No       | Number of results per page                                                           |
      | `createdAfter`     | string | No       | Only return offers created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
      | `syncToken`        | string | No       | Opaque token from a prior sync to fetch only items changed since then                |
      | `applicationId`    | string | No       | Return only offers for the specified application UUID                                |
      | `offerStatus`      | json   | No       | Non-empty array of offer process statuses to include                                 |
      | `acceptanceStatus` | json   | No       | Non-empty array of offer acceptance statuses to include                              |
      | `approvalStatus`   | json   | No       | Non-empty array of latest-version approval statuses to include                       |
      
      #### Output [#output-29]
      
      | Parameter           | Type    | Description                                                            |
      | ------------------- | ------- | ---------------------------------------------------------------------- |
      | `offers`            | array   | List of offers                                                         |
      | `moreDataAvailable` | boolean | Whether more pages of results exist                                    |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page                               |
      | `nextSyncCursor`    | string  | Opaque token for the next incremental sync, returned on the final page |
      
      ### Ashby List Openings [#ashby-list-openings]
      
      Lists all openings in Ashby with pagination.
      
      #### Input [#input-30]
      
      | Parameter      | Type   | Required | Description                                                                            |
      | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
      | `apiKey`       | string | Yes      | Ashby API Key                                                                          |
      | `cursor`       | string | No       | Opaque pagination cursor from a previous response nextCursor value                     |
      | `perPage`      | number | No       | Number of results per page (default 100)                                               |
      | `createdAfter` | string | No       | Only return openings created after this ISO 8601 timestamp (e.g. 2024-01-01T00:00:00Z) |
      | `syncToken`    | string | No       | Opaque token from a completed prior sync run                                           |
      
      #### Output [#output-30]
      
      | Parameter           | Type    | Description                                |
      | ------------------- | ------- | ------------------------------------------ |
      | `moreDataAvailable` | boolean | Whether more pages of results exist        |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page   |
      | `nextSyncCursor`    | string  | Opaque token for the next incremental sync |
      
      ### Ashby List Sources [#ashby-list-sources]
      
      Lists all candidate sources configured in Ashby.
      
      #### Input [#input-31]
      
      | Parameter         | Type    | Required | Description                                                     |
      | ----------------- | ------- | -------- | --------------------------------------------------------------- |
      | `apiKey`          | string  | Yes      | Ashby API Key                                                   |
      | `includeArchived` | boolean | No       | When true, includes archived sources in results (default false) |
      
      #### Output [#output-31]
      
      | Parameter      | Type    | Description                    |
      | -------------- | ------- | ------------------------------ |
      | `sources`      | array   | List of sources                |
      | ↳ `id`         | string  | Source UUID                    |
      | ↳ `title`      | string  | Source title                   |
      | ↳ `isArchived` | boolean | Whether the source is archived |
      | ↳ `sourceType` | object  | Source type grouping           |
      | ↳ `id`         | string  | Source type UUID               |
      | ↳ `title`      | string  | Source type title              |
      | ↳ `isArchived` | boolean | Whether archived               |
      
      ### Ashby List Users [#ashby-list-users]
      
      Lists all users in Ashby with pagination.
      
      #### Input [#input-32]
      
      | Parameter            | Type    | Required | Description                                                        |
      | -------------------- | ------- | -------- | ------------------------------------------------------------------ |
      | `apiKey`             | string  | Yes      | Ashby API Key                                                      |
      | `cursor`             | string  | No       | Opaque pagination cursor from a previous response nextCursor value |
      | `perPage`            | number  | No       | Number of results per page (default 100)                           |
      | `includeDeactivated` | boolean | No       | When true, includes deactivated users in results (default false)   |
      | `syncToken`          | string  | No       | Opaque token from a completed prior sync run                       |
      
      #### Output [#output-32]
      
      | Parameter           | Type    | Description                                |
      | ------------------- | ------- | ------------------------------------------ |
      | `users`             | array   | List of users                              |
      | `moreDataAvailable` | boolean | Whether more pages of results exist        |
      | `nextCursor`        | string  | Opaque cursor for fetching the next page   |
      | `nextSyncCursor`    | string  | Opaque token for the next incremental sync |
      
      ### Ashby Remove Candidate Tag [#ashby-remove-candidate-tag]
      
      Removes a tag from a candidate in Ashby and returns the updated candidate.
      
      #### Input [#input-33]
      
      | Parameter          | Type   | Required | Description                                                                                      |
      | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                                    |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
      | `candidateId`      | string | Yes      | The UUID of the candidate to remove the tag from                                                 |
      | `tagId`            | string | Yes      | The UUID of the tag to remove                                                                    |
      
      #### Output [#output-33]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Search Candidates [#ashby-search-candidates]
      
      Searches for candidates by name and/or email with AND logic. Results are limited to 100 matches. Use candidate.list for full pagination.
      
      #### Input [#input-34]
      
      | Parameter | Type   | Required | Description                                                        |
      | --------- | ------ | -------- | ------------------------------------------------------------------ |
      | `apiKey`  | string | Yes      | Ashby API Key                                                      |
      | `name`    | string | No       | Candidate name to search for (combined with email using AND logic) |
      | `email`   | string | No       | Candidate email to search for (combined with name using AND logic) |
      | `limit`   | number | No       | Maximum matches to return (1-100)                                  |
      
      #### Output [#output-34]
      
      | Parameter    | Type  | Description                           |
      | ------------ | ----- | ------------------------------------- |
      | `candidates` | array | Matching candidates (max 100 results) |
      
      ### Ashby Search Jobs [#ashby-search-jobs]
      
      Searches Ashby jobs by title and/or requisition ID. Provide at least one of these filters.
      
      #### Input [#input-35]
      
      | Parameter       | Type   | Required | Description             |
      | --------------- | ------ | -------- | ----------------------- |
      | `apiKey`        | string | Yes      | Ashby API Key           |
      | `title`         | string | No       | Job title search text   |
      | `requisitionId` | string | No       | Custom requisition ID   |
      | `limit`         | number | No       | Maximum matches (1-100) |
      
      #### Output [#output-35]
      
      | Parameter           | Type    | Description                |
      | ------------------- | ------- | -------------------------- |
      | `jobs`              | array   | Matching jobs              |
      | `moreDataAvailable` | boolean | Whether more matches exist |
      
      ### Ashby Search Openings [#ashby-search-openings]
      
      Searches Ashby headcount openings by human-readable identifier.
      
      #### Input [#input-36]
      
      | Parameter    | Type   | Required | Description        |
      | ------------ | ------ | -------- | ------------------ |
      | `apiKey`     | string | Yes      | Ashby API Key      |
      | `identifier` | string | Yes      | Opening identifier |
      
      #### Output [#output-36]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Search Users [#ashby-search-users]
      
      Searches Ashby users by exact email address.
      
      #### Input [#input-37]
      
      | Parameter | Type   | Required | Description        |
      | --------- | ------ | -------- | ------------------ |
      | `apiKey`  | string | Yes      | Ashby API Key      |
      | `email`   | string | Yes      | User email address |
      
      #### Output [#output-37]
      
      | Parameter | Type  | Description    |
      | --------- | ----- | -------------- |
      | `users`   | array | Matching users |
      
      ### Ashby Set Custom Field Value [#ashby-set-custom-field-value]
      
      Sets the value of a single custom field on an Ashby Application, Candidate, Job, or Opening. Custom fields are the only way to annotate a job or req, since Ashby has no job notes and no job tags. Requires the candidatesWrite permission.
      
      #### Input [#input-38]
      
      | Parameter          | Type   | Required | Description                                                                                                                                                                                                                                                                                                                                                                               |
      | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                                                                                                                                                                                                                                                                                                                             |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls                                                                                                                                                                                                                                                                                          |
      | `objectId`         | string | Yes      | UUID of the object to set the field on (application, candidate, job, or opening)                                                                                                                                                                                                                                                                                                          |
      | `objectType`       | string | Yes      | Type of the object: Application, Candidate, Job, or Opening                                                                                                                                                                                                                                                                                                                               |
      | `fieldId`          | string | Yes      | UUID of the custom field definition to set, as returned by List Custom Fields. This is the field definition ID, not the ID of a value already on the object.                                                                                                                                                                                                                              |
      | `fieldValue`       | json   | No       | Value to write, matching the field type: boolean, number, string (String, LongText, Date, Url, or a ValueSelect option), string array (MultiValueSelect), or an object for Currency (\{value, currencyCode}), NumberRange (\{type, minValue, maxValue}), CompensationRange, and Location (\{country, region, city}). Pass null to clear the value, which makes the annotation reversible. |
      
      #### Output [#output-38]
      
      | Parameter     | Type   | Description                                              |
      | ------------- | ------ | -------------------------------------------------------- |
      | `customField` | object | The custom field as stored on the object after the write |
      
      ### Ashby Set Custom Field Values [#ashby-set-custom-field-values]
      
      Sets several custom field values on one Ashby Application, Candidate, Job, or Opening in a single call. Prefer this over repeated single-field writes to the same object - Ashby recommends it because concurrent single-field calls can race and overwrite each other. Requires the candidatesWrite permission.
      
      #### Input [#input-39]
      
      | Parameter          | Type   | Required | Description                                                                                                                                                                                                                                                                                                                                  |
      | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `apiKey`           | string | Yes      | Ashby API Key                                                                                                                                                                                                                                                                                                                                |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls                                                                                                                                                                                                                                             |
      | `objectId`         | string | Yes      | UUID of the object to set the fields on (application, candidate, job, or opening)                                                                                                                                                                                                                                                            |
      | `objectType`       | string | Yes      | Type of the object: Application, Candidate, Job, or Opening                                                                                                                                                                                                                                                                                  |
      | `values`           | json   | Yes      | Array of at least one \{ fieldId, fieldValue } pair. fieldId is a custom field definition UUID from List Custom Fields. fieldValue matches the field type: boolean, number, string, string array (MultiValueSelect), or an object for Currency, NumberRange, CompensationRange, and Location. Pass null as a fieldValue to clear that field. |
      
      #### Output [#output-39]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Update Candidate [#ashby-update-candidate]
      
      Updates an existing candidate record in Ashby. Only provided fields are changed.
      
      #### Input [#input-40]
      
      | Parameter             | Type    | Required | Description                                                                                                                                                                                                                                      |
      | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
      | `apiKey`              | string  | Yes      | Ashby API Key                                                                                                                                                                                                                                    |
      | `onBehalfOfUserId`    | string  | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls                                                                                                                                                 |
      | `candidateId`         | string  | Yes      | The UUID of the candidate to update                                                                                                                                                                                                              |
      | `name`                | string  | No       | Updated full name, or null                                                                                                                                                                                                                       |
      | `email`               | string  | No       | Updated primary email address, or null                                                                                                                                                                                                           |
      | `phoneNumber`         | string  | No       | Updated primary phone number, or null                                                                                                                                                                                                            |
      | `linkedInUrl`         | string  | No       | LinkedIn profile URL, or null                                                                                                                                                                                                                    |
      | `githubUrl`           | string  | No       | GitHub profile URL, or null                                                                                                                                                                                                                      |
      | `websiteUrl`          | string  | No       | Personal website URL, or null                                                                                                                                                                                                                    |
      | `alternateEmail`      | string  | No       | An additional email address to add to the candidate, or null                                                                                                                                                                                     |
      | `sourceId`            | string  | No       | UUID of the source to attribute the candidate to                                                                                                                                                                                                 |
      | `creditedToUserId`    | string  | No       | UUID of the Ashby user to credit with sourcing this candidate                                                                                                                                                                                    |
      | `clearSource`         | boolean | No       | Explicitly clear the candidate source; mutually exclusive with sourceId                                                                                                                                                                          |
      | `clearCreditedToUser` | boolean | No       | Explicitly clear the credited Ashby user; mutually exclusive with creditedToUserId                                                                                                                                                               |
      | `location`            | json    | No       | Candidate location object with optional city, region, and country; the object and its fields accept null                                                                                                                                         |
      | `createdAt`           | string  | No       | Backdated creation timestamp in ISO 8601, or null. Only updatable if originally backdated.                                                                                                                                                       |
      | `sendNotifications`   | boolean | No       | Whether to send a notification when the source is updated (default true), or null                                                                                                                                                                |
      | `socialLinks`         | json    | No       | Array of social link objects to set on the candidate, e.g. \[\{"type":"LinkedIn","url":"https\://..."}]. Replaces existing links; pass \[] to clear them. Null is also accepted. Mutually exclusive with linkedInUrl, githubUrl, and websiteUrl. |
      
      #### Output [#output-40]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Transfer Application [#ashby-transfer-application]
      
      Transfers an application to another job, interview plan, and stage.
      
      #### Input [#input-41]
      
      | Parameter                  | Type    | Required | Description                                                                                      |
      | -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ |
      | `apiKey`                   | string  | Yes      | Ashby API Key                                                                                    |
      | `onBehalfOfUserId`         | string  | No       | Active Ashby user UUID to attribute this mutation to; the API key must permit on-behalf-of calls |
      | `applicationId`            | string  | Yes      | Application UUID                                                                                 |
      | `jobId`                    | string  | Yes      | Destination job UUID                                                                             |
      | `interviewPlanId`          | string  | Yes      | Destination interview plan UUID                                                                  |
      | `interviewStageId`         | string  | Yes      | Destination interview stage UUID                                                                 |
      | `startAutomaticActivities` | boolean | No       | Start automatic activities configured for the destination stage                                  |
      
      #### Output [#output-41]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Upload Candidate File [#ashby-upload-candidate-file]
      
      Securely uploads a file and attaches it to an Ashby candidate.
      
      #### Input [#input-42]
      
      | Parameter          | Type   | Required | Description                                          |
      | ------------------ | ------ | -------- | ---------------------------------------------------- |
      | `apiKey`           | string | Yes      | Ashby API Key                                        |
      | `candidateId`      | string | Yes      | Candidate UUID                                       |
      | `file`             | file   | Yes      | Stored file to attach to the candidate               |
      | `fileName`         | string | No       | Optional filename override                           |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to |
      
      #### Output [#output-42]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ### Ashby Upload Resume [#ashby-upload-resume]
      
      Securely uploads a resume and sets it as the Ashby candidate resume.
      
      #### Input [#input-43]
      
      | Parameter          | Type   | Required | Description                                          |
      | ------------------ | ------ | -------- | ---------------------------------------------------- |
      | `apiKey`           | string | Yes      | Ashby API Key                                        |
      | `candidateId`      | string | Yes      | Candidate UUID                                       |
      | `file`             | file   | Yes      | Stored resume file                                   |
      | `fileName`         | string | No       | Optional filename override                           |
      | `onBehalfOfUserId` | string | No       | Active Ashby user UUID to attribute this mutation to |
      
      #### Output [#output-43]
      
      | Parameter            | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
      | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `candidates`         | json    | List of candidates with rich fields (id, name, primaryEmailAddress, primaryPhoneNumber, emailAddresses\[], phoneNumbers\[], socialLinks\[], linkedInUrl, githubUrl, profileUrl, position, company, school, timezone, location with locationComponents\[], tags\[], applicationIds\[], customFields\[], resumeFileHandle, fileHandles\[], source with sourceType, creditedToUser, fraudStatus, createdAt, updatedAt) |
      | `jobs`               | json    | List of jobs (id, title, confidential, status, employmentType, locationId, departmentId, defaultInterviewPlanId, interviewPlanIds\[], customFields\[], jobPostingIds\[], customRequisitionId, brandId, hiringTeam\[], author, createdAt, updatedAt, openedAt, closedAt, location with address, openings\[] with latestVersion)                                                                                      |
      | `applications`       | json    | List of applications (id, status, customFields\[], candidate summary, currentInterviewStage, source with sourceType, archiveReason with customFields\[], archivedAt, job summary, creditedToUser, hiringTeam\[], appliedViaJobPostingId, submitterClientIp, submitterUserAgent, createdAt, updatedAt)                                                                                                               |
      | `notes`              | json    | List of notes (id, content, author, isPrivate, createdAt)                                                                                                                                                                                                                                                                                                                                                           |
      | `offers`             | json    | List of offers (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion with id/startDate/salary/createdAt/openingId/customFields\[]/fileHandles\[]/author/approvalStatus)                                                                                                                                                                                                                       |
      | `archiveReasons`     | json    | List of archive reasons (id, text, reasonType \[RejectedByCandidate/RejectedByOrg/Other], isArchived)                                                                                                                                                                                                                                                                                                               |
      | `sources`            | json    | List of sources (id, title, isArchived, sourceType \{id, title, isArchived})                                                                                                                                                                                                                                                                                                                                        |
      | `customFields`       | json    | For List Custom Fields, the field definitions (id, title, isPrivate, fieldType, objectType, isArchived, isRequired, selectableValues\[] \{label, value, isArchived}). For Set Custom Field Values, the field values written to the object (id, title, isPrivate, valueLabel, value)                                                                                                                                 |
      | `customField`        | json    | A single custom field value after a write (id, title, isPrivate, valueLabel, value)                                                                                                                                                                                                                                                                                                                                 |
      | `departments`        | json    | List of departments (id, name, externalName, isArchived, parentId, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                            |
      | `locations`          | json    | List of locations (id, name, externalName, isArchived, isRemote, workplaceType, parentLocationId, type, address with addressCountry/Region/Locality/postalCode/streetAddress)                                                                                                                                                                                                                                       |
      | `jobPostings`        | json    | List of job postings (id, title, jobId, departmentName, teamName, locationName, locationIds, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensationTierSummary, shouldDisplayCompensationOnJobBoard, updatedAt)                                                                                                                                         |
      | `openings`           | json    | List of openings (id, openedAt, closedAt, isArchived, archivedAt, closeReasonId, openingState, latestVersion with identifier/description/authorId/createdAt/teamId/jobIds\[]/targetHireDate/targetStartDate/isBackfill/employmentType/locationIds\[]/hiringTeam\[]/customFields\[])                                                                                                                                 |
      | `users`              | json    | List of users (id, firstName, lastName, email, globalRole, isEnabled, updatedAt)                                                                                                                                                                                                                                                                                                                                    |
      | `interviewSchedules` | json    | List of interview schedules (id, applicationId, interviewStageId, interviewEvents\[] with interviewerUserIds/startTime/endTime/feedbackLink/location/meetingLink/hasSubmittedFeedback, status, scheduledBy, createdAt, updatedAt)                                                                                                                                                                                   |
      | `interviewPlans`     | json    | Interview plans (id, title, isArchived, createdAt, updatedAt)                                                                                                                                                                                                                                                                                                                                                       |
      | `interviewStages`    | json    | Ordered interview stages for a plan                                                                                                                                                                                                                                                                                                                                                                                 |
      | `feedback`           | json    | Submitted application feedback with form definitions and values                                                                                                                                                                                                                                                                                                                                                     |
      | `history`            | json    | Application stage history and allowed actions                                                                                                                                                                                                                                                                                                                                                                       |
      | `tags`               | json    | List of candidate tags (id, title, isArchived)                                                                                                                                                                                                                                                                                                                                                                      |
      | `id`                 | string  | Resource UUID                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `name`               | string  | Resource name                                                                                                                                                                                                                                                                                                                                                                                                       |
      | `title`              | string  | Job title or job posting title                                                                                                                                                                                                                                                                                                                                                                                      |
      | `status`             | string  | Status                                                                                                                                                                                                                                                                                                                                                                                                              |
      | `candidate`          | json    | Candidate summary (id, name, primaryEmailAddress, primaryPhoneNumber). For full candidate fields use the candidates list output or the get/create/update candidate operations.                                                                                                                                                                                                                                      |
      | `job`                | json    | Job details (id, title, status, employmentType, locationId, departmentId, hiringTeam\[], author, location, openings\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                       |
      | `application`        | json    | Application details (id, status, customFields\[], candidate, currentInterviewStage, source, archiveReason, job, hiringTeam\[], createdAt, updatedAt)                                                                                                                                                                                                                                                                |
      | `offer`              | json    | Offer details (id, decidedAt, applicationId, acceptanceStatus, offerStatus, latestVersion)                                                                                                                                                                                                                                                                                                                          |
      | `jobPosting`         | json    | Job posting details (id, title, descriptionPlain, descriptionHtml, descriptionSocial, descriptionParts, departmentName, teamName, teamNameHierarchy\[], jobId, locationName, locationIds, address, isRemote, workplaceType, employmentType, isListed, publishedDate, applicationDeadline, externalLink, applyLink, compensation, updatedAt, job \[included when expandJob=true])                                    |
      | `content`            | string  | Note content                                                                                                                                                                                                                                                                                                                                                                                                        |
      | `author`             | json    | Note author (id, firstName, lastName, email)                                                                                                                                                                                                                                                                                                                                                                        |
      | `isPrivate`          | boolean | Whether the note is private                                                                                                                                                                                                                                                                                                                                                                                         |
      | `createdAt`          | string  | ISO 8601 creation timestamp                                                                                                                                                                                                                                                                                                                                                                                         |
      | `applicationId`      | string  | UUID of the deleted application                                                                                                                                                                                                                                                                                                                                                                                     |
      | `moreDataAvailable`  | boolean | Whether more pages exist                                                                                                                                                                                                                                                                                                                                                                                            |
      | `nextCursor`         | string  | Pagination cursor for next page                                                                                                                                                                                                                                                                                                                                                                                     |
      | `nextSyncCursor`     | string  | Ashby's opaque token for the next incremental list run, exposed as a cursor so it remains usable in workflow output                                                                                                                                                                                                                                                                                                 |
      
      ## Triggers [#triggers]
      
      A **Trigger** is a block that starts a workflow when an event happens in this service.
      
      ### Ashby Application Submitted [#ashby-application-submitted]
      
      Trigger workflow when a new application is submitted
      
      #### Configuration [#configuration]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-44]
      
      | Parameter                 | Type   | Description                                                          |
      | ------------------------- | ------ | -------------------------------------------------------------------- |
      | `action`                  | string | The webhook event type (e.g., applicationSubmit, candidateHire)      |
      | `webhookActionId`         | string | Ashby delivery identifier, stable across retries                     |
      | `application`             | object | application output from the tool                                     |
      | ↳ `id`                    | string | Application UUID                                                     |
      | ↳ `createdAt`             | string | Application creation timestamp (ISO 8601)                            |
      | ↳ `updatedAt`             | string | Application last update timestamp (ISO 8601)                         |
      | ↳ `status`                | string | Application status (Active, Hired, Archived, Lead)                   |
      | ↳ `candidate`             | object | candidate output from the tool                                       |
      | ↳ `id`                    | string | Candidate UUID                                                       |
      | ↳ `name`                  | string | Candidate name                                                       |
      | ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool                           |
      | ↳ `id`                    | string | Current interview stage UUID                                         |
      | ↳ `title`                 | string | Current interview stage title                                        |
      | ↳ `stageType`             | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
      | ↳ `job`                   | object | job output from the tool                                             |
      | ↳ `id`                    | string | Job UUID                                                             |
      | ↳ `title`                 | string | Job title                                                            |
      
      ***
      
      ### Ashby Application Updated [#ashby-application-updated]
      
      Trigger workflow when an application is updated
      
      #### Configuration [#configuration-1]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-45]
      
      | Parameter                 | Type   | Description                                                          |
      | ------------------------- | ------ | -------------------------------------------------------------------- |
      | `action`                  | string | The webhook event type (e.g., applicationSubmit, candidateHire)      |
      | `webhookActionId`         | string | Ashby delivery identifier, stable across retries                     |
      | `application`             | object | application output from the tool                                     |
      | ↳ `id`                    | string | Application UUID                                                     |
      | ↳ `createdAt`             | string | Application creation timestamp (ISO 8601)                            |
      | ↳ `updatedAt`             | string | Application last update timestamp (ISO 8601)                         |
      | ↳ `status`                | string | Application status (Active, Hired, Archived, Lead)                   |
      | ↳ `candidate`             | object | candidate output from the tool                                       |
      | ↳ `id`                    | string | Candidate UUID                                                       |
      | ↳ `name`                  | string | Candidate name                                                       |
      | ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool                           |
      | ↳ `id`                    | string | Current interview stage UUID                                         |
      | ↳ `title`                 | string | Current interview stage title                                        |
      | ↳ `stageType`             | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
      | ↳ `job`                   | object | job output from the tool                                             |
      | ↳ `id`                    | string | Job UUID                                                             |
      | ↳ `title`                 | string | Job title                                                            |
      
      ***
      
      ### Ashby Candidate Deleted [#ashby-candidate-deleted]
      
      Trigger workflow when a candidate is deleted
      
      #### Configuration [#configuration-2]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-46]
      
      | Parameter         | Type   | Description                                                     |
      | ----------------- | ------ | --------------------------------------------------------------- |
      | `action`          | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId` | string | Ashby delivery identifier, stable across retries                |
      | `candidate`       | object | candidate output from the tool                                  |
      | ↳ `id`            | string | Deleted candidate UUID                                          |
      
      ***
      
      ### Ashby Candidate Hired [#ashby-candidate-hired]
      
      Trigger workflow when a candidate is hired
      
      #### Configuration [#configuration-3]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-47]
      
      | Parameter                 | Type   | Description                                                          |
      | ------------------------- | ------ | -------------------------------------------------------------------- |
      | `action`                  | string | The webhook event type (e.g., applicationSubmit, candidateHire)      |
      | `webhookActionId`         | string | Ashby delivery identifier, stable across retries                     |
      | `application`             | object | application output from the tool                                     |
      | ↳ `id`                    | string | Application UUID                                                     |
      | ↳ `createdAt`             | string | Application creation timestamp (ISO 8601)                            |
      | ↳ `updatedAt`             | string | Application last update timestamp (ISO 8601)                         |
      | ↳ `status`                | string | Application status (Hired)                                           |
      | ↳ `candidate`             | object | candidate output from the tool                                       |
      | ↳ `id`                    | string | Candidate UUID                                                       |
      | ↳ `name`                  | string | Candidate name                                                       |
      | ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool                           |
      | ↳ `id`                    | string | Current interview stage UUID                                         |
      | ↳ `title`                 | string | Current interview stage title                                        |
      | ↳ `stageType`             | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
      | ↳ `job`                   | object | job output from the tool                                             |
      | ↳ `id`                    | string | Job UUID                                                             |
      | ↳ `title`                 | string | Job title                                                            |
      | `offer`                   | object | offer output from the tool                                           |
      | ↳ `id`                    | string | Accepted offer UUID                                                  |
      | ↳ `applicationId`         | string | Associated application UUID                                          |
      | ↳ `acceptanceStatus`      | string | Offer acceptance status                                              |
      | ↳ `offerStatus`           | string | Offer process status                                                 |
      | ↳ `decidedAt`             | string | Offer decision timestamp (ISO 8601)                                  |
      | ↳ `latestVersion`         | object | latestVersion output from the tool                                   |
      | ↳ `id`                    | string | Latest offer version UUID                                            |
      
      ***
      
      ### Ashby Candidate Merged [#ashby-candidate-merged]
      
      Trigger workflow when two candidate records are merged
      
      #### Configuration [#configuration-4]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-48]
      
      | Parameter          | Type   | Description                                                     |
      | ------------------ | ------ | --------------------------------------------------------------- |
      | `action`           | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId`  | string | Ashby delivery identifier, stable across retries                |
      | `deletedCandidate` | object | deletedCandidate output from the tool                           |
      | ↳ `id`             | string | Deleted candidate UUID                                          |
      | `mergedCandidate`  | object | mergedCandidate output from the tool                            |
      | ↳ `id`             | string | Final merged candidate UUID                                     |
      
      ***
      
      ### Ashby Candidate Stage Change [#ashby-candidate-stage-change]
      
      Trigger workflow when a candidate changes interview stages
      
      #### Configuration [#configuration-5]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-49]
      
      | Parameter                 | Type   | Description                                                          |
      | ------------------------- | ------ | -------------------------------------------------------------------- |
      | `action`                  | string | The webhook event type (e.g., applicationSubmit, candidateHire)      |
      | `webhookActionId`         | string | Ashby delivery identifier, stable across retries                     |
      | `application`             | object | application output from the tool                                     |
      | ↳ `id`                    | string | Application UUID                                                     |
      | ↳ `createdAt`             | string | Application creation timestamp (ISO 8601)                            |
      | ↳ `updatedAt`             | string | Application last update timestamp (ISO 8601)                         |
      | ↳ `status`                | string | Application status (Active, Hired, Archived, Lead)                   |
      | ↳ `candidate`             | object | candidate output from the tool                                       |
      | ↳ `id`                    | string | Candidate UUID                                                       |
      | ↳ `name`                  | string | Candidate name                                                       |
      | ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool                           |
      | ↳ `id`                    | string | Current interview stage UUID                                         |
      | ↳ `title`                 | string | Current interview stage title                                        |
      | ↳ `stageType`             | string | Current interview stage type (e.g., Lead, Applied, Interview, Offer) |
      | ↳ `job`                   | object | job output from the tool                                             |
      | ↳ `id`                    | string | Job UUID                                                             |
      | ↳ `title`                 | string | Job title                                                            |
      
      ***
      
      ### Ashby Interview Schedule Created [#ashby-interview-schedule-created]
      
      Trigger workflow when an interview schedule is created
      
      #### Configuration [#configuration-6]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-50]
      
      | Parameter            | Type   | Description                                                     |
      | -------------------- | ------ | --------------------------------------------------------------- |
      | `action`             | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId`    | string | Ashby delivery identifier, stable across retries                |
      | `interviewSchedule`  | object | interviewSchedule output from the tool                          |
      | ↳ `id`               | string | Interview schedule UUID                                         |
      | ↳ `status`           | string | Interview schedule status                                       |
      | ↳ `applicationId`    | string | Application UUID                                                |
      | ↳ `interviewStageId` | string | Interview stage UUID                                            |
      | ↳ `scheduledBy`      | json   | Scheduling user                                                 |
      | ↳ `createdAt`        | string | Creation timestamp                                              |
      | ↳ `updatedAt`        | string | Last update timestamp                                           |
      | ↳ `interviewEvents`  | json   | Scheduled interview events                                      |
      
      ***
      
      ### Ashby Interview Schedule Updated [#ashby-interview-schedule-updated]
      
      Trigger workflow when an interview schedule is updated
      
      #### Configuration [#configuration-7]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-51]
      
      | Parameter            | Type   | Description                                                     |
      | -------------------- | ------ | --------------------------------------------------------------- |
      | `action`             | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId`    | string | Ashby delivery identifier, stable across retries                |
      | `interviewSchedule`  | object | interviewSchedule output from the tool                          |
      | ↳ `id`               | string | Interview schedule UUID                                         |
      | ↳ `status`           | string | Interview schedule status                                       |
      | ↳ `applicationId`    | string | Application UUID                                                |
      | ↳ `interviewStageId` | string | Interview stage UUID                                            |
      | ↳ `candidateId`      | string | Candidate UUID                                                  |
      | ↳ `scheduledBy`      | json   | Scheduling user                                                 |
      | ↳ `createdAt`        | string | Creation timestamp                                              |
      | ↳ `updatedAt`        | string | Last update timestamp                                           |
      | ↳ `interviewEvents`  | json   | Scheduled interview events                                      |
      
      ***
      
      ### Ashby Job Created [#ashby-job-created]
      
      Trigger workflow when a new job is created
      
      #### Configuration [#configuration-8]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-52]
      
      | Parameter          | Type    | Description                                                       |
      | ------------------ | ------- | ----------------------------------------------------------------- |
      | `action`           | string  | The webhook event type (e.g., applicationSubmit, candidateHire)   |
      | `webhookActionId`  | string  | Ashby delivery identifier, stable across retries                  |
      | `job`              | object  | job output from the tool                                          |
      | ↳ `id`             | string  | Job UUID                                                          |
      | ↳ `title`          | string  | Job title                                                         |
      | ↳ `confidential`   | boolean | Whether the job is confidential                                   |
      | ↳ `status`         | string  | Job status (Open, Closed, Draft, Archived)                        |
      | ↳ `employmentType` | string  | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
      
      ***
      
      ### Ashby Job Posting Deleted [#ashby-job-posting-deleted]
      
      Trigger workflow when a job posting is deleted
      
      #### Configuration [#configuration-9]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-53]
      
      | Parameter         | Type   | Description                                                     |
      | ----------------- | ------ | --------------------------------------------------------------- |
      | `action`          | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId` | string | Ashby delivery identifier, stable across retries                |
      | `jobPosting`      | object | jobPosting output from the tool                                 |
      | ↳ `id`            | string | Deleted job posting UUID                                        |
      | ↳ `jobId`         | string | Associated job UUID                                             |
      
      ***
      
      ### Ashby Job Posting Updated [#ashby-job-posting-updated]
      
      Trigger workflow when a job posting is updated
      
      #### Configuration [#configuration-10]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-54]
      
      | Parameter             | Type    | Description                                                     |
      | --------------------- | ------- | --------------------------------------------------------------- |
      | `action`              | string  | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId`     | string  | Ashby delivery identifier, stable across retries                |
      | `jobPosting`          | object  | jobPosting output from the tool                                 |
      | ↳ `id`                | string  | Job posting UUID                                                |
      | ↳ `title`             | string  | Job posting title                                               |
      | ↳ `jobId`             | string  | Associated job UUID                                             |
      | ↳ `departmentName`    | string  | Department name                                                 |
      | ↳ `teamName`          | string  | Team name                                                       |
      | ↳ `teamNameHierarchy` | json    | Department-to-team name hierarchy                               |
      | ↳ `locationName`      | string  | Location name                                                   |
      | ↳ `isListed`          | boolean | Whether publicly listed                                         |
      | ↳ `publishedDate`     | string  | Publication timestamp                                           |
      | ↳ `updatedAt`         | string  | Last update timestamp                                           |
      
      ***
      
      ### Ashby Job Updated [#ashby-job-updated]
      
      Trigger workflow when a job is updated
      
      #### Configuration [#configuration-11]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-55]
      
      | Parameter          | Type    | Description                                                       |
      | ------------------ | ------- | ----------------------------------------------------------------- |
      | `action`           | string  | The webhook event type (e.g., applicationSubmit, candidateHire)   |
      | `webhookActionId`  | string  | Ashby delivery identifier, stable across retries                  |
      | `job`              | object  | job output from the tool                                          |
      | ↳ `id`             | string  | Job UUID                                                          |
      | ↳ `title`          | string  | Job title                                                         |
      | ↳ `confidential`   | boolean | Whether the job is confidential                                   |
      | ↳ `status`         | string  | Job status (Open, Closed, Draft, Archived)                        |
      | ↳ `employmentType` | string  | Employment type (FullTime, PartTime, Intern, Contract, Temporary) |
      
      ***
      
      ### Ashby Offer Created [#ashby-offer-created]
      
      Trigger workflow when a new offer is created
      
      #### Configuration [#configuration-12]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-56]
      
      | Parameter            | Type   | Description                                                                                                                                                                          |
      | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
      | `action`             | string | The webhook event type (e.g., applicationSubmit, candidateHire)                                                                                                                      |
      | `webhookActionId`    | string | Ashby delivery identifier, stable across retries                                                                                                                                     |
      | `offer`              | object | offer output from the tool                                                                                                                                                           |
      | ↳ `id`               | string | Offer UUID                                                                                                                                                                           |
      | ↳ `applicationId`    | string | Associated application UUID                                                                                                                                                          |
      | ↳ `acceptanceStatus` | string | Offer acceptance status (Accepted, Declined, Pending, Created, Cancelled)                                                                                                            |
      | ↳ `offerStatus`      | string | Offer process status (WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled) |
      | ↳ `decidedAt`        | string | Offer decision timestamp (ISO 8601). Typically null at creation; populated after candidate responds.                                                                                 |
      | ↳ `latestVersion`    | object | latestVersion output from the tool                                                                                                                                                   |
      | ↳ `id`               | string | Latest offer version UUID                                                                                                                                                            |
      
      ***
      
      ### Ashby Offer Deleted [#ashby-offer-deleted]
      
      Trigger workflow when an offer is deleted
      
      #### Configuration [#configuration-13]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-57]
      
      | Parameter         | Type   | Description                                                     |
      | ----------------- | ------ | --------------------------------------------------------------- |
      | `action`          | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId` | string | Ashby delivery identifier, stable across retries                |
      | `offer`           | object | offer output from the tool                                      |
      | ↳ `id`            | string | Deleted offer UUID                                              |
      | ↳ `applicationId` | string | Associated application UUID                                     |
      
      ***
      
      ### Ashby Offer Updated [#ashby-offer-updated]
      
      Trigger workflow when an offer is updated
      
      #### Configuration [#configuration-14]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-58]
      
      | Parameter            | Type   | Description                                                                                                                                                                          |
      | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
      | `action`             | string | The webhook event type (e.g., applicationSubmit, candidateHire)                                                                                                                      |
      | `webhookActionId`    | string | Ashby delivery identifier, stable across retries                                                                                                                                     |
      | `offer`              | object | offer output from the tool                                                                                                                                                           |
      | ↳ `id`               | string | Offer UUID                                                                                                                                                                           |
      | ↳ `applicationId`    | string | Associated application UUID                                                                                                                                                          |
      | ↳ `acceptanceStatus` | string | Offer acceptance status (Accepted, Declined, Pending, Created, Cancelled)                                                                                                            |
      | ↳ `offerStatus`      | string | Offer process status (WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnApprovalDefinition, WaitingOnCandidateResponse, CandidateRejected, CandidateAccepted, OfferCancelled) |
      | ↳ `decidedAt`        | string | Offer decision timestamp (ISO 8601). Typically null at creation; populated after candidate responds.                                                                                 |
      | ↳ `latestVersion`    | object | latestVersion output from the tool                                                                                                                                                   |
      | ↳ `id`               | string | Latest offer version UUID                                                                                                                                                            |
      
      ***
      
      ### Ashby Opening Created [#ashby-opening-created]
      
      Trigger workflow when a headcount opening is created
      
      #### Configuration [#configuration-15]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-59]
      
      | Parameter         | Type    | Description                                                     |
      | ----------------- | ------- | --------------------------------------------------------------- |
      | `action`          | string  | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId` | string  | Ashby delivery identifier, stable across retries                |
      | `opening`         | object  | opening output from the tool                                    |
      | ↳ `id`            | string  | Opening UUID                                                    |
      | ↳ `openedAt`      | string  | Open timestamp                                                  |
      | ↳ `closedAt`      | string  | Close timestamp                                                 |
      | ↳ `isArchived`    | boolean | Whether archived                                                |
      | ↳ `archivedAt`    | string  | Archive timestamp                                               |
      | ↳ `closeReasonId` | string  | Close reason UUID                                               |
      | ↳ `openingState`  | string  | Opening state                                                   |
      | ↳ `latestVersion` | json    | Latest opening version                                          |
      
      ***
      
      ### Ashby Signature Request Updated [#ashby-signature-request-updated]
      
      Trigger workflow when an e-signature request changes state
      
      #### Configuration [#configuration-16]
      
      | Parameter | Type   | Required | Description |
      | --------- | ------ | -------- | ----------- |
      | `apiKey`  | string | Yes      | API Key     |
      
      #### Output [#output-60]
      
      | Parameter           | Type   | Description                                                     |
      | ------------------- | ------ | --------------------------------------------------------------- |
      | `action`            | string | The webhook event type (e.g., applicationSubmit, candidateHire) |
      | `webhookActionId`   | string | Ashby delivery identifier, stable across retries                |
      | `relatedEntityType` | string | Related entity type: application or offer                       |
      | `applicationId`     | string | Related application UUID                                        |
      | `offerId`           | string | Related offer UUID                                              |
      | `offerVersionId`    | string | Related offer version UUID                                      |
      | `eventType`         | string | Signature request event: sent, cancelled, completed, or deleted |
      
      
      ---
      
      # Athena (/integrations/athena)
      
      
      
      
      
      
      
      {/* MANUAL-CONTENT-START:intro */}
      
      [Amazon Athena](https://aws.amazon.com/athena/) queries data in Amazon S3 with SQL. Start a query, check its execution status, then retrieve the results; cancel a query when needed. Run parameterized queries with execution parameters and prepared statements, reuse recent results, and read runtime statistics after a query completes. The integration also manages named queries, browses data catalogs, databases, and table schemas, and inspects workgroup configuration. Connect with an AWS access key and secret access key.
      
      {/* MANUAL-CONTENT-END */}
      
      ## Usage Instructions [#usage-instructions]
      
      Integrate AWS Athena into workflows. Execute SQL queries against data in S3, check query status and runtime statistics, retrieve results, manage named queries and prepared statements, and inspect data catalogs, databases, tables, and workgroups. Requires AWS access key and secret access key.
      
      ## Actions [#actions]
      
      ### Athena Start Query [#athena-start-query]
      
      Start an SQL query execution in AWS Athena
      
      #### Input [#input]
      
      | Parameter                    | Type    | Required | Description                                                                                                                                                                                                                        |
      | ---------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `awsRegion`                  | string  | Yes      | AWS region (e.g., us-east-1)                                                                                                                                                                                                       |
      | `awsAccessKeyId`             | string  | Yes      | AWS access key ID                                                                                                                                                                                                                  |
      | `awsSecretAccessKey`         | string  | Yes      | AWS secret access key                                                                                                                                                                                                              |
      | `queryString`                | string  | Yes      | SQL query string to execute                                                                                                                                                                                                        |
      | `database`                   | string  | No       | Database name within the catalog                                                                                                                                                                                                   |
      | `catalog`                    | string  | No       | Data catalog name (default: AwsDataCatalog)                                                                                                                                                                                        |
      | `outputLocation`             | string  | No       | S3 output location for query results (e.g., s3://bucket/path/)                                                                                                                                                                     |
      | `workGroup`                  | string  | No       | Workgroup to execute the query in (default: primary)                                                                                                                                                                               |
      | `executionParameters`        | json    | No       | Values for ? placeholders in a parameterized query or EXECUTE statement, applied in order. Pass a JSON array of strings (e.g. \["2024-01-01", "US"]); a plain comma-separated list is also accepted when no value contains a comma |
      | `resultReuseEnabled`         | boolean | No       | Reuse a previous result of the same query instead of re-scanning data (default: false)                                                                                                                                             |
      | `resultReuseMaxAgeInMinutes` | number  | No       | Maximum age in minutes of a previous result eligible for reuse (0-10080, default: 60)                                                                                                                                              |
      
      #### Output [#output]
      
      | Parameter          | Type   | Description                              |
      | ------------------ | ------ | ---------------------------------------- |
      | `queryExecutionId` | string | Unique ID of the started query execution |
      
      ### Athena Get Query Execution [#athena-get-query-execution]
      
      Get the status and details of an Athena query execution
      
      #### Input [#input-1]
      
      | Parameter            | Type   | Required | Description                  |
      | -------------------- | ------ | -------- | ---------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1) |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID            |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key        |
      | `queryExecutionId`   | string | Yes      | Query execution ID to check  |
      
      #### Output [#output-1]
      
      | Parameter                     | Type   | Description                                                 |
      | ----------------------------- | ------ | ----------------------------------------------------------- |
      | `queryExecutionId`            | string | Query execution ID                                          |
      | `query`                       | string | SQL query string                                            |
      | `state`                       | string | Query state (QUEUED, RUNNING, SUCCEEDED, FAILED, CANCELLED) |
      | `stateChangeReason`           | string | Reason for state change (e.g., error message)               |
      | `statementType`               | string | Statement type (DDL, DML, UTILITY)                          |
      | `database`                    | string | Database name                                               |
      | `catalog`                     | string | Data catalog name                                           |
      | `workGroup`                   | string | Workgroup name                                              |
      | `submissionDateTime`          | number | Query submission time (Unix epoch ms)                       |
      | `completionDateTime`          | number | Query completion time (Unix epoch ms)                       |
      | `dataScannedInBytes`          | number | Amount of data scanned in bytes                             |
      | `engineExecutionTimeInMillis` | number | Engine execution time in milliseconds                       |
      | `queryPlanningTimeInMillis`   | number | Query planning time in milliseconds                         |
      | `queryQueueTimeInMillis`      | number | Time the query spent in queue in milliseconds               |
      | `totalExecutionTimeInMillis`  | number | Total execution time in milliseconds                        |
      | `outputLocation`              | string | S3 location of query results                                |
      
      ### Athena Get Query Results [#athena-get-query-results]
      
      Retrieve the results of a completed Athena query execution
      
      #### Input [#input-2]
      
      | Parameter            | Type   | Required | Description                              |
      | -------------------- | ------ | -------- | ---------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)             |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                        |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                    |
      | `queryExecutionId`   | string | Yes      | Query execution ID to get results for    |
      | `maxResults`         | number | No       | Maximum number of rows to return (1-999) |
      | `nextToken`          | string | No       | Pagination token from a previous request |
      
      #### Output [#output-2]
      
      | Parameter     | Type   | Description                                            |
      | ------------- | ------ | ------------------------------------------------------ |
      | `columns`     | array  | Column metadata (name and type)                        |
      | `rows`        | array  | Result rows as key-value objects                       |
      | `nextToken`   | string | Pagination token for next page of results              |
      | `updateCount` | number | Number of rows affected (for INSERT/UPDATE statements) |
      
      ### Athena Stop Query [#athena-stop-query]
      
      Stop a running Athena query execution
      
      #### Input [#input-3]
      
      | Parameter            | Type   | Required | Description                  |
      | -------------------- | ------ | -------- | ---------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1) |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID            |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key        |
      | `queryExecutionId`   | string | Yes      | Query execution ID to stop   |
      
      #### Output [#output-3]
      
      | Parameter | Type    | Description                                |
      | --------- | ------- | ------------------------------------------ |
      | `success` | boolean | Whether the query was successfully stopped |
      
      ### Athena List Query Executions [#athena-list-query-executions]
      
      List recent Athena query execution IDs
      
      #### Input [#input-4]
      
      | Parameter            | Type   | Required | Description                                         |
      | -------------------- | ------ | -------- | --------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                        |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                   |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                               |
      | `workGroup`          | string | No       | Workgroup to list executions for (default: primary) |
      | `maxResults`         | number | No       | Maximum number of results (0-50)                    |
      | `nextToken`          | string | No       | Pagination token from a previous request            |
      
      #### Output [#output-4]
      
      | Parameter           | Type   | Description                    |
      | ------------------- | ------ | ------------------------------ |
      | `queryExecutionIds` | array  | List of query execution IDs    |
      | `nextToken`         | string | Pagination token for next page |
      
      ### Athena Batch Get Query Executions [#athena-batch-get-query-executions]
      
      Get the status and details of up to 50 Athena query executions in one call
      
      #### Input [#input-5]
      
      | Parameter            | Type   | Required | Description                                             |
      | -------------------- | ------ | -------- | ------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                            |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                       |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                   |
      | `queryExecutionIds`  | string | Yes      | Comma-separated query execution IDs to check (up to 50) |
      
      #### Output [#output-5]
      
      | Parameter                       | Type   | Description                                                         |
      | ------------------------------- | ------ | ------------------------------------------------------------------- |
      | `queryExecutions`               | array  | Details for each successfully retrieved query execution             |
      | ↳ `queryExecutionId`            | string | Query execution ID                                                  |
      | ↳ `query`                       | string | SQL query string                                                    |
      | ↳ `state`                       | string | Query state (QUEUED, RUNNING, SUCCEEDED, FAILED, CANCELLED)         |
      | ↳ `stateChangeReason`           | string | Reason for state change                                             |
      | ↳ `statementType`               | string | Statement type (DDL, DML, UTILITY)                                  |
      | ↳ `database`                    | string | Database name                                                       |
      | ↳ `catalog`                     | string | Data catalog name                                                   |
      | ↳ `workGroup`                   | string | Workgroup name                                                      |
      | ↳ `submissionDateTime`          | number | Query submission time (Unix epoch ms)                               |
      | ↳ `completionDateTime`          | number | Query completion time (Unix epoch ms)                               |
      | ↳ `dataScannedInBytes`          | number | Amount of data scanned in bytes                                     |
      | ↳ `engineExecutionTimeInMillis` | number | Engine execution time in milliseconds                               |
      | ↳ `queryPlanningTimeInMillis`   | number | Query planning time in milliseconds                                 |
      | ↳ `queryQueueTimeInMillis`      | number | Time the query spent in queue in milliseconds                       |
      | ↳ `totalExecutionTimeInMillis`  | number | Total execution time in milliseconds                                |
      | ↳ `outputLocation`              | string | S3 location of query results                                        |
      | `unprocessedQueryExecutionIds`  | array  | Query execution IDs that could not be retrieved, with error details |
      | ↳ `queryExecutionId`            | string | Query execution ID                                                  |
      | ↳ `errorCode`                   | string | Error code                                                          |
      | ↳ `errorMessage`                | string | Error message                                                       |
      
      ### Athena Create Named Query [#athena-create-named-query]
      
      Create a saved/named query in AWS Athena
      
      #### Input [#input-6]
      
      | Parameter            | Type   | Required | Description                            |
      | -------------------- | ------ | -------- | -------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)           |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                      |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                  |
      | `name`               | string | Yes      | Name for the saved query               |
      | `database`           | string | Yes      | Database the query runs against        |
      | `queryString`        | string | Yes      | SQL query string to save               |
      | `description`        | string | No       | Description of the named query         |
      | `workGroup`          | string | No       | Workgroup to create the named query in |
      
      #### Output [#output-6]
      
      | Parameter      | Type   | Description                   |
      | -------------- | ------ | ----------------------------- |
      | `namedQueryId` | string | ID of the created named query |
      
      ### Athena Get Named Query [#athena-get-named-query]
      
      Get details of a saved/named query in AWS Athena
      
      #### Input [#input-7]
      
      | Parameter            | Type   | Required | Description                  |
      | -------------------- | ------ | -------- | ---------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1) |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID            |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key        |
      | `namedQueryId`       | string | Yes      | Named query ID to retrieve   |
      
      #### Output [#output-7]
      
      | Parameter      | Type   | Description                     |
      | -------------- | ------ | ------------------------------- |
      | `namedQueryId` | string | Named query ID                  |
      | `name`         | string | Name of the saved query         |
      | `description`  | string | Query description               |
      | `database`     | string | Database the query runs against |
      | `queryString`  | string | SQL query string                |
      | `workGroup`    | string | Workgroup name                  |
      
      ### Athena List Named Queries [#athena-list-named-queries]
      
      List saved/named query IDs in AWS Athena
      
      #### Input [#input-8]
      
      | Parameter            | Type   | Required | Description                              |
      | -------------------- | ------ | -------- | ---------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)             |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                        |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                    |
      | `workGroup`          | string | No       | Workgroup to list named queries for      |
      | `maxResults`         | number | No       | Maximum number of results (0-50)         |
      | `nextToken`          | string | No       | Pagination token from a previous request |
      
      #### Output [#output-8]
      
      | Parameter       | Type   | Description                    |
      | --------------- | ------ | ------------------------------ |
      | `namedQueryIds` | array  | List of named query IDs        |
      | `nextToken`     | string | Pagination token for next page |
      
      ### Athena Delete Named Query [#athena-delete-named-query]
      
      Delete a saved/named query in AWS Athena
      
      #### Input [#input-9]
      
      | Parameter            | Type   | Required | Description                  |
      | -------------------- | ------ | -------- | ---------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1) |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID            |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key        |
      | `namedQueryId`       | string | Yes      | Named query ID to delete     |
      
      #### Output [#output-9]
      
      | Parameter | Type    | Description                                      |
      | --------- | ------- | ------------------------------------------------ |
      | `success` | boolean | Whether the named query was successfully deleted |
      
      ### Athena List Databases [#athena-list-databases]
      
      List the databases available in an Athena data catalog
      
      #### Input [#input-10]
      
      | Parameter            | Type   | Required | Description                                                                                           |
      | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                                          |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                                     |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                                 |
      | `catalogName`        | string | Yes      | Data catalog name to list databases from (e.g., AwsDataCatalog)                                       |
      | `workGroup`          | string | No       | Workgroup for which the metadata is being fetched (required for IAM Identity Center enabled catalogs) |
      | `maxResults`         | number | No       | Maximum number of results (1-50)                                                                      |
      | `nextToken`          | string | No       | Pagination token from a previous request                                                              |
      
      #### Output [#output-10]
      
      | Parameter       | Type   | Description                                       |
      | --------------- | ------ | ------------------------------------------------- |
      | `databases`     | array  | List of databases (name, description, parameters) |
      | ↳ `name`        | string | Database name                                     |
      | ↳ `description` | string | Database description                              |
      | ↳ `parameters`  | json   | Key/value properties set on the database          |
      | `nextToken`     | string | Pagination token for next page                    |
      
      ### Athena List Table Metadata [#athena-list-table-metadata]
      
      List tables and their column/partition metadata for an Athena database
      
      #### Input [#input-11]
      
      | Parameter            | Type   | Required | Description                                                                                           |
      | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                                          |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                                     |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                                 |
      | `catalogName`        | string | Yes      | Data catalog name (e.g., AwsDataCatalog)                                                              |
      | `databaseName`       | string | Yes      | Database name to list tables from                                                                     |
      | `expression`         | string | No       | Regex filter that pattern-matches table names                                                         |
      | `workGroup`          | string | No       | Workgroup for which the metadata is being fetched (required for IAM Identity Center enabled catalogs) |
      | `maxResults`         | number | No       | Maximum number of results (1-50)                                                                      |
      | `nextToken`          | string | No       | Pagination token from a previous request                                                              |
      
      #### Output [#output-11]
      
      | Parameter          | Type   | Description                                                      |
      | ------------------ | ------ | ---------------------------------------------------------------- |
      | `tables`           | array  | Table metadata (name, type, columns, partition keys, parameters) |
      | ↳ `name`           | string | Table name                                                       |
      | ↳ `tableType`      | string | Table type                                                       |
      | ↳ `createTime`     | number | Table creation time (Unix epoch ms)                              |
      | ↳ `lastAccessTime` | number | Table last access time (Unix epoch ms)                           |
      | ↳ `columns`        | array  | Column definitions                                               |
      | ↳ `name`           | string | Column name                                                      |
      | ↳ `type`           | string | Column data type                                                 |
      | ↳ `comment`        | string | Column comment                                                   |
      | ↳ `partitionKeys`  | array  | Partition key definitions                                        |
      | ↳ `name`           | string | Partition key name                                               |
      | ↳ `type`           | string | Partition key data type                                          |
      | ↳ `comment`        | string | Partition key comment                                            |
      | ↳ `parameters`     | json   | Key/value table properties (e.g., classification, location)      |
      | `nextToken`        | string | Pagination token for next page                                   |
      
      ### Athena Get Query Runtime Statistics [#athena-get-query-runtime-statistics]
      
      Get runtime statistics (timeline, row counts, and output stage) for a completed Athena query execution
      
      #### Input [#input-12]
      
      | Parameter            | Type   | Required | Description                                      |
      | -------------------- | ------ | -------- | ------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                     |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                            |
      | `queryExecutionId`   | string | Yes      | Query execution ID to get runtime statistics for |
      
      #### Output [#output-12]
      
      | Parameter                            | Type   | Description                                                                         |
      | ------------------------------------ | ------ | ----------------------------------------------------------------------------------- |
      | `queryExecutionId`                   | string | Query execution ID                                                                  |
      | `timeline`                           | json   | Timing breakdown in milliseconds (available once the query has SUCCEEDED or FAILED) |
      | ↳ `queryQueueTimeInMillis`           | number | Time spent in queue                                                                 |
      | ↳ `servicePreProcessingTimeInMillis` | number | Service pre-processing time                                                         |
      | ↳ `queryPlanningTimeInMillis`        | number | Query planning time                                                                 |
      | ↳ `engineExecutionTimeInMillis`      | number | Engine execution time                                                               |
      | ↳ `serviceProcessingTimeInMillis`    | number | Service processing time                                                             |
      | ↳ `totalExecutionTimeInMillis`       | number | Total execution time                                                                |
      | `rowStatistics`                      | json   | Row and byte counts (updated asynchronously; may be null shortly after completion)  |
      | ↳ `inputRows`                        | number | Rows read                                                                           |
      | ↳ `inputBytes`                       | number | Bytes read                                                                          |
      | ↳ `outputRows`                       | number | Rows produced                                                                       |
      | ↳ `outputBytes`                      | number | Bytes produced                                                                      |
      | `outputStage`                        | json   | Summary of the final query stage                                                    |
      | ↳ `stageId`                          | number | Stage identifier                                                                    |
      | ↳ `state`                            | string | Stage state                                                                         |
      | ↳ `inputRows`                        | number | Rows read by the stage                                                              |
      | ↳ `inputBytes`                       | number | Bytes read by the stage                                                             |
      | ↳ `outputRows`                       | number | Rows produced by the stage                                                          |
      | ↳ `outputBytes`                      | number | Bytes produced by the stage                                                         |
      | ↳ `executionTime`                    | number | Stage execution time in milliseconds                                                |
      | ↳ `subStageCount`                    | number | Number of direct sub-stages                                                         |
      
      ### Athena Batch Get Named Queries [#athena-batch-get-named-queries]
      
      Get the details of up to 50 Athena named queries by ID in a single call
      
      #### Input [#input-13]
      
      | Parameter            | Type   | Required | Description                                |
      | -------------------- | ------ | -------- | ------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                      |
      | `namedQueryIds`      | string | Yes      | Comma-separated named query IDs (up to 50) |
      
      #### Output [#output-13]
      
      | Parameter                  | Type   | Description                                                     |
      | -------------------------- | ------ | --------------------------------------------------------------- |
      | `namedQueries`             | array  | Details for each named query that was found                     |
      | ↳ `namedQueryId`           | string | Named query ID                                                  |
      | ↳ `name`                   | string | Named query name                                                |
      | ↳ `description`            | string | Named query description                                         |
      | ↳ `database`               | string | Database the query runs against                                 |
      | ↳ `queryString`            | string | SQL text of the named query                                     |
      | ↳ `workGroup`              | string | Workgroup the query is saved in                                 |
      | `unprocessedNamedQueryIds` | array  | Named query IDs that could not be retrieved, with error details |
      | ↳ `namedQueryId`           | string | Named query ID                                                  |
      | ↳ `errorCode`              | string | Error code                                                      |
      | ↳ `errorMessage`           | string | Error message                                                   |
      
      ### Athena Update Named Query [#athena-update-named-query]
      
      Update the name, description, or SQL of an existing Athena named query (database and workgroup cannot change)
      
      #### Input [#input-14]
      
      | Parameter            | Type   | Required | Description                                                                        |
      | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                       |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                  |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                              |
      | `namedQueryId`       | string | Yes      | Named query ID to update                                                           |
      | `name`               | string | Yes      | New name for the query (1-128 characters)                                          |
      | `queryString`        | string | Yes      | New SQL query text                                                                 |
      | `description`        | string | No       | New description; omit to keep the current one, or pass an empty string to clear it |
      
      #### Output [#output-14]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `success` | boolean | Whether the operation succeeded |
      
      ### Athena Create Prepared Statement [#athena-create-prepared-statement]
      
      Create a parameterized prepared statement in an Athena workgroup for use with EXECUTE or execution parameters
      
      #### Input [#input-15]
      
      | Parameter            | Type   | Required | Description                                                                                |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                      |
      | `statementName`      | string | Yes      | Prepared statement name (letters, digits, \_ @ : ; must start with a letter or underscore) |
      | `workGroup`          | string | Yes      | Workgroup the prepared statement belongs to                                                |
      | `queryStatement`     | string | Yes      | SQL statement with ? placeholders for parameters                                           |
      | `description`        | string | No       | Description of the prepared statement                                                      |
      
      #### Output [#output-15]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `success` | boolean | Whether the operation succeeded |
      
      ### Athena Get Prepared Statement [#athena-get-prepared-statement]
      
      Get the SQL and metadata of a prepared statement in an Athena workgroup
      
      #### Input [#input-16]
      
      | Parameter            | Type   | Required | Description                                                                                |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                      |
      | `statementName`      | string | Yes      | Prepared statement name (letters, digits, \_ @ : ; must start with a letter or underscore) |
      | `workGroup`          | string | Yes      | Workgroup the prepared statement belongs to                                                |
      
      #### Output [#output-16]
      
      | Parameter          | Type   | Description                        |
      | ------------------ | ------ | ---------------------------------- |
      | `statementName`    | string | Prepared statement name            |
      | `queryStatement`   | string | SQL text of the prepared statement |
      | `workGroupName`    | string | Workgroup the statement belongs to |
      | `description`      | string | Prepared statement description     |
      | `lastModifiedTime` | number | Last modified time (Unix epoch ms) |
      
      ### Athena Batch Get Prepared Statements [#athena-batch-get-prepared-statements]
      
      Get the details of up to 256 prepared statements in an Athena workgroup by name in a single call
      
      #### Input [#input-17]
      
      | Parameter                | Type   | Required | Description                                          |
      | ------------------------ | ------ | -------- | ---------------------------------------------------- |
      | `awsRegion`              | string | Yes      | AWS region (e.g., us-east-1)                         |
      | `awsAccessKeyId`         | string | Yes      | AWS access key ID                                    |
      | `awsSecretAccessKey`     | string | Yes      | AWS secret access key                                |
      | `preparedStatementNames` | string | Yes      | Comma-separated prepared statement names (up to 256) |
      | `workGroup`              | string | Yes      | Workgroup the prepared statement belongs to          |
      
      #### Output [#output-17]
      
      | Parameter                           | Type   | Description                                                     |
      | ----------------------------------- | ------ | --------------------------------------------------------------- |
      | `preparedStatements`                | array  | Details for each prepared statement that was found              |
      | ↳ `statementName`                   | string | Prepared statement name                                         |
      | ↳ `queryStatement`                  | string | SQL text of the prepared statement                              |
      | ↳ `workGroupName`                   | string | Workgroup the statement belongs to                              |
      | ↳ `description`                     | string | Prepared statement description                                  |
      | ↳ `lastModifiedTime`                | number | Last modified time (Unix epoch ms)                              |
      | `unprocessedPreparedStatementNames` | array  | Statement names that could not be retrieved, with error details |
      | ↳ `statementName`                   | string | Prepared statement name                                         |
      | ↳ `errorCode`                       | string | Error code                                                      |
      | ↳ `errorMessage`                    | string | Error message                                                   |
      
      ### Athena Update Prepared Statement [#athena-update-prepared-statement]
      
      Replace the SQL and description of an existing prepared statement in an Athena workgroup
      
      #### Input [#input-18]
      
      | Parameter            | Type   | Required | Description                                                                                |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                      |
      | `statementName`      | string | Yes      | Prepared statement name (letters, digits, \_ @ : ; must start with a letter or underscore) |
      | `workGroup`          | string | Yes      | Workgroup the prepared statement belongs to                                                |
      | `queryStatement`     | string | Yes      | New SQL statement with ? placeholders for parameters                                       |
      | `description`        | string | No       | New description of the prepared statement                                                  |
      
      #### Output [#output-18]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `success` | boolean | Whether the operation succeeded |
      
      ### Athena List Prepared Statements [#athena-list-prepared-statements]
      
      List the prepared statements saved in an Athena workgroup
      
      #### Input [#input-19]
      
      | Parameter            | Type   | Required | Description                               |
      | -------------------- | ------ | -------- | ----------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)              |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                         |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                     |
      | `workGroup`          | string | Yes      | Workgroup to list prepared statements for |
      | `maxResults`         | number | No       | Maximum number of results (1-50)          |
      | `nextToken`          | string | No       | Pagination token from a previous request  |
      
      #### Output [#output-19]
      
      | Parameter            | Type   | Description                        |
      | -------------------- | ------ | ---------------------------------- |
      | `preparedStatements` | array  | Prepared statement summaries       |
      | ↳ `statementName`    | string | Prepared statement name            |
      | ↳ `lastModifiedTime` | number | Last modified time (Unix epoch ms) |
      | `nextToken`          | string | Pagination token for next page     |
      
      ### Athena Delete Prepared Statement [#athena-delete-prepared-statement]
      
      Delete a prepared statement from an Athena workgroup
      
      #### Input [#input-20]
      
      | Parameter            | Type   | Required | Description                                                                                |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                                                      |
      | `statementName`      | string | Yes      | Prepared statement name (letters, digits, \_ @ : ; must start with a letter or underscore) |
      | `workGroup`          | string | Yes      | Workgroup the prepared statement belongs to                                                |
      
      #### Output [#output-20]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `success` | boolean | Whether the operation succeeded |
      
      ### Athena List Data Catalogs [#athena-list-data-catalogs]
      
      List the data catalogs (data sources) registered in the AWS account
      
      #### Input [#input-21]
      
      | Parameter            | Type   | Required | Description                                                |
      | -------------------- | ------ | -------- | ---------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                      |
      | `workGroup`          | string | No       | Workgroup name (required for IAM Identity Center requests) |
      | `maxResults`         | number | No       | Maximum number of results (2-50)                           |
      | `nextToken`          | string | No       | Pagination token from a previous request                   |
      
      #### Output [#output-21]
      
      | Parameter          | Type   | Description                                                   |
      | ------------------ | ------ | ------------------------------------------------------------- |
      | `dataCatalogs`     | array  | Data catalog summaries                                        |
      | ↳ `catalogName`    | string | Catalog name                                                  |
      | ↳ `type`           | string | Catalog type (LAMBDA, GLUE, HIVE, FEDERATED)                  |
      | ↳ `status`         | string | Creation or deletion status (e.g., CREATE\_COMPLETE)          |
      | ↳ `connectionType` | string | Connector type for FEDERATED catalogs (e.g., MYSQL, REDSHIFT) |
      | ↳ `error`          | string | Error text from catalog creation or deletion                  |
      | `nextToken`        | string | Pagination token for next page                                |
      
      ### Athena Get Data Catalog [#athena-get-data-catalog]
      
      Get the type, status, and connection parameters of an Athena data catalog
      
      #### Input [#input-22]
      
      | Parameter            | Type   | Required | Description                                                |
      | -------------------- | ------ | -------- | ---------------------------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                               |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                          |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                      |
      | `name`               | string | Yes      | Data catalog name (e.g., AwsDataCatalog)                   |
      | `workGroup`          | string | No       | Workgroup name (required for IAM Identity Center requests) |
      
      #### Output [#output-22]
      
      | Parameter        | Type   | Description                                                    |
      | ---------------- | ------ | -------------------------------------------------------------- |
      | `name`           | string | Catalog name                                                   |
      | `type`           | string | Catalog type (LAMBDA, GLUE, HIVE, FEDERATED)                   |
      | `description`    | string | Catalog description                                            |
      | `status`         | string | Creation or deletion status (e.g., CREATE\_COMPLETE)           |
      | `connectionType` | string | Connector type for FEDERATED catalogs (e.g., MYSQL, REDSHIFT)  |
      | `error`          | string | Error text from catalog creation or deletion                   |
      | `parameters`     | json   | Catalog connection parameters (e.g., catalog-id, function ARN) |
      
      ### Athena Get Database [#athena-get-database]
      
      Get a single database (name, description, and parameters) from an Athena data catalog
      
      #### Input [#input-23]
      
      | Parameter            | Type   | Required | Description                                                        |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                       |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                  |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                              |
      | `catalogName`        | string | Yes      | Data catalog name (e.g., AwsDataCatalog)                           |
      | `databaseName`       | string | Yes      | Database name                                                      |
      | `workGroup`          | string | No       | Workgroup name (required for IAM Identity Center enabled catalogs) |
      
      #### Output [#output-23]
      
      | Parameter     | Type   | Description                              |
      | ------------- | ------ | ---------------------------------------- |
      | `name`        | string | Database name                            |
      | `description` | string | Database description                     |
      | `parameters`  | json   | Key/value properties set on the database |
      
      ### Athena Get Table Metadata [#athena-get-table-metadata]
      
      Get the columns, partition keys, and properties of a single table in an Athena data catalog database
      
      #### Input [#input-24]
      
      | Parameter            | Type   | Required | Description                                                        |
      | -------------------- | ------ | -------- | ------------------------------------------------------------------ |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)                                       |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                                                  |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                                              |
      | `catalogName`        | string | Yes      | Data catalog name (e.g., AwsDataCatalog)                           |
      | `databaseName`       | string | Yes      | Database name                                                      |
      | `tableName`          | string | Yes      | Table name                                                         |
      | `workGroup`          | string | No       | Workgroup name (required for IAM Identity Center enabled catalogs) |
      
      #### Output [#output-24]
      
      | Parameter        | Type   | Description                                                 |
      | ---------------- | ------ | ----------------------------------------------------------- |
      | `name`           | string | Table name                                                  |
      | `tableType`      | string | Table type (e.g., EXTERNAL\_TABLE, VIRTUAL\_VIEW)           |
      | `createTime`     | number | Table creation time (Unix epoch ms)                         |
      | `lastAccessTime` | number | Last access time (Unix epoch ms)                            |
      | `columns`        | array  | Table columns                                               |
      | ↳ `name`         | string | Column name                                                 |
      | ↳ `type`         | string | Column data type                                            |
      | ↳ `comment`      | string | Column comment                                              |
      | `partitionKeys`  | array  | Partition key columns                                       |
      | ↳ `name`         | string | Column name                                                 |
      | ↳ `type`         | string | Column data type                                            |
      | ↳ `comment`      | string | Column comment                                              |
      | `parameters`     | json   | Key/value table properties (e.g., classification, location) |
      
      ### Athena List Workgroups [#athena-list-workgroups]
      
      List the Athena workgroups available in the AWS account
      
      #### Input [#input-25]
      
      | Parameter            | Type   | Required | Description                              |
      | -------------------- | ------ | -------- | ---------------------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1)             |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID                        |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key                    |
      | `maxResults`         | number | No       | Maximum number of results (1-50)         |
      | `nextToken`          | string | No       | Pagination token from a previous request |
      
      #### Output [#output-25]
      
      | Parameter                        | Type   | Description                                              |
      | -------------------------------- | ------ | -------------------------------------------------------- |
      | `workGroups`                     | array  | Workgroup summaries                                      |
      | ↳ `name`                         | string | Workgroup name                                           |
      | ↳ `state`                        | string | Workgroup state (ENABLED, DISABLED)                      |
      | ↳ `description`                  | string | Workgroup description                                    |
      | ↳ `creationTime`                 | number | Creation time (Unix epoch ms)                            |
      | ↳ `engineVersion`                | json   | Engine version setting (selected and effective versions) |
      | ↳ `selectedEngineVersion`        | string | Requested engine version                                 |
      | ↳ `effectiveEngineVersion`       | string | Engine version Athena actually uses                      |
      | ↳ `identityCenterApplicationArn` | string | IAM Identity Center application ARN                      |
      | `nextToken`                      | string | Pagination token for next page                           |
      
      ### Athena Get Workgroup [#athena-get-workgroup]
      
      Get the configuration of an Athena workgroup, including its result location, encryption, and limits
      
      #### Input [#input-26]
      
      | Parameter            | Type   | Required | Description                  |
      | -------------------- | ------ | -------- | ---------------------------- |
      | `awsRegion`          | string | Yes      | AWS region (e.g., us-east-1) |
      | `awsAccessKeyId`     | string | Yes      | AWS access key ID            |
      | `awsSecretAccessKey` | string | Yes      | AWS secret access key        |
      | `workGroup`          | string | Yes      | Workgroup name               |
      
      #### Output [#output-26]
      
      | Parameter                              | Type    | Description                                                    |
      | -------------------------------------- | ------- | -------------------------------------------------------------- |
      | `name`                                 | string  | Workgroup name                                                 |
      | `state`                                | string  | Workgroup state (ENABLED, DISABLED)                            |
      | `description`                          | string  | Workgroup description                                          |
      | `creationTime`                         | number  | Creation time (Unix epoch ms)                                  |
      | `identityCenterApplicationArn`         | string  | IAM Identity Center application ARN                            |
      | `engineVersion`                        | json    | Engine version setting (selected and effective versions)       |
      | ↳ `selectedEngineVersion`              | string  | Requested engine version                                       |
      | ↳ `effectiveEngineVersion`             | string  | Engine version Athena actually uses                            |
      | `outputLocation`                       | string  | S3 location where query results are written                    |
      | `encryptionOption`                     | string  | Result encryption option (SSE\_S3, SSE\_KMS, CSE\_KMS)         |
      | `kmsKey`                               | string  | KMS key ARN or ID used for result encryption                   |
      | `expectedBucketOwner`                  | string  | Expected AWS account ID of the results bucket owner            |
      | `managedQueryResultsEnabled`           | boolean | Whether results are stored in Athena-owned storage             |
      | `enforceWorkGroupConfiguration`        | boolean | Whether workgroup settings override client-side settings       |
      | `publishCloudWatchMetricsEnabled`      | boolean | Whether CloudWatch metrics are published for the workgroup     |
      | `bytesScannedCutoffPerQuery`           | number  | Per-query data scan limit in bytes                             |
      | `requesterPaysEnabled`                 | boolean | Whether Requester Pays S3 buckets may be queried               |
      | `enableMinimumEncryptionConfiguration` | boolean | Whether a minimum encryption level is enforced                 |
      | `executionRole`                        | string  | Execution role ARN for Spark or IAM Identity Center workgroups |
      
      
      ---
      
      # Atlassian Service Accounts (/integrations/atlassian-service-account)
      
      
      
      
      
      Use an Atlassian service account for Jira, Jira Service Management, and Confluence workflows. One credential can serve all three products on the same site when its account access and token scopes cover each product.
      
      
        Setting up a Confluence knowledge base connector? Use the [connector scope list](#confluence-knowledge-base-connectors). For Search, follow the [Confluence Search service-account guide](/search/confluence#using-a-service-account) for its content and permission scopes. [Jira Search](/search/jira) uses each teammate's OAuth account; a workflow service account does not replace that connection.
      
      
      ## Create the account and token [#create-the-account-and-token]
      
      An **Atlassian organization admin** completes these steps:
      
      1. Open [Atlassian Administration](https://admin.atlassian.com/), select the organization, then **Directory → Service accounts → Create service account**.
      2. Give the account access to the intended site's Jira and/or Confluence apps. Grant the project and space permissions its workflows need, including access to restricted content.
      3. Select the service account, then **Create credentials → API token → Next**.
      4. Name the token, set an expiry between 1 and 365 days, and select **Next**.
      5. Select the scopes below for the products and operations you need. Review and create the token, then copy it. Atlassian shows it only once.
      
      See Atlassian's [service-account setup](https://support.atlassian.com/user-management/docs/manage-your-service-accounts/) and [token instructions](https://support.atlassian.com/user-management/docs/manage-api-tokens-for-service-accounts/).
      
      Atlassian Administration credential selector with API token selected
      
      ## Choose scopes [#choose-scopes]
      
      Start with the connection and read scopes for each product, then check the scope requirements for your workflow operations.
      
      ### Jira and Jira Service Management [#jira-and-jira-service-management]
      
      ```text
      read:jira-user
      read:jira-work
      ```
      
      `read:jira-user` covers the [current-user check](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-myself/#api-rest-api-3-myself-get) when you add the credential, including through Jira Service Management. Add `read:servicedesk-request` for Service Management requests.
      
      ### Confluence [#confluence]
      
      ```text
      read:confluence-user
      read:confluence-content.all
      read:confluence-space.summary
      read:space:confluence
      read:page:confluence
      ```
      
      `read:confluence-user` covers the [current-user check](https://developer.atlassian.com/cloud/confluence/rest/v1/api-group-users/#api-wiki-rest-api-user-current-get). The [space picker](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space/#api-spaces-get) needs `read:space:confluence`; page reads and the page picker need `read:page:confluence`.
      
      ### Confluence knowledge base connectors [#confluence-knowledge-base-connectors]
      
      A Confluence knowledge base connector reads pages, blog posts, attachments, labels, and the space permissions and page restrictions it mirrors. Its service-account token needs every scope below, not only the Confluence scopes above:
      
      ```text
      read:confluence-content.all
      read:page:confluence
      read:blogpost:confluence
      read:attachment:confluence
      read:space:confluence
      read:label:confluence
      search:confluence
      read:confluence-space.summary
      read:content.metadata:confluence
      read:space.permission:confluence
      read:confluence-user
      read:user:confluence
      read:group:confluence
      ```
      
      Without `read:attachment:confluence`, pages still sync, but their PDF, Word, Excel, and PowerPoint attachments are not indexed. To fix a token that is missing scopes, create a replacement token with the full list, add it as a new service-account credential, and select it on the connector.
      
      ### Workflow actions [#workflow-actions]
      
      Add scopes for the actions your workflow performs:
      
      | Actions                                      | Scopes to add                                       |
      | -------------------------------------------- | --------------------------------------------------- |
      | Create or update Jira issues                 | `write:jira-work`                                   |
      | Create or update Service Management requests | `write:servicedesk-request`                         |
      | Manage Service Management customers          | `manage:servicedesk-customer`                       |
      | Create or update Confluence pages            | `write:confluence-content`, `write:page:confluence` |
      
      Deletes, webhooks, Assets, and other operations can require additional scopes. Check the endpoint's complete scope set in the [Jira](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/), [Jira Service Management](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/), or [Confluence](https://developer.atlassian.com/cloud/confluence/rest/v2/intro/) API reference.
      
      Use the **App** and **Scope type** filters to find both classic and granular scopes. Scopes and account permissions are separate: the account must also have access to the project, space, or content.
      
      Atlassian scope picker with the Jira classic scopes read:jira-user and read:jira-work selected
      
      ## Add the credential to Agent Serve [#add-the-credential-to-agent-serve]
      
      1. Open **Integrations** in your workspace sidebar, then **Jira**, **Jira Service Management**, or **Confluence**.
      2. Select **Add to Agent Serve → Add service account**. If only service accounts are available, select **Add service account** directly.
      3. Paste the **API token** and enter **Site domain**, such as `your-team.atlassian.net`. Omit `https://` and any path. Optionally add a display name and description.
      4. Select **Add service account**. Agent Serve checks the token against the selected product's current-user endpoint; resolve any error before continuing.
      5. In your workflow's Jira, Jira Service Management, or Confluence block, select the credential and configure the operation.
      
      The credential appears on all three integration pages, but adding it only validates the selected product. Check account access and scopes before using another product.
      
      ## Troubleshooting and rotation [#troubleshooting-and-rotation]
      
      | Problem                                        | What to check                                                                                                                                                                                                         |
      | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | Cannot add the credential                      | Use a scoped API token from **Directory → Service accounts**, verify its expiry and site, and include the selected product's current-user scope above.                                                                |
      | Empty or failed picker                         | Include `read:jira-work` for Jira projects or `read:space:confluence` for Confluence spaces, and grant the account access to the selected site and content.                                                           |
      | A workflow returns a scope or permission error | Check the operation's full scope list and the account's project/space permissions. Successful connection does not validate every operation.                                                                           |
      | Token expires or needs different scopes        | Create a replacement token, add it as a new Agent Serve service-account credential, and select it in the affected workflows. Test them before revoking the old token. Agent Serve does not refresh pasted API tokens. |
      | Data Center or Server host                     | This credential supports Atlassian Cloud only.                                                                                                                                                                        |
      
      For a Search source, follow [Confluence's indexing-account replacement steps](/search/confluence#using-a-service-account).
      
      
      ---
      
      # Attio API Keys (/integrations/attio-service-account)
      
      
      
      
      
      Connect Attio with a workspace API key created by an admin. Select scopes for the records and operations your workflows need.
      
      ## Prerequisites [#prerequisites]
      
      You need an Attio **workspace admin**. Only admins can create and manage access tokens.
      
      ## Creating the API Key [#creating-the-api-key]
      
      
        
          Open **Workspace settings** in Attio (dropdown beside your workspace name) and go to the **Developers** tab
      
          {/* TODO(screenshot): Attio workspace settings with the Developers tab highlighted */}
        
      
        
          Click **New access token** and give it a name (e.g. `Agent Serve Integration`)
        
      
        
          Select the scopes the key needs. To match everything Agent Serve's Attio blocks can do, grant:
      
          ```
          record_permission     (read-write)
          object_configuration  (read-write)
          list_configuration    (read-write)
          list_entry            (read-write)
          note                  (read-write)
          task                  (read-write)
          comment               (read-write)
          user_management       (read)
          webhook               (read-write)
          ```
      
          Record and object tools need `record_permission` plus `object_configuration`; list tools need `list_configuration` and `list_entry`; note, task, comment, and webhook tools need their respective scopes; member lookups need `user_management:read`.
      
          {/* TODO(screenshot): Attio access token scope picker with the scopes above selected */}
        
      
        
          Copy the key and store it somewhere safe.
        
      
      
      
        Scopes are editable after creation — if a workflow later fails with a permission error, an admin can add the missing scope to the existing key in the Developers settings without rotating it.
      
      
      
        The API key is bearer credentials for your Attio workspace. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the key at rest.
      
      
      ## Adding the API Key to Agent Serve [#adding-the-api-key-to-agent-serve]
      
      
        
          Open **Integrations** from your workspace sidebar
        
      
        
          Search for "Attio" and open it, then click **Add to Agent Serve** and choose **Add API key**
      
          {/* TODO(screenshot): Attio integration page with the service-account connect option */}
        
      
        
          Paste the API key and optionally set a display name and description
      
          {/* TODO(screenshot): Add Attio API key dialog with the API key filled in */}
        
      
        
          Click **Add API key**. Agent Serve verifies the key by calling Attio's `/v2/self` endpoint — if it fails, you'll see a specific error explaining what went wrong.
        
      
      
      
        A key with missing scopes still validates successfully — the validation endpoint is reachable with any live key. Check the scopes granted to the key in Attio: tools whose scopes are missing will fail at run time with permission errors.
      
      
      ## Using the Credential in Workflows [#using-the-credential-in-workflows]
      
      Add an Attio block to your workflow. In the credential dropdown, select the saved Attio API key. Select it and configure the block as you normally would.
      
      {/* TODO(screenshot): Attio block in a workflow with the service account selected as the credential */}
      
      The block calls the Attio API (`api.attio.com/v2`) with the key as a standard Bearer credential, with whatever scopes the admin granted the key.
      
      
      
      
      ---
      
      # Attio (/integrations/attio)
      
      
      
      
      
      
      
      {/* MANUAL-CONTENT-START:intro */}
      
      Use [Attio](https://www.attio.com/) in Agent Serve to manage records for people, companies, and custom objects; work with lists, notes, tasks, and comments; and configure webhooks. Attio event triggers can start workflows when records or related resources change.
      
      {/* MANUAL-CONTENT-END */}
      
      ## Usage Instructions [#usage-instructions]
      
      Connect to Attio to manage CRM records (people, companies, custom objects), notes, tasks, lists, list entries, comments, workspace members, and webhooks.
      
      ## Actions [#actions]
      
      ### Attio List Records [#attio-list-records]
      
      Query and list records for a given object type (e.g. people, companies)
      
      #### Input [#input]
      
      | Parameter    | Type   | Required | Description                                                                 |
      | ------------ | ------ | -------- | --------------------------------------------------------------------------- |
      | `objectType` | string | Yes      | The object type slug (e.g. people, companies)                               |
      | `filter`     | string | No       | JSON filter object for querying records                                     |
      | `sorts`      | string | No       | JSON array of sort objects, e.g. \[\{"direction":"asc","attribute":"name"}] |
      | `limit`      | number | No       | Maximum number of records to return (default 500)                           |
      | `offset`     | number | No       | Number of records to skip for pagination                                    |
      
      #### Output [#output]
      
      | Parameter        | Type   | Description                     |
      | ---------------- | ------ | ------------------------------- |
      | `records`        | array  | Array of Attio records          |
      | ↳ `id`           | object | The record identifier           |
      | ↳ `workspace_id` | string | The workspace ID                |
      | ↳ `object_id`    | string | The object ID                   |
      | ↳ `record_id`    | string | The record ID                   |
      | ↳ `created_at`   | string | When the record was created     |
      | ↳ `web_url`      | string | URL to view the record in Attio |
      | ↳ `values`       | json   | The record attribute values     |
      | `count`          | number | Number of records returned      |
      
      ### Attio Get Record [#attio-get-record]
      
      Get a single record by ID from Attio
      
      #### Input [#input-1]
      
      | Parameter    | Type   | Required | Description                                   |
      | ------------ | ------ | -------- | --------------------------------------------- |
      | `objectType` | string | Yes      | The object type slug (e.g. people, companies) |
      | `recordId`   | string | Yes      | The ID of the record to retrieve              |
      
      #### Output [#output-1]
      
      | Parameter        | Type   | Description                     |
      | ---------------- | ------ | ------------------------------- |
      | `record`         | object | An Attio record                 |
      | ↳ `id`           | object | The record identifier           |
      | ↳ `workspace_id` | string | The workspace ID                |
      | ↳ `object_id`    | string | The object ID                   |
      | ↳ `record_id`    | string | The record ID                   |
      | ↳ `created_at`   | string | When the record was created     |
      | ↳ `web_url`      | string | URL to view the record in Attio |
      | ↳ `values`       | json   | The record attribute values     |
      | `recordId`       | string | The record ID                   |
      | `webUrl`         | string | URL to view the record in Attio |
      
      ### Attio Create Record [#attio-create-record]
      
      Create a new record in Attio for a given object type
      
      #### Input [#input-2]
      
      | Parameter    | Type   | Required | Description                                          |
      | ------------ | ------ | -------- | ---------------------------------------------------- |
      | `objectType` | string | Yes      | The object type slug (e.g. people, companies)        |
      | `values`     | string | Yes      | JSON object of attribute values to set on the record |
      
      #### Output [#output-2]
      
      | Parameter        | Type   | Description                     |
      | ---------------- | ------ | ------------------------------- |
      | `record`         | object | An Attio record                 |
      | ↳ `id`           | object | The record identifier           |
      | ↳ `workspace_id` | string | The workspace ID                |
      | ↳ `object_id`    | string | The object ID                   |
      | ↳ `record_id`    | string | The record ID                   |
      | ↳ `created_at`   | string | When the record was created     |
      | ↳ `web_url`      | string | URL to view the record in Attio |
      | ↳ `values`       | json   | The record attribute values     |
      | `recordId`       | string | The ID of the created record    |
      | `webUrl`         | string | URL to view the record in Attio |
      
      ### Attio Update Record [#attio-update-record]
      
      Update an existing record in Attio (appends multiselect values)
      
      #### Input [#input-3]
      
      | Parameter    | Type   | Required | Description                                   |
      | ------------ | ------ | -------- | --------------------------------------------- |
      | `objectType` | string | Yes      | The object type slug (e.g. people, companies) |
      | `recordId`   | string | Yes      | The ID of the record to update                |
      | `values`     | string | Yes      | JSON object of attribute values to update     |
      
      #### Output [#output-3]
      
      | Parameter        | Type   | Description                     |
      | ---------------- | ------ | ------------------------------- |
      | `record`         | object | An Attio record                 |
      | ↳ `id`           | object | The record identifier           |
      | ↳ `workspace_id` | string | The workspace ID                |
      | ↳ `object_id`    | string | The object ID                   |
      | ↳ `record_id`    | string | The record ID                   |
      | ↳ `created_at`   | string | When the record was created     |
      | ↳ `web_url`      | string | URL to view the record in Attio |
      | ↳ `values`       | json   | The record attribute values     |
      | `recordId`       | string | The ID of the updated record    |
      | `webUrl`         | string | URL to view the record in Attio |
      
      ### Attio Delete Record [#attio-delete-record]
      
      Delete a record from Attio
      
      #### Input [#input-4]
      
      | Parameter    | Type   | Required | Description                                   |
      | ------------ | ------ | -------- | --------------------------------------------- |
      | `objectType` | string | Yes      | The object type slug (e.g. people, companies) |
      | `recordId`   | string | Yes      | The ID of the record to delete                |
      
      #### Output [#output-4]
      
      | Parameter | Type    | Description                    |
      | --------- | ------- | ------------------------------ |
      | `deleted` | boolean | Whether the record was deleted |
      
      ### Attio Search Records [#attio-search-records]
      
      Fuzzy search for records across object types in Attio
      
      #### Input [#input-5]
      
      | Parameter | Type   | Required | Description                                                    |
      | --------- | ------ | -------- | -------------------------------------------------------------- |
      | `query`   | string | Yes      | The search query (max 256 characters)                          |
      | `objects` | string | Yes      | Comma-separated object slugs to search (e.g. people,companies) |
      | `limit`   | number | No       | Maximum number of results (1-25, default 25)                   |
      
      #### Output [#output-5]
      
      | Parameter       | Type   | Description                 |
      | --------------- | ------ | --------------------------- |
      | `results`       | array  | Search results              |
      | ↳ `recordId`    | string | The record ID               |
      | ↳ `objectId`    | string | The object type ID          |
      | ↳ `objectSlug`  | string | The object type slug        |
      | ↳ `recordText`  | string | Display text for the record |
      | ↳ `recordImage` | string | Image URL for the record    |
      | `count`         | number | Number of results returned  |
      
      ### Attio Assert Record [#attio-assert-record]
      
      Upsert a record in Attio — creates it if no match is found, updates it if a match exists
      
      #### Input [#input-6]
      
      | Parameter           | Type   | Required | Description                                                                                                                       |
      | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- |
      | `objectType`        | string | Yes      | The object type slug (e.g. people, companies)                                                                                     |
      | `matchingAttribute` | string | Yes      | The attribute slug to match on for upsert (e.g. email\_addresses for people, domains for companies)                               |
      | `values`            | string | Yes      | JSON object of attribute values (e.g. \{"email\_addresses":\[\{"email\_address":"[test@example.com](mailto:test@example.com)"}]}) |
      
      #### Output [#output-6]
      
      | Parameter        | Type   | Description                     |
      | ---------------- | ------ | ------------------------------- |
      | `record`         | object | The upserted record             |
      | ↳ `id`           | object | The record identifier           |
      | ↳ `workspace_id` | string | The workspace ID                |
      | ↳ `object_id`    | string | The object ID                   |
      | ↳ `record_id`    | string | The record ID                   |
      | ↳ `created_at`   | string | When the record was created     |
      | ↳ `web_url`      | string | URL to view the record in Attio |
      | ↳ `values`       | json   | The record attribute values     |
      | `recordId`       | string | The record ID                   |
      | `webUrl`         | string | URL to view the record in Attio |
      
      ### Attio List Notes [#attio-list-notes]
      
      List notes in Attio, optionally filtered by parent record
      
      #### Input [#input-7]
      
      | Parameter        | Type   | Required | Description                                                  |
      | ---------------- | ------ | -------- | ------------------------------------------------------------ |
      | `parentObject`   | string | No       | Object type slug to filter notes by (e.g. people, companies) |
      | `parentRecordId` | string | No       | Record ID to filter notes by                                 |
      | `limit`          | number | No       | Maximum number of notes to return (default 10, max 50)       |
      | `offset`         | number | No       | Number of notes to skip for pagination                       |
      
      #### Output [#output-7]
      
      | Parameter             | Type   | Description                                                     |
      | --------------------- | ------ | --------------------------------------------------------------- |
      | `notes`               | array  | Array of notes                                                  |
      | ↳ `noteId`            | string | The note ID                                                     |
      | ↳ `parentObject`      | string | The parent object slug                                          |
      | ↳ `parentRecordId`    | string | The parent record ID                                            |
      | ↳ `title`             | string | The note title                                                  |
      | ↳ `contentPlaintext`  | string | The note content as plaintext                                   |
      | ↳ `contentMarkdown`   | string | The note content as markdown                                    |
      | ↳ `meetingId`         | string | The linked meeting ID                                           |
      | ↳ `tags`              | array  | Tags on the note                                                |
      | ↳ `type`              | string | The tag type (workspace-member or record)                       |
      | ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
      | ↳ `object`            | string | The tagged object slug (present when type is record)            |
      | ↳ `recordId`          | string | The tagged record ID (present when type is record)              |
      | ↳ `createdByActor`    | object | The actor who created the note                                  |
      | ↳ `type`              | string | The actor type (e.g. workspace-member, api-token, system)       |
      | ↳ `id`                | string | The actor ID                                                    |
      | ↳ `createdAt`         | string | When the note was created                                       |
      | `count`               | number | Number of notes returned                                        |
      
      ### Attio Get Note [#attio-get-note]
      
      Get a single note by ID from Attio
      
      #### Input [#input-8]
      
      | Parameter | Type   | Required | Description                    |
      | --------- | ------ | -------- | ------------------------------ |
      | `noteId`  | string | Yes      | The ID of the note to retrieve |
      
      #### Output [#output-8]
      
      | Parameter             | Type   | Description                                                     |
      | --------------------- | ------ | --------------------------------------------------------------- |
      | `noteId`              | string | The note ID                                                     |
      | `parentObject`        | string | The parent object slug                                          |
      | `parentRecordId`      | string | The parent record ID                                            |
      | `title`               | string | The note title                                                  |
      | `contentPlaintext`    | string | The note content as plaintext                                   |
      | `contentMarkdown`     | string | The note content as markdown                                    |
      | `meetingId`           | string | The linked meeting ID                                           |
      | `tags`                | array  | Tags on the note                                                |
      | ↳ `type`              | string | The tag type (workspace-member or record)                       |
      | ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
      | ↳ `object`            | string | The tagged object slug (present when type is record)            |
      | ↳ `recordId`          | string | The tagged record ID (present when type is record)              |
      | `createdByActor`      | object | The actor who created the note                                  |
      | ↳ `type`              | string | The actor type (e.g. workspace-member, api-token, system)       |
      | ↳ `id`                | string | The actor ID                                                    |
      | `createdAt`           | string | When the note was created                                       |
      
      ### Attio Create Note [#attio-create-note]
      
      Create a note on a record in Attio
      
      #### Input [#input-9]
      
      | Parameter        | Type   | Required | Description                                               |
      | ---------------- | ------ | -------- | --------------------------------------------------------- |
      | `parentObject`   | string | Yes      | The parent object type slug (e.g. people, companies)      |
      | `parentRecordId` | string | Yes      | The parent record ID to attach the note to                |
      | `title`          | string | Yes      | The note title                                            |
      | `content`        | string | Yes      | The note content                                          |
      | `format`         | string | No       | Content format: plaintext or markdown (default plaintext) |
      | `createdAt`      | string | No       | Backdate the note creation time (ISO 8601 format)         |
      | `meetingId`      | string | No       | Associate the note with a meeting ID                      |
      
      #### Output [#output-9]
      
      | Parameter             | Type   | Description                                                     |
      | --------------------- | ------ | --------------------------------------------------------------- |
      | `noteId`              | string | The note ID                                                     |
      | `parentObject`        | string | The parent object slug                                          |
      | `parentRecordId`      | string | The parent record ID                                            |
      | `title`               | string | The note title                                                  |
      | `contentPlaintext`    | string | The note content as plaintext                                   |
      | `contentMarkdown`     | string | The note content as markdown                                    |
      | `meetingId`           | string | The linked meeting ID                                           |
      | `tags`                | array  | Tags on the note                                                |
      | ↳ `type`              | string | The tag type (workspace-member or record)                       |
      | ↳ `workspaceMemberId` | string | The workspace member ID (present when type is workspace-member) |
      | ↳ `object`            | string | The tagged object slug (present when type is record)            |
      | ↳ `recordId`          | string | The tagged record ID (present when type is record)              |
      | `createdByActor`      | object | The actor who created the note                                  |
      | ↳ `type`              | string | The actor type (e.g. workspace-member, api-token, system)       |
      | ↳ `id`                | string | The actor ID                                                    |
      | `createdAt`           | string | When the note was created                                       |
      
      ### Attio Delete Note [#attio-delete-note]
      
      Delete a note from Attio
      
      #### Input [#input-10]
      
      | Parameter | Type   | Required | Description                  |
      | --------- | ------ | -------- | ---------------------------- |
      | `noteId`  | string | Yes      | The ID of the note to delete |
      
      #### Output [#output-10]
      
      | Parameter | Type    | Description                  |
      | --------- | ------- | ---------------------------- |
      | `deleted` | boolean | Whether the note was deleted |
      
      ### Attio List Tasks [#attio-list-tasks]
      
      List tasks in Attio, optionally filtered by record, assignee, or completion status
      
      #### Input [#input-11]
      
      | Parameter        | Type    | Required | Description                                                                             |
      | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------- |
      | `linkedObject`   | string  | No       | Object type slug to filter tasks by (requires linkedRecordId)                           |
      | `linkedRecordId` | string  | No       | Record ID to filter tasks by (requires linkedObject)                                    |
      | `assignee`       | string  | No       | Assignee email or member ID to filter by                                                |
      | `isCompleted`    | boolean | No       | Filter by completion status                                                             |
      | `sort`           | string  | No       | Sort order: created\_at:asc, created\_at:desc, completed\_at:asc, or completed\_at:desc |
      | `limit`          | number  | No       | Maximum number of tasks to return (default 500)                                         |
      | `offset`         | number  | No       | Number of tasks to skip for pagination                                                  |
      
      #### Output [#output-11]
      
      | Parameter          | Type    | Description                                               |
      | ------------------ | ------- | --------------------------------------------------------- |
      | `tasks`            | array   | Array of tasks                                            |
      | ↳ `taskId`         | string  | The task ID                                               |
      | ↳ `content`        | string  | The task content                                          |
      | ↳ `deadlineAt`     | string  | The task deadline                                         |
      | ↳ `isCompleted`    | boolean | Whether the task is completed                             |
      | ↳ `completedAt`    | string  | When the task was completed                               |
      | ↳ `linkedRecords`  | array   | Records linked to this task                               |
      | ↳ `targetObjectId` | string  | The linked object ID                                      |
      | ↳ `targetRecordId` | string  | The linked record ID                                      |
      | ↳ `assignees`      | array   | Task assignees                                            |
      | ↳ `type`           | string  | The assignee actor type (e.g. workspace-member)           |
      | ↳ `id`             | string  | The assignee actor ID                                     |
      | ↳ `createdByActor` | object  | The actor who created this task                           |
      | ↳ `type`           | string  | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string  | The actor ID                                              |
      | ↳ `createdAt`      | string  | When the task was created                                 |
      | `count`            | number  | Number of tasks returned                                  |
      
      ### Attio Get Task [#attio-get-task]
      
      Get a single task by ID from Attio
      
      #### Input [#input-12]
      
      | Parameter | Type   | Required | Description                    |
      | --------- | ------ | -------- | ------------------------------ |
      | `taskId`  | string | Yes      | The ID of the task to retrieve |
      
      #### Output [#output-12]
      
      | Parameter          | Type    | Description                                               |
      | ------------------ | ------- | --------------------------------------------------------- |
      | `taskId`           | string  | The task ID                                               |
      | `content`          | string  | The task content                                          |
      | `deadlineAt`       | string  | The task deadline                                         |
      | `isCompleted`      | boolean | Whether the task is completed                             |
      | `completedAt`      | string  | When the task was completed                               |
      | `linkedRecords`    | array   | Records linked to this task                               |
      | ↳ `targetObjectId` | string  | The linked object ID                                      |
      | ↳ `targetRecordId` | string  | The linked record ID                                      |
      | `assignees`        | array   | Task assignees                                            |
      | ↳ `type`           | string  | The assignee actor type (e.g. workspace-member)           |
      | ↳ `id`             | string  | The assignee actor ID                                     |
      | `createdByActor`   | object  | The actor who created this task                           |
      | ↳ `type`           | string  | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string  | The actor ID                                              |
      | `createdAt`        | string  | When the task was created                                 |
      
      ### Attio Create Task [#attio-create-task]
      
      Create a task in Attio
      
      #### Input [#input-13]
      
      | Parameter       | Type    | Required | Description                                                                                                     |
      | --------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- |
      | `content`       | string  | Yes      | The task content (max 2000 characters)                                                                          |
      | `deadlineAt`    | string  | No       | Deadline in ISO 8601 format (e.g. 2024-12-01T15:00:00.000Z)                                                     |
      | `isCompleted`   | boolean | No       | Whether the task is completed (default false)                                                                   |
      | `linkedRecords` | string  | No       | JSON array of linked records (e.g. \[\{"target\_object":"people","target\_record\_id":"..."}])                  |
      | `assignees`     | string  | No       | JSON array of assignees (e.g. \[\{"referenced\_actor\_type":"workspace-member","referenced\_actor\_id":"..."}]) |
      
      #### Output [#output-13]
      
      | Parameter          | Type    | Description                                               |
      | ------------------ | ------- | --------------------------------------------------------- |
      | `taskId`           | string  | The task ID                                               |
      | `content`          | string  | The task content                                          |
      | `deadlineAt`       | string  | The task deadline                                         |
      | `isCompleted`      | boolean | Whether the task is completed                             |
      | `completedAt`      | string  | When the task was completed                               |
      | `linkedRecords`    | array   | Records linked to this task                               |
      | ↳ `targetObjectId` | string  | The linked object ID                                      |
      | ↳ `targetRecordId` | string  | The linked record ID                                      |
      | `assignees`        | array   | Task assignees                                            |
      | ↳ `type`           | string  | The assignee actor type (e.g. workspace-member)           |
      | ↳ `id`             | string  | The assignee actor ID                                     |
      | `createdByActor`   | object  | The actor who created this task                           |
      | ↳ `type`           | string  | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string  | The actor ID                                              |
      | `createdAt`        | string  | When the task was created                                 |
      
      ### Attio Update Task [#attio-update-task]
      
      Update a task in Attio (deadline, completion status, linked records, assignees)
      
      #### Input [#input-14]
      
      | Parameter       | Type    | Required | Description                     |
      | --------------- | ------- | -------- | ------------------------------- |
      | `taskId`        | string  | Yes      | The ID of the task to update    |
      | `deadlineAt`    | string  | No       | New deadline in ISO 8601 format |
      | `isCompleted`   | boolean | No       | Whether the task is completed   |
      | `linkedRecords` | string  | No       | JSON array of linked records    |
      | `assignees`     | string  | No       | JSON array of assignees         |
      
      #### Output [#output-14]
      
      | Parameter          | Type    | Description                                               |
      | ------------------ | ------- | --------------------------------------------------------- |
      | `taskId`           | string  | The task ID                                               |
      | `content`          | string  | The task content                                          |
      | `deadlineAt`       | string  | The task deadline                                         |
      | `isCompleted`      | boolean | Whether the task is completed                             |
      | `completedAt`      | string  | When the task was completed                               |
      | `linkedRecords`    | array   | Records linked to this task                               |
      | ↳ `targetObjectId` | string  | The linked object ID                                      |
      | ↳ `targetRecordId` | string  | The linked record ID                                      |
      | `assignees`        | array   | Task assignees                                            |
      | ↳ `type`           | string  | The assignee actor type (e.g. workspace-member)           |
      | ↳ `id`             | string  | The assignee actor ID                                     |
      | `createdByActor`   | object  | The actor who created this task                           |
      | ↳ `type`           | string  | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string  | The actor ID                                              |
      | `createdAt`        | string  | When the task was created                                 |
      
      ### Attio Delete Task [#attio-delete-task]
      
      Delete a task from Attio
      
      #### Input [#input-15]
      
      | Parameter | Type   | Required | Description                  |
      | --------- | ------ | -------- | ---------------------------- |
      | `taskId`  | string | Yes      | The ID of the task to delete |
      
      #### Output [#output-15]
      
      | Parameter | Type    | Description                  |
      | --------- | ------- | ---------------------------- |
      | `deleted` | boolean | Whether the task was deleted |
      
      ### Attio List Objects [#attio-list-objects]
      
      List all objects (system and custom) in the Attio workspace
      
      #### Input [#input-16]
      
      | Parameter | Type | Required | Description |
      | --------- | ---- | -------- | ----------- |
      
      #### Output [#output-16]
      
      | Parameter        | Type   | Description                           |
      | ---------------- | ------ | ------------------------------------- |
      | `objects`        | array  | Array of objects                      |
      | ↳ `objectId`     | string | The object ID                         |
      | ↳ `apiSlug`      | string | The API slug (e.g. people, companies) |
      | ↳ `singularNoun` | string | Singular display name                 |
      | ↳ `pluralNoun`   | string | Plural display name                   |
      | ↳ `createdAt`    | string | When the object was created           |
      | `count`          | number | Number of objects returned            |
      
      ### Attio Get Object [#attio-get-object]
      
      Get a single object by ID or slug
      
      #### Input [#input-17]
      
      | Parameter | Type   | Required | Description                                    |
      | --------- | ------ | -------- | ---------------------------------------------- |
      | `object`  | string | Yes      | The object ID or slug (e.g. people, companies) |
      
      #### Output [#output-17]
      
      | Parameter      | Type   | Description                           |
      | -------------- | ------ | ------------------------------------- |
      | `objectId`     | string | The object ID                         |
      | `apiSlug`      | string | The API slug (e.g. people, companies) |
      | `singularNoun` | string | Singular display name                 |
      | `pluralNoun`   | string | Plural display name                   |
      | `createdAt`    | string | When the object was created           |
      
      ### Attio Create Object [#attio-create-object]
      
      Create a custom object in Attio
      
      #### Input [#input-18]
      
      | Parameter      | Type   | Required | Description                                 |
      | -------------- | ------ | -------- | ------------------------------------------- |
      | `apiSlug`      | string | Yes      | The API slug for the object (e.g. projects) |
      | `singularNoun` | string | Yes      | Singular display name (e.g. Project)        |
      | `pluralNoun`   | string | Yes      | Plural display name (e.g. Projects)         |
      
      #### Output [#output-18]
      
      | Parameter      | Type   | Description                           |
      | -------------- | ------ | ------------------------------------- |
      | `objectId`     | string | The object ID                         |
      | `apiSlug`      | string | The API slug (e.g. people, companies) |
      | `singularNoun` | string | Singular display name                 |
      | `pluralNoun`   | string | Plural display name                   |
      | `createdAt`    | string | When the object was created           |
      
      ### Attio Update Object [#attio-update-object]
      
      Update a custom object in Attio
      
      #### Input [#input-19]
      
      | Parameter      | Type   | Required | Description                     |
      | -------------- | ------ | -------- | ------------------------------- |
      | `object`       | string | Yes      | The object ID or slug to update |
      | `apiSlug`      | string | No       | New API slug                    |
      | `singularNoun` | string | No       | New singular display name       |
      | `pluralNoun`   | string | No       | New plural display name         |
      
      #### Output [#output-19]
      
      | Parameter      | Type   | Description                           |
      | -------------- | ------ | ------------------------------------- |
      | `objectId`     | string | The object ID                         |
      | `apiSlug`      | string | The API slug (e.g. people, companies) |
      | `singularNoun` | string | Singular display name                 |
      | `pluralNoun`   | string | Plural display name                   |
      | `createdAt`    | string | When the object was created           |
      
      ### Attio List Lists [#attio-list-lists]
      
      List all lists in the Attio workspace
      
      #### Input [#input-20]
      
      | Parameter | Type | Required | Description |
      | --------- | ---- | -------- | ----------- |
      
      #### Output [#output-20]
      
      | Parameter                 | Type   | Description                                               |
      | ------------------------- | ------ | --------------------------------------------------------- |
      | `lists`                   | array  | Array of lists                                            |
      | ↳ `listId`                | string | The list ID                                               |
      | ↳ `apiSlug`               | string | The API slug for the list                                 |
      | ↳ `name`                  | string | The list name                                             |
      | ↳ `parentObject`          | string | The parent object slug (e.g. people, companies)           |
      | ↳ `workspaceAccess`       | string | Workspace-level access (e.g. full-access, read-only)      |
      | ↳ `workspaceMemberAccess` | json   | Member-level access entries                               |
      | ↳ `createdByActor`        | object | The actor who created the list                            |
      | ↳ `type`                  | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`                    | string | The actor ID                                              |
      | ↳ `createdAt`             | string | When the list was created                                 |
      | `count`                   | number | Number of lists returned                                  |
      
      ### Attio Get List [#attio-get-list]
      
      Get a single list by ID or slug
      
      #### Input [#input-21]
      
      | Parameter | Type   | Required | Description         |
      | --------- | ------ | -------- | ------------------- |
      | `list`    | string | Yes      | The list ID or slug |
      
      #### Output [#output-21]
      
      | Parameter               | Type   | Description                                               |
      | ----------------------- | ------ | --------------------------------------------------------- |
      | `listId`                | string | The list ID                                               |
      | `apiSlug`               | string | The API slug for the list                                 |
      | `name`                  | string | The list name                                             |
      | `parentObject`          | string | The parent object slug (e.g. people, companies)           |
      | `workspaceAccess`       | string | Workspace-level access (e.g. full-access, read-only)      |
      | `workspaceMemberAccess` | json   | Member-level access entries                               |
      | `createdByActor`        | object | The actor who created the list                            |
      | ↳ `type`                | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`                  | string | The actor ID                                              |
      | `createdAt`             | string | When the list was created                                 |
      
      ### Attio Create List [#attio-create-list]
      
      Create a new list in Attio
      
      #### Input [#input-22]
      
      | Parameter               | Type   | Required | Description                                                                                            |
      | ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
      | `name`                  | string | Yes      | The list name                                                                                          |
      | `apiSlug`               | string | No       | The API slug for the list (auto-generated from name if omitted)                                        |
      | `parentObject`          | string | Yes      | The parent object slug (e.g. people, companies)                                                        |
      | `workspaceAccess`       | string | No       | Workspace-level access: full-access, read-and-write, or read-only (omit for private)                   |
      | `workspaceMemberAccess` | string | No       | JSON array of member access entries, e.g. \[\{"workspace\_member\_id":"...","level":"read-and-write"}] |
      
      #### Output [#output-22]
      
      | Parameter               | Type   | Description                                               |
      | ----------------------- | ------ | --------------------------------------------------------- |
      | `listId`                | string | The list ID                                               |
      | `apiSlug`               | string | The API slug for the list                                 |
      | `name`                  | string | The list name                                             |
      | `parentObject`          | string | The parent object slug (e.g. people, companies)           |
      | `workspaceAccess`       | string | Workspace-level access (e.g. full-access, read-only)      |
      | `workspaceMemberAccess` | json   | Member-level access entries                               |
      | `createdByActor`        | object | The actor who created the list                            |
      | ↳ `type`                | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`                  | string | The actor ID                                              |
      | `createdAt`             | string | When the list was created                                 |
      
      ### Attio Update List [#attio-update-list]
      
      Update a list in Attio
      
      #### Input [#input-23]
      
      | Parameter               | Type   | Required | Description                                                                                            |
      | ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
      | `list`                  | string | Yes      | The list ID or slug to update                                                                          |
      | `name`                  | string | No       | New name for the list                                                                                  |
      | `apiSlug`               | string | No       | New API slug for the list                                                                              |
      | `workspaceAccess`       | string | No       | New workspace-level access: full-access, read-and-write, or read-only (omit for private)               |
      | `workspaceMemberAccess` | string | No       | JSON array of member access entries, e.g. \[\{"workspace\_member\_id":"...","level":"read-and-write"}] |
      
      #### Output [#output-23]
      
      | Parameter               | Type   | Description                                               |
      | ----------------------- | ------ | --------------------------------------------------------- |
      | `listId`                | string | The list ID                                               |
      | `apiSlug`               | string | The API slug for the list                                 |
      | `name`                  | string | The list name                                             |
      | `parentObject`          | string | The parent object slug (e.g. people, companies)           |
      | `workspaceAccess`       | string | Workspace-level access (e.g. full-access, read-only)      |
      | `workspaceMemberAccess` | json   | Member-level access entries                               |
      | `createdByActor`        | object | The actor who created the list                            |
      | ↳ `type`                | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`                  | string | The actor ID                                              |
      | `createdAt`             | string | When the list was created                                 |
      
      ### Attio Query List Entries [#attio-query-list-entries]
      
      Query entries in an Attio list with optional filter, sort, and pagination
      
      #### Input [#input-24]
      
      | Parameter | Type   | Required | Description                                                                          |
      | --------- | ------ | -------- | ------------------------------------------------------------------------------------ |
      | `list`    | string | Yes      | The list ID or slug                                                                  |
      | `filter`  | string | No       | JSON filter object for querying entries                                              |
      | `sorts`   | string | No       | JSON array of sort objects (e.g. \[\{"attribute":"created\_at","direction":"desc"}]) |
      | `limit`   | number | No       | Maximum number of entries to return (default 500)                                    |
      | `offset`  | number | No       | Number of entries to skip for pagination                                             |
      
      #### Output [#output-24]
      
      | Parameter          | Type   | Description                                   |
      | ------------------ | ------ | --------------------------------------------- |
      | `entries`          | array  | Array of list entries                         |
      | ↳ `entryId`        | string | The list entry ID                             |
      | ↳ `listId`         | string | The list ID                                   |
      | ↳ `parentRecordId` | string | The parent record ID                          |
      | ↳ `parentObject`   | string | The parent object slug                        |
      | ↳ `createdAt`      | string | When the entry was created                    |
      | ↳ `entryValues`    | json   | The entry attribute values (dynamic per list) |
      | `count`            | number | Number of entries returned                    |
      
      ### Attio Get List Entry [#attio-get-list-entry]
      
      Get a single list entry by ID
      
      #### Input [#input-25]
      
      | Parameter | Type   | Required | Description         |
      | --------- | ------ | -------- | ------------------- |
      | `list`    | string | Yes      | The list ID or slug |
      | `entryId` | string | Yes      | The entry ID        |
      
      #### Output [#output-25]
      
      | Parameter        | Type   | Description                                   |
      | ---------------- | ------ | --------------------------------------------- |
      | `entryId`        | string | The list entry ID                             |
      | `listId`         | string | The list ID                                   |
      | `parentRecordId` | string | The parent record ID                          |
      | `parentObject`   | string | The parent object slug                        |
      | `createdAt`      | string | When the entry was created                    |
      | `entryValues`    | json   | The entry attribute values (dynamic per list) |
      
      ### Attio Create List Entry [#attio-create-list-entry]
      
      Add a record to an Attio list as a new entry
      
      #### Input [#input-26]
      
      | Parameter        | Type   | Required | Description                                                 |
      | ---------------- | ------ | -------- | ----------------------------------------------------------- |
      | `list`           | string | Yes      | The list ID or slug                                         |
      | `parentRecordId` | string | Yes      | The record ID to add to the list                            |
      | `parentObject`   | string | Yes      | The object type slug of the record (e.g. people, companies) |
      | `entryValues`    | string | No       | JSON object of entry attribute values                       |
      
      #### Output [#output-26]
      
      | Parameter        | Type   | Description                                   |
      | ---------------- | ------ | --------------------------------------------- |
      | `entryId`        | string | The list entry ID                             |
      | `listId`         | string | The list ID                                   |
      | `parentRecordId` | string | The parent record ID                          |
      | `parentObject`   | string | The parent object slug                        |
      | `createdAt`      | string | When the entry was created                    |
      | `entryValues`    | json   | The entry attribute values (dynamic per list) |
      
      ### Attio Update List Entry [#attio-update-list-entry]
      
      Update entry attribute values on an Attio list entry (appends multiselect values)
      
      #### Input [#input-27]
      
      | Parameter     | Type   | Required | Description                                     |
      | ------------- | ------ | -------- | ----------------------------------------------- |
      | `list`        | string | Yes      | The list ID or slug                             |
      | `entryId`     | string | Yes      | The entry ID to update                          |
      | `entryValues` | string | Yes      | JSON object of entry attribute values to update |
      
      #### Output [#output-27]
      
      | Parameter        | Type   | Description                                   |
      | ---------------- | ------ | --------------------------------------------- |
      | `entryId`        | string | The list entry ID                             |
      | `listId`         | string | The list ID                                   |
      | `parentRecordId` | string | The parent record ID                          |
      | `parentObject`   | string | The parent object slug                        |
      | `createdAt`      | string | When the entry was created                    |
      | `entryValues`    | json   | The entry attribute values (dynamic per list) |
      
      ### Attio Delete List Entry [#attio-delete-list-entry]
      
      Remove an entry from an Attio list
      
      #### Input [#input-28]
      
      | Parameter | Type   | Required | Description            |
      | --------- | ------ | -------- | ---------------------- |
      | `list`    | string | Yes      | The list ID or slug    |
      | `entryId` | string | Yes      | The entry ID to delete |
      
      #### Output [#output-28]
      
      | Parameter | Type    | Description                   |
      | --------- | ------- | ----------------------------- |
      | `deleted` | boolean | Whether the entry was deleted |
      
      ### Attio List Members [#attio-list-members]
      
      List all workspace members in Attio
      
      #### Input [#input-29]
      
      | Parameter | Type | Required | Description |
      | --------- | ---- | -------- | ----------- |
      
      #### Output [#output-29]
      
      | Parameter        | Type   | Description                             |
      | ---------------- | ------ | --------------------------------------- |
      | `members`        | array  | Array of workspace members              |
      | ↳ `memberId`     | string | The workspace member ID                 |
      | ↳ `firstName`    | string | First name                              |
      | ↳ `lastName`     | string | Last name                               |
      | ↳ `avatarUrl`    | string | Avatar URL                              |
      | ↳ `emailAddress` | string | Email address                           |
      | ↳ `accessLevel`  | string | Access level (admin, member, suspended) |
      | ↳ `createdAt`    | string | When the member was added               |
      | `count`          | number | Number of members returned              |
      
      ### Attio Get Member [#attio-get-member]
      
      Get a single workspace member by ID
      
      #### Input [#input-30]
      
      | Parameter  | Type   | Required | Description             |
      | ---------- | ------ | -------- | ----------------------- |
      | `memberId` | string | Yes      | The workspace member ID |
      
      #### Output [#output-30]
      
      | Parameter      | Type   | Description                             |
      | -------------- | ------ | --------------------------------------- |
      | `memberId`     | string | The workspace member ID                 |
      | `firstName`    | string | First name                              |
      | `lastName`     | string | Last name                               |
      | `avatarUrl`    | string | Avatar URL                              |
      | `emailAddress` | string | Email address                           |
      | `accessLevel`  | string | Access level (admin, member, suspended) |
      | `createdAt`    | string | When the member was added               |
      
      ### Attio Create Comment [#attio-create-comment]
      
      Create a comment on a list entry in Attio
      
      #### Input [#input-31]
      
      | Parameter      | Type   | Required | Description                                                                                          |
      | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- |
      | `content`      | string | Yes      | The comment content                                                                                  |
      | `format`       | string | No       | Content format: plaintext or markdown (default plaintext)                                            |
      | `authorType`   | string | Yes      | Author type (e.g. workspace-member)                                                                  |
      | `authorId`     | string | Yes      | Author workspace member ID                                                                           |
      | `list`         | string | No       | The list ID or slug the entry belongs to (used with entryId; omit if threadId or recordId is set)    |
      | `entryId`      | string | No       | The list entry ID to comment on (used with list; omit if threadId or recordId is set)                |
      | `recordObject` | string | No       | The object ID or slug the record belongs to (used with recordId; omit if threadId or entryId is set) |
      | `recordId`     | string | No       | The record ID to comment on directly (used with recordObject; omit if threadId or entryId is set)    |
      | `threadId`     | string | No       | Thread ID to reply to (omit to start a new thread on a record or list entry)                         |
      | `createdAt`    | string | No       | Backdate the comment (ISO 8601 format)                                                               |
      
      #### Output [#output-31]
      
      | Parameter          | Type   | Description                                               |
      | ------------------ | ------ | --------------------------------------------------------- |
      | `commentId`        | string | The comment ID                                            |
      | `threadId`         | string | The thread ID                                             |
      | `contentPlaintext` | string | The comment content as plaintext                          |
      | `author`           | object | The comment author                                        |
      | ↳ `type`           | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string | The actor ID                                              |
      | `entry`            | object | The list entry this comment is on                         |
      | ↳ `listId`         | string | The list ID                                               |
      | ↳ `entryId`        | string | The entry ID                                              |
      | `record`           | object | The record this comment is on                             |
      | ↳ `objectId`       | string | The object ID                                             |
      | ↳ `recordId`       | string | The record ID                                             |
      | `resolvedAt`       | string | When the thread was resolved                              |
      | `resolvedBy`       | object | Who resolved the thread                                   |
      | ↳ `type`           | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string | The actor ID                                              |
      | `createdAt`        | string | When the comment was created                              |
      
      ### Attio Get Comment [#attio-get-comment]
      
      Get a single comment by ID from Attio
      
      #### Input [#input-32]
      
      | Parameter   | Type   | Required | Description    |
      | ----------- | ------ | -------- | -------------- |
      | `commentId` | string | Yes      | The comment ID |
      
      #### Output [#output-32]
      
      | Parameter          | Type   | Description                                               |
      | ------------------ | ------ | --------------------------------------------------------- |
      | `commentId`        | string | The comment ID                                            |
      | `threadId`         | string | The thread ID                                             |
      | `contentPlaintext` | string | The comment content as plaintext                          |
      | `author`           | object | The comment author                                        |
      | ↳ `type`           | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string | The actor ID                                              |
      | `entry`            | object | The list entry this comment is on                         |
      | ↳ `listId`         | string | The list ID                                               |
      | ↳ `entryId`        | string | The entry ID                                              |
      | `record`           | object | The record this comment is on                             |
      | ↳ `objectId`       | string | The object ID                                             |
      | ↳ `recordId`       | string | The record ID                                             |
      | `resolvedAt`       | string | When the thread was resolved                              |
      | `resolvedBy`       | object | Who resolved the thread                                   |
      | ↳ `type`           | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`             | string | The actor ID                                              |
      | `createdAt`        | string | When the comment was created                              |
      
      ### Attio Delete Comment [#attio-delete-comment]
      
      Delete a comment in Attio (if head of thread, deletes entire thread)
      
      #### Input [#input-33]
      
      | Parameter   | Type   | Required | Description              |
      | ----------- | ------ | -------- | ------------------------ |
      | `commentId` | string | Yes      | The comment ID to delete |
      
      #### Output [#output-33]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `deleted` | boolean | Whether the comment was deleted |
      
      ### Attio List Threads [#attio-list-threads]
      
      List comment threads in Attio, optionally filtered by record or list entry
      
      #### Input [#input-34]
      
      | Parameter  | Type   | Required | Description                                     |
      | ---------- | ------ | -------- | ----------------------------------------------- |
      | `recordId` | string | No       | Filter by record ID (requires object)           |
      | `object`   | string | No       | Object slug to filter by (requires recordId)    |
      | `entryId`  | string | No       | Filter by list entry ID (requires list)         |
      | `list`     | string | No       | List ID or slug to filter by (requires entryId) |
      | `limit`    | number | No       | Maximum number of threads to return (max 50)    |
      | `offset`   | number | No       | Number of threads to skip for pagination        |
      
      #### Output [#output-34]
      
      | Parameter            | Type   | Description                  |
      | -------------------- | ------ | ---------------------------- |
      | `threads`            | array  | Array of threads             |
      | ↳ `threadId`         | string | The thread ID                |
      | ↳ `comments`         | array  | Comments in the thread       |
      | ↳ `commentId`        | string | The comment ID               |
      | ↳ `contentPlaintext` | string | Comment content              |
      | ↳ `author`           | object | Comment author               |
      | ↳ `type`             | string | Actor type                   |
      | ↳ `id`               | string | Actor ID                     |
      | ↳ `createdAt`        | string | When the comment was created |
      | ↳ `createdAt`        | string | When the thread was created  |
      | `count`              | number | Number of threads returned   |
      
      ### Attio Get Thread [#attio-get-thread]
      
      Get a single comment thread by ID from Attio
      
      #### Input [#input-35]
      
      | Parameter  | Type   | Required | Description   |
      | ---------- | ------ | -------- | ------------- |
      | `threadId` | string | Yes      | The thread ID |
      
      #### Output [#output-35]
      
      | Parameter            | Type   | Description                                               |
      | -------------------- | ------ | --------------------------------------------------------- |
      | `threadId`           | string | The thread ID                                             |
      | `comments`           | array  | Comments in the thread                                    |
      | ↳ `commentId`        | string | The comment ID                                            |
      | ↳ `contentPlaintext` | string | Comment content as plaintext                              |
      | ↳ `author`           | object | The comment author                                        |
      | ↳ `type`             | string | The actor type (e.g. workspace-member, api-token, system) |
      | ↳ `id`               | string | The actor ID                                              |
      | ↳ `createdAt`        | string | When the comment was created                              |
      | `createdAt`          | string | When the thread was created                               |
      
      ### Attio List Webhooks [#attio-list-webhooks]
      
      List all webhooks in the Attio workspace
      
      #### Input [#input-36]
      
      | Parameter | Type   | Required | Description                               |
      | --------- | ------ | -------- | ----------------------------------------- |
      | `limit`   | number | No       | Maximum number of webhooks to return      |
      | `offset`  | number | No       | Number of webhooks to skip for pagination |
      
      #### Output [#output-36]
      
      | Parameter         | Type   | Description                                 |
      | ----------------- | ------ | ------------------------------------------- |
      | `webhooks`        | array  | Array of webhooks                           |
      | ↳ `webhookId`     | string | The webhook ID                              |
      | ↳ `targetUrl`     | string | The webhook target URL                      |
      | ↳ `subscriptions` | array  | Event subscriptions                         |
      | ↳ `eventType`     | string | The event type (e.g. record.created)        |
      | ↳ `filter`        | json   | Optional event filter                       |
      | ↳ `status`        | string | Webhook status (active, degraded, inactive) |
      | ↳ `createdAt`     | string | When the webhook was created                |
      | `count`           | number | Number of webhooks returned                 |
      
      ### Attio Get Webhook [#attio-get-webhook]
      
      Get a single webhook by ID from Attio
      
      #### Input [#input-37]
      
      | Parameter   | Type   | Required | Description    |
      | ----------- | ------ | -------- | -------------- |
      | `webhookId` | string | Yes      | The webhook ID |
      
      #### Output [#output-37]
      
      | Parameter       | Type   | Description                                 |
      | --------------- | ------ | ------------------------------------------- |
      | `webhookId`     | string | The webhook ID                              |
      | `targetUrl`     | string | The webhook target URL                      |
      | `subscriptions` | array  | Event subscriptions                         |
      | ↳ `eventType`   | string | The event type (e.g. record.created)        |
      | ↳ `filter`      | json   | Optional event filter                       |
      | `status`        | string | Webhook status (active, degraded, inactive) |
      | `createdAt`     | string | When the webhook was created                |
      
      ### Attio Create Webhook [#attio-create-webhook]
      
      Create a webhook in Attio to receive event notifications
      
      #### Input [#input-38]
      
      | Parameter       | Type   | Required | Description                                                                                            |
      | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
      | `targetUrl`     | string | Yes      | The HTTPS URL to receive webhook events                                                                |
      | `subscriptions` | string | Yes      | JSON array of subscriptions (e.g. \[\{"event\_type":"record.created","filter":\{"object\_id":"..."}}]) |
      
      #### Output [#output-38]
      
      | Parameter       | Type   | Description                                            |
      | --------------- | ------ | ------------------------------------------------------ |
      | `webhookId`     | string | The webhook ID                                         |
      | `targetUrl`     | string | The webhook target URL                                 |
      | `subscriptions` | array  | Event subscriptions                                    |
      | ↳ `eventType`   | string | The event type (e.g. record.created)                   |
      | ↳ `filter`      | json   | Optional event filter                                  |
      | `status`        | string | Webhook status (active, degraded, inactive)            |
      | `createdAt`     | string | When the webhook was created                           |
      | `secret`        | string | The webhook signing secret (only returned on creation) |
      
      ### Attio Update Webhook [#attio-update-webhook]
      
      Update a webhook in Attio (target URL and/or subscriptions)
      
      #### Input [#input-39]
      
      | Parameter       | Type   | Required | Description                                                          |
      | --------------- | ------ | -------- | -------------------------------------------------------------------- |
      | `webhookId`     | string | Yes      | The webhook ID to update                                             |
      | `targetUrl`     | string | No       | HTTPS target URL for webhook delivery                                |
      | `subscriptions` | string | No       | JSON array of subscriptions, e.g. \[\{"event\_type":"note.created"}] |
      
      #### Output [#output-39]
      
      | Parameter       | Type   | Description                                 |
      | --------------- | ------ | ------------------------------------------- |
      | `webhookId`     | string | The webhook ID                              |
      | `targetUrl`     | string | The webhook target URL                      |
      | `subscriptions` | array  | Event subscriptions                         |
      | ↳ `eventType`   | string | The event type (e.g. record.created)        |
      | ↳ `filter`      | json   | Optional event filter                       |
      | `status`        | string | Webhook status (active, degraded, inactive) |
      | `createdAt`     | string | When the webhook was created                |
      
      ### Attio Delete Webhook [#attio-delete-webhook]
      
      Delete a webhook from Attio
      
      #### Input [#input-40]
      
      | Parameter   | Type   | Required | Description              |
      | ----------- | ------ | -------- | ------------------------ |
      | `webhookId` | string | Yes      | The webhook ID to delete |
      
      #### Output [#output-40]
      
      | Parameter | Type    | Description                     |
      | --------- | ------- | ------------------------------- |
      | `deleted` | boolean | Whether the webhook was deleted |
      
      ### Attio List Attributes [#attio-list-attributes]
      
      List the attributes (schema fields) defined on an Attio object or list
      
      #### Input [#input-41]
      
      | Parameter      | Type    | Required | Description                                                            |
      | -------------- | ------- | -------- | ---------------------------------------------------------------------- |
      | `target`       | string  | Yes      | Whether the attributes belong to an object or a list: objects or lists |
      | `identifier`   | string  | Yes      | The object or list ID or slug (e.g. people, companies)                 |
      | `limit`        | number  | No       | Maximum number of attributes to return                                 |
      | `offset`       | number  | No       | Number of attributes to skip for pagination                            |
      | `showArchived` | boolean | No       | Whether to include archived attributes (default false)                 |
      
      #### Output [#output-41]
      
      | Parameter                 | Type    | Description                                                            |
      | ------------------------- | ------- | ---------------------------------------------------------------------- |
      | `attributes`              | array   | Array of attributes                                                    |
      | ↳ `attributeId`           | string  | The attribute ID                                                       |
      | ↳ `title`                 | string  | The attribute display title                                            |
      | ↳ `apiSlug`               | string  | The attribute API slug                                                 |
      | ↳ `description`           | string  | The attribute description                                              |
      | ↳ `type`                  | string  | The attribute value type (e.g. text, number, select, record-reference) |
      | ↳ `isSystemAttribute`     | boolean | Whether this is a built-in system attribute                            |
      | ↳ `isWritable`            | boolean | Whether the attribute can be written to                                |
      | ↳ `isRequired`            | boolean | Whether new records must provide a value                               |
      | ↳ `isUnique`              | boolean | Whether the attribute enforces uniqueness                              |
      | ↳ `isMultiselect`         | boolean | Whether the attribute supports multiple values                         |
      | ↳ `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled                     |
      | ↳ `isArchived`            | boolean | Whether the attribute is archived                                      |
      | ↳ `defaultValue`          | json    | The default value for this attribute, if enabled                       |
      | ↳ `relationship`          | json    | The related attribute, if this attribute is part of a relationship     |
      | ↳ `config`                | json    | Type-dependent attribute configuration                                 |
      | ↳ `createdAt`             | string  | When the attribute was created                                         |
      | `count`                   | number  | Number of attributes returned                                          |
      
      ### Attio Get Attribute [#attio-get-attribute]
      
      Get a single attribute (schema field) on an Attio object or list
      
      #### Input [#input-42]
      
      | Parameter    | Type   | Required | Description                                                            |
      | ------------ | ------ | -------- | ---------------------------------------------------------------------- |
      | `target`     | string | Yes      | Whether the attribute belongs to an object or a list: objects or lists |
      | `identifier` | string | Yes      | The object or list ID or slug (e.g. people, companies)                 |
      | `attribute`  | string | Yes      | The attribute ID or slug                                               |
      
      #### Output [#output-42]
      
      | Parameter               | Type    | Description                                                            |
      | ----------------------- | ------- | ---------------------------------------------------------------------- |
      | `attributeId`           | string  | The attribute ID                                                       |
      | `title`                 | string  | The attribute display title                                            |
      | `apiSlug`               | string  | The attribute API slug                                                 |
      | `description`           | string  | The attribute description                                              |
      | `type`                  | string  | The attribute value type (e.g. text, number, select, record-reference) |
      | `isSystemAttribute`     | boolean | Whether this is a built-in system attribute                            |
      | `isWritable`            | boolean | Whether the attribute can be written to                                |
      | `isRequired`            | boolean | Whether new records must provide a value                               |
      | `isUnique`              | boolean | Whether the attribute enforces uniqueness                              |
      | `isMultiselect`         | boolean | Whether the attribute supports multiple values                         |
      | `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled                     |
      | `isArchived`            | boolean | Whether the attribute is archived                                      |
      | `defaultValue`          | json    | The default value for this attribute, if enabled                       |
      | `relationship`          | json    | The related attribute, if this attribute is part of a relationship     |
      | `config`                | json    | Type-dependent attribute configuration                                 |
      | `createdAt`             | string  | When the attribute was created                                         |
      
      ### Attio Create Attribute [#attio-create-attribute]
      
      Create a new attribute (schema field) on an Attio object or list
      
      #### Input [#input-43]
      
      | Parameter       | Type    | Required | Description                                                                                                                                                                                 |
      | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `target`        | string  | Yes      | Whether to create the attribute on an object or a list: objects or lists                                                                                                                    |
      | `identifier`    | string  | Yes      | The object or list ID or slug (e.g. people, companies)                                                                                                                                      |
      | `title`         | string  | Yes      | The attribute display title                                                                                                                                                                 |
      | `apiSlug`       | string  | Yes      | The attribute API slug (unique, snake\_case)                                                                                                                                                |
      | `type`          | string  | Yes      | The attribute value type (e.g. text, number, checkbox, currency, date, timestamp, rating, status, select, record-reference, actor-reference, location, domain, email-address, phone-number) |
      | `description`   | string  | No       | A description of the attribute                                                                                                                                                              |
      | `isRequired`    | boolean | No       | Whether new records must provide a value (default false)                                                                                                                                    |
      | `isUnique`      | boolean | No       | Whether the attribute enforces uniqueness on new data (default false)                                                                                                                       |
      | `isMultiselect` | boolean | No       | Whether the attribute supports multiple values (default false)                                                                                                                              |
      | `config`        | string  | No       | JSON object of type-dependent configuration (e.g. currency or record-reference settings)                                                                                                    |
      
      #### Output [#output-43]
      
      | Parameter               | Type    | Description                                                            |
      | ----------------------- | ------- | ---------------------------------------------------------------------- |
      | `attributeId`           | string  | The attribute ID                                                       |
      | `title`                 | string  | The attribute display title                                            |
      | `apiSlug`               | string  | The attribute API slug                                                 |
      | `description`           | string  | The attribute description                                              |
      | `type`                  | string  | The attribute value type (e.g. text, number, select, record-reference) |
      | `isSystemAttribute`     | boolean | Whether this is a built-in system attribute                            |
      | `isWritable`            | boolean | Whether the attribute can be written to                                |
      | `isRequired`            | boolean | Whether new records must provide a value                               |
      | `isUnique`              | boolean | Whether the attribute enforces uniqueness                              |
      | `isMultiselect`         | boolean | Whether the attribute supports multiple values                         |
      | `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled                     |
      | `isArchived`            | boolean | Whether the attribute is archived                                      |
      | `defaultValue`          | json    | The default value for this attribute, if enabled                       |
      | `relationship`          | json    | The related attribute, if this attribute is part of a relationship     |
      | `config`                | json    | Type-dependent attribute configuration                                 |
      | `createdAt`             | string  | When the attribute was created                                         |
      
      ### Attio Update Attribute [#attio-update-attribute]
      
      Update an attribute (schema field) on an Attio object or list
      
      #### Input [#input-44]
      
      | Parameter     | Type    | Required | Description                                                            |
      | ------------- | ------- | -------- | ---------------------------------------------------------------------- |
      | `target`      | string  | Yes      | Whether the attribute belongs to an object or a list: objects or lists |
      | `identifier`  | string  | Yes      | The object or list ID or slug (e.g. people, companies)                 |
      | `attribute`   | string  | Yes      | The attribute ID or slug to update                                     |
      | `title`       | string  | No       | New attribute display title                                            |
      | `apiSlug`     | string  | No       | New attribute API slug                                                 |
      | `description` | string  | No       | New attribute description                                              |
      | `isRequired`  | boolean | No       | Whether new records must provide a value                               |
      | `isUnique`    | boolean | No       | Whether the attribute enforces uniqueness on new data                  |
      | `isArchived`  | boolean | No       | Archive or unarchive the attribute                                     |
      | `config`      | string  | No       | JSON object of type-dependent configuration                            |
      
      #### Output [#output-44]
      
      | Parameter               | Type    | Description                                                            |
      | ----------------------- | ------- | ---------------------------------------------------------------------- |
      | `attributeId`           | string  | The attribute ID                                                       |
      | `title`                 | string  | The attribute display title                                            |
      | `apiSlug`               | string  | The attribute API slug                                                 |
      | `description`           | string  | The attribute description                                              |
      | `type`                  | string  | The attribute value type (e.g. text, number, select, record-reference) |
      | `isSystemAttribute`     | boolean | Whether this is a built-in system attribute                            |
      | `isWritable`            | boolean | Whether the attribute can be written to                                |
      | `isRequired`            | boolean | Whether new records must provide a value                               |
      | `isUnique`              | boolean | Whether the attribute enforces uniqueness                              |
      | `isMultiselect`         | boolean | Whether the attribute supports multiple values                         |
      | `isDefaultValueEnabled` | boolean | Whether this attribute has a default value enabled                     |
      | `isArchived`            | boolean | Whether the attribute is archived                                      |
      | `defaultValue`          | json    | The default value for this attribute, if enabled                       |
      | `relationship`          | json    | The related attribute, if this attribute is part of a relationship     |
      | `config`                | json    | Type-dependent attribute configuration                                 |
      | `createdAt`             | string  | When the attribute was created                                         |
      
      ## Triggers [#triggers]
      
      A **Trigger** is a block that starts a workflow when an event happens in this service.
      
      ### Attio Comment Created [#attio-comment-created]
      
      Trigger workflow when a new comment is created in Attio
      
      #### Configuration [#configuration]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-45]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `threadId`    | string | The thread ID                                         |
      | `commentId`   | string | The comment ID                                        |
      | `objectId`    | string | The object type ID                                    |
      | `recordId`    | string | The record ID                                         |
      | `listId`      | string | The list ID (if comment is on a list entry)           |
      | `entryId`     | string | The list entry ID (if comment is on a list entry)     |
      
      ***
      
      ### Attio Comment Deleted [#attio-comment-deleted]
      
      Trigger workflow when a comment is deleted in Attio
      
      #### Configuration [#configuration-1]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-46]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `threadId`    | string | The thread ID                                         |
      | `commentId`   | string | The comment ID                                        |
      | `objectId`    | string | The object type ID                                    |
      | `recordId`    | string | The record ID                                         |
      | `listId`      | string | The list ID (if comment is on a list entry)           |
      | `entryId`     | string | The list entry ID (if comment is on a list entry)     |
      
      ***
      
      ### Attio Comment Resolved [#attio-comment-resolved]
      
      Trigger workflow when a comment thread is resolved in Attio
      
      #### Configuration [#configuration-2]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-47]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `threadId`    | string | The thread ID                                         |
      | `commentId`   | string | The comment ID                                        |
      | `objectId`    | string | The object type ID                                    |
      | `recordId`    | string | The record ID                                         |
      | `listId`      | string | The list ID (if comment is on a list entry)           |
      | `entryId`     | string | The list entry ID (if comment is on a list entry)     |
      
      ***
      
      ### Attio Comment Unresolved [#attio-comment-unresolved]
      
      Trigger workflow when a comment thread is unresolved in Attio
      
      #### Configuration [#configuration-3]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-48]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `threadId`    | string | The thread ID                                         |
      | `commentId`   | string | The comment ID                                        |
      | `objectId`    | string | The object type ID                                    |
      | `recordId`    | string | The record ID                                         |
      | `listId`      | string | The list ID (if comment is on a list entry)           |
      | `entryId`     | string | The list entry ID (if comment is on a list entry)     |
      
      ***
      
      ### Attio List Created [#attio-list-created]
      
      Trigger workflow when a list is created in Attio
      
      #### Configuration [#configuration-4]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-49]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `listId`      | string | The list ID                                           |
      
      ***
      
      ### Attio List Deleted [#attio-list-deleted]
      
      Trigger workflow when a list is deleted in Attio
      
      #### Configuration [#configuration-5]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-50]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `listId`      | string | The list ID                                           |
      
      ***
      
      ### Attio List Entry Created [#attio-list-entry-created]
      
      Trigger workflow when a new list entry is created in Attio
      
      #### Configuration [#configuration-6]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-51]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `listId`      | string | The list ID                                           |
      | `entryId`     | string | The list entry ID                                     |
      
      ***
      
      ### Attio List Entry Deleted [#attio-list-entry-deleted]
      
      Trigger workflow when a list entry is deleted in Attio
      
      #### Configuration [#configuration-7]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-52]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `listId`      | string | The list ID                                           |
      | `entryId`     | string | The list entry ID                                     |
      
      ***
      
      ### Attio List Entry Updated [#attio-list-entry-updated]
      
      Trigger workflow when a list entry is updated in Attio
      
      #### Configuration [#configuration-8]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-53]
      
      | Parameter     | Type   | Description                                                |
      | ------------- | ------ | ---------------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created)      |
      | `workspaceId` | string | The workspace ID                                           |
      | `listId`      | string | The list ID                                                |
      | `entryId`     | string | The list entry ID                                          |
      | `attributeId` | string | The ID of the attribute that was updated on the list entry |
      
      ***
      
      ### Attio List Updated [#attio-list-updated]
      
      Trigger workflow when a list is updated in Attio
      
      #### Configuration [#configuration-9]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-54]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `listId`      | string | The list ID                                           |
      
      ***
      
      ### Attio Note Created [#attio-note-created]
      
      Trigger workflow when a new note is created in Attio
      
      #### Configuration [#configuration-10]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-55]
      
      | Parameter        | Type   | Description                                           |
      | ---------------- | ------ | ----------------------------------------------------- |
      | `eventType`      | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId`    | string | The workspace ID                                      |
      | `noteId`         | string | The note ID                                           |
      | `parentObjectId` | string | The parent object type ID                             |
      | `parentRecordId` | string | The parent record ID                                  |
      
      ***
      
      ### Attio Note Deleted [#attio-note-deleted]
      
      Trigger workflow when a note is deleted in Attio
      
      #### Configuration [#configuration-11]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-56]
      
      | Parameter        | Type   | Description                                           |
      | ---------------- | ------ | ----------------------------------------------------- |
      | `eventType`      | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId`    | string | The workspace ID                                      |
      | `noteId`         | string | The note ID                                           |
      | `parentObjectId` | string | The parent object type ID                             |
      | `parentRecordId` | string | The parent record ID                                  |
      
      ***
      
      ### Attio Note Updated [#attio-note-updated]
      
      Trigger workflow when a note is updated in Attio
      
      #### Configuration [#configuration-12]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-57]
      
      | Parameter        | Type   | Description                                           |
      | ---------------- | ------ | ----------------------------------------------------- |
      | `eventType`      | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId`    | string | The workspace ID                                      |
      | `noteId`         | string | The note ID                                           |
      | `parentObjectId` | string | The parent object type ID                             |
      | `parentRecordId` | string | The parent record ID                                  |
      
      ***
      
      ### Attio Record Created [#attio-record-created]
      
      Trigger workflow when a new record is created in Attio
      
      #### Configuration [#configuration-13]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-58]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `objectId`    | string | The object type ID (e.g. people, companies)           |
      | `recordId`    | string | The record ID                                         |
      
      ***
      
      ### Attio Record Deleted [#attio-record-deleted]
      
      Trigger workflow when a record is deleted in Attio
      
      #### Configuration [#configuration-14]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-59]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `objectId`    | string | The object type ID (e.g. people, companies)           |
      | `recordId`    | string | The record ID                                         |
      
      ***
      
      ### Attio Record Merged [#attio-record-merged]
      
      Trigger workflow when two records are merged in Attio
      
      #### Configuration [#configuration-15]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-60]
      
      | Parameter           | Type   | Description                                           |
      | ------------------- | ------ | ----------------------------------------------------- |
      | `eventType`         | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId`       | string | The workspace ID                                      |
      | `objectId`          | string | The object type ID of the surviving record            |
      | `recordId`          | string | The surviving record ID after merge                   |
      | `duplicateObjectId` | string | The object type ID of the merged-away record          |
      | `duplicateRecordId` | string | The record ID that was merged away                    |
      
      ***
      
      ### Attio Record Updated [#attio-record-updated]
      
      Trigger workflow when a record is updated in Attio
      
      #### Configuration [#configuration-16]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-61]
      
      | Parameter     | Type   | Description                                            |
      | ------------- | ------ | ------------------------------------------------------ |
      | `eventType`   | string | The type of event (e.g. record.created, note.created)  |
      | `workspaceId` | string | The workspace ID                                       |
      | `objectId`    | string | The object type ID (e.g. people, companies)            |
      | `recordId`    | string | The record ID                                          |
      | `attributeId` | string | The ID of the attribute that was updated on the record |
      
      ***
      
      ### Attio Task Created [#attio-task-created]
      
      Trigger workflow when a new task is created in Attio
      
      #### Configuration [#configuration-17]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-62]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `taskId`      | string | The task ID                                           |
      
      ***
      
      ### Attio Task Deleted [#attio-task-deleted]
      
      Trigger workflow when a task is deleted in Attio
      
      #### Configuration [#configuration-18]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-63]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `taskId`      | string | The task ID                                           |
      
      ***
      
      ### Attio Task Updated [#attio-task-updated]
      
      Trigger workflow when a task is updated in Attio
      
      #### Configuration [#configuration-19]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-64]
      
      | Parameter     | Type   | Description                                           |
      | ------------- | ------ | ----------------------------------------------------- |
      | `eventType`   | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId` | string | The workspace ID                                      |
      | `taskId`      | string | The task ID                                           |
      
      ***
      
      ### Attio Webhook (All Events) [#attio-webhook-all-events]
      
      Trigger workflow on any Attio webhook event
      
      #### Configuration [#configuration-20]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-65]
      
      | Parameter        | Type   | Description                                           |
      | ---------------- | ------ | ----------------------------------------------------- |
      | `eventType`      | string | The type of event (e.g. record.created, note.created) |
      | `id`             | json   | The event ID object containing resource identifiers   |
      | `parentObjectId` | string | The parent object type ID (if applicable)             |
      | `parentRecordId` | string | The parent record ID (if applicable)                  |
      
      ***
      
      ### Attio Workspace Member Created [#attio-workspace-member-created]
      
      Trigger workflow when a new member is added to the Attio workspace
      
      #### Configuration [#configuration-21]
      
      | Parameter            | Type   | Required | Description   |
      | -------------------- | ------ | -------- | ------------- |
      | `triggerCredentials` | string | Yes      | Attio Account |
      
      #### Output [#output-66]
      
      | Parameter           | Type   | Description                                           |
      | ------------------- | ------ | ----------------------------------------------------- |
      | `eventType`         | string | The type of event (e.g. record.created, note.created) |
      | `workspaceId`       | string | The workspace ID                                      |
      | `workspaceMemberId` | string | The workspace member ID                               |
      
      
      ---
      
      # Azure Data Explorer (/integrations/azure_data_explorer)
      
      
      
      
      
      
      
      {/* MANUAL-CONTENT-START:intro */}
      
      [Azure Data Explorer](https://azure.microsoft.com/products/data-explorer) is Microsoft's analytics service for very large volumes of machine-generated data — logs, metrics, traces, telemetry, and IoT events. It is built for questions asked over billions of rows: you write a query, and it comes back in seconds. The same engine powers Fabric Eventhouse, Azure Monitor, and Application Insights.
      
      You query it with **KQL** (Kusto Query Language), a pipeline language that reads left to right. Start with a table, then pipe the rows through operators:
      
      ```kusto
      StormEvents
      | where StartTime > ago(7d) and State == "FLORIDA"
      | summarize Events = count() by EventType
      | top 10 by Events
      ```
      
      Azure Data Explorer also has a second command family: **management commands**, which all start with a dot (`.show tables`, `.create table`, `.ingest inline`). Queries read data; management commands inspect and change the cluster itself.
      
      In Agent Serve, this integration gives your agents both halves:
      
      * **Ask questions of your telemetry** — turn a plain-English question into KQL, run it, and answer with real numbers instead of a guess
      * **Discover the data model first** — list databases, tables, and stored functions, read a table's schema, and check its size and row count, so a generated query references columns that actually exist and you know what it will scan
      * **Push rows in** — send small batches straight into a table, or materialize a query result into a rollup table with `.set-or-append`
      * **Manage tables** — create a table from a column schema, or drop one you no longer need
      * **Debug the pipeline** — list ingestion failures with their error codes and root causes, and check the state of a long-running operation
      * **Run any management command** — the escape hatch for policies, mappings, and anything else on the control plane
      
      Authentication uses a **Microsoft Entra service principal** (an app registration with a tenant ID, client ID, and client secret) rather than an interactive sign-in, so scheduled and unattended workflows keep working without anyone logging in. Grant that principal access to the database with `.add database  viewers ('aadapp=;')` — use `viewers` for read-only agents, and `ingestors` or `users` only when a workflow needs to write.
      
      A few things worth knowing before you build:
      
      * **Enable Read-only on the Run Query operation** whenever an agent writes its own KQL. It sends the `x-ms-readonly` header, and the cluster then refuses anything that would change data — a cheap guardrail against a generated query doing more than you intended.
      * **Results are capped at 10,000 rows.** Every result reports `rowCount`, `totalRowCount`, and `truncated`, so a query that returned more than the cap says so rather than quietly looking complete. Aggregate with `summarize` or bound the query with `take` instead of pulling raw rows.
      * **Ingest Rows Inline is for small batches.** It is ideal for tens or hundreds of rows from a workflow run. For continuous or high-volume loading, use Azure Data Explorer's queued or streaming ingestion instead.
      * **Ingest From Query defaults to `set-or-append`**, which adds to an existing table. `set-or-replace` discards everything already in the target table — pick it only when you mean to rebuild the rollup from scratch. For a large backfill, turn on the background option and poll Show Operations with the operation ID it returns.
      * **Ingest From Query matches columns by position, not by name.** Kusto aligns the query result to the target table on column type and order, so a query that projects the right columns in the wrong order ingests data into the wrong columns without erroring. End the query with an explicit `project` in the table's column order, and confirm with Show Table Schema first.
      * **Drop Table is permanent.** It deletes the table and its data. Give an agent the `viewers` role rather than `admins` unless a workflow genuinely needs to change schema.
      
      {/* MANUAL-CONTENT-END */}
      
      ## Usage Instructions [#usage-instructions]
      
      Run Kusto Query Language queries against Azure Data Explorer and Fabric Eventhouse clusters, discover databases, tables, and schemas, push small batches of rows inline, and run management commands. Authenticates with a Microsoft Entra service principal using client credentials, so no interactive sign-in is needed.
      
      ## Actions [#actions]
      
      ### Azure Data Explorer Query [#azure-data-explorer-query]
      
      Run a Kusto Query Language (KQL) query against an Azure Data Explorer database and return the primary result table.
      
      #### Input [#input]
      
      | Parameter      | Type    | Required | Description                                                                                                             |
      | -------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------- |
      | `clusterUri`   | string  | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net))            |
      | `tenantId`     | string  | Yes      | Microsoft Entra tenant ID hosting the service principal                                                                 |
      | `clientId`     | string  | Yes      | Microsoft Entra application (client) ID                                                                                 |
      | `clientSecret` | string  | Yes      | Microsoft Entra application client secret                                                                               |
      | `resource`     | string  | No       | Token audience override. Defaults to the cluster URI itself                                                             |
      | `database`     | string  | Yes      | Database to run the query against                                                                                       |
      | `query`        | string  | Yes      | KQL query text (e.g., StormEvents \| where State == "FLORIDA" \| summarize count() by EventType)                        |
      | `properties`   | json    | No       | Kusto request properties object, e.g. \{"Options":\{"servertimeout":"00:04:00","queryconsistency":"strongconsistency"}} |
      | `readOnly`     | boolean | No       | Send x-ms-readonly so the cluster rejects any request that would change data                                            |
      
      #### Output [#output]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer Management Command [#azure-data-explorer-management-command]
      
      Run an Azure Data Explorer management command (a control command starting with ".") such as .show, .create, .alter, or .drop. Write commands change cluster state permanently; use the Query operation for reads.
      
      #### Input [#input-1]
      
      | Parameter      | Type   | Required | Description                                                                                                   |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net))  |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                       |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                       |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                     |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                   |
      | `command`      | string | Yes      | Management command text, starting with "." (e.g., .show table Events details)                                 |
      | `database`     | string | No       | Database context for the command. Required for all commands except cluster-level ones such as .show databases |
      
      #### Output [#output-1]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer List Databases [#azure-data-explorer-list-databases]
      
      List the databases on an Azure Data Explorer cluster that the service principal can access.
      
      #### Input [#input-2]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      
      #### Output [#output-2]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      | `databases`     | array   | Database names, read from the DatabaseName column                               |
      
      ### Azure Data Explorer List Tables [#azure-data-explorer-list-tables]
      
      List the tables in an Azure Data Explorer database, with their folder and docstring.
      
      #### Input [#input-3]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database whose tables should be listed                                                                       |
      
      #### Output [#output-3]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      | `tables`        | array   | Table names, read from the TableName column                                     |
      
      ### Azure Data Explorer Show Table Schema [#azure-data-explorer-show-table-schema]
      
      Read the column schema of an Azure Data Explorer table in CSL form (e.g., "Timestamp:datetime,Level:string"). Use this before writing a KQL query against an unfamiliar table.
      
      #### Input [#input-4]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database containing the table                                                                                |
      | `table`        | string | Yes      | Table whose schema should be read                                                                            |
      
      #### Output [#output-4]
      
      | Parameter      | Type   | Description                                   |
      | -------------- | ------ | --------------------------------------------- |
      | `tableName`    | string | Name of the table                             |
      | `schema`       | string | Comma-separated CSL column schema (name:type) |
      | `databaseName` | string | The table's database                          |
      | `folder`       | string | The table's folder                            |
      | `docString`    | string | The table's docstring                         |
      
      ### Azure Data Explorer Show Database Schema [#azure-data-explorer-show-database-schema]
      
      Read the full schema of an Azure Data Explorer database as a flat list of every table and column, so an agent can discover the data model in one call.
      
      #### Input [#input-5]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database whose schema should be read                                                                         |
      
      #### Output [#output-5]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer Show Table Details [#azure-data-explorer-show-table-details]
      
      Read size, row count, hot-cache footprint, and effective policies for a table — or for every table in the database when no table is given. Use it to see how much data a table actually holds before querying it.
      
      #### Input [#input-6]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database to read table details from                                                                          |
      | `table`        | string | No       | Table to describe. Omit to describe every table in the database                                              |
      
      #### Output [#output-6]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer List Functions [#azure-data-explorer-list-functions]
      
      List the stored functions in an Azure Data Explorer database, with their parameters and bodies, so an agent can reuse existing logic instead of rewriting it.
      
      #### Input [#input-7]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database whose stored functions should be listed                                                             |
      
      #### Output [#output-7]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      | `functions`     | array   | Stored function names, read from the Name column                                |
      
      ### Azure Data Explorer Ingest Inline [#azure-data-explorer-ingest-inline]
      
      Push rows directly into an Azure Data Explorer table with .ingest inline. Data is parsed as CSV against the table schema unless an ingestion property says otherwise. Intended for small batches — use queued or streaming ingestion for production volumes.
      
      #### Input [#input-8]
      
      | Parameter             | Type   | Required | Description                                                                                                  |
      | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`          | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`            | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`            | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret`        | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`            | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`            | string | Yes      | Database containing the target table                                                                         |
      | `table`               | string | Yes      | Table to ingest into. Its schema is the assumed schema for the data                                          |
      | `data`                | string | Yes      | Rows to ingest, one record per line, parsed as CSV by default (e.g., "Shoes,1000\nWide Shoes,50")            |
      | `ingestionProperties` | string | No       | Ingestion properties clause contents, e.g. format="json", ingestionMappingReference="mymapping"              |
      
      #### Output [#output-8]
      
      | Parameter       | Type    | Description                                                                                                                  |
      | --------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                                                             |
      | `columns`       | array   | Column metadata for the result table                                                                                         |
      | ↳ `name`        | string  | Column name                                                                                                                  |
      | ↳ `type`        | string  | Kusto scalar type                                                                                                            |
      | ↳ `dataType`    | string  | Approximate .NET type                                                                                                        |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                                                                  |
      | `records`       | array   | Result rows keyed by column name                                                                                             |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                                                               |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                                                                          |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true                                              |
      | `extentIds`     | array   | Extent IDs created by the ingestion — one per data shard. A single empty or zero-valued ID means no data shard was generated |
      
      ### Azure Data Explorer Ingest From Query [#azure-data-explorer-ingest-from-query]
      
      Materialize the result of a KQL query into a table with .set, .append, .set-or-append, or .set-or-replace. Use this to build rollup or summary tables instead of pushing rows from a workflow. Kusto matches the query result to the target table by column type and position, NOT by column name, so project the columns in exactly the table's order or the data lands in the wrong columns.
      
      #### Input [#input-9]
      
      | Parameter             | Type    | Required | Description                                                                                                                                                                                                      |
      | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `clusterUri`          | string  | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net))                                                                                                     |
      | `tenantId`            | string  | Yes      | Microsoft Entra tenant ID hosting the service principal                                                                                                                                                          |
      | `clientId`            | string  | Yes      | Microsoft Entra application (client) ID                                                                                                                                                                          |
      | `clientSecret`        | string  | Yes      | Microsoft Entra application client secret                                                                                                                                                                        |
      | `resource`            | string  | No       | Token audience override. Defaults to the cluster URI itself                                                                                                                                                      |
      | `database`            | string  | Yes      | Database containing the target table                                                                                                                                                                             |
      | `table`               | string  | Yes      | Table to ingest the query result into                                                                                                                                                                            |
      | `mode`                | string  | No       | set (create, fail if it exists), append (add to an existing table), set-or-append (default), or set-or-replace (replace all data)                                                                                |
      | `sourceQuery`         | string  | Yes      | KQL query whose result becomes the ingested data (e.g., LogsTable \| where Level == "Error" \| where Timestamp > ago(1h)). Project the columns in the target table's order — matching is positional, not by name |
      | `async`               | boolean | No       | Return immediately with an OperationId and keep ingesting in the background. Check progress with Show Operations                                                                                                 |
      | `ingestionProperties` | string  | No       | Optional ingestion properties clause contents, e.g. distributed=true, tags='\["daily"]'                                                                                                                          |
      
      #### Output [#output-9]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer Create Table [#azure-data-explorer-create-table]
      
      Create a table in an Azure Data Explorer database from a CSL column schema. Succeeds without changing anything if a table of the same name already exists.
      
      #### Input [#input-10]
      
      | Parameter         | Type   | Required | Description                                                                                                  |
      | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`      | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`        | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`        | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret`    | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`        | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`        | string | Yes      | Database to create the table in                                                                              |
      | `table`           | string | Yes      | Name of the table to create                                                                                  |
      | `columnSchema`    | string | Yes      | Comma-separated CSL column schema (e.g., Timestamp:datetime, Level:string, Count:long)                       |
      | `tableProperties` | string | No       | Optional table properties clause contents, e.g. docstring="Raw logs", folder="Ingest"                        |
      
      #### Output [#output-10]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer Drop Table [#azure-data-explorer-drop-table]
      
      Drop a table from an Azure Data Explorer database. This permanently deletes the table and its data, and returns the tables that remain.
      
      #### Input [#input-11]
      
      | Parameter      | Type    | Required | Description                                                                                                  |
      | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string  | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string  | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string  | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string  | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string  | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string  | Yes      | Database containing the table                                                                                |
      | `table`        | string  | Yes      | Name of the table to drop                                                                                    |
      | `ifExists`     | boolean | No       | Succeed instead of failing when the table does not exist                                                     |
      
      #### Output [#output-11]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      | `tables`        | array   | Tables remaining in the database, read from the TableName column                |
      
      ### Azure Data Explorer Show Ingestion Failures [#azure-data-explorer-show-ingestion-failures]
      
      List ingestion failures recorded for a database, with the failing table, error code, root cause detail, and whether the failure is permanent or transient. Failures are retained for 14 days.
      
      #### Input [#input-12]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | Yes      | Database whose ingestion failures should be listed                                                           |
      | `operationId`  | string | No       | Limit results to a single ingestion operation ID                                                             |
      
      #### Output [#output-12]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      ### Azure Data Explorer Show Operations [#azure-data-explorer-show-operations]
      
      Check the state of administrative operations on a cluster, such as an async ingestion. Given an operation ID it returns that operation latest update; with no ID it returns the operations from the last two weeks.
      
      #### Input [#input-13]
      
      | Parameter      | Type   | Required | Description                                                                                                  |
      | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ |
      | `clusterUri`   | string | Yes      | Cluster URI (e.g., [https://mycluster.eastus.kusto.windows.net](https://mycluster.eastus.kusto.windows.net)) |
      | `tenantId`     | string | Yes      | Microsoft Entra tenant ID hosting the service principal                                                      |
      | `clientId`     | string | Yes      | Microsoft Entra application (client) ID                                                                      |
      | `clientSecret` | string | Yes      | Microsoft Entra application client secret                                                                    |
      | `resource`     | string | No       | Token audience override. Defaults to the cluster URI itself                                                  |
      | `database`     | string | No       | Database context for the command                                                                             |
      | `operationId`  | string | No       | Operation ID to check, e.g. the ID returned by an async ingestion                                            |
      
      #### Output [#output-13]
      
      | Parameter       | Type    | Description                                                                     |
      | --------------- | ------- | ------------------------------------------------------------------------------- |
      | `tableName`     | string  | Name Kusto assigned to the returned result table                                |
      | `columns`       | array   | Column metadata for the result table                                            |
      | ↳ `name`        | string  | Column name                                                                     |
      | ↳ `type`        | string  | Kusto scalar type                                                               |
      | ↳ `dataType`    | string  | Approximate .NET type                                                           |
      | `rows`          | array   | Result rows as positional arrays matching the columns order                     |
      | `records`       | array   | Result rows keyed by column name                                                |
      | `rowCount`      | number  | Rows carried in this result, after the row cap                                  |
      | `totalRowCount` | number  | Rows Kusto returned, before the row cap was applied                             |
      | `truncated`     | boolean | Whether rows were dropped to stay within the row cap — narrow the query if true |
      
      
      ---
      
      # Azure DevOps (/integrations/azure_devops)
      
      
      
      
      
      
      
      {/* MANUAL-CONTENT-START:intro */}
      
      [Azure DevOps](https://azure.microsoft.com/en-us/products/devops) is Microsoft's end-to-end DevOps platform for planning, building, testing, and shipping software. It powers engineering at tens of thousands of enterprises across automotive, financial services, government, and any organization built on the Microsoft stack.
      
      With the Azure DevOps integration in Agent Serve, you can:
      
      * **Inspect pipelines and runs**: List pipelines, fetch metadata, and walk through run history with status and result
      * **Triage build failures**: Pull build timelines to see which stage, job, or task failed, then fetch the exact log for the failing step
      * **Audit changes between builds**: Surface the work items that landed between any two builds — useful for release notes and regression hunts
      * **Query work items with WIQL**: Run full WIQL queries and get hydrated work item fields back in a single call, not just IDs
      * **Manage work item lifecycle**: Create, update, and read Issues, Tasks, and Epics with structured fields — title, description, priority, assignee, area path, iteration, tags, effort, and dates
      * **Collaborate via comments**: Add internal or public comments to work items and read full comment history
      * **React in real time**: Trigger workflows when builds fail or new work items are created via Azure DevOps service hooks
      
      These capabilities let your Agent Serve agents close the loop on the DevOps lifecycle — automatically triaging broken builds, drafting release notes between deployments, syncing work items across systems, and keeping engineering operations running while your team focuses on shipping.
      
      {/* MANUAL-CONTENT-END */}
      
      ## Usage Instructions [#usage-instructions]
      
      Integrate Azure DevOps into your workflow. List and inspect pipelines and builds, query and manage work items, and add or read comments.
      
      ## Actions [#actions]
      
      ### Azure DevOps List Pipelines [#azure-devops-list-pipelines]
      
      List all pipelines in an Azure DevOps project. Returns pipeline ID, name, folder, revision, and URL.
      
      #### Input [#input]
      
      | Parameter           | Type   | Required | Description                               |
      | ------------------- | ------ | -------- | ----------------------------------------- |
      | `organization`      | string | Yes      | Azure DevOps organization name            |
      | `project`           | string | Yes      | Azure DevOps project name                 |
      | `orderBy`           | string | No       | Field to sort results by (e.g. "name")    |
      | `top`               | number | No       | Maximum number of pipelines to return     |
      | `continuationToken` | string | No       | Continuation token for paginating results |
      
      #### Output [#output]
      
      | Parameter     | Type   | Description                         |
      | ------------- | ------ | ----------------------------------- |
      | `content`     | string | Human-readable summary of pipelines |
      | `metadata`    | object | Pipelines metadata                  |
      | ↳ `count`     | number | Total number of pipelines returned  |
      | ↳ `pipelines` | array  | Array of pipeline objects           |
      | ↳ `id`        | number | Pipeline ID                         |
      | ↳ `name`      | string | Pipeline name                       |
      | ↳ `folder`    | string | Folder path (e.g. "\\\\")           |
      | ↳ `revision`  | number | Pipeline revision number            |
      | ↳ `url`       | string | Pipeline API URL                    |
      
      ### Azure DevOps Get Pipeline [#azure-devops-get-pipeline]
      
      Get details for a specific pipeline in an Azure DevOps project, including configuration and repository info.
      
      #### Input [#input-1]
      
      | Parameter         | Type   | Required | Description                                                        |
      | ----------------- | ------ | -------- | ------------------------------------------------------------------ |
      | `organization`    | string | Yes      | Azure DevOps organization name                                     |
      | `project`         | string | Yes      | Azure DevOps project name                                          |
      | `pipelineId`      | number | Yes      | ID of the pipeline to retrieve                                     |
      | `pipelineVersion` | number | No       | Specific revision of the pipeline to retrieve (defaults to latest) |
      
      #### Output [#output-1]
      
      | Parameter         | Type   | Description                            |
      | ----------------- | ------ | -------------------------------------- |
      | `content`         | string | Human-readable summary of the pipeline |
      | `metadata`        | object | Pipeline detail metadata               |
      | ↳ `pipeline`      | object | Full pipeline detail object            |
      | ↳ `id`            | number | Pipeline ID                            |
      | ↳ `name`          | string | Pipeline name                          |
      | ↳ `folder`        | string | Folder path                            |
      | ↳ `revision`      | number | Pipeline revision number               |
      | ↳ `url`           | string | Pipeline API URL                       |
      | ↳ `configuration` | object | Pipeline configuration                 |
      | ↳ `type`          | string | Configuration type (e.g. "yaml")       |
      | ↳ `path`          | string | YAML file path in the repository       |
      | ↳ `repository`    | object | Source repository info                 |
      | ↳ `id`            | string | Repository ID                          |
      | ↳ `type`          | string | Repository type (e.g. "azureReposGit") |
      | ↳ `links`         | object | Hypermedia links                       |
      | ↳ `self`          | string | API self-link                          |
      | ↳ `web`           | string | Browser URL for the pipeline           |
      
      ### Azure DevOps List Pipeline Runs [#azure-devops-list-pipeline-runs]
      
      List runs for a specific pipeline in an Azure DevOps project. Returns run ID, name, state, result, and timestamps.
      
      #### Input [#input-2]
      
      | Parameter      | Type   | Required | Description                           |
      | -------------- | ------ | -------- | ------------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name        |
      | `project`      | string | Yes      | Azure DevOps project name             |
      | `pipelineId`   | number | Yes      | ID of the pipeline whose runs to list |
      
      #### Output [#output-2]
      
      | Parameter        | Type   | Description                                                       |
      | ---------------- | ------ | ----------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of pipeline runs                           |
      | `metadata`       | object | Pipeline runs metadata                                            |
      | ↳ `count`        | number | Total number of runs returned                                     |
      | ↳ `runs`         | array  | Array of pipeline run objects                                     |
      | ↳ `id`           | number | Run ID                                                            |
      | ↳ `name`         | string | Run name (e.g. "20210601.1")                                      |
      | ↳ `state`        | string | Run state (e.g. "completed", "inProgress")                        |
      | ↳ `result`       | string | Run result (e.g. "succeeded", "failed") — absent if still running |
      | ↳ `createdDate`  | string | ISO 8601 creation timestamp                                       |
      | ↳ `finishedDate` | string | ISO 8601 finish timestamp — absent if still running               |
      | ↳ `url`          | string | Run API URL                                                       |
      | ↳ `webUrl`       | string | Browser URL for the run                                           |
      
      ### Azure DevOps Get Pipeline Run [#azure-devops-get-pipeline-run]
      
      Get details for a specific pipeline run in an Azure DevOps project. Returns run state, result, timestamps, and the pipeline reference.
      
      #### Input [#input-3]
      
      | Parameter      | Type   | Required | Description                    |
      | -------------- | ------ | -------- | ------------------------------ |
      | `organization` | string | Yes      | Azure DevOps organization name |
      | `project`      | string | Yes      | Azure DevOps project name      |
      | `pipelineId`   | number | Yes      | ID of the pipeline             |
      | `runId`        | number | Yes      | ID of the run to retrieve      |
      
      #### Output [#output-3]
      
      | Parameter        | Type   | Description                                                       |
      | ---------------- | ------ | ----------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of the pipeline run                        |
      | `metadata`       | object | Pipeline run metadata                                             |
      | ↳ `run`          | object | Full pipeline run detail object                                   |
      | ↳ `id`           | number | Run ID                                                            |
      | ↳ `name`         | string | Run name (e.g. "20210601.1")                                      |
      | ↳ `state`        | string | Run state (e.g. "completed", "inProgress")                        |
      | ↳ `result`       | string | Run result (e.g. "succeeded", "failed") — absent if still running |
      | ↳ `createdDate`  | string | ISO 8601 creation timestamp                                       |
      | ↳ `finishedDate` | string | ISO 8601 finish timestamp — absent if still running               |
      | ↳ `url`          | string | Run API URL                                                       |
      | ↳ `webUrl`       | string | Browser URL for the run                                           |
      | ↳ `pipeline`     | object | Pipeline reference                                                |
      | ↳ `id`           | number | Pipeline ID                                                       |
      | ↳ `name`         | string | Pipeline name                                                     |
      | ↳ `folder`       | string | Pipeline folder                                                   |
      | ↳ `revision`     | number | Pipeline revision number                                          |
      | ↳ `url`          | string | Pipeline API URL                                                  |
      
      ### Azure DevOps List Builds [#azure-devops-list-builds]
      
      List builds in an Azure DevOps project. Optionally filter by pipeline definition, status, result, or branch.
      
      #### Input [#input-4]
      
      | Parameter       | Type   | Required | Description                                                                            |
      | --------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
      | `organization`  | string | Yes      | Azure DevOps organization name                                                         |
      | `project`       | string | Yes      | Azure DevOps project name                                                              |
      | `definitionIds` | string | No       | Comma-separated pipeline definition IDs to filter by (e.g. "1,2,3")                    |
      | `top`           | number | No       | Maximum number of builds to return                                                     |
      | `statusFilter`  | string | No       | Filter by build status: inProgress, completed, cancelling, postponed, notStarted, none |
      | `resultFilter`  | string | No       | Filter by build result: succeeded, partiallySucceeded, failed, canceled                |
      | `branchName`    | string | No       | Filter by source branch name (e.g. "refs/heads/main")                                  |
      
      #### Output [#output-4]
      
      | Parameter         | Type   | Description                                                         |
      | ----------------- | ------ | ------------------------------------------------------------------- |
      | `content`         | string | Human-readable summary of builds                                    |
      | `metadata`        | object | Builds metadata                                                     |
      | ↳ `count`         | number | Total number of builds returned                                     |
      | ↳ `builds`        | array  | Array of build objects                                              |
      | ↳ `id`            | number | Build ID                                                            |
      | ↳ `buildNumber`   | string | Build number (e.g. "20210601.1")                                    |
      | ↳ `status`        | string | Build status (e.g. "completed", "inProgress")                       |
      | ↳ `result`        | string | Build result (e.g. "succeeded", "failed") — absent if still running |
      | ↳ `queueTime`     | string | ISO 8601 queue timestamp                                            |
      | ↳ `startTime`     | string | ISO 8601 start timestamp                                            |
      | ↳ `finishTime`    | string | ISO 8601 finish timestamp — absent if still running                 |
      | ↳ `sourceBranch`  | string | Source branch (e.g. "refs/heads/main")                              |
      | ↳ `sourceVersion` | string | Source commit SHA                                                   |
      | ↳ `definition`    | object | Pipeline definition reference                                       |
      | ↳ `id`            | number | Definition ID                                                       |
      | ↳ `name`          | string | Definition name                                                     |
      | ↳ `webUrl`        | string | Browser URL for the build                                           |
      
      ### Azure DevOps List Build Logs [#azure-devops-list-build-logs]
      
      List all log entries for a specific build in Azure DevOps. Returns log IDs, types, and line counts — use the log ID with the Get Build Log tool to fetch actual log text.
      
      #### Input [#input-5]
      
      | Parameter      | Type   | Required | Description                     |
      | -------------- | ------ | -------- | ------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name  |
      | `project`      | string | Yes      | Azure DevOps project name       |
      | `buildId`      | number | Yes      | The build ID whose logs to list |
      
      #### Output [#output-5]
      
      | Parameter         | Type   | Description                                            |
      | ----------------- | ------ | ------------------------------------------------------ |
      | `content`         | string | Human-readable summary of build logs                   |
      | `metadata`        | object | Build logs metadata                                    |
      | ↳ `count`         | number | Total number of log entries returned                   |
      | ↳ `logs`          | array  | Array of log entry objects                             |
      | ↳ `id`            | number | Log entry ID — use with Get Build Log to fetch content |
      | ↳ `type`          | string | Log type (e.g. "Container", "Task", "Section")         |
      | ↳ `url`           | string | API URL for the log entry                              |
      | ↳ `lineCount`     | number | Number of lines in the log                             |
      | ↳ `createdOn`     | string | ISO 8601 creation timestamp                            |
      | ↳ `lastChangedOn` | string | ISO 8601 last-changed timestamp                        |
      
      ### Azure DevOps Get Build Log [#azure-devops-get-build-log]
      
      Fetch the text content of a specific build log in Azure DevOps. Use List Build Logs first to get the log ID. Optionally retrieve only a line range with startLine/endLine.
      
      #### Input [#input-6]
      
      | Parameter      | Type   | Required | Description                                      |
      | -------------- | ------ | -------- | ------------------------------------------------ |
      | `organization` | string | Yes      | Azure DevOps organization name                   |
      | `project`      | string | Yes      | Azure DevOps project name                        |
      | `buildId`      | number | Yes      | The build ID containing the log                  |
      | `logId`        | number | Yes      | The log entry ID to fetch (from List Build Logs) |
      | `startLine`    | number | No       | First line to return (1-based, inclusive)        |
      | `endLine`      | number | No       | Last line to return (1-based, inclusive)         |
      
      #### Output [#output-6]
      
      | Parameter     | Type   | Description                              |
      | ------------- | ------ | ---------------------------------------- |
      | `content`     | string | Raw log text                             |
      | `metadata`    | object | Log metadata                             |
      | ↳ `lineCount` | number | Number of lines in the returned log text |
      
      ### Azure DevOps Get Build Timeline [#azure-devops-get-build-timeline]
      
      Get the execution timeline for an Azure DevOps build — every stage, job, and task with its result and log ID. Use this to identify which steps failed before fetching their logs with Get Build Log.
      
      #### Input [#input-7]
      
      | Parameter      | Type   | Required | Description                                |
      | -------------- | ------ | -------- | ------------------------------------------ |
      | `organization` | string | Yes      | Azure DevOps organization name             |
      | `project`      | string | Yes      | Azure DevOps project name                  |
      | `buildId`      | number | Yes      | ID of the build whose timeline to retrieve |
      
      #### Output [#output-7]
      
      | Parameter         | Type   | Description                                                                                                    |
      | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------- |
      | `content`         | string | Summary of the build timeline, highlighting failed steps                                                       |
      | `metadata`        | object | Build timeline metadata                                                                                        |
      | ↳ `totalCount`    | number | Total number of timeline records                                                                               |
      | ↳ `failedCount`   | number | Number of failed records                                                                                       |
      | ↳ `records`       | array  | All timeline records (stages, jobs, tasks)                                                                     |
      | ↳ `id`            | string | Record GUID                                                                                                    |
      | ↳ `name`          | string | Step name (e.g. "Run tests")                                                                                   |
      | ↳ `type`          | string | Stage \| Phase \| Job \| Task                                                                                  |
      | ↳ `result`        | string | succeeded \| failed \| skipped \| canceled \| null                                                             |
      | ↳ `logId`         | number | Log ID to pass to Get Build Log, or null                                                                       |
      | ↳ `errorCount`    | number | Number of errors                                                                                               |
      | ↳ `warningCount`  | number | Number of warnings                                                                                             |
      | ↳ `startTime`     | string | ISO 8601 start timestamp                                                                                       |
      | ↳ `finishTime`    | string | ISO 8601 finish timestamp                                                                                      |
      | ↳ `failedRecords` | array  | Subset of records where result is failed, partiallySucceeded, or succeededWithIssues — use logId to fetch logs |
      | ↳ `id`            | string | Record GUID                                                                                                    |
      | ↳ `name`          | string | Step name                                                                                                      |
      | ↳ `type`          | string | Stage \| Phase \| Job \| Task                                                                                  |
      | ↳ `result`        | string | failed                                                                                                         |
      | ↳ `logId`         | number | Log ID to pass to Get Build Log                                                                                |
      | ↳ `errorCount`    | number | Number of errors                                                                                               |
      | ↳ `warningCount`  | number | Number of warnings                                                                                             |
      | ↳ `startTime`     | string | ISO 8601 start timestamp                                                                                       |
      | ↳ `finishTime`    | string | ISO 8601 finish timestamp                                                                                      |
      
      ### Azure DevOps Get Work Items Between Builds [#azure-devops-get-work-items-between-builds]
      
      Get work item references associated with commits between two builds in Azure DevOps. Returns work item IDs and URLs — use Get Work Items Batch for full field details.
      
      #### Input [#input-8]
      
      | Parameter      | Type   | Required | Description                         |
      | -------------- | ------ | -------- | ----------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name      |
      | `project`      | string | Yes      | Azure DevOps project name           |
      | `fromBuildId`  | number | Yes      | The older build ID (start of range) |
      | `toBuildId`    | number | Yes      | The newer build ID (end of range)   |
      
      #### Output [#output-8]
      
      | Parameter     | Type   | Description                                         |
      | ------------- | ------ | --------------------------------------------------- |
      | `content`     | string | Human-readable summary of work items between builds |
      | `metadata`    | object | Work items metadata                                 |
      | ↳ `count`     | number | Total number of work item references returned       |
      | ↳ `workItems` | array  | Array of work item references                       |
      | ↳ `id`        | string | Work item ID                                        |
      | ↳ `url`       | string | API URL for the work item                           |
      
      ### Azure DevOps Query Work Items [#azure-devops-query-work-items]
      
      Execute a WIQL query to search for work items in Azure DevOps and return full field details. Use TOP N in your query to limit results (Azure enforces a 200-item maximum per batch fetch).
      
      #### Input [#input-9]
      
      | Parameter      | Type   | Required | Description                                                                                                                                          |
      | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name                                                                                                                       |
      | `project`      | string | Yes      | Azure DevOps project name                                                                                                                            |
      | `wiqlQuery`    | string | Yes      | WIQL query string (e.g. "SELECT \[System.Id] FROM workitems WHERE \[System.State] = 'Doing' ORDER BY \[System.Id] ASC"). Use TOP N to limit results. |
      
      #### Output [#output-9]
      
      | Parameter        | Type   | Description                                                           |
      | ---------------- | ------ | --------------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of matching work items                         |
      | `metadata`       | object | Work items metadata                                                   |
      | ↳ `count`        | number | Number of work items returned (after hydration)                       |
      | ↳ `totalMatched` | number | Total number of work items matched by the WIQL query before hydration |
      | ↳ `workItems`    | array  | Array of work item details                                            |
      | ↳ `id`           | number | Work item ID                                                          |
      | ↳ `title`        | string | Work item title                                                       |
      | ↳ `state`        | string | Current state for Basic process (e.g. To Do, Doing, Done)             |
      | ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic)      |
      | ↳ `assignedTo`   | string | Display name of assigned user, or null if unassigned                  |
      | ↳ `areaPath`     | string | Area path of the work item                                            |
      | ↳ `url`          | string | API URL for the work item                                             |
      
      ### Azure DevOps Get Work Item [#azure-devops-get-work-item]
      
      Fetch full details of a single work item by ID from Azure DevOps, including title, state, type, assignee, and area path.
      
      #### Input [#input-10]
      
      | Parameter      | Type   | Required | Description                    |
      | -------------- | ------ | -------- | ------------------------------ |
      | `organization` | string | Yes      | Azure DevOps organization name |
      | `project`      | string | Yes      | Azure DevOps project name      |
      | `workItemId`   | number | Yes      | The work item ID to fetch      |
      
      #### Output [#output-10]
      
      | Parameter        | Type   | Description                                                      |
      | ---------------- | ------ | ---------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of the work item                          |
      | `metadata`       | object | Work item metadata                                               |
      | ↳ `workItem`     | object | Full work item details                                           |
      | ↳ `id`           | number | Work item ID                                                     |
      | ↳ `title`        | string | Work item title                                                  |
      | ↳ `state`        | string | Current state for Basic process (e.g. To Do, Doing, Done)        |
      | ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
      | ↳ `assignedTo`   | string | Display name of assigned user, or null if unassigned             |
      | ↳ `areaPath`     | string | Area path of the work item                                       |
      | ↳ `url`          | string | API URL for the work item                                        |
      
      ### Azure DevOps Get Work Items Batch [#azure-devops-get-work-items-batch]
      
      Fetch full details for multiple work items by ID from Azure DevOps. Pass comma-separated IDs (e.g. "123,456,789"). Requests with more than 200 IDs are automatically split into chunks.
      
      #### Input [#input-11]
      
      | Parameter      | Type   | Required | Description                                                                                                       |
      | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name                                                                                    |
      | `project`      | string | Yes      | Azure DevOps project name                                                                                         |
      | `ids`          | string | Yes      | Comma-separated work item IDs to fetch (e.g. "123,456,789"). Lists longer than 200 IDs are chunked automatically. |
      
      #### Output [#output-11]
      
      | Parameter          | Type   | Description                                                      |
      | ------------------ | ------ | ---------------------------------------------------------------- |
      | `content`          | string | Human-readable summary of the fetched work items                 |
      | `metadata`         | object | Work items metadata                                              |
      | ↳ `count`          | number | Number of work items returned                                    |
      | ↳ `totalRequested` | number | Total number of IDs requested (across all chunks)                |
      | ↳ `workItems`      | array  | Array of work item details                                       |
      | ↳ `id`             | number | Work item ID                                                     |
      | ↳ `title`          | string | Work item title                                                  |
      | ↳ `state`          | string | Current state for Basic process (e.g. To Do, Doing, Done)        |
      | ↳ `workItemType`   | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
      | ↳ `assignedTo`     | string | Display name of assigned user, or null if unassigned             |
      | ↳ `areaPath`       | string | Area path of the work item                                       |
      | ↳ `url`            | string | API URL for the work item                                        |
      
      ### Azure DevOps Create Work Item [#azure-devops-create-work-item]
      
      Create a new Basic-process work item (Issue, Task, or Epic) in Azure DevOps. Returns the created work item with its assigned ID.
      
      #### Input [#input-12]
      
      | Parameter       | Type   | Required | Description                                                                                                                                        |
      | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `organization`  | string | Yes      | Azure DevOps organization name                                                                                                                     |
      | `project`       | string | Yes      | Azure DevOps project name                                                                                                                          |
      | `workItemType`  | string | Yes      | Basic-process work item type to create ("Issue", "Task", or "Epic"). Use Issue for bug or defect tracking.                                         |
      | `title`         | string | Yes      | Title of the new work item                                                                                                                         |
      | `description`   | string | No       | HTML description of the work item (optional)                                                                                                       |
      | `assignedTo`    | string | No       | Email or display name of the user to assign the work item to (optional)                                                                            |
      | `priority`      | number | No       | Priority of the work item (1 = Critical, 2 = High, 3 = Medium, 4 = Low)                                                                            |
      | `effort`        | number | No       | Effort (Microsoft.VSTS.Scheduling.Effort). Basic process: Issue only.                                                                              |
      | `startDate`     | string | No       | Start date (Microsoft.VSTS.Scheduling.StartDate), ISO 8601. Basic process: Epic only.                                                              |
      | `targetDate`    | string | No       | Target date (Microsoft.VSTS.Scheduling.TargetDate), ISO 8601. Basic process: Epic only.                                                            |
      | `activity`      | string | No       | Activity (Microsoft.VSTS.Common.Activity). One of Deployment, Design, Development, Documentation, Requirements, Testing. Basic process: Task only. |
      | `remainingWork` | number | No       | Remaining work hours (Microsoft.VSTS.Scheduling.RemainingWork). Basic process: Task only.                                                          |
      | `completedWork` | number | No       | Completed work hours (Microsoft.VSTS.Scheduling.CompletedWork). Basic process: Task only.                                                          |
      | `areaPath`      | string | No       | Area path for the work item, e.g. "MyProject\Team" (optional)                                                                                      |
      | `iterationPath` | string | No       | Iteration path for the work item, e.g. "MyProject\Sprint 1" (optional)                                                                             |
      | `tags`          | string | No       | Semicolon-separated tags, e.g. "issue; p1; auth" (optional)                                                                                        |
      
      #### Output [#output-12]
      
      | Parameter        | Type   | Description                                                      |
      | ---------------- | ------ | ---------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of the created work item                  |
      | `metadata`       | object | Created work item metadata                                       |
      | ↳ `workItem`     | object | Full details of the created work item                            |
      | ↳ `id`           | number | Assigned work item ID                                            |
      | ↳ `title`        | string | Work item title                                                  |
      | ↳ `state`        | string | Initial state for Basic process (e.g. To Do, Doing, Done)        |
      | ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
      | ↳ `assignedTo`   | string | Display name of assigned user, or null if unassigned             |
      | ↳ `areaPath`     | string | Area path of the work item                                       |
      | ↳ `url`          | string | API URL for the created work item                                |
      
      ### Azure DevOps Update Work Item [#azure-devops-update-work-item]
      
      Update one or more fields on an existing work item in Azure DevOps. Provide only the fields you want to change.
      
      #### Input [#input-13]
      
      | Parameter       | Type   | Required | Description                                                                                                                                        |
      | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `organization`  | string | Yes      | Azure DevOps organization name                                                                                                                     |
      | `project`       | string | Yes      | Azure DevOps project name                                                                                                                          |
      | `workItemId`    | number | Yes      | ID of the work item to update                                                                                                                      |
      | `title`         | string | No       | New title for the work item (optional)                                                                                                             |
      | `description`   | string | No       | New HTML description for the work item (optional)                                                                                                  |
      | `assignedTo`    | string | No       | Email or display name to reassign the work item to (optional)                                                                                      |
      | `areaPath`      | string | No       | New area path for the work item (optional)                                                                                                         |
      | `priority`      | number | No       | Priority of the work item (1 = Critical, 2 = High, 3 = Medium, 4 = Low) (optional)                                                                 |
      | `state`         | string | No       | New state for Basic-process work items: "To Do", "Doing", or "Done" (optional)                                                                     |
      | `effort`        | number | No       | Effort (Microsoft.VSTS.Scheduling.Effort). Basic process: Issue only.                                                                              |
      | `startDate`     | string | No       | Start date (Microsoft.VSTS.Scheduling.StartDate), ISO 8601. Basic process: Epic only.                                                              |
      | `targetDate`    | string | No       | Target date (Microsoft.VSTS.Scheduling.TargetDate), ISO 8601. Basic process: Epic only.                                                            |
      | `activity`      | string | No       | Activity (Microsoft.VSTS.Common.Activity). One of Deployment, Design, Development, Documentation, Requirements, Testing. Basic process: Task only. |
      | `remainingWork` | number | No       | Remaining work hours (Microsoft.VSTS.Scheduling.RemainingWork). Basic process: Task only.                                                          |
      | `completedWork` | number | No       | Completed work hours (Microsoft.VSTS.Scheduling.CompletedWork). Basic process: Task only.                                                          |
      | `tags`          | string | No       | Semicolon-separated tags to set on the work item (optional)                                                                                        |
      
      #### Output [#output-13]
      
      | Parameter        | Type   | Description                                                      |
      | ---------------- | ------ | ---------------------------------------------------------------- |
      | `content`        | string | Human-readable summary of the updated work item                  |
      | `metadata`       | object | Updated work item metadata                                       |
      | ↳ `workItem`     | object | Full details of the updated work item                            |
      | ↳ `id`           | number | Work item ID                                                     |
      | ↳ `title`        | string | Work item title                                                  |
      | ↳ `state`        | string | Current state after update                                       |
      | ↳ `workItemType` | string | Work item type returned by Azure DevOps (e.g. Issue, Task, Epic) |
      | ↳ `assignedTo`   | string | Display name of assigned user, or null if unassigned             |
      | ↳ `areaPath`     | string | Area path of the work item                                       |
      | ↳ `url`          | string | API URL for the work item                                        |
      
      ### Azure DevOps Add Comment [#azure-devops-add-comment]
      
      Add a comment to a work item in Azure DevOps.
      
      #### Input [#input-14]
      
      | Parameter      | Type   | Required | Description                                               |
      | -------------- | ------ | -------- | --------------------------------------------------------- |
      | `organization` | string | Yes      | Azure DevOps organization name                            |
      | `project`      | string | Yes      | Azure DevOps project name                                 |
      | `workItemId`   | number | Yes      | ID of the work item to comment on                         |
      | `text`         | string | Yes      | Comment text (HTML supported, e.g. "\

      My comment\

      ") | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------ | | `content` | string | Human-readable confirmation of the added comment | | `metadata` | object | Added comment metadata | | ↳ `comment` | object | Full details of the created comment | | ↳ `workItemId` | number | Work item the comment belongs to | | ↳ `commentId` | number | Comment ID | | ↳ `version` | number | Comment version | | ↳ `text` | string | Comment text | | ↳ `renderedText` | string | Rendered HTML comment text when available | | ↳ `createdBy` | string | Display name of the comment author, or null | | ↳ `createdDate` | string | ISO timestamp when comment was created | | ↳ `modifiedBy` | string | Display name of the last modifier, or null | | ↳ `modifiedDate` | string | ISO timestamp when comment was modified | | ↳ `isDeleted` | boolean | Whether the comment is deleted | | ↳ `url` | string | API URL for the comment | ### Azure DevOps Get Comments [#azure-devops-get-comments] List comments for an Azure DevOps work item. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `organization` | string | Yes | Azure DevOps organization name | | `project` | string | Yes | Azure DevOps project name | | `workItemId` | number | Yes | ID of the work item whose comments should be listed | | `top` | number | No | Maximum number of comments to return | | `continuationToken` | string | No | Continuation token for paginating comments | | `includeDeleted` | boolean | No | Whether deleted comments should be returned | | `expand` | string | No | Additional comment data to include: none, reactions, renderedText, renderedTextOnly, all | | `order` | string | No | Sort order for comments: asc or desc | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------- | | `content` | string | Human-readable summary of work item comments | | `metadata` | object | Comments metadata | | ↳ `count` | number | Number of comments returned in this page | | ↳ `totalCount` | number | Total number of comments on the work item | | ↳ `continuationToken` | string | Continuation token for the next page | | ↳ `nextPage` | string | API URL for the next page | | ↳ `url` | string | API URL for this comments list | | ↳ `comments` | array | Array of work item comments | | ↳ `workItemId` | number | Work item ID | | ↳ `commentId` | number | Comment ID | | ↳ `version` | number | Comment version | | ↳ `text` | string | Comment text | | ↳ `renderedText` | string | Rendered HTML comment text when available | | ↳ `createdBy` | string | Display name of the comment author | | ↳ `createdDate` | string | ISO 8601 creation timestamp | | ↳ `modifiedBy` | string | Display name of the last modifier | | ↳ `modifiedDate` | string | ISO 8601 modified timestamp | | ↳ `isDeleted` | boolean | Whether the comment is deleted | | ↳ `url` | string | API URL for the comment | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Azure DevOps Build Failed [#azure-devops-build-failed] Trigger workflow when an Azure DevOps build fails, is canceled, or partially succeeds #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------- | | `buildId` | number | Build ID | | `buildNumber` | string | Build number string (e.g. 20240101.1) | | `result` | string | Build result: failed \| canceled \| partiallySucceeded | | `pipelineId` | number | Pipeline definition ID | | `pipelineName` | string | Pipeline definition name | | `projectName` | string | Azure DevOps project name | | `branch` | string | Source branch name (refs/heads/ prefix stripped) | | `commitSha` | string | Source commit SHA | | `triggeredBy` | string | Display name of the person who triggered the build | | `triggeredByEmail` | string | Email/unique name of the person who triggered the build, or null if not set | | `startTime` | string | Build start time (ISO 8601) | | `finishTime` | string | Build finish time (ISO 8601) | | `buildUrl` | string | API URL for the build resource | *** ### Azure DevOps Webhook (All Service Hook Events) [#azure-devops-webhook-all-service-hook-events] Trigger on whichever service hook event types you configure in Azure DevOps. Agent Serve does not filter deliveries for this trigger. #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------------------- | | `eventType` | string | Service hook event type (e.g. build.complete, workitem.created) | | `notificationId` | number | Notification ID | | `subscriptionId` | string | Service hook subscription ID | | `publisherId` | string | Publisher ID (e.g. tfs) | | `createdDate` | string | Event creation time (ISO 8601) | | `resource` | json | Event resource payload | | `resourceContainers` | json | Resource container references (project, collection, etc.) | | `message` | json | Short message object | | `detailedMessage` | json | Detailed message object | *** ### Azure DevOps Work Item Created [#azure-devops-work-item-created] Trigger workflow when a work item is created in Azure DevOps #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------- | | `workItemId` | number | Work item ID | | `workItemType` | string | Work item type for Basic process (e.g. Issue, Task, Epic) | | `title` | string | Work item title | | `state` | string | Work item state for Basic process (e.g. To Do, Doing, Done) | | `createdBy` | string | Display name of the creator, or null if not set | | `assignedTo` | string | Assignee display name, or null if unassigned | | `priority` | number | Priority (1–4), or 0 if not set | | `areaPath` | string | Area path | | `iterationPath` | string | Iteration path | | `description` | string | Work item description (HTML), or null if not set | | `projectName` | string | Azure DevOps project name | | `workItemUrl` | string | API URL for the work item resource | --- # Bitbucket (/integrations/bitbucket) ## Usage Instructions [#usage-instructions] Connect Bitbucket Cloud to inspect repositories and source, collaborate on pull requests, diagnose or control pipelines, and start workflows from repository and pull request events. OAuth is used for actions and automatic webhook management. ## Actions [#actions] ### Bitbucket List Workspaces [#bitbucket-list-workspaces] List Bitbucket Cloud workspaces available to the authenticated account #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------- | | `sort` | string | No | Workspace sort field; Bitbucket currently supports slug | | `administrator` | boolean | No | Filter by whether the caller is a workspace administrator | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Workspace access records | | ↳ `type` | string | Bitbucket workspace-access object type | | ↳ `slug` | string | Workspace slug | | ↳ `uuid` | string | Workspace UUID | | ↳ `administrator` | boolean | Whether the caller administers the workspace | | ↳ `selfUrl` | string | Workspace API URL | | ↳ `avatarUrl` | string | Workspace avatar URL | ### Bitbucket List Repositories [#bitbucket-list-repositories] List repositories in a Bitbucket Cloud workspace #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `role` | string | No | Caller role filter: admin, contributor, member, or owner | | `q` | string | No | Bitbucket filtering expression | | `sort` | string | No | Bitbucket sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Repositories | | ↳ `type` | string | Bitbucket repository object type | | ↳ `uuid` | string | Repository UUID | | ↳ `slug` | string | Repository slug | | ↳ `name` | string | Repository name | | ↳ `fullName` | string | Workspace and repository full name | | ↳ `description` | string | Repository description | | ↳ `isPrivate` | boolean | Whether the repository is private | | ↳ `scm` | string | Source control system | | ↳ `language` | string | Primary repository language | | ↳ `size` | number | Repository size in bytes | | ↳ `createdOn` | string | Repository creation timestamp | | ↳ `updatedOn` | string | Repository update timestamp | | ↳ `mainBranch` | string | Main branch name | | ↳ `owner` | object | Repository owner | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `project` | object | Containing Bitbucket project | | ↳ `uuid` | string | Project UUID | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `selfUrl` | string | Repository API URL | | ↳ `htmlUrl` | string | Repository web URL | ### Bitbucket Get Repository [#bitbucket-get-repository] Get a Bitbucket Cloud repository #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------- | | `repository` | object | Repository details | | ↳ `type` | string | Bitbucket repository object type | | ↳ `uuid` | string | Repository UUID | | ↳ `slug` | string | Repository slug | | ↳ `name` | string | Repository name | | ↳ `fullName` | string | Workspace and repository full name | | ↳ `description` | string | Repository description | | ↳ `isPrivate` | boolean | Whether the repository is private | | ↳ `scm` | string | Source control system | | ↳ `language` | string | Primary repository language | | ↳ `size` | number | Repository size in bytes | | ↳ `createdOn` | string | Repository creation timestamp | | ↳ `updatedOn` | string | Repository update timestamp | | ↳ `mainBranch` | string | Main branch name | | ↳ `owner` | object | Repository owner | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `project` | object | Containing Bitbucket project | | ↳ `uuid` | string | Project UUID | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `selfUrl` | string | Repository API URL | | ↳ `htmlUrl` | string | Repository web URL | ### Bitbucket List Branches [#bitbucket-list-branches] List branches in a Bitbucket Cloud repository #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `q` | string | No | Bitbucket branch filtering expression | | `sort` | string | No | Bitbucket branch sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-3] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Branches | | ↳ `type` | string | Bitbucket branch object type | | ↳ `name` | string | Branch name | | ↳ `target` | object | Commit targeted by the branch | | ↳ `type` | string | Bitbucket commit object type | | ↳ `hash` | string | Commit hash | | ↳ `date` | string | Commit timestamp | | ↳ `message` | string | Full commit message | | ↳ `summary` | string | Raw commit summary | | ↳ `authorRaw` | string | Raw author value stored by Git | | ↳ `author` | object | Matched Bitbucket account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `committerRaw` | string | Raw committer value stored by Git | | ↳ `committer` | object | Matched Bitbucket committer account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `parents` | array | Parent commits | | ↳ `hash` | string | Parent commit hash | | ↳ `selfUrl` | string | Commit API URL | | ↳ `htmlUrl` | string | Commit web URL | | ↳ `mergeStrategies` | array | Merge strategies available for the branch | | ↳ `defaultMergeStrategy` | string | Default merge strategy | | ↳ `selfUrl` | string | Branch API URL | | ↳ `htmlUrl` | string | Branch web URL | ### Bitbucket Create Branch [#bitbucket-create-branch] Create a branch at a commit hash or existing ref #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------ | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `name` | string | Yes | New branch name without refs/heads prefix | | `target` | string | Yes | Full commit hash or existing ref to target | #### Output [#output-4] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------- | | `branch` | object | Created branch | | ↳ `type` | string | Bitbucket branch object type | | ↳ `name` | string | Branch name | | ↳ `target` | object | Commit targeted by the branch | | ↳ `type` | string | Bitbucket commit object type | | ↳ `hash` | string | Commit hash | | ↳ `date` | string | Commit timestamp | | ↳ `message` | string | Full commit message | | ↳ `summary` | string | Raw commit summary | | ↳ `authorRaw` | string | Raw author value stored by Git | | ↳ `author` | object | Matched Bitbucket account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `committerRaw` | string | Raw committer value stored by Git | | ↳ `committer` | object | Matched Bitbucket committer account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `parents` | array | Parent commits | | ↳ `hash` | string | Parent commit hash | | ↳ `selfUrl` | string | Commit API URL | | ↳ `htmlUrl` | string | Commit web URL | | ↳ `mergeStrategies` | array | Merge strategies available for the branch | | ↳ `defaultMergeStrategy` | string | Default merge strategy | | ↳ `selfUrl` | string | Branch API URL | | ↳ `htmlUrl` | string | Branch web URL | ### Bitbucket Delete Branch [#bitbucket-delete-branch] Delete a branch from a Bitbucket Cloud repository #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `name` | string | Yes | Branch name to delete | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the branch was deleted | ### Bitbucket List Commits [#bitbucket-list-commits] List repository commits in reverse chronological order #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Commits | | ↳ `type` | string | Bitbucket commit object type | | ↳ `hash` | string | Commit hash | | ↳ `date` | string | Commit timestamp | | ↳ `message` | string | Full commit message | | ↳ `summary` | string | Raw commit summary | | ↳ `authorRaw` | string | Raw author value stored by Git | | ↳ `author` | object | Matched Bitbucket account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `committerRaw` | string | Raw committer value stored by Git | | ↳ `committer` | object | Matched Bitbucket committer account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `parents` | array | Parent commits | | ↳ `hash` | string | Parent commit hash | | ↳ `selfUrl` | string | Commit API URL | | ↳ `htmlUrl` | string | Commit web URL | ### Bitbucket Get Commit [#bitbucket-get-commit] Get a repository commit by its full SHA-1 #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `commit` | string | Yes | Full 40-character commit SHA-1 | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------- | | `commit` | object | Commit details | | ↳ `type` | string | Bitbucket commit object type | | ↳ `hash` | string | Commit hash | | ↳ `date` | string | Commit timestamp | | ↳ `message` | string | Full commit message | | ↳ `summary` | string | Raw commit summary | | ↳ `authorRaw` | string | Raw author value stored by Git | | ↳ `author` | object | Matched Bitbucket account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `committerRaw` | string | Raw committer value stored by Git | | ↳ `committer` | object | Matched Bitbucket committer account, when available | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `parents` | array | Parent commits | | ↳ `hash` | string | Parent commit hash | | ↳ `selfUrl` | string | Commit API URL | | ↳ `htmlUrl` | string | Commit web URL | ### Bitbucket List Directory [#bitbucket-list-directory] List one shallow repository directory at a full commit SHA-1 #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `commit` | string | Yes | Full 40-character commit SHA-1 | | `path` | string | No | Repository-relative directory path; omit for the root | | `q` | string | No | Bitbucket tree-entry filtering expression | | `sort` | string | No | Bitbucket tree-entry sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Directory entries | | ↳ `type` | string | Entry type, such as commit\_file or commit\_directory | | ↳ `path` | string | Repository-relative path | | ↳ `commitHash` | string | Resolved commit hash | | ↳ `size` | number | File size in bytes when the entry is a file | | ↳ `attributes` | array | File attributes when the entry is a file | | ↳ `isBinary` | boolean | Whether file attributes include the binary marker | | ↳ `selfUrl` | string | Source API URL | | ↳ `metadataUrl` | string | Source metadata API URL | ### Bitbucket Get File Metadata [#bitbucket-get-file-metadata] Inspect file size and attributes at a full repository commit SHA-1 #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `commit` | string | Yes | Full 40-character commit SHA-1 | | `path` | string | Yes | Repository-relative file path | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------- | | `file` | object | File metadata | | ↳ `type` | string | Entry type (commit\_file) | | ↳ `path` | string | Repository-relative path | | ↳ `commitHash` | string | Resolved commit hash | | ↳ `escapedPath` | string | Escaped display path | | ↳ `size` | number | File size in bytes | | ↳ `attributes` | array | File attributes reported by Bitbucket | | ↳ `isBinary` | boolean | Whether the documented attributes include the binary marker | ### Bitbucket Get File [#bitbucket-get-file] Read bounded UTF-8 text from a file at a full repository commit SHA-1 #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `commit` | string | Yes | Full 40-character commit SHA-1 | | `path` | string | Yes | Repository-relative file path | | `maxCharacters` | number | No | Maximum text characters to return (1-500000) | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------------ | | `content` | string | Bounded UTF-8 file text; null for binary content | | `binary` | boolean | Whether documented metadata identifies binary content; null when unknown | | `truncated` | boolean | Whether later content was omitted; null when binary size is unknown | | `returnedBytes` | number | Provider bytes read for the returned file | | `fullBytes` | number | Full file byte size when reported | | `contentType` | string | Response MIME type | ### Bitbucket List Pull Requests [#bitbucket-list-pull-requests] List pull requests in a Bitbucket Cloud repository #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `state` | string | No | State filter: OPEN, MERGED, DECLINED, or SUPERSEDED | | `q` | string | No | Bitbucket pull request filtering expression | | `sort` | string | No | Bitbucket pull request sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-11] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Pull requests | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Get Pull Request [#bitbucket-get-pull-request] Get a pull request by repository-scoped ID #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | #### Output [#output-12] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------- | | `pullRequest` | object | Pull request details | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Create Pull Request [#bitbucket-create-pull-request] Create a pull request between repository branches #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `title` | string | Yes | Pull request title | | `sourceBranch` | string | Yes | Source branch name | | `destinationBranch` | string | Yes | Destination branch name | | `description` | string | No | Pull request description | | `closeSourceBranch` | boolean | No | Close the source branch after merge | | `draft` | boolean | No | Create the pull request as a draft | | `reviewerUuids` | array | No | Bitbucket account UUIDs to add as reviewers | #### Output [#output-13] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------- | | `pullRequest` | object | Created pull request | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Merge Pull Request [#bitbucket-merge-pull-request] Start an asynchronous pull request merge and return a task to poll when needed #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `mergeStrategy` | string | No | Merge strategy: merge\_commit, squash, fast\_forward, squash\_fast\_forward, rebase\_fast\_forward, or rebase\_merge | | `message` | string | No | Merge commit message (maximum 128 KiB encoded as UTF-8) | | `closeSourceBranch` | boolean | No | Delete the source branch after merging | #### Output [#output-14] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------ | | `status` | string | Whether the merge completed or remains pending | | `taskId` | string | Async merge task ID | | `taskUrl` | string | Validated task polling URL | | `pullRequest` | object | Merged pull request when completed synchronously | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Get Merge Task Status [#bitbucket-get-merge-task-status] Poll the status of an asynchronous pull request merge task #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------ | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `taskId` | string | Yes | Merge task ID returned by Bitbucket Merge Pull Request | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------ | | `taskStatus` | string | PENDING or SUCCESS | | `selfUrl` | string | Merge task API URL | | `mergeResult` | object | Merged pull request when the task succeeds | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Decline Pull Request [#bitbucket-decline-pull-request] Decline an open pull request #### Input [#input-16] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | #### Output [#output-16] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------- | | `pullRequest` | object | Declined pull request | | ↳ `type` | string | Bitbucket pull request object type | | ↳ `id` | number | Repository-scoped pull request ID | | ↳ `title` | string | Pull request title | | ↳ `description` | string | Pull request description | | ↳ `state` | string | Pull request state | | ↳ `draft` | boolean | Whether the pull request is a draft | | ↳ `queued` | boolean | Whether the pull request is queued | | ↳ `author` | object | Pull request author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `closedBy` | object | Account that closed the pull request | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `source` | object | Source endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `destination` | object | Destination endpoint | | ↳ `branchName` | string | Branch name | | ↳ `commitHash` | string | Commit hash | | ↳ `repositoryUuid` | string | Repository UUID | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `mergeCommitHash` | string | Merge commit hash | | ↳ `commentCount` | number | Comment count | | ↳ `taskCount` | number | Open task count | | ↳ `closeSourceBranch` | boolean | Whether merging closes the source branch | | ↳ `reason` | string | Reason the pull request was declined | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `reviewers` | array | Explicit reviewers | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `participants` | array | Pull request participants | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | | ↳ `selfUrl` | string | Pull request API URL | | ↳ `htmlUrl` | string | Pull request web URL | ### Bitbucket Approve Pull Request [#bitbucket-approve-pull-request] Approve a pull request as the authenticated account #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `participant` | object | Approval participant record | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | ### Bitbucket Request Pull Request Changes [#bitbucket-request-pull-request-changes] Request changes on a pull request as the authenticated account #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | #### Output [#output-18] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `participant` | object | Change-request participant record | | ↳ `type` | string | Bitbucket participant object type | | ↳ `user` | object | Participating account | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `role` | string | Participant role | | ↳ `approved` | boolean | Whether the participant approved | | ↳ `state` | string | Review state | | ↳ `participatedOn` | string | Timestamp of the participant action | ### Bitbucket Get Pull Request Diff [#bitbucket-get-pull-request-diff] Read a bounded UTF-8 unified diff for one pull request file #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `path` | string | Yes | Repository-relative file path to include in the diff | | `maxCharacters` | number | No | Maximum diff characters to return (1-500000) | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------------------------- | | `diff` | string | Bounded unified diff text decoded as UTF-8 | | `decodingLossy` | boolean | Whether invalid UTF-8 source bytes were replaced while decoding | | `truncated` | boolean | Whether later diff text was omitted | | `returnedBytes` | number | Provider bytes read for the returned diff | | `fullBytes` | number | Full diff byte size when reported | ### Bitbucket Get Pull Request Diffstat [#bitbucket-get-pull-request-diffstat] List per-file change statistics for a pull request #### Input [#input-20] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Per-file diff statistics | | ↳ `type` | string | Diffstat object type | | ↳ `status` | string | File change status | | ↳ `linesAdded` | number | Lines added | | ↳ `linesRemoved` | number | Lines removed | | ↳ `oldPath` | string | Old file path | | ↳ `newPath` | string | New file path | | ↳ `oldCommitHash` | string | Old file commit hash | | ↳ `newCommitHash` | string | New file commit hash | ### Bitbucket List Pull Request Comments [#bitbucket-list-pull-request-comments] List global, inline, and reply comments on a pull request #### Input [#input-21] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `q` | string | No | Bitbucket comment filtering expression | | `sort` | string | No | Bitbucket comment sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Pull request comments | | ↳ `type` | string | Bitbucket comment object type | | ↳ `id` | number | Comment ID | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `content` | string | Raw comment content | | ↳ `user` | object | Comment author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `deleted` | boolean | Whether the comment was deleted | | ↳ `parentId` | number | Parent comment ID | | ↳ `inline` | object | Inline comment anchor | | ↳ `path` | string | Anchored file path | | ↳ `from` | number | Ending line in the old file | | ↳ `to` | number | Ending line in the new file | | ↳ `startFrom` | number | Starting line in the old file | | ↳ `startTo` | number | Starting line in the new file | | ↳ `pending` | boolean | Whether the comment is pending | | ↳ `resolution` | object | Comment resolution details | | ↳ `resolver` | object | Account that resolved the comment | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `resolvedOn` | string | Resolution timestamp | | ↳ `selfUrl` | string | Comment API URL | | ↳ `htmlUrl` | string | Comment web URL | ### Bitbucket Create Pull Request Comment [#bitbucket-create-pull-request-comment] Create a global comment or reply on a pull request #### Input [#input-22] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `content` | string | Yes | Raw comment content | | `parentId` | number | No | Parent comment ID when creating a reply | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------- | --------------------------------- | | `comment` | object | Created comment | | ↳ `type` | string | Bitbucket comment object type | | ↳ `id` | number | Comment ID | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `content` | string | Raw comment content | | ↳ `user` | object | Comment author | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `deleted` | boolean | Whether the comment was deleted | | ↳ `parentId` | number | Parent comment ID | | ↳ `inline` | object | Inline comment anchor | | ↳ `path` | string | Anchored file path | | ↳ `from` | number | Ending line in the old file | | ↳ `to` | number | Ending line in the new file | | ↳ `startFrom` | number | Starting line in the old file | | ↳ `startTo` | number | Starting line in the new file | | ↳ `pending` | boolean | Whether the comment is pending | | ↳ `resolution` | object | Comment resolution details | | ↳ `resolver` | object | Account that resolved the comment | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `resolvedOn` | string | Resolution timestamp | | ↳ `selfUrl` | string | Comment API URL | | ↳ `htmlUrl` | string | Comment web URL | ### Bitbucket List Pull Request Commit Statuses [#bitbucket-list-pull-request-commit-statuses] List commit statuses associated with a pull request #### Input [#input-23] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `prId` | number | Yes | Repository-scoped pull request ID | | `q` | string | No | Bitbucket commit status filtering expression | | `sort` | string | No | Bitbucket commit status sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Pull request commit statuses | | ↳ `type` | string | Bitbucket commit-status object type | | ↳ `key` | string | Vendor-unique status key | | ↳ `refName` | string | Reference name at status creation time | | ↳ `url` | string | External build URL | | ↳ `state` | string | Commit status state | | ↳ `name` | string | Build name | | ↳ `description` | string | Build description | | ↳ `createdOn` | string | Creation timestamp | | ↳ `updatedOn` | string | Update timestamp | | ↳ `selfUrl` | string | Status API URL | | ↳ `commitUrl` | string | Commit API URL | ### Bitbucket List Pipelines [#bitbucket-list-pipelines] List pipelines for a Bitbucket Cloud repository #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `refType` | string | No | Reference type filter: BRANCH, TAG, or ANNOTATED\_TAG | | `refName` | string | No | Reference name filter | | `commitHash` | string | No | Full 40-character target commit SHA-1 filter | | `selectorType` | string | No | Selector type filter: BRANCH, TAG, CUSTOM, PULLREQUESTS, or DEFAULT | | `selectorPattern` | string | No | Pipeline selector pattern filter | | `triggerType` | string | No | Trigger filter: PUSH, MANUAL, SCHEDULED, or PARENT\_STEP | | `status` | string | No | Pipeline status filter | | `sort` | string | No | Bitbucket pipeline sort expression | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-24] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Pipelines | | ↳ `type` | string | Bitbucket pipeline object type | | ↳ `uuid` | string | Pipeline UUID | | ↳ `buildNumber` | number | Pipeline build number | | ↳ `creator` | object | Pipeline creator | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `target` | object | Pipeline target | | ↳ `type` | string | Target object type | | ↳ `refType` | string | Reference type | | ↳ `refName` | string | Reference name | | ↳ `commitHash` | string | Target commit hash | | ↳ `selectorType` | string | Pipeline selector type | | ↳ `selectorPattern` | string | Pipeline selector pattern | | ↳ `triggerType` | string | Pipeline trigger object type | | ↳ `state` | object | Pipeline state | | ↳ `name` | string | State name | | ↳ `stage` | string | In-progress stage name | | ↳ `result` | string | Completed result name | | ↳ `errorKey` | string | Completed-error key | | ↳ `errorMessage` | string | Completed-error message | | ↳ `createdOn` | string | Creation timestamp | | ↳ `completedOn` | string | Completion timestamp | | ↳ `buildSecondsUsed` | number | Build seconds used | | ↳ `selfUrl` | string | Pipeline API URL | | ↳ `stepsUrl` | string | Pipeline steps API URL | ### Bitbucket Get Pipeline [#bitbucket-get-pipeline] Get a pipeline by UUID #### Input [#input-25] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `pipelineUuid` | string | Yes | Pipeline UUID | #### Output [#output-25] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------ | | `pipeline` | object | Pipeline details | | ↳ `type` | string | Bitbucket pipeline object type | | ↳ `uuid` | string | Pipeline UUID | | ↳ `buildNumber` | number | Pipeline build number | | ↳ `creator` | object | Pipeline creator | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `target` | object | Pipeline target | | ↳ `type` | string | Target object type | | ↳ `refType` | string | Reference type | | ↳ `refName` | string | Reference name | | ↳ `commitHash` | string | Target commit hash | | ↳ `selectorType` | string | Pipeline selector type | | ↳ `selectorPattern` | string | Pipeline selector pattern | | ↳ `triggerType` | string | Pipeline trigger object type | | ↳ `state` | object | Pipeline state | | ↳ `name` | string | State name | | ↳ `stage` | string | In-progress stage name | | ↳ `result` | string | Completed result name | | ↳ `errorKey` | string | Completed-error key | | ↳ `errorMessage` | string | Completed-error message | | ↳ `createdOn` | string | Creation timestamp | | ↳ `completedOn` | string | Completion timestamp | | ↳ `buildSecondsUsed` | number | Build seconds used | | ↳ `selfUrl` | string | Pipeline API URL | | ↳ `stepsUrl` | string | Pipeline steps API URL | ### Bitbucket Trigger Pipeline [#bitbucket-trigger-pipeline] Run the repository pipeline selected by a branch or ref target #### Input [#input-26] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `refType` | string | Yes | Reference type: branch, tag, named\_branch, or bookmark | | `refName` | string | Yes | Reference name | | `commitHash` | string | No | Full 40-character commit SHA-1 to run in the reference context | #### Output [#output-26] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------ | | `pipeline` | object | Triggered pipeline | | ↳ `type` | string | Bitbucket pipeline object type | | ↳ `uuid` | string | Pipeline UUID | | ↳ `buildNumber` | number | Pipeline build number | | ↳ `creator` | object | Pipeline creator | | ↳ `type` | string | Bitbucket account object type | | ↳ `uuid` | string | Bitbucket account UUID | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Account display name | | ↳ `createdOn` | string | Account creation timestamp | | ↳ `selfUrl` | string | Account API URL | | ↳ `htmlUrl` | string | Account web URL | | ↳ `avatarUrl` | string | Account avatar URL | | ↳ `repositoryFullName` | string | Repository full name | | ↳ `target` | object | Pipeline target | | ↳ `type` | string | Target object type | | ↳ `refType` | string | Reference type | | ↳ `refName` | string | Reference name | | ↳ `commitHash` | string | Target commit hash | | ↳ `selectorType` | string | Pipeline selector type | | ↳ `selectorPattern` | string | Pipeline selector pattern | | ↳ `triggerType` | string | Pipeline trigger object type | | ↳ `state` | object | Pipeline state | | ↳ `name` | string | State name | | ↳ `stage` | string | In-progress stage name | | ↳ `result` | string | Completed result name | | ↳ `errorKey` | string | Completed-error key | | ↳ `errorMessage` | string | Completed-error message | | ↳ `createdOn` | string | Creation timestamp | | ↳ `completedOn` | string | Completion timestamp | | ↳ `buildSecondsUsed` | number | Build seconds used | | ↳ `selfUrl` | string | Pipeline API URL | | ↳ `stepsUrl` | string | Pipeline steps API URL | ### Bitbucket Stop Pipeline [#bitbucket-stop-pipeline] Stop a running pipeline #### Input [#input-27] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `pipelineUuid` | string | Yes | Pipeline UUID | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `stopped` | boolean | Whether the stop request succeeded | ### Bitbucket List Pipeline Steps [#bitbucket-list-pipeline-steps] List the steps in a pipeline #### Input [#input-28] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `pipelineUuid` | string | Yes | Pipeline UUID | | `nextUrl` | string | No | Opaque next-page URL returned by a previous Bitbucket call | | `pageLen` | number | No | Results per page (1-100) | #### Output [#output-28] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------- | | `page` | object | Pagination information | | ↳ `size` | number | Total result count reported by Bitbucket | | ↳ `page` | number | Current page number | | ↳ `pageLen` | number | Number of results requested per page | | ↳ `nextUrl` | string | Validated URL for the next page | | ↳ `previousUrl` | string | Validated URL for the previous page | | `items` | array | Pipeline steps | | ↳ `type` | string | Bitbucket pipeline-step object type | | ↳ `uuid` | string | Pipeline step UUID | | ↳ `startedOn` | string | Step start timestamp | | ↳ `completedOn` | string | Step completion timestamp | | ↳ `state` | object | Pipeline step state | | ↳ `name` | string | State name | | ↳ `result` | string | Completed result name | | ↳ `errorKey` | string | Completed-error key | | ↳ `errorMessage` | string | Completed-error message | | ↳ `imageName` | string | Build container image name | | ↳ `setupCommands` | array | Setup commands | | ↳ `name` | string | Command name | | ↳ `command` | string | Executable command | | ↳ `scriptCommands` | array | Build script commands | | ↳ `name` | string | Command name | | ↳ `command` | string | Executable command | ### Bitbucket Get Pipeline Step Log [#bitbucket-get-pipeline-step-log] Read a bounded UTF-8 tail of a pipeline step log #### Input [#input-29] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `workspaceSlug` | string | Yes | Bitbucket workspace slug or UUID | | `repoSlug` | string | Yes | Bitbucket repository slug or UUID | | `pipelineUuid` | string | Yes | Pipeline UUID | | `stepUuid` | string | Yes | Pipeline step UUID | | `maxCharacters` | number | No | Maximum trailing log characters to return (1-200000) | #### Output [#output-29] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------- | | `log` | string | Bounded trailing UTF-8 log text | | `truncated` | boolean | Whether earlier log output was omitted | | `totalBytes` | number | Full log byte size when reported | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Bitbucket Build Status Created [#bitbucket-build-status-created] Trigger workflow when a build status is created for a Bitbucket commit #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `commitStatus` | json | Bitbucket commit status object | | `commitHash` | string | Hash of the commit with this status | | `statusKey` | string | Key identifying the build status | | `statusState` | string | Current build status state | | `statusName` | string | Display name of the build status | | `statusUrl` | string | URL associated with the build status | *** ### Bitbucket Build Status Updated [#bitbucket-build-status-updated] Trigger workflow when a build status is updated for a Bitbucket commit #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-31] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `commitStatus` | json | Bitbucket commit status object | | `commitHash` | string | Hash of the commit with this status | | `statusKey` | string | Key identifying the build status | | `statusState` | string | Current build status state | | `statusName` | string | Display name of the build status | | `statusUrl` | string | URL associated with the build status | *** ### Bitbucket Commit Comment Created [#bitbucket-commit-comment-created] Trigger workflow when a comment is created on a Bitbucket commit #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-32] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | | `commit` | json | Commit the comment was created on | *** ### Bitbucket Pull Request Approval Removed [#bitbucket-pull-request-approval-removed] Trigger workflow when approval is removed from a Bitbucket pull request #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-33] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `approval` | json | Pull request approval details | *** ### Bitbucket Pull Request Approved [#bitbucket-pull-request-approved] Trigger workflow when a Bitbucket pull request is approved #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-34] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `approval` | json | Pull request approval details | *** ### Bitbucket Pull Request Changes Request Removed [#bitbucket-pull-request-changes-request-removed] Trigger workflow when a changes request is removed from a Bitbucket pull request #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-35] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `changesRequest` | json | Pull request changes-request details | *** ### Bitbucket Pull Request Changes Requested [#bitbucket-pull-request-changes-requested] Trigger workflow when changes are requested on a Bitbucket pull request #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-36] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `changesRequest` | json | Pull request changes-request details | *** ### Bitbucket Pull Request Comment Created [#bitbucket-pull-request-comment-created] Trigger workflow when a comment is created on a Bitbucket pull request #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-37] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | *** ### Bitbucket Pull Request Comment Deleted [#bitbucket-pull-request-comment-deleted] Trigger workflow when a comment is deleted from a Bitbucket pull request #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-38] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | *** ### Bitbucket Pull Request Comment Reopened [#bitbucket-pull-request-comment-reopened] Trigger workflow when a resolved comment is reopened on a Bitbucket pull request #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-39] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | *** ### Bitbucket Pull Request Comment Resolved [#bitbucket-pull-request-comment-resolved] Trigger workflow when a comment is resolved on a Bitbucket pull request #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-40] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | *** ### Bitbucket Pull Request Comment Updated [#bitbucket-pull-request-comment-updated] Trigger workflow when a comment is updated on a Bitbucket pull request #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-41] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | | `comment` | json | Bitbucket comment object | | `commentId` | number | Repository-scoped comment ID | | `commentContent` | string | Raw text content of the comment | *** ### Bitbucket Pull Request Created [#bitbucket-pull-request-created] Trigger workflow when a Bitbucket pull request is created #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-42] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | *** ### Bitbucket Pull Request Declined [#bitbucket-pull-request-declined] Trigger workflow when a Bitbucket pull request is declined #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-43] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | *** ### Bitbucket Pull Request Merged [#bitbucket-pull-request-merged] Trigger workflow when a Bitbucket pull request is merged #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-44] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | *** ### Bitbucket Pull Request Updated [#bitbucket-pull-request-updated] Trigger workflow when a Bitbucket pull request is updated #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-45] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `pullRequest` | json | Bitbucket pull request object | | `pullRequestId` | number | Repository-scoped pull request ID | | `pullRequestTitle` | string | Pull request title | | `pullRequestState` | string | Pull request state | | `sourceBranch` | string | Pull request source branch | | `destinationBranch` | string | Pull request destination branch | *** ### Bitbucket Push [#bitbucket-push] Trigger workflow when commits are pushed to a Bitbucket repository #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-46] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `push` | json | Push details, including changes and commits | *** ### Bitbucket Repository Forked [#bitbucket-repository-forked] Trigger workflow when a Bitbucket repository is forked #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-47] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `fork` | json | Newly created repository fork | *** ### Bitbucket Repository Updated [#bitbucket-repository-updated] Trigger workflow when a Bitbucket repository is updated #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | --------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The Bitbucket account used to create and remove the repository webhook. Repository administrator access is required. | | `workspacePicker` | project-selector | Yes | The workspace containing the repository to monitor. | | `workspaceSlugInput` | string | Yes | Enter the workspace slug directly instead of selecting a workspace. | | `repositoryPicker` | project-selector | Yes | The repository where Agent Serve creates the webhook. | | `repositorySlugInput` | string | Yes | Enter the repository slug directly instead of selecting a repository. | #### Output [#output-48] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `eventType` | string | Bitbucket event key from X-Event-Key | | `hookUuid` | string | UUID of the Bitbucket repository webhook | | `requestUuid` | string | Bitbucket delivery request UUID | | `attemptNumber` | number | Bitbucket delivery attempt number | | `actor` | json | User or app that caused the event | | `repository` | json | Repository where the event occurred | | `payload` | json | Full parsed Bitbucket webhook payload | | `changes` | json | Repository fields changed by the update | --- # Bolna (/integrations/bolna) ## Usage Instructions [#usage-instructions] Run outbound voice AI calls with Bolna, the voice AI platform built for India. Place single or scheduled calls with per-call variables, run CSV batch campaigns, read transcripts, summaries, extracted data, recordings, and costs, create and update agents, and search and buy phone numbers. Bolna can also trigger workflows when a call ends. ## Actions [#actions] ### Bolna Buy Phone Number [#bolna-buy-phone-number] Buy a phone number found with Search Phone Numbers. This charges your Bolna account a recurring monthly rental fee (the price shown by Search Phone Numbers) that renews every month until the number is deleted. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `country` | string | Yes | Country of the number: US or IN | | `phoneNumber` | string | Yes | Number to buy in E.164 format, as returned by Search Phone Numbers | | `provider` | string | No | Telephony provider of the number: twilio, plivo, or vobiz | | `complianceApplicationId` | string | No | Approved compliance application to buy under, when the account has more than one (India DLT) | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------- | | `id` | string | ID of the purchased phone number record | | `phoneNumber` | string | Purchased number (E.164) | | `agentId` | string | Agent linked to the number | | `price` | number | Monthly price in cents | | `telephonyProvider` | string | Telephony provider | | `renewal` | boolean | Whether the monthly rental auto-renews | | `bolnaOwned` | boolean | Whether Bolna owns the number | | `paymentUuid` | string | Payment transaction ID | | `telephonySid` | string | Number's ID at the telephony provider | | `createdAt` | string | When the number was bought | | `updatedAt` | string | When the record last changed | ### Bolna Create Agent [#bolna-create-agent] Create an English Bolna voice AI agent from a name, system prompt, and welcome message, with an OpenAI-compatible LLM, an ElevenLabs voice, and an optional webhook URL for call results. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentName` | string | Yes | Name of the agent | | `systemPrompt` | string | Yes | System prompt the agent follows on every call. Use \{\{variable}} placeholders for per-call user data | | `welcomeMessage` | string | No | First thing the agent says when the call connects | | `webhookUrl` | string | No | URL that receives the execution payload as each call progresses | | `llmProvider` | string | No | LLM provider: openai (default), anthropic, google, deepseek, azure-openai, or openrouter | | `llmModel` | string | No | LLM model ID for that provider (default gpt-5.4-mini) | | `voiceName` | string | No | ElevenLabs voice name (default Angelica) | | `voiceId` | string | No | ElevenLabs voice ID matching the voice name | | `voiceModel` | string | No | ElevenLabs model (default eleven\_turbo\_v2\_5) | | `telephonyProvider` | string | No | Telephony provider: plivo (default), twilio, exotel, or vobiz | | `callSummaryEnabled` | boolean | No | Generate an AI summary after each call | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ------------------------------- | | `agentId` | string | ID of the new agent | | `state` | string | Creation state (created) | | `versionId` | string | ID of the initial agent version | ### Bolna Create Batch [#bolna-create-batch] Create a batch calling campaign for a Bolna agent from a CSV of recipients. The CSV needs a contact\_number column (E.164); every other column becomes a prompt variable. The batch does not dial until it is scheduled with Schedule Batch. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentId` | string | Yes | ID of the Bolna agent that places the batch calls | | `csvContent` | string | Yes | Recipients as CSV text with a header row, e.g. "contact\_number,customer\_name\n+919876543210,Asha" | | `fromPhoneNumbers` | string | No | Comma-separated caller IDs (E.164) to spread the batch across | | `webhookUrl` | string | No | URL that receives the batch payload when it finishes processing and again when every call ends | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `batchId` | string | ID of the new batch; pass it to Schedule Batch | | `state` | string | Batch state (created) | ### Bolna Get Agent [#bolna-get-agent] Get a Bolna voice AI agent's configuration, including its system prompt and task setup. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentId` | string | Yes | ID of the Bolna agent | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Agent ID | | `agentName` | string | Agent name | | `agentType` | string | Agent type | | `agentStatus` | string | Agent status (seeding or processed) | | `callSummaryEnabled` | boolean | Whether a summary is generated after each call | | `createdAt` | string | When the agent was created | | `updatedAt` | string | When the agent was last updated | | `systemPrompt` | string | System prompt of the first task (agent\_prompts.task\_1) | | `agentPrompts` | json | Prompts per task, keyed task\_1, task\_2, ... each with system\_prompt | | `tasks` | array | Agent tasks with their task\_type, tools\_config (llm\_agent, synthesizer, transcriber, input, output), toolchain, and task\_config | ### Bolna Get Execution [#bolna-get-execution] Get a Bolna call by execution ID: status, transcript, summary, extracted data, recording, cost, and telephony details. Duration, cost, recording, and extractions are final only once status is completed or another terminal status. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `executionId` | string | Yes | Execution ID returned by Make Call | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `executionId` | string | Execution ID of a placed or stopped call | | `message` | string | Response message from Bolna | | `status` | string | Call status | | `id` | string | Execution, agent, or phone number record ID | | `agentId` | string | Agent ID | | `batchId` | string | Batch ID | | `conversationDuration` | number | Conversation length in seconds | | `totalCost` | number | Total call cost in cents | | `transcript` | string | Call transcript ("assistant:" / "user:" turns) | | `summary` | string | AI call summary, when enabled on the agent | | `extractedData` | json | Post-call extracted data | | `errorMessage` | string | Call error message | | `answeredByVoiceMail` | boolean | Whether voicemail answered | | `recordingUrl` | string | Call recording URL | | `toNumber` | string | Recipient phone number | | `fromNumber` | string | Caller phone number | | `hangupBy` | string | Which side ended the call | | `hangupReason` | string | Why the call ended | | `callType` | string | inbound or outbound | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `costBreakdown` | json | Cost breakdown in cents (llm, network, platform, synthesizer, transcriber, totalCostToDeduct) | | `telephonyData` | json | Telephony details (duration, toNumber, fromNumber, recordingUrl, provider, providerCallId, hangupBy, hangupReason, hangupProviderCode, ...) | | `contextDetails` | json | Recipient context the call ran with | | `executions` | json | Calls on this page (id, status, conversationDuration, createdAt, telephonyData) | | `total` | number | Total matching calls | | `pageNumber` | number | Page returned | | `pageSize` | number | Results per page | | `hasMore` | boolean | Whether another page is available | | `agents` | json | Agents (id, agentName, agentType, agentStatus, callSummaryEnabled, createdAt, updatedAt) | | `agentName` | string | Agent name | | `agentType` | string | Agent type | | `agentStatus` | string | Agent status | | `callSummaryEnabled` | boolean | Whether call summaries are on | | `systemPrompt` | string | Agent system prompt (task\_1) | | `agentPrompts` | json | Prompts per task (task\_1, ...) | | `tasks` | json | Agent task configuration | | `state` | string | Result state (created, updated, scheduled) | | `versionId` | string | Initial version ID of a created agent | | `phoneNumbers` | json | Phone numbers: owned (id, phoneNumber, agentId, price, telephonyProvider, rented, renewalAt) or available (phoneNumber, region, locality, provider, price) | | `phoneNumber` | string | Purchased phone number | | `price` | number | Monthly price of the purchased number in cents | | `telephonyProvider` | string | Telephony provider of the number | | `renewal` | boolean | Whether the number rental auto-renews | | `bolnaOwned` | boolean | Whether Bolna owns the number | | `paymentUuid` | string | Payment transaction ID | | `telephonySid` | string | Number's ID at the telephony provider | ### Bolna List Agent Executions [#bolna-list-agent-executions] List an agent's calls created within a date range of at most 7 days, newest first, with optional status, call type, provider, voicemail, and batch filters. List results are a trimmed projection; use Get Execution for the full call record. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentId` | string | Yes | ID of the Bolna agent whose calls to list | | `from` | string | Yes | Start of the created\_at range, UTC ISO 8601 (e.g. 2026-06-07T00:00:00.000Z). At most 7 days before To | | `to` | string | Yes | End of the created\_at range, UTC ISO 8601 (e.g. 2026-06-14T00:00:00.000Z) | | `status` | string | No | Only calls with this status (e.g. completed, no-answer, busy, failed) | | `callType` | string | No | Only inbound or outbound calls | | `provider` | string | No | Only calls on this provider: twilio, plivo, exotel, vobiz, trunk, sip-trunk, web-call, or websocket | | `answeredByVoiceMail` | boolean | No | Filter by whether voicemail answered the call | | `batchId` | string | No | Only calls from this batch | | `pageNumber` | number | No | Page to return, starting at 1 (default 1) | | `pageSize` | number | No | Results per page, 1-50 (default 20) | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | --------------------------------- | | `executions` | array | Calls on this page, newest first | | `total` | number | Total matching calls | | `pageNumber` | number | Page returned | | `pageSize` | number | Results per page | | `hasMore` | boolean | Whether another page is available | ### Bolna List Agents [#bolna-list-agents] List every voice AI agent in the Bolna account with its name, type, and status. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | #### Output [#output-6] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------- | | `agents` | array | Agents in the account | | ↳ `id` | string | Agent ID | | ↳ `agentName` | string | Agent name | | ↳ `agentType` | string | Agent type | | ↳ `agentStatus` | string | Agent status (seeding or processed) | | ↳ `callSummaryEnabled` | boolean | Whether a summary is generated after each call | | ↳ `createdAt` | string | When the agent was created | | ↳ `updatedAt` | string | When the agent was last updated | ### Bolna List Phone Numbers [#bolna-list-phone-numbers] List the phone numbers in the Bolna account with their linked agent, provider, monthly price, and renewal date. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------- | | `phoneNumbers` | array | Phone numbers in the account | | ↳ `id` | string | Phone number record ID | | ↳ `phoneNumber` | string | Phone number (E.164) | | ↳ `agentId` | string | Agent linked to the number | | ↳ `price` | string | Monthly rental price (e.g. $5.0) | | ↳ `telephonyProvider` | string | Telephony provider | | ↳ `rented` | boolean | Whether the number was bought from Bolna | | ↳ `renewalAt` | string | Next renewal date | | ↳ `createdAt` | string | When the number was added | | ↳ `updatedAt` | string | When the number was last updated | ### Bolna Make Call [#bolna-make-call] Place an outbound phone call from a Bolna voice AI agent, now or at a scheduled time. Returns the execution ID used to track the call. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentId` | string | Yes | ID of the Bolna agent that places the call | | `recipientPhoneNumber` | string | Yes | Phone number to call, in E.164 format (e.g. +919876543210) | | `fromPhoneNumber` | string | No | Caller ID in E.164 format; must be a number in your Bolna account. Defaults to the account's default number | | `scheduledAt` | string | No | When to place the call, as ISO 8601 with a time zone offset (e.g. 2026-06-05T16:35:00+05:30). Leave empty to call now | | `userData` | json | No | Variables injected into the agent prompt and welcome message, e.g. \{"customer\_name": "Asha"} fills \{\{customer\_name}} | | `bypassCallGuardrails` | boolean | No | Ignore the agent's calling-hours guardrails and call immediately | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------- | | `executionId` | string | Execution ID of the call; use it with Get Execution | | `status` | string | Initial call status (queued) | | `message` | string | Response message from Bolna | ### Bolna Schedule Batch [#bolna-schedule-batch] Schedule a created Bolna batch to start calling at a time up to 30 days ahead. Times less than 10 minutes ahead start immediately. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `batchId` | string | Yes | ID of the batch returned by Create Batch | | `scheduledAt` | string | Yes | Start time as ISO 8601 with a numeric offset (e.g. 2026-06-23T18:30:00+05:30), within 30 days | | `bypassCallGuardrails` | boolean | No | Ignore the agent's calling-hours guardrails for every call in the batch | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `message` | string | Response message (success) | | `state` | string | Batch state (scheduled) | ### Bolna Search Phone Numbers [#bolna-search-phone-numbers] Search phone numbers available to buy in the US or India, optionally by a 3-digit prefix and provider, with their monthly price in USD. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `country` | string | Yes | Country to search: US or IN | | `pattern` | string | No | 3-character prefix the number should start with | | `provider` | string | No | Telephony provider: twilio, plivo, or vobiz | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ------------------------ | | `phoneNumbers` | array | Numbers available to buy | | ↳ `phoneNumber` | string | Phone number (E.164) | | ↳ `region` | string | Region of the number | | ↳ `locality` | string | Locality, when available | | ↳ `friendlyName` | string | Friendly label, when set | | ↳ `provider` | string | Telephony provider | | ↳ `price` | number | Monthly price in USD | ### Bolna Stop Call [#bolna-stop-call] Cancel a Bolna call that is still queued or scheduled. Calls already dialing or in progress cannot be stopped. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `executionId` | string | Yes | Execution ID of the queued or scheduled call to stop | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `executionId` | string | Execution ID of the stopped call | | `status` | string | New call status (stopped) | | `message` | string | Response message from Bolna | ### Bolna Update Agent [#bolna-update-agent] Partially update a Bolna agent: name, welcome message, system prompt, webhook URL, calling-hours window, or call summary. Fields left empty keep their saved values. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bolna API key (Bolna dashboard → Developers → API Keys) | | `agentId` | string | Yes | ID of the Bolna agent to update | | `agentName` | string | No | New agent name | | `welcomeMessage` | string | No | New welcome message spoken when the call connects | | `systemPrompt` | string | No | New system prompt for the first task (task\_1) | | `webhookUrl` | string | No | New URL that receives the execution payload as each call progresses | | `callStartHour` | number | No | Start of the allowed outbound calling window, 0-23 in the recipient's time zone. Set together with the end hour | | `callEndHour` | number | No | End of the allowed outbound calling window, 0-23 in the recipient's time zone, at or after the start hour | | `callSummaryEnabled` | boolean | No | Generate an AI summary after each call | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `message` | string | Response message (success) | | `state` | string | Update state (updated) | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Bolna Call Completed [#bolna-call-completed] Trigger workflow when a Bolna call reaches a final status, with its transcript, summary, extracted data, recording, and cost #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `completedOnly` | boolean | No | Run only when the call status is completed. When off, the trigger also runs for no-answer, busy, failed, canceled, stopped, error, and balance-low calls. | | `restrictToBolnaIps` | boolean | No | Reject deliveries that do not come from Bolna’s documented webhook IPs (13.203.39.153, 13.126.9.249, 13.202.133.53). | #### Output [#output-13] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------------------------------------- | | `id` | string | Execution (call) ID | | `agentId` | string | Agent that ran the call | | `batchId` | string | Batch the call belongs to, if any | | `status` | string | Final call status: completed, no-answer, busy, failed, canceled, stopped, error, or balance-low | | `conversationDuration` | number | Conversation length in seconds; 0 means no conversation happened | | `totalCost` | number | Total call cost in cents | | `transcript` | string | Newline-delimited transcript of "assistant:" and "user:" turns | | `summary` | string | AI call summary (only when the agent's call summary is enabled) | | `extractedData` | json | Post-call extractions configured on the agent, keyed by category then field | | `errorMessage` | string | Error message, if any | | `answeredByVoiceMail` | boolean | Whether voicemail answered the call | | `recordingUrl` | string | Call recording URL | | `toNumber` | string | Recipient phone number (E.164) | | `fromNumber` | string | Caller phone number (E.164) | | `hangupBy` | string | Which side ended the call | | `hangupReason` | string | Why the call ended | | `callType` | string | inbound or outbound | | `createdAt` | string | When the execution was created | | `updatedAt` | string | When the execution last changed | | `costBreakdown` | object | costBreakdown output from the tool | | ↳ `llm` | number | LLM cost in cents | | ↳ `network` | number | Telephony cost in cents | | ↳ `platform` | number | Bolna platform cost in cents | | ↳ `synthesizer` | number | Voice synthesis cost in cents | | ↳ `transcriber` | number | Transcription cost in cents | | ↳ `totalCostToDeduct` | number | Wallet deduction in cents | | `telephonyData` | object | telephonyData output from the tool | | ↳ `duration` | number | Provider-reported call duration in seconds | | ↳ `toNumber` | string | Recipient number (E.164) | | ↳ `fromNumber` | string | Caller number (E.164) | | ↳ `recordingUrl` | string | Call recording URL | | ↳ `hostedTelephony` | boolean | Whether the number is Bolna-hosted | | ↳ `providerCallId` | string | Telephony provider's call ID | | ↳ `callType` | string | inbound or outbound | | ↳ `provider` | string | Telephony provider | | ↳ `hangupBy` | string | Which side ended the call | | ↳ `hangupReason` | string | Normalized hangup reason | | ↳ `hangupProviderCode` | number | Provider's raw hangup code | | ↳ `ringDuration` | number | Seconds spent ringing | | ↳ `postDialDelay` | number | Seconds from dial to first ring | | ↳ `toNumberCarrier` | string | Carrier of the dialed number | | `contextDetails` | json | Recipient context the call ran with (recipient\_phone\_number, recipient\_data) | | `payload` | json | The full execution payload as Bolna delivered it | --- # Box Service Accounts (/integrations/box-service-account) Connect a Box Platform app using **Client Credentials Grant**. A Box admin authorizes the app, and Agent Serve uses its Client ID, client secret, and Enterprise ID to obtain access tokens for the app's Service Account. ## Prerequisites [#prerequisites] Anyone with Developer Console access can create the app, but a Box **admin or co-admin** must authorize it in the Admin Console before it can mint tokens. Free developer accounts are authorized automatically. ## Setting Up the Platform App [#setting-up-the-platform-app] ### 1. Create the App [#1-create-the-app] Go to the [Box Developer Console](https://app.box.com/developers/console), open **My Apps**, click **Create Platform App**, and choose **Server Authentication (with Client Credentials Grant)** {/* TODO(screenshot): Box Developer Console Create Platform App dialog with Server Authentication (with Client Credentials Grant) selected */} On the **Configuration** tab, set the **App Access Level**. **App Access Only** (the default) is sufficient — choose **App + Enterprise Access** only if the Service Account should also reach existing managed users' content via admin APIs Under **Application Scopes**, check **Read all files and folders stored in Box** and **Write all files and folders stored in Box**. If you'll use Agent Serve's Box Sign operations, also check **Manage signature requests** {/* TODO(screenshot): Application Scopes section with read, write, and signature scopes checked */} Copy the **Client ID** and **Client secret** from **Configuration** → **OAuth 2.0 Credentials** (revealing the secret may prompt for two-factor verification) {/* TODO(screenshot): OAuth 2.0 Credentials panel showing the Client ID and the client secret reveal */} Copy the **Enterprise ID** — a numeric value. In the Developer Console, click your account icon in the top right and choose **Copy Enterprise ID**; a Box admin can also find it in **Admin Console** → **Account & Billing** → **Account Information** ### 2. Authorize the App in the Admin Console [#2-authorize-the-app-in-the-admin-console] Token requests fail with `unauthorized_client` ("This app is not authorized by the enterprise admin") until a Box admin authorizes the app: A Box admin or co-admin opens **Admin Console** → **Apps** → **Platform Apps Manager** (in some tenants this appears as **Platform** → **Platform Apps**) Click **Add App** and enter the app's **Client ID** {/* TODO(screenshot): Platform Apps Manager Add App dialog with the Client ID entered */} Alternatively, the developer can click **Review and Submit** on the app's **Authorization** tab in the Developer Console to send the request to the admin. **Authorization is a snapshot.** If you later change the app's scopes or access level — for example, adding the signature scope — the admin must **re-authorize** the app in the same Platform Apps Manager section before the change takes effect. Until then, token minting keeps succeeding but the new scopes don't apply, which surfaces as persistent `403` errors on tools despite correct-looking configuration. ### 3. Give the Service Account Access to Folders [#3-give-the-service-account-access-to-folders] The Service Account is a brand-new Box user — its email looks like `AutomationUser_AppServiceID_RandomString@boxdevedition.com` and is shown on the app's **General Settings** tab. Its folder tree starts **empty**: a fully valid credential sees zero items and gets `404`s on real files and folders until you grant it access. In Box, invite the Service Account's `@boxdevedition.com` email as a **collaborator** on each folder your workflows should work with — use the **Editor** role for read/write access {/* TODO(screenshot): Box folder collaboration dialog inviting the AutomationUser email as Editor */} Verify by running Agent Serve's Box **List Folder Items** on folder ID `0` — the collaborated folders should appear Community reports indicate the Service Account can't be collaborated into a user's root folder itself — invite it into individual folders instead. ## Adding the Service Account to Agent Serve [#adding-the-service-account-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Box" and open it, then click **Add to Agent Serve** and choose **Add service account** {/* TODO(screenshot): Box integration page with the Add service account connect option */} In the **Add Box service account** dialog, paste the **Client ID**, **Client secret**, and **Enterprise ID** (numeric), and optionally set a display name and description {/* TODO(screenshot): Add Box service account dialog with all three fields filled in */} Click **Add service account**. Agent Serve verifies the credentials by minting a real access token from Box — if it fails, the error tells you whether Box rejected the credentials or couldn't be reached. A rejection usually means bad credentials, an app the admin hasn't authorized yet, or values that don't all belong to the same app and enterprise. ## Using the Service Account in Workflows [#using-the-service-account-in-workflows] Add a Box block to your workflow. In the credential dropdown, your Box service account appears alongside any OAuth credentials. Select it and configure the block as you normally would. {/* TODO(screenshot): Box block in a workflow with the Box service account selected as the credential */} The block calls `api.box.com` with a freshly minted access token — the same requests as the OAuth flow, so every Box operation works, subject to the app's scopes and the folders the Service Account can see. Agent Serve's Box block includes Box Sign operations. These need the **Manage signature requests** scope on the app *and* Box Sign enabled on your enterprise's plan — without either, signature operations fail while file and folder operations keep working. ## Token Behavior [#token-behavior] Access tokens minted from the app are short-lived (typically one hour) and there is no refresh token — Agent Serve simply mints a new token when one is needed. The stored Client ID, secret, and Enterprise ID stay valid until you rotate the secret in the Developer Console or the admin removes the app's authorization. If you rotate the secret, update the credential in Agent Serve right away — reconnecting asks you to re-enter all three values. --- # Box (/integrations/box) {/* MANUAL-CONTENT-START:intro */} Use [Box](https://www.box.com/) to manage files and folders, search content, and send documents for e-signature through Box Sign. The actions below cover file metadata and signing status as well as uploads and downloads. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Box into your workflow to manage files, folders, and e-signatures. Upload and download files, search content, create folders, send documents for e-signature, track signing status, and more. ## Actions [#actions] ### Box Upload File [#box-upload-file] Upload a file to a Box folder #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------- | | `parentFolderId` | string | Yes | The ID of the folder to upload the file to (use "0" for root) | | `file` | file | No | The file to upload (UserFile object) | | `fileName` | string | No | Optional filename override | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ------------------------- | | `id` | string | File ID | | `name` | string | File name | | `size` | number | File size in bytes | | `sha1` | string | SHA1 hash of file content | | `createdAt` | string | Creation timestamp | | `modifiedAt` | string | Last modified timestamp | | `parentId` | string | Parent folder ID | | `parentName` | string | Parent folder name | ### Box Download File [#box-download-file] Download a file from Box #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `fileId` | string | Yes | The ID of the file to download | #### Output [#output-1] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### Box Get File Info [#box-get-file-info] Get detailed information about a file in Box #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `fileId` | string | Yes | The ID of the file to get information about | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `id` | string | File ID | | `name` | string | File name | | `description` | string | File description | | `size` | number | File size in bytes | | `sha1` | string | SHA1 hash of file content | | `createdAt` | string | Creation timestamp | | `modifiedAt` | string | Last modified timestamp | | `createdBy` | object | User who created the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `modifiedBy` | object | User who last modified the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `ownedBy` | object | User who owns the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `parentId` | string | Parent folder ID | | `parentName` | string | Parent folder name | | `sharedLink` | json | Shared link details | | `tags` | array | File tags | | `commentCount` | number | Number of comments | ### Box List Folder Items [#box-list-folder-items] List files and folders in a Box folder #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `folderId` | string | Yes | The ID of the folder to list items from (use "0" for root) | | `limit` | number | No | Maximum number of items to return per page | | `offset` | number | No | The offset for pagination | | `sort` | string | No | Sort field: id, name, date, or size | | `direction` | string | No | Sort direction: ASC or DESC | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `entries` | array | List of items in the folder | | ↳ `type` | string | Item type (file, folder, web\_link) | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `size` | number | Item size in bytes | | ↳ `createdAt` | string | Creation timestamp | | ↳ `modifiedAt` | string | Last modified timestamp | | `totalCount` | number | Total number of items in the folder | | `offset` | number | Current pagination offset | | `limit` | number | Current pagination limit | ### Box Create Folder [#box-create-folder] Create a new folder in Box #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------- | | `name` | string | Yes | Name for the new folder | | `parentFolderId` | string | Yes | The ID of the parent folder (use "0" for root) | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | ----------------------- | | `id` | string | Folder ID | | `name` | string | Folder name | | `createdAt` | string | Creation timestamp | | `modifiedAt` | string | Last modified timestamp | | `parentId` | string | Parent folder ID | | `parentName` | string | Parent folder name | ### Box Delete File [#box-delete-file] Delete a file from Box #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `fileId` | string | Yes | The ID of the file to delete | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `deleted` | boolean | Whether the file was successfully deleted | | `message` | string | Success confirmation message | ### Box Delete Folder [#box-delete-folder] Delete a folder from Box #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------- | | `folderId` | string | Yes | The ID of the folder to delete | | `recursive` | boolean | No | Delete folder and all its contents recursively | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `deleted` | boolean | Whether the folder was successfully deleted | | `message` | string | Success confirmation message | ### Box Copy File [#box-copy-file] Copy a file to another folder in Box #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------- | | `fileId` | string | Yes | The ID of the file to copy | | `parentFolderId` | string | Yes | The ID of the destination folder | | `name` | string | No | Optional new name for the copied file | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------ | ------------------------- | | `id` | string | File ID | | `name` | string | File name | | `size` | number | File size in bytes | | `sha1` | string | SHA1 hash of file content | | `createdAt` | string | Creation timestamp | | `modifiedAt` | string | Last modified timestamp | | `parentId` | string | Parent folder ID | | `parentName` | string | Parent folder name | ### Box Search [#box-search] Search for files and folders in Box #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------- | | `query` | string | Yes | The search query string | | `limit` | number | No | Maximum number of results to return | | `offset` | number | No | The offset for pagination | | `ancestorFolderId` | string | No | Restrict search to a specific folder and its subfolders | | `fileExtensions` | string | No | Comma-separated file extensions to filter by (e.g., pdf,docx) | | `type` | string | No | Restrict to a specific content type: file, folder, or web\_link | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `results` | array | Search results | | ↳ `type` | string | Item type (file, folder, web\_link) | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `size` | number | Item size in bytes | | ↳ `createdAt` | string | Creation timestamp | | ↳ `modifiedAt` | string | Last modified timestamp | | ↳ `parentId` | string | Parent folder ID | | ↳ `parentName` | string | Parent folder name | | `totalCount` | number | Total number of matching results | ### Box Update File [#box-update-file] Update file info in Box (rename, move, change description, add tags) #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to update | | `name` | string | No | New name for the file | | `description` | string | No | New description for the file (max 256 characters) | | `parentFolderId` | string | No | Move the file to a different folder by specifying the folder ID | | `tags` | string | No | Comma-separated tags to set on the file | #### Output [#output-9] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `id` | string | File ID | | `name` | string | File name | | `description` | string | File description | | `size` | number | File size in bytes | | `sha1` | string | SHA1 hash of file content | | `createdAt` | string | Creation timestamp | | `modifiedAt` | string | Last modified timestamp | | `createdBy` | object | User who created the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `modifiedBy` | object | User who last modified the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `ownedBy` | object | User who owns the file | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `login` | string | User email/login | | `parentId` | string | Parent folder ID | | `parentName` | string | Parent folder name | | `sharedLink` | json | Shared link details | | `tags` | array | File tags | | `commentCount` | number | Number of comments | ### Box Sign Create Request [#box-sign-create-request] Create a new Box Sign request to send documents for e-signature #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `sourceFileIds` | string | Yes | Comma-separated Box file IDs to send for signing | | `signerEmail` | string | Yes | Primary signer email address | | `signerRole` | string | No | Primary signer role: signer, approver, or final\_copy\_reader (default: signer) | | `additionalSigners` | string | No | JSON array of additional signers, e.g. \[\{"email":"[user@example.com](mailto:user@example.com)","role":"signer"}] | | `parentFolderId` | string | No | Box folder ID where signed documents will be stored (default: user root) | | `emailSubject` | string | No | Custom subject line for the signing email | | `emailMessage` | string | No | Custom message in the signing email body | | `name` | string | No | Name for the sign request | | `daysValid` | number | No | Number of days before the request expires (0-730) | | `areRemindersEnabled` | boolean | No | Whether to send automatic signing reminders | | `areTextSignaturesEnabled` | boolean | No | Whether to allow typed (text) signatures | | `signatureColor` | string | No | Signature color: blue, black, or red | | `redirectUrl` | string | No | URL to redirect signers to after signing | | `declinedRedirectUrl` | string | No | URL to redirect signers to after declining | | `isDocumentPreparationNeeded` | boolean | No | Whether document preparation is needed before sending | | `externalId` | string | No | External system reference ID | #### Output [#output-10] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Sign request ID | | `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) | | `name` | string | Sign request name | | `shortId` | string | Human-readable short ID | | `signers` | array | List of signers | | ↳ `email` | string | Signer email address | | ↳ `role` | string | Signer role (signer, approver, final\_copy\_reader) | | ↳ `hasViewedDocument` | boolean | Whether the signer has viewed the document | | ↳ `signerDecision` | json | Signer decision details (type, finalized\_at, additional\_info) | | ↳ `embedUrl` | string | URL for embedded signing experience | | ↳ `order` | number | Order in signing sequence | | `sourceFiles` | array | Source files for signing | | ↳ `id` | string | File ID | | ↳ `type` | string | File type | | ↳ `name` | string | File name | | `emailSubject` | string | Custom email subject line | | `emailMessage` | string | Custom email message body | | `daysValid` | number | Number of days the request is valid | | `createdAt` | string | Creation timestamp | | `autoExpireAt` | string | Auto-expiration timestamp | | `prepareUrl` | string | URL for document preparation (if preparation is needed) | | `senderEmail` | string | Email of the sender | ### Box Sign Get Request [#box-sign-get-request] Get the details and status of a Box Sign request #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------- | | `signRequestId` | string | Yes | The ID of the sign request to retrieve | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Sign request ID | | `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) | | `name` | string | Sign request name | | `shortId` | string | Human-readable short ID | | `signers` | array | List of signers | | ↳ `email` | string | Signer email address | | ↳ `role` | string | Signer role (signer, approver, final\_copy\_reader) | | ↳ `hasViewedDocument` | boolean | Whether the signer has viewed the document | | ↳ `signerDecision` | json | Signer decision details (type, finalized\_at, additional\_info) | | ↳ `embedUrl` | string | URL for embedded signing experience | | ↳ `order` | number | Order in signing sequence | | `sourceFiles` | array | Source files for signing | | ↳ `id` | string | File ID | | ↳ `type` | string | File type | | ↳ `name` | string | File name | | `emailSubject` | string | Custom email subject line | | `emailMessage` | string | Custom email message body | | `daysValid` | number | Number of days the request is valid | | `createdAt` | string | Creation timestamp | | `autoExpireAt` | string | Auto-expiration timestamp | | `prepareUrl` | string | URL for document preparation (if preparation is needed) | | `senderEmail` | string | Email of the sender | ### Box Sign List Requests [#box-sign-list-requests] List all Box Sign requests #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `limit` | number | No | Maximum number of sign requests to return (max 1000) | | `marker` | string | No | Pagination marker from a previous response | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `signRequests` | array | List of sign requests | | ↳ `id` | string | Sign request ID | | ↳ `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) | | ↳ `name` | string | Sign request name | | ↳ `shortId` | string | Human-readable short ID | | ↳ `signers` | array | List of signers | | ↳ `email` | string | Signer email address | | ↳ `role` | string | Signer role (signer, approver, final\_copy\_reader) | | ↳ `hasViewedDocument` | boolean | Whether the signer has viewed the document | | ↳ `signerDecision` | json | Signer decision details (type, finalized\_at, additional\_info) | | ↳ `embedUrl` | string | URL for embedded signing experience | | ↳ `order` | number | Order in signing sequence | | ↳ `sourceFiles` | array | Source files for signing | | ↳ `id` | string | File ID | | ↳ `type` | string | File type | | ↳ `name` | string | File name | | ↳ `emailSubject` | string | Custom email subject line | | ↳ `emailMessage` | string | Custom email message body | | ↳ `daysValid` | number | Number of days the request is valid | | ↳ `createdAt` | string | Creation timestamp | | ↳ `autoExpireAt` | string | Auto-expiration timestamp | | ↳ `prepareUrl` | string | URL for document preparation (if preparation is needed) | | ↳ `senderEmail` | string | Email of the sender | | `count` | number | Number of sign requests returned in this page | | `nextMarker` | string | Marker for next page of results | ### Box Sign Cancel Request [#box-sign-cancel-request] Cancel a pending Box Sign request #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------ | | `signRequestId` | string | Yes | The ID of the sign request to cancel | #### Output [#output-13] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Sign request ID | | `status` | string | Request status (converting, created, sent, viewed, signed, cancelled, declined, expired, error\_converting, error\_sending, finalizing, error\_finalizing) | | `name` | string | Sign request name | | `shortId` | string | Human-readable short ID | | `signers` | array | List of signers | | ↳ `email` | string | Signer email address | | ↳ `role` | string | Signer role (signer, approver, final\_copy\_reader) | | ↳ `hasViewedDocument` | boolean | Whether the signer has viewed the document | | ↳ `signerDecision` | json | Signer decision details (type, finalized\_at, additional\_info) | | ↳ `embedUrl` | string | URL for embedded signing experience | | ↳ `order` | number | Order in signing sequence | | `sourceFiles` | array | Source files for signing | | ↳ `id` | string | File ID | | ↳ `type` | string | File type | | ↳ `name` | string | File name | | `emailSubject` | string | Custom email subject line | | `emailMessage` | string | Custom email message body | | `daysValid` | number | Number of days the request is valid | | `createdAt` | string | Creation timestamp | | `autoExpireAt` | string | Auto-expiration timestamp | | `prepareUrl` | string | URL for document preparation (if preparation is needed) | | `senderEmail` | string | Email of the sender | ### Box Sign Resend Request [#box-sign-resend-request] Resend a Box Sign request to signers who have not yet signed #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------ | | `signRequestId` | string | Yes | The ID of the sign request to resend | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `message` | string | Success confirmation message | --- # Brandfetch (/integrations/brandfetch) {/* MANUAL-CONTENT-START:intro */} [Brandfetch](https://brandfetch.com/) retrieves brand logos, colors, fonts, and company details. Look up a brand using its domain or supported identifier, or search by company name before retrieving its assets. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Brandfetch into your workflow. Retrieve brand logos, colors, fonts, and company data by domain, ticker, or name search. ## Actions [#actions] ### Brandfetch Get Brand [#brandfetch-get-brand] Retrieve brand assets including logos, colors, fonts, and company info by domain, ticker, ISIN, or crypto symbol #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brandfetch API key | | `identifier` | string | Yes | Brand identifier: domain (nike.com), stock ticker (NKE), ISIN (US6541061031), or crypto symbol (BTC) | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------- | | `id` | string | Unique brand identifier | | `name` | string | Brand name | | `domain` | string | Brand domain | | `claimed` | boolean | Whether the brand profile is claimed | | `description` | string | Short brand description | | `longDescription` | string | Detailed brand description | | `links` | array | Social media and website links | | ↳ `name` | string | Link name (e.g., twitter, linkedin) | | ↳ `url` | string | Link URL | | `logos` | array | Brand logos with formats and themes | | ↳ `type` | string | Logo type (logo, icon, symbol, other) | | ↳ `theme` | string | Logo theme (light, dark) | | ↳ `formats` | array | Available formats with src URL, format, width, and height | | `colors` | array | Brand colors with hex values and types | | ↳ `hex` | string | Hex color code | | ↳ `type` | string | Color type (accent, dark, light, brand) | | ↳ `brightness` | number | Brightness value | | `fonts` | array | Brand fonts with names and types | | ↳ `name` | string | Font name | | ↳ `type` | string | Font type (title, body) | | ↳ `origin` | string | Font origin (google, custom, system) | | `company` | json | Company firmographic data including employees, location, and industries | | `qualityScore` | number | Data quality score from 0 to 1 | | `isNsfw` | boolean | Whether the brand contains adult content | ### Brandfetch Search [#brandfetch-search] Search for brands by name and find their domains and logos #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Brandfetch API key | | `name` | string | Yes | Company or brand name to search for | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------ | | `results` | array | List of matching brands | | ↳ `brandId` | string | Unique brand identifier | | ↳ `name` | string | Brand name | | ↳ `domain` | string | Brand domain | | ↳ `claimed` | boolean | Whether the brand profile is claimed | | ↳ `icon` | string | Brand icon URL | --- # Brevo (/integrations/brevo) ## Usage Instructions [#usage-instructions] Integrate Brevo (formerly Sendinblue) into the workflow. Send transactional emails with inline content or templates, send SMS and WhatsApp template messages, read email delivery events, create, update, and look up contacts, manage list membership, and list, inspect, and send email campaigns. Can also run workflows on Brevo email events such as delivered, opened, clicked, bounced, and unsubscribed. Requires a Brevo API key. ## Actions [#actions] ### Brevo Send Email [#brevo-send-email] Send a transactional email through Brevo with inline HTML or text, or a saved template with params. Supports cc, bcc, reply-to, URL attachments, tags, and scheduling. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `senderEmail` | string | No | Sender email address, verified in Brevo. Required without a template or sender ID | | `senderName` | string | No | Sender display name (max 70 characters) | | `senderId` | number | No | Brevo sender ID, used instead of the sender email | | `to` | string | Yes | Recipients: comma-separated emails, or a JSON array of \{"email", "name"} objects | | `cc` | string | No | CC recipients: comma-separated emails, or a JSON array of \{"email", "name"} | | `bcc` | string | No | BCC recipients: comma-separated emails, or a JSON array of \{"email", "name"} | | `subject` | string | No | Subject line. Required without a template | | `htmlContent` | string | No | HTML body. Required without a template unless text content is given | | `textContent` | string | No | Plain text body | | `templateId` | number | No | ID of a Brevo transactional template to send instead of inline content | | `templateParams` | json | No | Template variables as a JSON object, e.g. \{"FIRSTNAME": "Ana", "ORDER": "1042"}, used as \{\{ params.FIRSTNAME }} in the template | | `attachments` | string | No | Attachments by absolute URL: comma-separated URLs, or a JSON array of \{"url", "name"} objects | | `tags` | string | No | Tags for filtering events, comma-separated or a JSON array | | `replyToEmail` | string | No | Reply-to email address | | `replyToName` | string | No | Reply-to display name | | `scheduledAt` | string | No | UTC date-time to send at, with timezone, e.g. 2026-11-01T09:00:00.000Z. Brevo may send up to 5 minutes later | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------ | | `messageId` | string | Message ID of the sent email | | `messageIds` | array | Message IDs, when Brevo returns one per version or recipient | ### Brevo Get Email Events [#brevo-get-email-events] List transactional email events (delivered, opened, clicked, bounced, and more) from Brevo, filtered by recipient, message ID, event, tag, template, or date. Covers the last 30 days by default, up to 90. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `email` | string | No | Only events for this recipient email address | | `messageId` | string | No | Only events for this message ID (from Send Email) | | `event` | string | No | Only this event type: bounces, hardBounces, softBounces, delivered, spam, requests, opened, clicks, invalid, deferred, blocked, unsubscribed, error, loadedByProxy | | `tags` | string | No | Only events for emails with these tags, comma-separated or a JSON array | | `templateId` | number | No | Only events for emails sent with this template ID | | `startDate` | string | No | Start date (YYYY-MM-DD). Requires endDate; range up to 90 days | | `endDate` | string | No | End date (YYYY-MM-DD). Requires startDate | | `days` | number | No | Number of past days including today, 1 to 90. Not combined with dates | | `limit` | number | No | Number of events to return, 1 to 5000 (default 2500) | | `offset` | number | No | Index of the first event to return (default 0) | | `sort` | string | No | Sort by creation date: "desc" (default, newest first) or "asc" | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------- | | `events` | array | Email events, newest first unless sorted ascending | | `count` | number | Number of events returned | ### Brevo Send SMS [#brevo-send-sms] Send a transactional or marketing SMS to one mobile number through Brevo, with text content or an SMS template. Messages over 160 characters are sent as several parts. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `sender` | string | Yes | Sender name: up to 11 letters and digits, or a numeric sender of up to 15 digits | | `recipient` | string | Yes | Mobile number with country code, 6 to 15 digits, e.g. 33689965433 | | `content` | string | No | Message text. Required unless an SMS template ID is given | | `templateId` | number | No | SMS template ID. Overrides the content | | `templateParams` | json | No | Template placeholders as a JSON object, e.g. \{"FNAME": "Joe"} | | `type` | string | No | "transactional" (default) or "marketing". A message with a STOP code is sent as marketing | | `unicodeEnabled` | boolean | No | Send as unicode, for non-Latin characters or emoji (default false) | | `tags` | string | No | Up to 10 tags, comma-separated or a JSON array | | `organisationPrefix` | string | No | Brand name added before the message, recommended by US carriers | | `webUrl` | string | No | URL Brevo calls for each event of this message, such as delivered | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | --------------------- | | `messageId` | number | Message ID of the SMS | ### Brevo Send WhatsApp Template [#brevo-send-whatsapp-template] Send an approved WhatsApp template message through Brevo to one or more numbers. Needs WhatsApp activated in Brevo; the first message to a contact must be a template. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `senderNumber` | string | Yes | Your WhatsApp sender number with country code, e.g. 919876543210 | | `contactNumbers` | string | Yes | Recipient numbers with country code, comma-separated or a JSON array, e.g. 4915778559164 | | `templateId` | number | Yes | WhatsApp template ID, from Campaigns > WhatsApp in Brevo | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------- | | `messageId` | string | Message ID of the WhatsApp message | ### Brevo Create Contact [#brevo-create-contact] Create a Brevo contact with attributes and list memberships. Turn on Update Existing to upsert: an existing contact with the same email is updated instead of rejected. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `email` | string | No | Email address. Required unless an external ID or SMS attribute is given | | `extId` | string | No | Your own ID for the contact, such as a CRM ID | | `attributes` | json | No | Attributes as a JSON object with upper-case names that exist in Brevo, e.g. \{"FIRSTNAME": "Ana", "LASTNAME": "Ruiz", "SMS": "+919876543210"} | | `listIds` | string | No | IDs of lists to add the contact to, comma-separated or a JSON array | | `updateEnabled` | boolean | No | Update the contact if it already exists instead of failing (upsert) | | `emailBlacklisted` | boolean | No | Blocklist the contact for email | | `smsBlacklisted` | boolean | No | Blocklist the contact for SMS | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------------------------------- | | `id` | number | ID of the new contact. Not returned when an existing contact was updated | | `created` | boolean | True when a new contact was created, false when an existing one was updated | ### Brevo Update Contact [#brevo-update-contact] Update a Brevo contact's attributes, external ID, list memberships, or email and SMS blocklist status, by email, contact ID, external ID, or phone number. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `identifier` | string | Yes | Contact email, contact ID, external ID, or SMS/WhatsApp/landline number. Set identifierType for anything other than an email or contact ID | | `identifierType` | string | No | What the identifier is: email\_id, contact\_id, ext\_id, phone\_id, whatsapp\_id, landline\_number\_id. Optional for an email or contact ID | | `attributes` | json | No | Attributes to change as a JSON object, e.g. \{"FIRSTNAME": "Ana"}. Use \{"EMAIL": "[new@example.com](mailto:new@example.com)"} to change the email | | `extId` | string | No | New external ID for the contact | | `listIds` | string | No | IDs of lists to add the contact to, comma-separated or a JSON array | | `unlinkListIds` | string | No | IDs of lists to remove the contact from, comma-separated or a JSON array | | `emailBlacklisted` | boolean | No | Blocklist (true) or allow (false) the contact for email | | `smsBlacklisted` | boolean | No | Blocklist (true) or allow (false) the contact for SMS | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | --------------------------------- | | `updated` | boolean | Whether the contact was updated | | `identifier` | string | Identifier of the updated contact | ### Brevo Get Contact [#brevo-get-contact] Get a Brevo contact's attributes, lists, and blocklist status by email, contact ID, external ID, or phone number. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `identifier` | string | Yes | Contact email, contact ID, external ID, or SMS/WhatsApp/landline number. Set identifierType for anything other than an email or contact ID | | `identifierType` | string | No | What the identifier is: email\_id, contact\_id, ext\_id, phone\_id, whatsapp\_id, landline\_number\_id. Optional for an email or contact ID | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------- | | `contact` | object | The contact | ### Brevo Delete Contact [#brevo-delete-contact] Permanently delete a Brevo contact by email, contact ID, external ID, or phone number. This cannot be undone. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `identifier` | string | Yes | Contact email, contact ID, external ID, or SMS/WhatsApp/landline number. Set identifierType for anything other than an email or contact ID | | `identifierType` | string | No | What the identifier is: email\_id, contact\_id, ext\_id, phone\_id, whatsapp\_id, landline\_number\_id. Optional for an email or contact ID | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------- | --------------------------------- | | `deleted` | boolean | Whether the contact was deleted | | `identifier` | string | Identifier of the deleted contact | ### Brevo Add Contacts to List [#brevo-add-contacts-to-list] Add existing Brevo contacts to a list by email, contact ID, or external ID. Returns which contacts were added and which failed. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `listId` | number | Yes | ID of the Brevo list | | `emails` | string | No | Contact emails, comma-separated or a JSON array. Use one of emails, contactIds, or extIds | | `contactIds` | string | No | Contact IDs, comma-separated or a JSON array | | `extIds` | string | No | Contact external IDs, comma-separated or a JSON array | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------- | | `listId` | number | ID of the list | | `succeeded` | array | Emails, IDs, or external IDs that were processed | | `failed` | array | Emails, IDs, or external IDs that could not be processed | | `total` | number | Number of contacts removed when removing all | | `processId` | number | Background process ID when removing all | ### Brevo Remove Contacts from List [#brevo-remove-contacts-from-list] Remove contacts from a Brevo list by email, contact ID, or external ID, or remove every contact. The contacts themselves are kept. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `listId` | number | Yes | ID of the Brevo list | | `emails` | string | No | Contact emails, comma-separated or a JSON array. Use one of emails, contactIds, or extIds | | `contactIds` | string | No | Contact IDs, comma-separated or a JSON array | | `extIds` | string | No | Contact external IDs, comma-separated or a JSON array | | `removeAll` | boolean | No | Remove every contact from the list. Runs as a background process | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------- | | `listId` | number | ID of the list | | `succeeded` | array | Emails, IDs, or external IDs that were processed | | `failed` | array | Emails, IDs, or external IDs that could not be processed | | `total` | number | Number of contacts removed when removing all | | `processId` | number | Background process ID when removing all | ### Brevo List Lists [#brevo-list-lists] List the contact lists in a Brevo account with their IDs and contact counts. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `limit` | number | No | Number of results to return, 1 to 50 (default 10) | | `offset` | number | No | Index of the first result to return (default 0) | | `sort` | string | No | Sort by creation date: "desc" (default, newest first) or "asc" | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `lists` | array | Contact lists | | `count` | number | Total number of lists in the account | ### Brevo List Email Campaigns [#brevo-list-email-campaigns] List Brevo email campaigns, filtered by status, type, or sent date, with optional global statistics such as opens, clicks, and bounces. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `status` | string | No | Only campaigns with this status: suspended, archive, sent, queued, draft, inProcess, inReview, cancelling, cancelled | | `campaignType` | string | No | Only "classic" or "trigger" campaigns | | `statistics` | string | No | Statistics to include: globalStats (opens, clicks, bounces), linksStats, or statsByDomain | | `startDate` | string | No | Only campaigns sent after this UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Requires endDate | | `endDate` | string | No | Only campaigns sent before this UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Requires startDate | | `limit` | number | No | Number of results to return, 1 to 100 (default 50) | | `offset` | number | No | Index of the first result to return (default 0) | | `sort` | string | No | Sort by creation date: "desc" (default, newest first) or "asc" | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------- | | `campaigns` | array | Email campaigns | | `count` | number | Number of campaigns matching the filters | ### Brevo Get Email Campaign [#brevo-get-email-campaign] Get a Brevo email campaign with its status, sender, recipient lists, and statistics such as sends, opens, clicks, bounces, and unsubscribes. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `campaignId` | number | Yes | ID of the email campaign | | `statistics` | string | No | Statistics to include: globalStats, linksStats, statsByDomain, statsByDevice, statsByBrowser | | `includeHtmlContent` | boolean | No | Also return the campaign HTML (default false) | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `campaign` | object | The email campaign | | `htmlContent` | string | Campaign HTML, when requested | ### Brevo Send Email Campaign Now [#brevo-send-email-campaign-now] Send an existing Brevo email campaign immediately. The campaign must already have recipients and content, and the account needs enough email credits. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `campaignId` | number | Yes | ID of the email campaign to send | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------ | | `sent` | boolean | Whether Brevo scheduled the campaign to send now | | `campaignId` | number | ID of the campaign | ### Brevo List Email Templates [#brevo-list-email-templates] List Brevo transactional email templates with their IDs, names, subjects, senders, and active status, to pick a template for Send Email. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brevo API key (sent as the api-key header), from Settings > SMTP & API > API Keys | | `templateStatus` | boolean | No | Only active (true) or inactive (false) templates | | `limit` | number | No | Number of results to return, 1 to 1000 (default 50) | | `offset` | number | No | Index of the first result to return (default 0) | | `sort` | string | No | Sort by creation date: "desc" (default, newest first) or "asc" | #### Output [#output-14] | Parameter | Type | Description | | ----------- | ------ | ----------------------------- | | `templates` | array | Transactional email templates | | `count` | number | Total number of templates | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Brevo Webhook [#brevo-webhook] Trigger a workflow on Brevo email events: delivered, opened, clicked, bounced, spam, unsubscribed, blocked, and contact list changes. --- # Brex (/integrations/brex) {/* MANUAL-CONTENT-START:intro */} [Brex](https://www.brex.com/) is the AI-powered spend platform that gives companies corporate cards, expense management, banking, and bill pay in one place. Finance teams use Brex to control spend with budgets and spend limits, automate expense review, and keep every transaction reconciled with receipts and memos. With the Brex integration in Agent Serve, your agents can work directly with your company's spend data: * **Expenses**: List and filter expenses by status, owner, or purchase date, fetch full expense details (merchant, amounts, receipts), and update expense memos. * **Receipts**: Upload a receipt file straight onto a specific card expense, or let Brex automatically match an uploaded receipt to the right expense. * **Transactions and accounts**: Pull settled card transactions, cash account transactions, account balances, and finalized statements for reporting and reconciliation. * **Budgets and spend limits**: Read budgets and spend limits — including current period balances — to power utilization reports and proactive alerts. * **Team**: Look up users, departments, locations, titles, and cards to enrich spend data with organizational context. * **Payments**: Track vendors and money transfers to monitor payment status end to end. Authentication uses a Brex user token, which you can generate from **Developer → Settings** in your Brex dashboard. The integration is intentionally read-focused: it never moves money, issues cards, or exposes card numbers. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates Brex into the workflow. List and update expenses, upload and match receipts, view card and cash transactions, accounts, budgets, spend limits, vendors, transfers, and team data. ## Actions [#actions] ### Brex List Expenses [#brex-list-expenses] List expenses in the Brex account with optional filters for user, status, payment status, and purchase date range #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `userIds` | string | No | Comma-separated user IDs to filter expenses by owner | | `statuses` | string | No | Comma-separated expense statuses to filter by: DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED | | `paymentStatuses` | string | No | Comma-separated payment statuses to filter by: NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED | | `purchasedAtStart` | string | No | Only include expenses purchased at or after this ISO 8601 timestamp | | `purchasedAtEnd` | string | No | Only include expenses purchased at or before this ISO 8601 timestamp | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of expenses to return (max 100) | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `items` | array | Expenses matching the filters | | ↳ `id` | string | Unique expense ID | | ↳ `memo` | string | Memo on the expense | | ↳ `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) | | ↳ `payment_status` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) | | ↳ `expense_type` | string | Expense type (CARD, BILLPAY, REIMBURSEMENT, CLAWBACK, UNSET) | | ↳ `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) | | ↳ `merchant` | json | Merchant details | | ↳ `raw_descriptor` | string | Raw merchant descriptor | | ↳ `mcc` | string | Merchant category code | | ↳ `country` | string | Merchant country | | ↳ `user` | json | User who made the expense | | ↳ `id` | string | User ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `budget` | json | Budget the expense belongs to | | ↳ `id` | string | Budget ID | | ↳ `name` | string | Budget name | | ↳ `department` | json | Department of the expense owner | | ↳ `id` | string | Department ID | | ↳ `name` | string | Department name | | ↳ `location` | json | Location of the expense owner | | ↳ `id` | string | Location ID | | ↳ `name` | string | Location name | | ↳ `original_amount` | json | Original transaction amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `billing_amount` | json | Amount billed to the account | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `purchased_amount` | json | Amount at the time of purchase | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `receipts` | array | Receipts attached to the expense | | ↳ `id` | string | Receipt ID | | ↳ `download_uris` | array | Pre-signed receipt download URLs | | ↳ `purchased_at` | string | Purchase timestamp (ISO 8601) | | ↳ `updated_at` | string | Last update timestamp (ISO 8601) | | ↳ `dashboard_url` | string | Link to the expense in the Brex dashboard | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Expense [#brex-get-expense] Get a single Brex expense by its ID, including merchant, user, and receipt details #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `expenseId` | string | Yes | ID of the expense to fetch | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Unique expense ID | | `memo` | string | Memo on the expense | | `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) | | `paymentStatus` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) | | `expenseType` | string | Expense type (CARD, BILLPAY, REIMBURSEMENT, CLAWBACK, UNSET) | | `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) | | `merchantId` | string | Merchant ID | | `merchant` | json | Merchant details (raw descriptor, MCC, country) | | ↳ `raw_descriptor` | string | Raw merchant descriptor | | ↳ `mcc` | string | Merchant category code | | ↳ `country` | string | Merchant country | | `budgetId` | string | Budget ID | | `budget` | json | Budget the expense belongs to | | ↳ `id` | string | Budget ID | | ↳ `name` | string | Budget name | | `departmentId` | string | Department ID | | `department` | json | Department of the expense owner | | ↳ `id` | string | Department ID | | ↳ `name` | string | Department name | | `locationId` | string | Location ID | | `location` | json | Location of the expense owner | | ↳ `id` | string | Location ID | | ↳ `name` | string | Location name | | `userId` | string | ID of the user who made the expense | | `user` | json | User who made the expense | | ↳ `id` | string | User ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | `originalAmount` | json | Original transaction amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `billingAmount` | json | Amount billed to the account | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `purchasedAmount` | json | Amount at the time of purchase | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `usdEquivalentAmount` | json | USD equivalent amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `purchasedAt` | string | Purchase timestamp (ISO 8601) | | `updatedAt` | string | Last update timestamp (ISO 8601) | | `paymentPostedAt` | string | Timestamp the payment was posted (ISO 8601) | | `receipts` | array | Receipts attached to the expense | | ↳ `id` | string | Receipt ID | | ↳ `download_uris` | array | Pre-signed receipt download URLs | | `dashboardUrl` | string | Link to the expense in the Brex dashboard | ### Brex Update Expense [#brex-update-expense] Update the memo of a Brex card expense #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `expenseId` | string | Yes | ID of the card expense to update | | `memo` | string | Yes | New memo for the expense | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Unique expense ID | | `memo` | string | Updated memo on the expense | | `status` | string | Expense status (DRAFT, SUBMITTED, APPROVED, OUT\_OF\_POLICY, VOID, CANCELED, SPLIT, SETTLED) | | `paymentStatus` | string | Payment status (NOT\_STARTED, PROCESSING, CANCELED, DECLINED, CLEARED, REFUNDING, REFUNDED, CASH\_ADVANCE, CREDITED, AWAITING\_PAYMENT, SCHEDULED) | | `category` | string | Expense category (e.g., RESTAURANTS, RECURRING\_SOFTWARE\_AND\_SAAS, AIRLINE\_EXPENSES) | | `merchantId` | string | Merchant ID | | `budgetId` | string | Budget ID | | `originalAmount` | json | Original transaction amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `billingAmount` | json | Amount billed to the account | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `purchasedAt` | string | Purchase timestamp (ISO 8601) | | `updatedAt` | string | Last update timestamp (ISO 8601) | ### Brex Upload Receipt [#brex-upload-receipt] Upload a receipt file and attach it to a specific Brex card expense #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `expenseId` | string | Yes | ID of the card expense to attach the receipt to | | `file` | file | Yes | Receipt file to upload (max 50 MB) | | `receiptName` | string | No | Receipt file name including extension (defaults to the uploaded file name) | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------- | | `receiptId` | string | Unique identifier of the receipt upload | | `receiptName` | string | Name the receipt was uploaded with | | `expenseId` | string | ID of the expense the receipt was attached to | ### Brex Match Receipt [#brex-match-receipt] Upload a receipt file and let Brex automatically match it with existing expenses #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `file` | file | Yes | Receipt file to upload (max 50 MB) | | `receiptName` | string | No | Receipt file name including extension (defaults to the uploaded file name) | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------------------- | | `receiptId` | string | Unique identifier of the receipt match request | | `receiptName` | string | Name the receipt was uploaded with | | `expenseId` | string | Always null for receipt match (Brex matches the receipt asynchronously) | ### Brex List Card Transactions [#brex-list-card-transactions] List settled card transactions for all Brex card accounts #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `userIds` | string | No | Comma-separated user IDs to filter transactions by cardholder | | `postedAtStart` | string | No | Only include transactions posted at or after this ISO 8601 timestamp | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of transactions to return (default 100, max 1000) | #### Output [#output-5] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------- | | `items` | array | Settled card transactions | | ↳ `id` | string | Unique transaction ID | | ↳ `card_id` | string | ID of the card used | | ↳ `description` | string | Transaction description | | ↳ `amount` | json | Transaction amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `initiated_at_date` | string | Date the transaction was initiated | | ↳ `posted_at_date` | string | Date the transaction was posted | | ↳ `type` | string | Transaction type (PURCHASE, REFUND, CHARGEBACK, REWARDS\_CREDIT, COLLECTION, BNPL\_FEE) | | ↳ `merchant` | json | Merchant details | | ↳ `raw_descriptor` | string | Raw merchant descriptor | | ↳ `mcc` | string | Merchant category code | | ↳ `country` | string | Merchant country | | ↳ `expense_id` | string | Associated expense ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Cash Transactions [#brex-list-cash-transactions] List transactions for a Brex cash account #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `accountId` | string | Yes | ID of the cash account to list transactions for | | `postedAtStart` | string | No | Only include transactions posted at or after this ISO 8601 timestamp | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of transactions to return (default 100, max 1000) | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------- | | `items` | array | Cash account transactions | | ↳ `id` | string | Unique transaction ID | | ↳ `description` | string | Transaction description | | ↳ `amount` | json | Transaction amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `initiated_at_date` | string | Date the transaction was initiated | | ↳ `posted_at_date` | string | Date the transaction was posted | | ↳ `type` | string | Transaction type | | ↳ `transfer_id` | string | Associated transfer ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Card Accounts [#brex-list-card-accounts] List all Brex card accounts with balances and limits #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | #### Output [#output-7] | Parameter | Type | Description | | ---------------------------- | ------ | ----------------------------------------------------------------- | | `accounts` | array | Card accounts | | ↳ `id` | string | Unique account ID | | ↳ `status` | string | Account status | | ↳ `current_balance` | json | Current balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `available_balance` | json | Available balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `account_limit` | json | Account limit | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `current_statement_period` | json | Current statement period (start\_date, end\_date) | ### Brex List Cash Accounts [#brex-list-cash-accounts] List all Brex cash accounts with balances and account details #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of accounts to return (default 100, max 1000) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------- | | `items` | array | Cash accounts | | ↳ `id` | string | Unique account ID | | ↳ `name` | string | Account name | | ↳ `status` | string | Account status | | ↳ `current_balance` | json | Current balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `available_balance` | json | Available balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `account_number` | string | Bank account number | | ↳ `routing_number` | string | Bank routing number | | ↳ `primary` | boolean | Whether this is the primary cash account | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Cash Account [#brex-get-cash-account] Get a Brex cash account by ID, or the primary cash account when no ID is provided #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `accountId` | string | No | ID of the cash account (defaults to the primary cash account) | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------- | | `id` | string | Unique account ID | | `name` | string | Account name | | `status` | string | Account status | | `currentBalance` | json | Current balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `availableBalance` | json | Available balance | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `accountNumber` | string | Bank account number | | `routingNumber` | string | Bank routing number | | `primary` | boolean | Whether this is the primary cash account | ### Brex List Card Statements [#brex-list-card-statements] List finalized statements for the primary Brex card account #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of statements to return (default 100, max 1000) | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------------------------- | | `items` | array | Finalized card account statements | | ↳ `id` | string | Unique statement ID | | ↳ `start_balance` | json | Balance at the start of the period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `end_balance` | json | Balance at the end of the period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `period` | json | Statement period (start\_date, end\_date) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Cash Statements [#brex-list-cash-statements] List finalized statements for a Brex cash account #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `accountId` | string | Yes | ID of the cash account to list statements for | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of statements to return (default 100, max 1000) | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------------------------- | | `items` | array | Finalized cash account statements | | ↳ `id` | string | Unique statement ID | | ↳ `start_balance` | json | Balance at the start of the period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `end_balance` | json | Balance at the end of the period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `period` | json | Statement period (start\_date, end\_date) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Users [#brex-list-users] List users in the Brex account, optionally filtered by email #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `email` | string | No | Filter users by exact email address | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of users to return (default 100, max 1000) | #### Output [#output-12] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------------------------------------------- | | `items` | array | Users in the Brex account | | ↳ `id` | string | Unique user ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) | | ↳ `manager_id` | string | ID of the manager | | ↳ `department_id` | string | Department ID | | ↳ `location_id` | string | Location ID | | ↳ `title_id` | string | Title ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get User [#brex-get-user] Get a Brex user by their ID #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `userId` | string | Yes | ID of the user to fetch | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------- | | `id` | string | Unique user ID | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) | | `managerId` | string | ID of the manager | | `departmentId` | string | Department ID | | `locationId` | string | Location ID | | `titleId` | string | Title ID | ### Brex Get Current User [#brex-get-current-user] Get the Brex user associated with the API token #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------- | | `id` | string | Unique user ID | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `status` | string | User status (INVITED, ACTIVE, CLOSED, DISABLED, DELETED, PENDING\_ACTIVATION, INACTIVE, ARCHIVED) | | `managerId` | string | ID of the manager | | `departmentId` | string | Department ID | | `locationId` | string | Location ID | | `titleId` | string | Title ID | ### Brex List Departments [#brex-list-departments] List departments in the Brex account, optionally filtered by name #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | No | Filter departments by name | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of departments to return (default 100, max 1000) | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `items` | array | Departments in the Brex account | | ↳ `id` | string | Unique department ID | | ↳ `name` | string | Department name | | ↳ `description` | string | Department description | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Locations [#brex-list-locations] List locations in the Brex account, optionally filtered by name #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | No | Filter locations by name | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of locations to return (default 100, max 1000) | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `items` | array | Locations in the Brex account | | ↳ `id` | string | Unique location ID | | ↳ `name` | string | Location name | | ↳ `description` | string | Location description | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Titles [#brex-list-titles] List job titles in the Brex account, optionally filtered by name #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | No | Filter titles by name | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of titles to return (default 100, max 1000) | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------- | | `items` | array | Job titles in the Brex account | | ↳ `id` | string | Unique title ID | | ↳ `name` | string | Title name | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex List Cards [#brex-list-cards] List cards in the Brex account, optionally filtered by card owner #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `userId` | string | No | Filter cards by the ID of the card owner | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of cards to return (default 100, max 1000) | #### Output [#output-18] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------- | | `items` | array | Cards in the Brex account | | ↳ `id` | string | Unique card ID | | ↳ `owner` | json | Card owner (type, user\_id) | | ↳ `status` | string | Card status | | ↳ `last_four` | string | Last four digits of the card number | | ↳ `card_name` | string | Card name | | ↳ `card_type` | string | Card type (VIRTUAL or PHYSICAL) | | ↳ `limit_type` | string | Limit type (CARD or USER) | | ↳ `spend_controls` | json | Spend controls on the card | | ↳ `billing_address` | json | Billing address of the card | | ↳ `expiration_date` | json | Card expiration date (month, year) | | ↳ `budget_id` | string | Associated budget ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Company [#brex-get-company] Get the Brex company associated with the API token #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | #### Output [#output-19] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------- | | `id` | string | Unique company ID | | `legalName` | string | Legal name of the company | | `mailingAddress` | json | Company mailing address (line1, line2, city, state, country, postal\_code) | | `accountType` | string | Brex account type (BREX\_CLASSIC or BREX\_EMPOWER) | ### Brex List Budgets [#brex-list-budgets] List budgets in the Brex account #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of budgets to return (default 100, max 1000) | #### Output [#output-20] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------------------------ | | `items` | array | Budgets in the Brex account | | ↳ `budget_id` | string | Unique budget ID | | ↳ `account_id` | string | Account ID the budget belongs to | | ↳ `name` | string | Budget name | | ↳ `description` | string | Budget description | | ↳ `parent_budget_id` | string | Parent budget ID | | ↳ `owner_user_ids` | array | User IDs of the budget owners | | ↳ `period_recurrence_type` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) | | ↳ `start_date` | string | Budget start date | | ↳ `end_date` | string | Budget end date | | ↳ `amount` | json | Budget amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `spend_budget_status` | string | Budget status | | ↳ `limit_type` | string | Budget limit type | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Budget [#brex-get-budget] Get a Brex budget by its ID #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `budgetId` | string | Yes | ID of the budget to fetch | #### Output [#output-21] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------ | | `budgetId` | string | Unique budget ID | | `accountId` | string | Account ID the budget belongs to | | `name` | string | Budget name | | `description` | string | Budget description | | `parentBudgetId` | string | Parent budget ID | | `ownerUserIds` | array | User IDs of the budget owners | | `periodRecurrenceType` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) | | `startDate` | string | Budget start date | | `endDate` | string | Budget end date | | `amount` | json | Budget amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `spendBudgetStatus` | string | Budget status (ACTIVE, ARCHIVED, DELETED) | | `limitType` | string | Budget limit type (HARD or SOFT) | ### Brex Create Budget [#brex-create-budget] Create a new budget in the Brex account #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | Yes | Name for the budget | | `description` | string | Yes | Description of what the budget is used for | | `parentBudgetId` | string | Yes | ID of the parent budget | | `periodRecurrenceType` | string | Yes | Period type of the budget (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) | | `amount` | number | Yes | Budget amount, in the smallest unit of the currency (e.g., cents for USD) | | `currency` | string | No | ISO 4217 currency code (defaults to USD) | | `ownerUserIds` | string | No | Comma-separated user IDs of the budget owners | | `startDate` | string | No | Date the budget should start counting (YYYY-MM-DD) | | `endDate` | string | No | Date the budget should stop counting (YYYY-MM-DD) | #### Output [#output-22] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------ | | `budgetId` | string | Unique budget ID | | `accountId` | string | Account ID the budget belongs to | | `name` | string | Budget name | | `description` | string | Budget description | | `parentBudgetId` | string | Parent budget ID | | `ownerUserIds` | array | User IDs of the budget owners | | `periodRecurrenceType` | string | Budget period recurrence (WEEKLY, MONTHLY, QUARTERLY, YEARLY, ONE\_TIME) | | `startDate` | string | Budget start date | | `endDate` | string | Budget end date | | `amount` | json | Budget amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `spendBudgetStatus` | string | Status of the created budget | | `limitType` | string | Budget limit type | ### Brex Archive Budget [#brex-archive-budget] Archive a Brex budget, making any spend limits beneath it unusable for future expenses and removing it from the UI #### Input [#input-23] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `budgetId` | string | Yes | ID of the budget to archive | #### Output [#output-23] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------ | | `budgetId` | string | ID of the archived budget | | `spendBudgetStatus` | string | Status of the budget after archiving | ### Brex List Spend Limits [#brex-list-spend-limits] List spend limits in the Brex account, optionally filtered by member user #### Input [#input-24] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `memberUserIds` | string | No | Comma-separated user IDs to filter spend limits by member | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of spend limits to return (default 100, max 1000) | #### Output [#output-24] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------------------------------------- | | `items` | array | Spend limits in the Brex account | | ↳ `id` | string | Unique spend limit ID | | ↳ `account_id` | string | Account ID the spend limit belongs to | | ↳ `name` | string | Spend limit name | | ↳ `description` | string | Spend limit description | | ↳ `parent_budget_id` | string | Parent budget ID | | ↳ `status` | string | Spend limit status | | ↳ `period_recurrence_type` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) | | ↳ `spend_type` | string | Spend type of the limit | | ↳ `start_date` | string | Spend limit start date | | ↳ `end_date` | string | Spend limit end date | | ↳ `owner_user_ids` | array | User IDs of the spend limit owners | | ↳ `member_user_ids` | array | User IDs of the spend limit members | | ↳ `current_period_balance` | json | Spend and rollover amounts for the current period | | ↳ `start_date` | string | Start date of the current period | | ↳ `end_date` | string | End date of the current period | | ↳ `start_time` | string | Start time of the current period (ISO 8601) | | ↳ `end_time` | string | End time of the current period (ISO 8601) | | ↳ `amount_spent` | json | Amount spent in the current period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `rollover_amount` | json | Amount rolled over from previous periods | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `authorization_settings` | json | Authorization settings (base limit, authorization type, rollover refresh) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Spend Limit [#brex-get-spend-limit] Get a Brex spend limit by its ID #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `spendLimitId` | string | Yes | ID of the spend limit to fetch | #### Output [#output-25] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------------- | | `id` | string | Unique spend limit ID | | `accountId` | string | Account ID the spend limit belongs to | | `name` | string | Spend limit name | | `description` | string | Spend limit description | | `parentBudgetId` | string | Parent budget ID | | `status` | string | Spend limit status (ACTIVE, EXPIRED, ARCHIVED) | | `periodRecurrenceType` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) | | `spendType` | string | Spend type of the limit | | `startDate` | string | Spend limit start date | | `endDate` | string | Spend limit end date | | `ownerUserIds` | array | User IDs of the spend limit owners | | `memberUserIds` | array | User IDs of the spend limit members | | `currentPeriodBalance` | json | Spend and rollover amounts for the current period | | ↳ `start_date` | string | Start date of the current period | | ↳ `end_date` | string | End date of the current period | | ↳ `start_time` | string | Start time of the current period (ISO 8601) | | ↳ `end_time` | string | End time of the current period (ISO 8601) | | ↳ `amount_spent` | json | Amount spent in the current period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `rollover_amount` | json | Amount rolled over from previous periods | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `authorizationSettings` | json | Authorization settings (base limit, authorization type, rollover refresh) | ### Brex Create Spend Limit [#brex-create-spend-limit] Create a new spend limit (hard-authorization card program) in the Brex account #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | Yes | Name for the spend limit | | `periodRecurrenceType` | string | Yes | Period type of the spend limit (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) | | `spendType` | string | Yes | Whether the spend limit can only be spent from cards it provisions (BUDGET\_PROVISIONED\_CARDS\_ONLY, NON\_BUDGET\_PROVISIONED\_CARDS\_ALLOWED) | | `expenseVisibility` | string | Yes | Whether expenses on this spend limit are viewable by all members (SHARED, PRIVATE) | | `authorizationVisibility` | string | Yes | Whether the limit amount is visible to all members, or just controllers/bookkeepers/owners (PUBLIC, PRIVATE) | | `limitIncreaseSetting` | string | Yes | Whether members can request limit increases (ENABLED, DISABLED) | | `autoTransferCardsSetting` | string | Yes | How auto transfer works for virtual cards on this spend limit (DISABLED, ENABLED) | | `autoCreateLimitCardsSetting` | string | Yes | How auto limit card creation works for members (DISABLED, ALL\_MEMBERS) | | `expensePolicyId` | string | Yes | ID of the expense policy corresponding to this spend limit | | `baseLimitAmount` | number | Yes | Base spend limit amount, without increases/rollovers, in the smallest unit of the currency (e.g., cents for USD) | | `currency` | string | No | ISO 4217 currency code for the base limit (defaults to USD) | | `authorizationType` | string | Yes | Whether authorizations decline based on available balance (HARD, SOFT) | | `rolloverRefreshRate` | string | Yes | Recurrence at which rolled-over unused funds stop rolling over (OFF, NEVER, PER\_MONTH, PER\_QUARTER, PER\_YEAR) | | `limitBufferPercentage` | number | No | Flexible buffer on the limit as a 0-100 percentage | | `description` | string | No | Description of what the spend limit is used for | | `parentBudgetId` | string | No | ID of the parent budget | | `startDate` | string | No | Date the spend limit should start counting (YYYY-MM-DD) | | `endDate` | string | No | Date the spend limit should expire (YYYY-MM-DD) | | `transactionLimitAmount` | number | No | Per-transaction limit this spend limit enforces, in the smallest unit of the currency | | `ownerUserIds` | string | No | Comma-separated user IDs of the spend limit owners | | `memberUserIds` | string | No | Comma-separated user IDs of the spend limit members | #### Output [#output-26] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------------- | | `id` | string | Unique spend limit ID | | `accountId` | string | Account ID the spend limit belongs to | | `name` | string | Spend limit name | | `description` | string | Spend limit description | | `parentBudgetId` | string | Parent budget ID | | `status` | string | Spend limit status | | `periodRecurrenceType` | string | Period recurrence (PER\_WEEK, PER\_MONTH, PER\_QUARTER, PER\_YEAR, ONE\_TIME) | | `spendType` | string | Spend type of the limit | | `startDate` | string | Spend limit start date | | `endDate` | string | Spend limit end date | | `ownerUserIds` | array | User IDs of the spend limit owners | | `memberUserIds` | array | User IDs of the spend limit members | | `currentPeriodBalance` | json | Spend and rollover amounts for the current period | | ↳ `start_date` | string | Start date of the current period | | ↳ `end_date` | string | End date of the current period | | ↳ `start_time` | string | Start time of the current period (ISO 8601) | | ↳ `end_time` | string | End time of the current period (ISO 8601) | | ↳ `amount_spent` | json | Amount spent in the current period | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `rollover_amount` | json | Amount rolled over from previous periods | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `authorizationSettings` | json | Authorization settings (base limit, authorization type, rollover refresh) | ### Brex List Vendors [#brex-list-vendors] List vendors in the Brex account, optionally filtered by name #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `name` | string | No | Filter vendors by name | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of vendors to return (default 100, max 1000) | #### Output [#output-27] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------- | | `items` | array | Vendors in the Brex account | | ↳ `id` | string | Unique vendor ID | | ↳ `company_name` | string | Vendor company name | | ↳ `email` | string | Vendor email address | | ↳ `phone` | string | Vendor phone number | | ↳ `payment_accounts` | array | Payment accounts associated with the vendor | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Vendor [#brex-get-vendor] Get a Brex vendor by its ID #### Input [#input-28] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `vendorId` | string | Yes | ID of the vendor to fetch | #### Output [#output-28] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `id` | string | Unique vendor ID | | `companyName` | string | Vendor company name | | `email` | string | Vendor email address | | `phone` | string | Vendor phone number | | `paymentAccounts` | array | Payment accounts associated with the vendor | ### Brex Create Vendor [#brex-create-vendor] Create a new vendor in the Brex account #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `companyName` | string | Yes | Name for the vendor (must be unique) | | `email` | string | No | Email address for the vendor | | `phone` | string | No | Phone number for the vendor | #### Output [#output-29] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `id` | string | Unique vendor ID | | `companyName` | string | Vendor company name | | `email` | string | Vendor email address | | `phone` | string | Vendor phone number | | `paymentAccounts` | array | Payment accounts associated with the vendor | ### Brex Update Vendor [#brex-update-vendor] Update an existing vendor in the Brex account #### Input [#input-30] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `vendorId` | string | Yes | ID of the vendor to update | | `companyName` | string | No | New name for the vendor | | `email` | string | No | New email address for the vendor | | `phone` | string | No | New phone number for the vendor | #### Output [#output-30] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `id` | string | Unique vendor ID | | `companyName` | string | Vendor company name | | `email` | string | Vendor email address | | `phone` | string | Vendor phone number | | `paymentAccounts` | array | Payment accounts associated with the vendor | ### Brex List Transfers [#brex-list-transfers] List money transfers in the Brex account #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `cursor` | string | No | Pagination cursor from a previous response | | `limit` | string | No | Number of transfers to return (default 100, max 1000) | #### Output [#output-31] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------- | | `items` | array | Transfers in the Brex account | | ↳ `id` | string | Unique transfer ID | | ↳ `counterparty` | json | Transfer counterparty details | | ↳ `description` | string | Transfer description | | ↳ `payment_type` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) | | ↳ `amount` | json | Transfer amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | ↳ `process_date` | string | Date the transfer processes | | ↳ `originating_account` | json | Account the transfer originates from | | ↳ `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) | | ↳ `cancellation_reason` | string | Reason the transfer was canceled | | ↳ `estimated_delivery_date` | string | Estimated delivery date | | ↳ `creator_user_id` | string | ID of the user who created the transfer | | ↳ `created_at` | string | Creation timestamp | | ↳ `display_name` | string | Transfer display name | | ↳ `external_memo` | string | External memo | | ↳ `is_ppro_enabled` | boolean | Whether Principal Protection (PPRO) is enabled | | `nextCursor` | string | Cursor for fetching the next page of results | ### Brex Get Transfer [#brex-get-transfer] Get a Brex money transfer by its ID #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `transferId` | string | Yes | ID of the transfer to fetch | #### Output [#output-32] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------- | | `id` | string | Unique transfer ID | | `counterparty` | json | Transfer counterparty details | | `description` | string | Transfer description | | `paymentType` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) | | `amount` | json | Transfer amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `processDate` | string | Date the transfer processes | | `originatingAccount` | json | Account the transfer originates from | | `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) | | `cancellationReason` | string | Reason the transfer was canceled | | `estimatedDeliveryDate` | string | Estimated delivery date | | `creatorUserId` | string | ID of the user who created the transfer | | `createdAt` | string | Creation timestamp | | `displayName` | string | Transfer display name | | `externalMemo` | string | External memo | | `isPproEnabled` | boolean | Whether Principal Protection (PPRO) is enabled | ### Brex Create Transfer [#brex-create-transfer] Create a money transfer from a Brex cash account to a vendor #### Input [#input-33] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Brex user token (generated from Developer Settings in the Brex dashboard) | | `cashAccountId` | string | Yes | ID of the Brex cash account to send the transfer from (found via the /accounts endpoint) | | `vendorPaymentInstrumentId` | string | Yes | ID of the vendor's payment instrument to send the transfer to (from the vendor's payment\_accounts) | | `amount` | number | Yes | Amount to transfer, in the smallest unit of the currency (e.g., cents for USD) | | `currency` | string | No | ISO 4217 currency code (defaults to USD) | | `description` | string | Yes | Description of the transfer for internal use (not exposed externally) | | `externalMemo` | string | Yes | External memo shown to the recipient (max 90 characters for ACH/Wire, 40 for Cheque) | | `approvalType` | string | No | Set to MANUAL to require cash admin approval before the transfer is sent | | `isPproEnabled` | boolean | No | Enable Principal Protection (PPRO) to have Brex cover intermediary/receiving bank fees (international wires only) | #### Output [#output-33] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------- | | `id` | string | Unique transfer ID | | `counterparty` | json | Transfer counterparty details | | `description` | string | Description of the transfer | | `paymentType` | string | Payment type (ACH, DOMESTIC\_WIRE, CHEQUE, INTERNATIONAL\_WIRE, BOOK\_TRANSFER, STABLECOIN) | | `amount` | json | Transfer amount | | ↳ `amount` | number | Amount in the smallest unit of the currency (e.g., cents for USD) | | ↳ `currency` | string | ISO 4217 currency code (e.g., USD) | | `processDate` | string | Transaction processing date | | `originatingAccount` | json | Originating account details for the transfer | | `status` | string | Transfer status (PROCESSING, SCHEDULED, PENDING\_APPROVAL, FAILED, PROCESSED) | | `cancellationReason` | string | Reason the transfer was canceled | | `estimatedDeliveryDate` | string | Estimated delivery date for the transfer | | `creatorUserId` | string | ID of the user who created the transfer | | `createdAt` | string | Creation timestamp of the transfer | | `displayName` | string | Human-readable name of the transfer | | `externalMemo` | string | External memo of the transfer | | `isPproEnabled` | boolean | Whether Principal Protection (PPRO) is enabled for the transfer | --- # Bright Data (/integrations/brightdata) {/* MANUAL-CONTENT-START:intro */} Use [Bright Data](https://brightdata.com/) to scrape pages, query search engines, discover content, and run structured dataset scrapers. For asynchronous scraping, check snapshot status before downloading the results; an in-progress snapshot can also be canceled. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Bright Data into the workflow. Scrape any URL with Web Unlocker, search Google and other engines with SERP API, discover web content ranked by intent, or trigger pre-built scrapers for structured data extraction. ## Actions [#actions] ### Bright Data Scrape URL [#bright-data-scrape-url] Fetch content from any URL using Bright Data Web Unlocker. Bypasses anti-bot protections, CAPTCHAs, and IP blocks automatically. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Bright Data API token | | `zone` | string | Yes | Web Unlocker zone name from your Bright Data dashboard (e.g., "web\_unlocker1") | | `url` | string | Yes | The URL to scrape (e.g., "[https://example.com/page](https://example.com/page)") | | `format` | string | No | Response format: "raw" for HTML or "json" for parsed content. Defaults to "raw" | | `country` | string | No | Two-letter country code for geo-targeting (e.g., "us", "gb") | | `dataFormat` | string | No | Convert the response to "markdown" instead of raw HTML, useful for feeding page content to an LLM. Omit for the default HTML/JSON response | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------- | | `content` | string | The scraped page content (HTML or JSON depending on format) | | `url` | string | The URL that was scraped | | `statusCode` | number | HTTP status code of the response | ### Bright Data SERP Search [#bright-data-serp-search] Search Google, Bing, DuckDuckGo, or Yandex and get structured search results using Bright Data SERP API. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `zone` | string | Yes | SERP API zone name from your Bright Data dashboard (e.g., "serp\_api1") | | `query` | string | Yes | The search query (e.g., "best project management tools") | | `searchEngine` | string | No | Search engine to use: "google", "bing", "duckduckgo", or "yandex". Defaults to "google" | | `country` | string | No | Two-letter country code for localized results (e.g., "us", "gb") | | `language` | string | No | Two-letter language code (e.g., "en", "es") | | `numResults` | number | No | Number of results to return (e.g., 10, 20). Defaults to 10 | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------ | | `results` | array | Array of search results | | ↳ `title` | string | Title of the search result | | ↳ `url` | string | URL of the search result | | ↳ `description` | string | Snippet or description of the result | | ↳ `rank` | number | Position in search results | | `query` | string | The search query that was executed | | `searchEngine` | string | The search engine that was used | ### Bright Data Discover [#bright-data-discover] AI-powered web discovery that finds and ranks results by intent. Returns up to 20 results with optional cleaned page content for RAG and verification. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `query` | string | Yes | The search query (e.g., "competitor pricing changes enterprise plan") | | `numResults` | number | No | Number of results to return (1-20). Defaults to 10 | | `mode` | string | No | Search depth and ranking mode: "standard" (balanced), "deep" (exhaustive, broader search), "fast" (optimized for speed), or "zeroRanking" (raw volume without AI filtering). Defaults to "standard" | | `intent` | string | No | Describes what the agent is trying to accomplish, used to rank results by relevance (e.g., "find official pricing pages and change notes") | | `includeContent` | boolean | No | Whether to include cleaned page content in results | | `format` | string | No | Response format: "json" or "md". Defaults to "json" | | `language` | string | No | Search language code (e.g., "en", "es", "fr"). Defaults to "en" | | `country` | string | No | Two-letter ISO country code for localized results (e.g., "us", "gb") | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------------- | | `results` | array | Array of discovered web results ranked by intent relevance | | ↳ `url` | string | URL of the discovered page | | ↳ `title` | string | Page title | | ↳ `description` | string | Page description or snippet | | ↳ `relevanceScore` | number | AI-calculated relevance score for intent-based ranking | | ↳ `content` | string | Cleaned page content in the requested format (when includeContent is true) | | `query` | string | The search query that was executed | | `totalResults` | number | Total number of results returned | ### Bright Data Sync Scrape [#bright-data-sync-scrape] Scrape URLs synchronously using a Bright Data pre-built scraper and get structured results directly. Supports up to 20 URLs with a 1-minute timeout. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `datasetId` | string | Yes | Dataset scraper ID from your Bright Data dashboard (e.g., "gd\_l1viktl72bvl7bjuj0") | | `urls` | string | Yes | JSON array of URL objects to scrape, up to 20 (e.g., \[ \{ "url": "[https://example.com/product](https://example.com/product)" } ]) | | `format` | string | No | Output format: "json", "ndjson", or "csv". Defaults to "json" | | `includeErrors` | boolean | No | Whether to include error reports in results | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------------------------------------- | | `data` | array | Array of scraped result objects with fields specific to the dataset scraper used | | `snapshotId` | string | Snapshot ID returned if the request exceeded the 1-minute timeout and switched to async processing | | `isAsync` | boolean | Whether the request fell back to async mode (true means use snapshot ID to retrieve results) | ### Bright Data Scrape Dataset [#bright-data-scrape-dataset] Trigger a Bright Data pre-built scraper to extract structured data from URLs. Supports 660+ scrapers for platforms like Amazon, LinkedIn, Instagram, and more. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `datasetId` | string | Yes | Dataset scraper ID from your Bright Data dashboard (e.g., "gd\_l1viktl72bvl7bjuj0") | | `urls` | string | Yes | JSON array of URL objects to scrape (e.g., \[ \{ "url": "[https://example.com/product](https://example.com/product)" } ]) | | `format` | string | No | Output format: "json" or "csv". Defaults to "json" | | `includeErrors` | boolean | No | Whether to include a per-input error report in the results | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------- | | `snapshotId` | string | The snapshot ID to retrieve results later | | `status` | string | Status of the scraping job (e.g., "triggered", "running") | ### Bright Data Snapshot Status [#bright-data-snapshot-status] Check the progress of an async Bright Data scraping job. Returns status: starting, running, ready, or failed. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `snapshotId` | string | Yes | The snapshot ID returned when the collection was triggered (e.g., "s\_m4x7enmven8djfqak") | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------------- | | `snapshotId` | string | The snapshot ID that was queried | | `datasetId` | string | The dataset ID associated with this snapshot | | `status` | string | Current status of the snapshot: "starting", "running", "ready", or "failed" | ### Bright Data Download Snapshot [#bright-data-download-snapshot] Download the results of a completed Bright Data scraping job using its snapshot ID. The snapshot must have ready status. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `snapshotId` | string | Yes | The snapshot ID returned when the collection was triggered (e.g., "s\_m4x7enmven8djfqak") | | `format` | string | No | Output format: "json", "ndjson", "jsonl", or "csv". Defaults to "json" | | `compress` | boolean | No | Whether to compress the results | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------- | | `data` | array | Array of scraped result records | | `format` | string | The content type of the downloaded data | | `snapshotId` | string | The snapshot ID that was downloaded | ### Bright Data Cancel Snapshot [#bright-data-cancel-snapshot] Cancel an active Bright Data scraping job using its snapshot ID. Terminates data collection in progress. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Bright Data API token | | `snapshotId` | string | Yes | The snapshot ID of the collection to cancel (e.g., "s\_m4x7enmven8djfqak") | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------- | | `snapshotId` | string | The snapshot ID that was cancelled | | `cancelled` | boolean | Whether the cancellation was successful | --- # Browser Use (/integrations/browser_use) {/* MANUAL-CONTENT-START:intro */} [Browser Use](https://browser-use.com/) runs browser tasks from natural-language instructions. Use it to navigate websites, interact with page controls, and extract information as a workflow step. The result includes the task status, output, and a screenshot URL when available. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Browser Use into the workflow. Can navigate the web and perform actions as if a real user was interacting with the browser. ## Actions [#actions] ### Browser Use [#browser-use] Runs a browser automation task using BrowserUse #### Input [#input] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------- | | `task` | string | Yes | What should the browser agent do | | `startUrl` | string | No | Initial page URL to start the agent on (reduces navigation steps) | | `variables` | json | No | Optional secrets injected into the task (format: \{key: value}) | | `allowedDomains` | string | No | Comma-separated list of domains the agent is allowed to visit | | `maxSteps` | number | No | Maximum number of steps the agent may take (default 100, max 10000) | | `flashMode` | boolean | No | Enable flash mode (faster, less careful navigation) | | `thinking` | boolean | No | Enable extended reasoning mode | | `vision` | string | No | Vision capability: "true", "false", or "auto" | | `systemPromptExtension` | string | No | Optional text appended to the agent system prompt (max 2000 chars) | | `structuredOutput` | string | No | Stringified JSON schema for the structured output | | `highlightElements` | boolean | No | Highlight interactive elements on the page (default true) | | `metadata` | json | No | Custom key-value metadata (up to 10 pairs) for tracking | | `model` | string | No | LLM model identifier (e.g. browser-use-2.0) | | `apiKey` | string | Yes | API key for BrowserUse API | | `profile_id` | string | No | Browser profile ID for persistent sessions (cookies, login state) | #### Output [#output] | Parameter | Type | Description | | -------------------------- | ------- | --------------------------------------------------------------------------- | | `id` | string | Task execution identifier | | `success` | boolean | Task completion status | | `output` | json | Final task output (string or structured) | | `steps` | array | Steps the agent executed (number, memory, nextGoal, url, actions, duration) | | ↳ `number` | number | Sequential step number | | ↳ `memory` | string | Agent memory at this step | | ↳ `evaluationPreviousGoal` | string | Evaluation of previous goal completion | | ↳ `nextGoal` | string | Goal for the next step | | ↳ `url` | string | Current URL of the browser | | ↳ `screenshotUrl` | string | Optional screenshot URL | | ↳ `actions` | array | Stringified JSON actions performed | | ↳ `duration` | number | Step duration in seconds | | `liveUrl` | string | Embeddable live browser session URL (active during execution) | | `shareUrl` | string | Public shareable URL for the recorded session (post-run) | | `sessionId` | string | Browser Use session identifier | --- # Buffer (/integrations/buffer) {/* MANUAL-CONTENT-START:intro */} [Buffer](https://buffer.com/) is a social media management platform that lets teams draft, schedule, and publish content across their connected social channels from a single queue. Each channel — Instagram, LinkedIn, X, Facebook, TikTok, and more — is connected once in Buffer, and posts are published on the schedule you define. With the Buffer integration in Agent Serve, you can: * **Publish and schedule posts**: Create a post for a channel and add it to the queue, share it immediately, schedule it for a specific time, or save it as a draft * **Attach media**: Include an image or video with a post * **Manage existing posts**: Edit, retrieve, list, and delete posts * **Browse channels**: List the social channels connected to the account, along with their IDs and service types * **Capture ideas**: Create ideas and list ideas and idea groups from the Buffer content pipeline * **Read account details**: Retrieve the authenticated Buffer account In Agent Serve, the Buffer integration enables your agents to turn generated content into scheduled social posts without manual copy-paste. An agent can draft copy, look up the right channel, attach a generated image, and queue the post — or review the existing queue and clean up posts that are no longer relevant. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Buffer into your workflow. Create, schedule, edit, and delete posts across connected social channels (Instagram, LinkedIn, X, Facebook, TikTok, and more), attach images or videos, browse channel settings, check daily limits and post metrics, and capture content ideas using the Buffer API. ## Actions [#actions] ### Buffer Create Post [#buffer-create-post] Create a post in Buffer for a channel — add it to the queue, share it immediately, schedule it for a specific time, or save it as a draft, optionally with an image or video attachment #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `channelId` | string | Yes | Channel to create the post for (find it with the Get Channels operation) | | `text` | string | No | Text content of the post (required unless media is attached) | | `mode` | string | Yes | How to share the post: addToQueue, shareNext, shareNow, or customScheduled (requires dueAt) | | `schedulingType` | string | No | How the post publishes: automatic (Buffer publishes it, default) or notification (you get a mobile reminder) | | `dueAt` | string | No | Publish time as an ISO 8601 timestamp (required when mode is customScheduled) | | `saveToDraft` | boolean | No | Save the post as a draft instead of scheduling it | | `media` | file | No | Image or video to attach — an uploaded file, a file reference from a previous block, or a publicly accessible URL. Buffer downloads the media at publish time; uploaded files are shared via a link valid for 7 days, so use a public URL for posts scheduled further out | | `mediaType` | string | No | Force the attachment type when it cannot be detected from the file or URL: image or video (default auto) | | `mediaAltText` | string | No | Alt text for an attached image | | `assets` | json | No | Array of image, video, or document assets. Choose exactly one variant per asset. Omit when using media.
      Schema | | `metadata` | json | No | Network-specific settings, including threads, link attachments, and publishing options. Schema | | `aiAssisted` | boolean | No | Whether AI assisted with creating the post | | `draftId` | string | No | Draft identifier associated with the post | | `ideaId` | string | No | Source idea identifier | | `source` | string | No | Source application identifier | | `tagIds` | json | No | Array of tag IDs; on edit, \[] clears tags and omission preserves them | | `needsApproval` | boolean | No | Request approval on creation (default false) | #### Output [#output] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `post` | object | The created post | | ↳ `id` | string | Post id | | ↳ `allowedActions` | array | Post allowedActions | | ↳ `assets` | array | Post assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `author` | object | Post author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `channel` | object | Post channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | | ↳ `channelId` | string | Post channelId | | ↳ `channelService` | string | Post channelService | | ↳ `contentItemId` | string | Post contentItemId | | ↳ `dueAt` | string | Post dueAt | | ↳ `error` | object | Post error | | ↳ `message` | string | PostPublishingError message | | ↳ `rawError` | string | PostPublishingError rawError | | ↳ `supportUrl` | string | PostPublishingError supportUrl | | ↳ `externalLink` | string | Post externalLink | | ↳ `ideaId` | string | Post ideaId | | ↳ `isCustomScheduled` | boolean | Post isCustomScheduled | | ↳ `metadata` | object | Post metadata | | ↳ `__typename` | string | Concrete PostMetadata variant | | ↳ `annotations` | array | SubstackPostMetadata annotations | | ↳ `content` | string | Annotation content | | ↳ `indices` | array | Annotation indices | | ↳ `text` | string | Annotation text | | ↳ `type` | string | Annotation type | | ↳ `url` | string | Annotation url | | ↳ `firstComment` | string | LinkedInPostMetadata firstComment | | ↳ `geolocation` | object | InstagramPostMetadata geolocation | | ↳ `id` | string | InstagramGeolocation id | | ↳ `text` | string | InstagramGeolocation text | | ↳ `isAiGenerated` | boolean | TiktokPostMetadata isAiGenerated | | ↳ `link` | string | InstagramPostMetadata link | | ↳ `shouldShareToFeed` | boolean | InstagramPostMetadata shouldShareToFeed | | ↳ `stickerFields` | object | InstagramPostMetadata stickerFields | | ↳ `music` | string | InstagramStickerFields music | | ↳ `other` | string | InstagramStickerFields other | | ↳ `products` | string | InstagramStickerFields products | | ↳ `text` | string | InstagramStickerFields text | | ↳ `topics` | string | InstagramStickerFields topics | | ↳ `type` | string | SubstackPostMetadata type | | ↳ `linkAttachment` | object | SubstackPostMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `title` | string | TiktokPostMetadata title | | ↳ `retweet` | object | TwitterPostMetadata retweet | | ↳ `id` | string | RetweetMetadata id | | ↳ `text` | string | RetweetMetadata text | | ↳ `thumbnails` | array | RetweetMetadata thumbnails | | ↳ `url` | string | RetweetMetadata url | | ↳ `user` | object | RetweetMetadata user | | ↳ `avatar` | string | RetweetUserMetadata avatar | | ↳ `name` | string | RetweetUserMetadata name | | ↳ `username` | string | RetweetUserMetadata username | | ↳ `createdAt` | string | RetweetMetadata createdAt | | ↳ `thread` | array | BlueskyPostMetadata thread | | ↳ `assets` | array | ThreadedPost assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `linkAttachment` | object | ThreadedPost linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `metadata` | object | ThreadedPost metadata | | ↳ `bluesky` | object | ThreadItemMetadata bluesky | | ↳ `linkAttachment` | object | ThreadItemBlueskyMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `threads` | object | ThreadItemMetadata threads | | ↳ `linkAttachment` | object | ThreadItemThreadsMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `text` | string | ThreadedPost text | | ↳ `threadCount` | number | BlueskyPostMetadata threadCount | | ↳ `board` | object | PinterestPostMetadata board | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `url` | string | PinterestPostMetadata url | | ↳ `details` | object | GoogleBusinessPostMetadata details | | ↳ `__typename` | string | Concrete GoogleBusinessPostDetails variant | | ↳ `button` | string | GoogleBusinessEventMetaData button | | ↳ `link` | string | GoogleBusinessEventMetaData link | | ↳ `code` | string | GoogleBusinessOfferMetaData code | | ↳ `endDate` | string | GoogleBusinessEventMetaData endDate | | ↳ `startDate` | string | GoogleBusinessEventMetaData startDate | | ↳ `terms` | string | GoogleBusinessOfferMetaData terms | | ↳ `title` | string | GoogleBusinessEventMetaData title | | ↳ `endTime` | string | GoogleBusinessEventMetaData endTime | | ↳ `isFullDayEvent` | boolean | GoogleBusinessEventMetaData isFullDayEvent | | ↳ `startTime` | string | GoogleBusinessEventMetaData startTime | | ↳ `category` | object | YoutubePostMetadata category | | ↳ `categoryId` | string | YoutubeCategory categoryId | | ↳ `title` | string | YoutubeCategory title | | ↳ `embeddable` | boolean | YoutubePostMetadata embeddable | | ↳ `license` | string | YoutubePostMetadata license | | ↳ `madeForKids` | boolean | YoutubePostMetadata madeForKids | | ↳ `notifySubscribers` | boolean | YoutubePostMetadata notifySubscribers | | ↳ `privacy` | string | YoutubePostMetadata privacy | | ↳ `spoilerText` | string | MastodonPostMetadata spoilerText | | ↳ `locationId` | string | ThreadsPostMetadata locationId | | ↳ `locationName` | string | ThreadsPostMetadata locationName | | ↳ `topic` | string | ThreadsPostMetadata topic | | ↳ `metrics` | array | Post metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | Post metricsUpdatedAt | | ↳ `notes` | array | Post notes | | ↳ `id` | string | Note id | | ↳ `allowedActions` | array | Note allowedActions | | ↳ `author` | object | Note author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `text` | string | Note text | | ↳ `type` | string | Note type | | ↳ `createdAt` | string | Note createdAt | | ↳ `updatedAt` | string | Note updatedAt | | ↳ `notificationStatus` | string | Post notificationStatus | | ↳ `schedulingType` | string | Post schedulingType | | ↳ `sentAt` | string | Post sentAt | | ↳ `sharedNow` | boolean | Post sharedNow | | ↳ `shareMode` | string | Post shareMode | | ↳ `status` | string | Post status | | ↳ `tags` | array | Post tags | | ↳ `id` | string | Tag id | | ↳ `color` | string | Tag color | | ↳ `colorName` | string | Tag colorName | | ↳ `isLocked` | boolean | Tag isLocked | | ↳ `name` | string | Tag name | | ↳ `text` | string | Post text | | ↳ `via` | string | Post via | | ↳ `createdAt` | string | Post createdAt | | ↳ `updatedAt` | string | Post updatedAt | ### Buffer Edit Post [#buffer-edit-post] Edit an existing Buffer post — update its text, schedule, or media. Attaching new media replaces the existing attachments #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `postId` | string | Yes | ID of the post to edit | | `text` | string | No | New text content of the post | | `mode` | string | No | Change the share mode to addToQueue, shareNext, shareNow, or customScheduled (requires dueAt). Omit to keep the current schedule | | `schedulingType` | string | No | Change how the post publishes: automatic (Buffer publishes it) or notification (mobile reminder). Omit to keep the current publishing method | | `dueAt` | string | No | Publish time as an ISO 8601 timestamp (required when mode is customScheduled) | | `saveToDraft` | boolean | No | Save the post as a draft instead of scheduling it | | `media` | file | No | Image or video to attach — an uploaded file, a file reference from a previous block, or a publicly accessible URL. Buffer downloads the media at publish time; uploaded files are shared via a link valid for 7 days, so use a public URL for posts scheduled further out. Replaces existing attachments | | `mediaType` | string | No | Force the attachment type when it cannot be detected from the file or URL: image or video (default auto) | | `mediaAltText` | string | No | Alt text for an attached image | | `assets` | json | No | Array of image, video, or document assets. Choose exactly one variant per asset. Omit when using media. An empty array clears attachments; omission preserves them. Schema | | `metadata` | json | No | Network-specific settings, including threads, link attachments, and publishing options. Schema | | `aiAssisted` | boolean | No | Whether AI assisted with creating the post | | `draftId` | string | No | Draft identifier associated with the post | | `ideaId` | string | No | Source idea identifier | | `source` | string | No | Source application identifier | | `tagIds` | json | No | Array of tag IDs; on edit, \[] clears tags and omission preserves them | | `approvalChange` | string | No | Draft approval change: request submits for approval, revert withdraws the request | #### Output [#output-1] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `post` | object | The updated post | | ↳ `id` | string | Post id | | ↳ `allowedActions` | array | Post allowedActions | | ↳ `assets` | array | Post assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `author` | object | Post author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `channel` | object | Post channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | | ↳ `channelId` | string | Post channelId | | ↳ `channelService` | string | Post channelService | | ↳ `contentItemId` | string | Post contentItemId | | ↳ `dueAt` | string | Post dueAt | | ↳ `error` | object | Post error | | ↳ `message` | string | PostPublishingError message | | ↳ `rawError` | string | PostPublishingError rawError | | ↳ `supportUrl` | string | PostPublishingError supportUrl | | ↳ `externalLink` | string | Post externalLink | | ↳ `ideaId` | string | Post ideaId | | ↳ `isCustomScheduled` | boolean | Post isCustomScheduled | | ↳ `metadata` | object | Post metadata | | ↳ `__typename` | string | Concrete PostMetadata variant | | ↳ `annotations` | array | SubstackPostMetadata annotations | | ↳ `content` | string | Annotation content | | ↳ `indices` | array | Annotation indices | | ↳ `text` | string | Annotation text | | ↳ `type` | string | Annotation type | | ↳ `url` | string | Annotation url | | ↳ `firstComment` | string | LinkedInPostMetadata firstComment | | ↳ `geolocation` | object | InstagramPostMetadata geolocation | | ↳ `id` | string | InstagramGeolocation id | | ↳ `text` | string | InstagramGeolocation text | | ↳ `isAiGenerated` | boolean | TiktokPostMetadata isAiGenerated | | ↳ `link` | string | InstagramPostMetadata link | | ↳ `shouldShareToFeed` | boolean | InstagramPostMetadata shouldShareToFeed | | ↳ `stickerFields` | object | InstagramPostMetadata stickerFields | | ↳ `music` | string | InstagramStickerFields music | | ↳ `other` | string | InstagramStickerFields other | | ↳ `products` | string | InstagramStickerFields products | | ↳ `text` | string | InstagramStickerFields text | | ↳ `topics` | string | InstagramStickerFields topics | | ↳ `type` | string | SubstackPostMetadata type | | ↳ `linkAttachment` | object | SubstackPostMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `title` | string | TiktokPostMetadata title | | ↳ `retweet` | object | TwitterPostMetadata retweet | | ↳ `id` | string | RetweetMetadata id | | ↳ `text` | string | RetweetMetadata text | | ↳ `thumbnails` | array | RetweetMetadata thumbnails | | ↳ `url` | string | RetweetMetadata url | | ↳ `user` | object | RetweetMetadata user | | ↳ `avatar` | string | RetweetUserMetadata avatar | | ↳ `name` | string | RetweetUserMetadata name | | ↳ `username` | string | RetweetUserMetadata username | | ↳ `createdAt` | string | RetweetMetadata createdAt | | ↳ `thread` | array | BlueskyPostMetadata thread | | ↳ `assets` | array | ThreadedPost assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `linkAttachment` | object | ThreadedPost linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `metadata` | object | ThreadedPost metadata | | ↳ `bluesky` | object | ThreadItemMetadata bluesky | | ↳ `linkAttachment` | object | ThreadItemBlueskyMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `threads` | object | ThreadItemMetadata threads | | ↳ `linkAttachment` | object | ThreadItemThreadsMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `text` | string | ThreadedPost text | | ↳ `threadCount` | number | BlueskyPostMetadata threadCount | | ↳ `board` | object | PinterestPostMetadata board | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `url` | string | PinterestPostMetadata url | | ↳ `details` | object | GoogleBusinessPostMetadata details | | ↳ `__typename` | string | Concrete GoogleBusinessPostDetails variant | | ↳ `button` | string | GoogleBusinessEventMetaData button | | ↳ `link` | string | GoogleBusinessEventMetaData link | | ↳ `code` | string | GoogleBusinessOfferMetaData code | | ↳ `endDate` | string | GoogleBusinessEventMetaData endDate | | ↳ `startDate` | string | GoogleBusinessEventMetaData startDate | | ↳ `terms` | string | GoogleBusinessOfferMetaData terms | | ↳ `title` | string | GoogleBusinessEventMetaData title | | ↳ `endTime` | string | GoogleBusinessEventMetaData endTime | | ↳ `isFullDayEvent` | boolean | GoogleBusinessEventMetaData isFullDayEvent | | ↳ `startTime` | string | GoogleBusinessEventMetaData startTime | | ↳ `category` | object | YoutubePostMetadata category | | ↳ `categoryId` | string | YoutubeCategory categoryId | | ↳ `title` | string | YoutubeCategory title | | ↳ `embeddable` | boolean | YoutubePostMetadata embeddable | | ↳ `license` | string | YoutubePostMetadata license | | ↳ `madeForKids` | boolean | YoutubePostMetadata madeForKids | | ↳ `notifySubscribers` | boolean | YoutubePostMetadata notifySubscribers | | ↳ `privacy` | string | YoutubePostMetadata privacy | | ↳ `spoilerText` | string | MastodonPostMetadata spoilerText | | ↳ `locationId` | string | ThreadsPostMetadata locationId | | ↳ `locationName` | string | ThreadsPostMetadata locationName | | ↳ `topic` | string | ThreadsPostMetadata topic | | ↳ `metrics` | array | Post metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | Post metricsUpdatedAt | | ↳ `notes` | array | Post notes | | ↳ `id` | string | Note id | | ↳ `allowedActions` | array | Note allowedActions | | ↳ `author` | object | Note author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `text` | string | Note text | | ↳ `type` | string | Note type | | ↳ `createdAt` | string | Note createdAt | | ↳ `updatedAt` | string | Note updatedAt | | ↳ `notificationStatus` | string | Post notificationStatus | | ↳ `schedulingType` | string | Post schedulingType | | ↳ `sentAt` | string | Post sentAt | | ↳ `sharedNow` | boolean | Post sharedNow | | ↳ `shareMode` | string | Post shareMode | | ↳ `status` | string | Post status | | ↳ `tags` | array | Post tags | | ↳ `id` | string | Tag id | | ↳ `color` | string | Tag color | | ↳ `colorName` | string | Tag colorName | | ↳ `isLocked` | boolean | Tag isLocked | | ↳ `name` | string | Tag name | | ↳ `text` | string | Post text | | ↳ `via` | string | Post via | | ↳ `createdAt` | string | Post createdAt | | ↳ `updatedAt` | string | Post updatedAt | ### Buffer Get Posts [#buffer-get-posts] List posts in a Buffer organization, optionally filtered by channel and status (draft, needs\_approval, scheduled, sending, sent, error) #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) | | `channelIds` | string | No | Comma-separated channel IDs to filter by | | `status` | string | No | Comma-separated statuses to filter by: draft, needs\_approval, scheduled, sending, sent, error | | `limit` | number | No | Maximum number of posts to return (default 20) | | `after` | string | No | Pagination cursor from a previous page (pageInfo.endCursor) | | `sortBy` | string | No | Field to sort by: dueAt or createdAt (default dueAt) | | `sortDirection` | string | No | Sort direction: asc or desc (default asc) | | `filter` | json | No | Filter posts by status, tags, dates, and other criteria. Schema | | `sort` | json | No | Ordered array of sort keys. Overrides sortBy and sortDirection. Schema | #### Output [#output-2] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `posts` | array | Posts matching the filters | | ↳ `id` | string | Post id | | ↳ `allowedActions` | array | Post allowedActions | | ↳ `assets` | array | Post assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `author` | object | Post author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `channel` | object | Post channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | | ↳ `channelId` | string | Post channelId | | ↳ `channelService` | string | Post channelService | | ↳ `contentItemId` | string | Post contentItemId | | ↳ `dueAt` | string | Post dueAt | | ↳ `error` | object | Post error | | ↳ `message` | string | PostPublishingError message | | ↳ `rawError` | string | PostPublishingError rawError | | ↳ `supportUrl` | string | PostPublishingError supportUrl | | ↳ `externalLink` | string | Post externalLink | | ↳ `ideaId` | string | Post ideaId | | ↳ `isCustomScheduled` | boolean | Post isCustomScheduled | | ↳ `metadata` | object | Post metadata | | ↳ `__typename` | string | Concrete PostMetadata variant | | ↳ `annotations` | array | SubstackPostMetadata annotations | | ↳ `content` | string | Annotation content | | ↳ `indices` | array | Annotation indices | | ↳ `text` | string | Annotation text | | ↳ `type` | string | Annotation type | | ↳ `url` | string | Annotation url | | ↳ `firstComment` | string | LinkedInPostMetadata firstComment | | ↳ `geolocation` | object | InstagramPostMetadata geolocation | | ↳ `id` | string | InstagramGeolocation id | | ↳ `text` | string | InstagramGeolocation text | | ↳ `isAiGenerated` | boolean | TiktokPostMetadata isAiGenerated | | ↳ `link` | string | InstagramPostMetadata link | | ↳ `shouldShareToFeed` | boolean | InstagramPostMetadata shouldShareToFeed | | ↳ `stickerFields` | object | InstagramPostMetadata stickerFields | | ↳ `music` | string | InstagramStickerFields music | | ↳ `other` | string | InstagramStickerFields other | | ↳ `products` | string | InstagramStickerFields products | | ↳ `text` | string | InstagramStickerFields text | | ↳ `topics` | string | InstagramStickerFields topics | | ↳ `type` | string | SubstackPostMetadata type | | ↳ `linkAttachment` | object | SubstackPostMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `title` | string | TiktokPostMetadata title | | ↳ `retweet` | object | TwitterPostMetadata retweet | | ↳ `id` | string | RetweetMetadata id | | ↳ `text` | string | RetweetMetadata text | | ↳ `thumbnails` | array | RetweetMetadata thumbnails | | ↳ `url` | string | RetweetMetadata url | | ↳ `user` | object | RetweetMetadata user | | ↳ `avatar` | string | RetweetUserMetadata avatar | | ↳ `name` | string | RetweetUserMetadata name | | ↳ `username` | string | RetweetUserMetadata username | | ↳ `createdAt` | string | RetweetMetadata createdAt | | ↳ `thread` | array | BlueskyPostMetadata thread | | ↳ `assets` | array | ThreadedPost assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `linkAttachment` | object | ThreadedPost linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `metadata` | object | ThreadedPost metadata | | ↳ `bluesky` | object | ThreadItemMetadata bluesky | | ↳ `linkAttachment` | object | ThreadItemBlueskyMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `threads` | object | ThreadItemMetadata threads | | ↳ `linkAttachment` | object | ThreadItemThreadsMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `text` | string | ThreadedPost text | | ↳ `threadCount` | number | BlueskyPostMetadata threadCount | | ↳ `board` | object | PinterestPostMetadata board | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `url` | string | PinterestPostMetadata url | | ↳ `details` | object | GoogleBusinessPostMetadata details | | ↳ `__typename` | string | Concrete GoogleBusinessPostDetails variant | | ↳ `button` | string | GoogleBusinessEventMetaData button | | ↳ `link` | string | GoogleBusinessEventMetaData link | | ↳ `code` | string | GoogleBusinessOfferMetaData code | | ↳ `endDate` | string | GoogleBusinessEventMetaData endDate | | ↳ `startDate` | string | GoogleBusinessEventMetaData startDate | | ↳ `terms` | string | GoogleBusinessOfferMetaData terms | | ↳ `title` | string | GoogleBusinessEventMetaData title | | ↳ `endTime` | string | GoogleBusinessEventMetaData endTime | | ↳ `isFullDayEvent` | boolean | GoogleBusinessEventMetaData isFullDayEvent | | ↳ `startTime` | string | GoogleBusinessEventMetaData startTime | | ↳ `category` | object | YoutubePostMetadata category | | ↳ `categoryId` | string | YoutubeCategory categoryId | | ↳ `title` | string | YoutubeCategory title | | ↳ `embeddable` | boolean | YoutubePostMetadata embeddable | | ↳ `license` | string | YoutubePostMetadata license | | ↳ `madeForKids` | boolean | YoutubePostMetadata madeForKids | | ↳ `notifySubscribers` | boolean | YoutubePostMetadata notifySubscribers | | ↳ `privacy` | string | YoutubePostMetadata privacy | | ↳ `spoilerText` | string | MastodonPostMetadata spoilerText | | ↳ `locationId` | string | ThreadsPostMetadata locationId | | ↳ `locationName` | string | ThreadsPostMetadata locationName | | ↳ `topic` | string | ThreadsPostMetadata topic | | ↳ `metrics` | array | Post metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | Post metricsUpdatedAt | | ↳ `notes` | array | Post notes | | ↳ `id` | string | Note id | | ↳ `allowedActions` | array | Note allowedActions | | ↳ `author` | object | Note author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `text` | string | Note text | | ↳ `type` | string | Note type | | ↳ `createdAt` | string | Note createdAt | | ↳ `updatedAt` | string | Note updatedAt | | ↳ `notificationStatus` | string | Post notificationStatus | | ↳ `schedulingType` | string | Post schedulingType | | ↳ `sentAt` | string | Post sentAt | | ↳ `sharedNow` | boolean | Post sharedNow | | ↳ `shareMode` | string | Post shareMode | | ↳ `status` | string | Post status | | ↳ `tags` | array | Post tags | | ↳ `id` | string | Tag id | | ↳ `color` | string | Tag color | | ↳ `colorName` | string | Tag colorName | | ↳ `isLocked` | boolean | Tag isLocked | | ↳ `name` | string | Tag name | | ↳ `text` | string | Post text | | ↳ `via` | string | Post via | | ↳ `createdAt` | string | Post createdAt | | ↳ `updatedAt` | string | Post updatedAt | | `edges` | array | Edges with cursor and full post node | | ↳ `cursor` | string | Cursor for this node | | ↳ `node` | object | node output from the tool | | ↳ `id` | string | Post id | | ↳ `allowedActions` | array | Post allowedActions | | ↳ `assets` | array | Post assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `author` | object | Post author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `channel` | object | Post channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | | ↳ `channelId` | string | Post channelId | | ↳ `channelService` | string | Post channelService | | ↳ `contentItemId` | string | Post contentItemId | | ↳ `dueAt` | string | Post dueAt | | ↳ `error` | object | Post error | | ↳ `message` | string | PostPublishingError message | | ↳ `rawError` | string | PostPublishingError rawError | | ↳ `supportUrl` | string | PostPublishingError supportUrl | | ↳ `externalLink` | string | Post externalLink | | ↳ `ideaId` | string | Post ideaId | | ↳ `isCustomScheduled` | boolean | Post isCustomScheduled | | ↳ `metadata` | object | Post metadata | | ↳ `__typename` | string | Concrete PostMetadata variant | | ↳ `annotations` | array | SubstackPostMetadata annotations | | ↳ `content` | string | Annotation content | | ↳ `indices` | array | Annotation indices | | ↳ `text` | string | Annotation text | | ↳ `type` | string | Annotation type | | ↳ `url` | string | Annotation url | | ↳ `firstComment` | string | LinkedInPostMetadata firstComment | | ↳ `geolocation` | object | InstagramPostMetadata geolocation | | ↳ `id` | string | InstagramGeolocation id | | ↳ `text` | string | InstagramGeolocation text | | ↳ `isAiGenerated` | boolean | TiktokPostMetadata isAiGenerated | | ↳ `link` | string | InstagramPostMetadata link | | ↳ `shouldShareToFeed` | boolean | InstagramPostMetadata shouldShareToFeed | | ↳ `stickerFields` | object | InstagramPostMetadata stickerFields | | ↳ `music` | string | InstagramStickerFields music | | ↳ `other` | string | InstagramStickerFields other | | ↳ `products` | string | InstagramStickerFields products | | ↳ `text` | string | InstagramStickerFields text | | ↳ `topics` | string | InstagramStickerFields topics | | ↳ `type` | string | SubstackPostMetadata type | | ↳ `linkAttachment` | object | SubstackPostMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `title` | string | TiktokPostMetadata title | | ↳ `retweet` | object | TwitterPostMetadata retweet | | ↳ `id` | string | RetweetMetadata id | | ↳ `text` | string | RetweetMetadata text | | ↳ `thumbnails` | array | RetweetMetadata thumbnails | | ↳ `url` | string | RetweetMetadata url | | ↳ `user` | object | RetweetMetadata user | | ↳ `avatar` | string | RetweetUserMetadata avatar | | ↳ `name` | string | RetweetUserMetadata name | | ↳ `username` | string | RetweetUserMetadata username | | ↳ `createdAt` | string | RetweetMetadata createdAt | | ↳ `thread` | array | BlueskyPostMetadata thread | | ↳ `assets` | array | ThreadedPost assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `linkAttachment` | object | ThreadedPost linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `metadata` | object | ThreadedPost metadata | | ↳ `bluesky` | object | ThreadItemMetadata bluesky | | ↳ `linkAttachment` | object | ThreadItemBlueskyMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `threads` | object | ThreadItemMetadata threads | | ↳ `linkAttachment` | object | ThreadItemThreadsMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `text` | string | ThreadedPost text | | ↳ `threadCount` | number | BlueskyPostMetadata threadCount | | ↳ `board` | object | PinterestPostMetadata board | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `url` | string | PinterestPostMetadata url | | ↳ `details` | object | GoogleBusinessPostMetadata details | | ↳ `__typename` | string | Concrete GoogleBusinessPostDetails variant | | ↳ `button` | string | GoogleBusinessEventMetaData button | | ↳ `link` | string | GoogleBusinessEventMetaData link | | ↳ `code` | string | GoogleBusinessOfferMetaData code | | ↳ `endDate` | string | GoogleBusinessEventMetaData endDate | | ↳ `startDate` | string | GoogleBusinessEventMetaData startDate | | ↳ `terms` | string | GoogleBusinessOfferMetaData terms | | ↳ `title` | string | GoogleBusinessEventMetaData title | | ↳ `endTime` | string | GoogleBusinessEventMetaData endTime | | ↳ `isFullDayEvent` | boolean | GoogleBusinessEventMetaData isFullDayEvent | | ↳ `startTime` | string | GoogleBusinessEventMetaData startTime | | ↳ `category` | object | YoutubePostMetadata category | | ↳ `categoryId` | string | YoutubeCategory categoryId | | ↳ `title` | string | YoutubeCategory title | | ↳ `embeddable` | boolean | YoutubePostMetadata embeddable | | ↳ `license` | string | YoutubePostMetadata license | | ↳ `madeForKids` | boolean | YoutubePostMetadata madeForKids | | ↳ `notifySubscribers` | boolean | YoutubePostMetadata notifySubscribers | | ↳ `privacy` | string | YoutubePostMetadata privacy | | ↳ `spoilerText` | string | MastodonPostMetadata spoilerText | | ↳ `locationId` | string | ThreadsPostMetadata locationId | | ↳ `locationName` | string | ThreadsPostMetadata locationName | | ↳ `topic` | string | ThreadsPostMetadata topic | | ↳ `metrics` | array | Post metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | Post metricsUpdatedAt | | ↳ `notes` | array | Post notes | | ↳ `id` | string | Note id | | ↳ `allowedActions` | array | Note allowedActions | | ↳ `author` | object | Note author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `text` | string | Note text | | ↳ `type` | string | Note type | | ↳ `createdAt` | string | Note createdAt | | ↳ `updatedAt` | string | Note updatedAt | | ↳ `notificationStatus` | string | Post notificationStatus | | ↳ `schedulingType` | string | Post schedulingType | | ↳ `sentAt` | string | Post sentAt | | ↳ `sharedNow` | boolean | Post sharedNow | | ↳ `shareMode` | string | Post shareMode | | ↳ `status` | string | Post status | | ↳ `tags` | array | Post tags | | ↳ `id` | string | Tag id | | ↳ `color` | string | Tag color | | ↳ `colorName` | string | Tag colorName | | ↳ `isLocked` | boolean | Tag isLocked | | ↳ `name` | string | Tag name | | ↳ `text` | string | Post text | | ↳ `via` | string | Post via | | ↳ `createdAt` | string | Post createdAt | | ↳ `updatedAt` | string | Post updatedAt | | `pageInfo` | object | Pagination info for fetching the next page | | ↳ `endCursor` | string | PaginationPageInfo endCursor | | ↳ `hasNextPage` | boolean | PaginationPageInfo hasNextPage | | ↳ `hasPreviousPage` | boolean | PaginationPageInfo hasPreviousPage | | ↳ `startCursor` | string | PaginationPageInfo startCursor | ### Buffer Get Post [#buffer-get-post] Get a single Buffer post by ID, including its status, schedule, and media #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | Buffer API key | | `postId` | string | Yes | ID of the post to fetch | #### Output [#output-3] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `post` | object | The requested post | | ↳ `id` | string | Post id | | ↳ `allowedActions` | array | Post allowedActions | | ↳ `assets` | array | Post assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `author` | object | Post author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `channel` | object | Post channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | | ↳ `channelId` | string | Post channelId | | ↳ `channelService` | string | Post channelService | | ↳ `contentItemId` | string | Post contentItemId | | ↳ `dueAt` | string | Post dueAt | | ↳ `error` | object | Post error | | ↳ `message` | string | PostPublishingError message | | ↳ `rawError` | string | PostPublishingError rawError | | ↳ `supportUrl` | string | PostPublishingError supportUrl | | ↳ `externalLink` | string | Post externalLink | | ↳ `ideaId` | string | Post ideaId | | ↳ `isCustomScheduled` | boolean | Post isCustomScheduled | | ↳ `metadata` | object | Post metadata | | ↳ `__typename` | string | Concrete PostMetadata variant | | ↳ `annotations` | array | SubstackPostMetadata annotations | | ↳ `content` | string | Annotation content | | ↳ `indices` | array | Annotation indices | | ↳ `text` | string | Annotation text | | ↳ `type` | string | Annotation type | | ↳ `url` | string | Annotation url | | ↳ `firstComment` | string | LinkedInPostMetadata firstComment | | ↳ `geolocation` | object | InstagramPostMetadata geolocation | | ↳ `id` | string | InstagramGeolocation id | | ↳ `text` | string | InstagramGeolocation text | | ↳ `isAiGenerated` | boolean | TiktokPostMetadata isAiGenerated | | ↳ `link` | string | InstagramPostMetadata link | | ↳ `shouldShareToFeed` | boolean | InstagramPostMetadata shouldShareToFeed | | ↳ `stickerFields` | object | InstagramPostMetadata stickerFields | | ↳ `music` | string | InstagramStickerFields music | | ↳ `other` | string | InstagramStickerFields other | | ↳ `products` | string | InstagramStickerFields products | | ↳ `text` | string | InstagramStickerFields text | | ↳ `topics` | string | InstagramStickerFields topics | | ↳ `type` | string | SubstackPostMetadata type | | ↳ `linkAttachment` | object | SubstackPostMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `title` | string | TiktokPostMetadata title | | ↳ `retweet` | object | TwitterPostMetadata retweet | | ↳ `id` | string | RetweetMetadata id | | ↳ `text` | string | RetweetMetadata text | | ↳ `thumbnails` | array | RetweetMetadata thumbnails | | ↳ `url` | string | RetweetMetadata url | | ↳ `user` | object | RetweetMetadata user | | ↳ `avatar` | string | RetweetUserMetadata avatar | | ↳ `name` | string | RetweetUserMetadata name | | ↳ `username` | string | RetweetUserMetadata username | | ↳ `createdAt` | string | RetweetMetadata createdAt | | ↳ `thread` | array | BlueskyPostMetadata thread | | ↳ `assets` | array | ThreadedPost assets | | ↳ `__typename` | string | Concrete Asset variant | | ↳ `id` | string | VideoAsset id | | ↳ `document` | object | DocumentAsset document | | ↳ `filesize` | number | DocumentMetadata filesize | | ↳ `numPages` | number | DocumentMetadata numPages | | ↳ `thumbnails` | array | DocumentMetadata thumbnails | | ↳ `title` | string | DocumentMetadata title | | ↳ `mimeType` | string | VideoAsset mimeType | | ↳ `source` | string | VideoAsset source | | ↳ `thumbnail` | string | VideoAsset thumbnail | | ↳ `type` | string | VideoAsset type | | ↳ `image` | object | ImageAsset image | | ↳ `altText` | string | ImageMetadata altText | | ↳ `animatedThumbnail` | string | ImageMetadata animatedThumbnail | | ↳ `height` | number | ImageMetadata height | | ↳ `isAnimated` | boolean | ImageMetadata isAnimated | | ↳ `userTags` | array | ImageMetadata userTags | | ↳ `handle` | string | UserTag handle | | ↳ `x` | number | UserTag x | | ↳ `y` | number | UserTag y | | ↳ `width` | number | ImageMetadata width | | ↳ `video` | object | VideoAsset video | | ↳ `audioCodec` | string | VideoMetadata audioCodec | | ↳ `containerFormat` | string | VideoMetadata containerFormat | | ↳ `durationMs` | number | VideoMetadata durationMs | | ↳ `fileSize` | number | VideoMetadata fileSize | | ↳ `frameRate` | number | VideoMetadata frameRate | | ↳ `height` | number | VideoMetadata height | | ↳ `isTranscodingRequired` | boolean | VideoMetadata isTranscodingRequired | | ↳ `isVideoProcessing` | boolean | VideoMetadata isVideoProcessing | | ↳ `rotationDegree` | number | VideoMetadata rotationDegree | | ↳ `thumbnailOffset` | number | VideoMetadata thumbnailOffset | | ↳ `title` | string | VideoMetadata title | | ↳ `videoBitRate` | number | VideoMetadata videoBitRate | | ↳ `videoCodec` | string | VideoMetadata videoCodec | | ↳ `width` | number | VideoMetadata width | | ↳ `linkAttachment` | object | ThreadedPost linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `metadata` | object | ThreadedPost metadata | | ↳ `bluesky` | object | ThreadItemMetadata bluesky | | ↳ `linkAttachment` | object | ThreadItemBlueskyMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `threads` | object | ThreadItemMetadata threads | | ↳ `linkAttachment` | object | ThreadItemThreadsMetadata linkAttachment | | ↳ `expandedUrl` | string | LinkAttachment expandedUrl | | ↳ `text` | string | LinkAttachment text | | ↳ `thumbnail` | string | LinkAttachment thumbnail | | ↳ `thumbnails` | array | LinkAttachment thumbnails | | ↳ `title` | string | LinkAttachment title | | ↳ `url` | string | LinkAttachment url | | ↳ `text` | string | ThreadedPost text | | ↳ `threadCount` | number | BlueskyPostMetadata threadCount | | ↳ `board` | object | PinterestPostMetadata board | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `url` | string | PinterestPostMetadata url | | ↳ `details` | object | GoogleBusinessPostMetadata details | | ↳ `__typename` | string | Concrete GoogleBusinessPostDetails variant | | ↳ `button` | string | GoogleBusinessEventMetaData button | | ↳ `link` | string | GoogleBusinessEventMetaData link | | ↳ `code` | string | GoogleBusinessOfferMetaData code | | ↳ `endDate` | string | GoogleBusinessEventMetaData endDate | | ↳ `startDate` | string | GoogleBusinessEventMetaData startDate | | ↳ `terms` | string | GoogleBusinessOfferMetaData terms | | ↳ `title` | string | GoogleBusinessEventMetaData title | | ↳ `endTime` | string | GoogleBusinessEventMetaData endTime | | ↳ `isFullDayEvent` | boolean | GoogleBusinessEventMetaData isFullDayEvent | | ↳ `startTime` | string | GoogleBusinessEventMetaData startTime | | ↳ `category` | object | YoutubePostMetadata category | | ↳ `categoryId` | string | YoutubeCategory categoryId | | ↳ `title` | string | YoutubeCategory title | | ↳ `embeddable` | boolean | YoutubePostMetadata embeddable | | ↳ `license` | string | YoutubePostMetadata license | | ↳ `madeForKids` | boolean | YoutubePostMetadata madeForKids | | ↳ `notifySubscribers` | boolean | YoutubePostMetadata notifySubscribers | | ↳ `privacy` | string | YoutubePostMetadata privacy | | ↳ `spoilerText` | string | MastodonPostMetadata spoilerText | | ↳ `locationId` | string | ThreadsPostMetadata locationId | | ↳ `locationName` | string | ThreadsPostMetadata locationName | | ↳ `topic` | string | ThreadsPostMetadata topic | | ↳ `metrics` | array | Post metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | Post metricsUpdatedAt | | ↳ `notes` | array | Post notes | | ↳ `id` | string | Note id | | ↳ `allowedActions` | array | Note allowedActions | | ↳ `author` | object | Note author | | ↳ `id` | string | Author id | | ↳ `avatar` | string | Author avatar | | ↳ `email` | string | Author email | | ↳ `isDeleted` | boolean | Author isDeleted | | ↳ `name` | string | Author name | | ↳ `urn` | string | Author urn | | ↳ `text` | string | Note text | | ↳ `type` | string | Note type | | ↳ `createdAt` | string | Note createdAt | | ↳ `updatedAt` | string | Note updatedAt | | ↳ `notificationStatus` | string | Post notificationStatus | | ↳ `schedulingType` | string | Post schedulingType | | ↳ `sentAt` | string | Post sentAt | | ↳ `sharedNow` | boolean | Post sharedNow | | ↳ `shareMode` | string | Post shareMode | | ↳ `status` | string | Post status | | ↳ `tags` | array | Post tags | | ↳ `id` | string | Tag id | | ↳ `color` | string | Tag color | | ↳ `colorName` | string | Tag colorName | | ↳ `isLocked` | boolean | Tag isLocked | | ↳ `name` | string | Tag name | | ↳ `text` | string | Post text | | ↳ `via` | string | Post via | | ↳ `createdAt` | string | Post createdAt | | ↳ `updatedAt` | string | Post updatedAt | ### Buffer Delete Post [#buffer-delete-post] Delete a Buffer post by ID #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------ | | `apiKey` | string | Yes | Buffer API key | | `postId` | string | Yes | ID of the post to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `deleted` | boolean | Whether the post was deleted | | `id` | string | ID of the deleted post | ### Buffer Get Channels [#buffer-get-channels] List the social media channels connected to a Buffer organization, including their channel IDs (needed to create posts) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) | | `filter` | json | No | Filter channels by locked status or product. Schema | #### Output [#output-5] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `channels` | array | Channels connected to the organization | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | ### Buffer Get Channel [#buffer-get-channel] Get one connected channel, including its posting schedule, limits and network settings #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Buffer API key with account:read permission | | `channelId` | string | Yes | Buffer channel ID | #### Output [#output-6] | Parameter | Type | Description | | -------------------------------------------- | ------- | --------------------------------------------------------- | | `channel` | object | Connected channel | | ↳ `id` | string | Channel id | | ↳ `allowedActions` | array | Channel allowedActions | | ↳ `avatar` | string | Channel avatar | | ↳ `descriptor` | string | Channel descriptor | | ↳ `displayName` | string | Channel displayName | | ↳ `externalLink` | string | Channel externalLink | | ↳ `hasActiveMemberDevice` | boolean | Channel hasActiveMemberDevice | | ↳ `isDisconnected` | boolean | Channel isDisconnected | | ↳ `isLocked` | boolean | Channel isLocked | | ↳ `isNew` | boolean | Channel isNew | | ↳ `isQueuePaused` | boolean | Channel isQueuePaused | | ↳ `linkShortening` | object | Channel linkShortening | | ↳ `config` | object | ChannelLinkShortening config | | ↳ `domain` | string | LinkShorteningConfig domain | | ↳ `name` | string | LinkShorteningConfig name | | ↳ `isEnabled` | boolean | ChannelLinkShortening isEnabled | | ↳ `metadata` | object | Channel metadata | | ↳ `__typename` | string | Concrete ChannelMetadata variant | | ↳ `defaultToReminders` | boolean | YoutubeMetadata defaultToReminders | | ↳ `boards` | array | PinterestMetadata boards | | ↳ `id` | string | PinterestBoard id | | ↳ `avatar` | string | PinterestBoard avatar | | ↳ `description` | string | PinterestBoard description | | ↳ `name` | string | PinterestBoard name | | ↳ `serviceId` | string | PinterestBoard serviceId | | ↳ `url` | string | PinterestBoard url | | ↳ `maxCharacters` | number | MastodonMetadata maxCharacters | | ↳ `serverUrl` | string | BlueskyMetadata serverUrl | | ↳ `locationData` | object | FacebookMetadata locationData | | ↳ `googleAccountId` | string | LocationData googleAccountId | | ↳ `location` | string | LocationData location | | ↳ `mapsLink` | string | LocationData mapsLink | | ↳ `subscriptionType` | string | TwitterMetadata subscriptionType | | ↳ `shouldShowLinkedinAnalyticsRefreshBanner` | boolean | LinkedInMetadata shouldShowLinkedinAnalyticsRefreshBanner | | ↳ `businessPortfolioId` | string | WhatsAppMetadata businessPortfolioId | | ↳ `lastSubscribedAt` | string | WhatsAppMetadata lastSubscribedAt | | ↳ `phoneNumberId` | string | WhatsAppMetadata phoneNumberId | | ↳ `wabaId` | string | WhatsAppMetadata wabaId | | ↳ `name` | string | Channel name | | ↳ `organizationId` | string | Channel organizationId | | ↳ `postingGoal` | object | Channel postingGoal | | ↳ `goal` | number | PostingGoal goal | | ↳ `periodEnd` | string | PostingGoal periodEnd | | ↳ `periodStart` | string | PostingGoal periodStart | | ↳ `scheduledCount` | number | PostingGoal scheduledCount | | ↳ `sentCount` | number | PostingGoal sentCount | | ↳ `status` | string | PostingGoal status | | ↳ `postingSchedule` | array | Channel postingSchedule | | ↳ `day` | string | ScheduleV2 day | | ↳ `paused` | boolean | ScheduleV2 paused | | ↳ `times` | array | ScheduleV2 times | | ↳ `products` | array | Channel products | | ↳ `scopes` | array | Channel scopes | | ↳ `service` | string | Channel service | | ↳ `serviceId` | string | Channel serviceId | | ↳ `showTrendingTopicSuggestions` | boolean | Channel showTrendingTopicSuggestions | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type | | ↳ `weeklyPostingLimit` | object | Channel weeklyPostingLimit | | ↳ `limit` | number | WeeklyPostingLimit limit | | ↳ `scheduled` | number | WeeklyPostingLimit scheduled | | ↳ `sent` | number | WeeklyPostingLimit sent | | ↳ `createdAt` | string | Channel createdAt | | ↳ `updatedAt` | string | Channel updatedAt | ### Buffer Get Aggregated Post Metrics [#buffer-get-aggregated-post-metrics] Aggregate published post metrics across an organization or selected channels over a date range of up to 365 days #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Buffer API key with insights:read permission | | `organizationId` | string | Yes | Buffer organization ID | | `startDateTime` | string | Yes | Start of aggregation window as an ISO 8601 timestamp | | `endDateTime` | string | Yes | End of aggregation window as an ISO 8601 timestamp | | `channelIds` | json | No | Channel ID array or comma-separated IDs. Omit for all permitted channels; \[] returns an empty result. | | `tags` | json | No | Filter metrics by tag IDs or untagged status. Schema | #### Output [#output-7] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------- | | `aggregatedPostMetrics` | object | Aggregated performance metrics | | ↳ `metrics` | array | AggregatedPostMetrics metrics | | ↳ `description` | string | PostMetric description | | ↳ `name` | string | PostMetric name | | ↳ `type` | string | PostMetric type | | ↳ `unit` | string | PostMetric unit | | ↳ `value` | number | PostMetric value | | ↳ `metricsUpdatedAt` | string | AggregatedPostMetrics metricsUpdatedAt | ### Buffer Get Daily Posting Limits [#buffer-get-daily-posting-limits] Check sent and scheduled post counts against each channel’s daily limit for a date #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Buffer API key with posts:read permission | | `channelIds` | json | Yes | Channel ID array or comma-separated IDs; all channels must belong to the same organization | | `date` | string | No | ISO 8601 timestamp for the date to check; omit for today | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------- | --------------------------------- | | `limits` | array | Daily limit status per channel | | ↳ `channelId` | string | DailyPostingLimitStatus channelId | | ↳ `isAtLimit` | boolean | DailyPostingLimitStatus isAtLimit | | ↳ `limit` | number | DailyPostingLimitStatus limit | | ↳ `scheduled` | number | DailyPostingLimitStatus scheduled | | ↳ `sent` | number | DailyPostingLimitStatus sent | ### Buffer Create Idea [#buffer-create-idea] Save a content idea to a Buffer organization for later drafting and scheduling #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) | | `text` | string | No | Text content of the idea | | `title` | string | No | Optional title for the idea | | `groupId` | string | No | Optional idea group (board column) to place the idea in | | `content` | json | No | Idea title, text, and media content. Schema | | `group` | json | No | Assign the idea to a group and optionally position it after another idea. Schema | | `cta` | string | No | Call to action tracking value | | `templateId` | string | No | Template ID used to create the idea | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ------------------------- | | `idea` | object | The created idea | | ↳ `id` | string | Idea id | | ↳ `content` | object | Idea content | | ↳ `aiAssisted` | boolean | IdeaContent aiAssisted | | ↳ `date` | string | IdeaContent date | | ↳ `media` | array | IdeaContent media | | ↳ `id` | string | IdeaMedia id | | ↳ `alt` | string | IdeaMedia alt | | ↳ `size` | number | IdeaMedia size | | ↳ `source` | object | IdeaMedia source | | ↳ `id` | string | IdeaMediaSource id | | ↳ `author` | string | IdeaMediaSource author | | ↳ `authorUrl` | string | IdeaMediaSource authorUrl | | ↳ `name` | string | IdeaMediaSource name | | ↳ `thumbnailUrl` | string | IdeaMedia thumbnailUrl | | ↳ `type` | string | IdeaMedia type | | ↳ `url` | string | IdeaMedia url | | ↳ `services` | array | IdeaContent services | | ↳ `tags` | array | IdeaContent tags | | ↳ `id` | string | PublishingTag id | | ↳ `color` | string | PublishingTag color | | ↳ `colorName` | string | PublishingTag colorName | | ↳ `name` | string | PublishingTag name | | ↳ `text` | string | IdeaContent text | | ↳ `title` | string | IdeaContent title | | ↳ `groupId` | string | Idea groupId | | ↳ `organizationId` | string | Idea organizationId | | ↳ `position` | number | Idea position | | ↳ `createdAt` | number | Idea createdAt | | ↳ `updatedAt` | number | Idea updatedAt | | ↳ `title` | string | Idea content title | | ↳ `text` | string | Idea content text | ### Buffer Get Ideas [#buffer-get-ideas] List content ideas saved in a Buffer organization #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) | | `limit` | number | No | Maximum number of ideas to return (default 20) | | `after` | string | No | Pagination cursor from a previous page (pageInfo.endCursor) | | `groupFilter` | json | No | Filter ideas by group. Schema | | `tagsFilter` | json | No | Filter ideas by tag IDs or untagged status. Schema | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `ideas` | array | Content ideas in the organization | | ↳ `id` | string | Idea id | | ↳ `content` | object | Idea content | | ↳ `aiAssisted` | boolean | IdeaContent aiAssisted | | ↳ `date` | string | IdeaContent date | | ↳ `media` | array | IdeaContent media | | ↳ `id` | string | IdeaMedia id | | ↳ `alt` | string | IdeaMedia alt | | ↳ `size` | number | IdeaMedia size | | ↳ `source` | object | IdeaMedia source | | ↳ `id` | string | IdeaMediaSource id | | ↳ `author` | string | IdeaMediaSource author | | ↳ `authorUrl` | string | IdeaMediaSource authorUrl | | ↳ `name` | string | IdeaMediaSource name | | ↳ `thumbnailUrl` | string | IdeaMedia thumbnailUrl | | ↳ `type` | string | IdeaMedia type | | ↳ `url` | string | IdeaMedia url | | ↳ `services` | array | IdeaContent services | | ↳ `tags` | array | IdeaContent tags | | ↳ `id` | string | PublishingTag id | | ↳ `color` | string | PublishingTag color | | ↳ `colorName` | string | PublishingTag colorName | | ↳ `name` | string | PublishingTag name | | ↳ `text` | string | IdeaContent text | | ↳ `title` | string | IdeaContent title | | ↳ `groupId` | string | Idea groupId | | ↳ `organizationId` | string | Idea organizationId | | ↳ `position` | number | Idea position | | ↳ `createdAt` | number | Idea createdAt | | ↳ `updatedAt` | number | Idea updatedAt | | ↳ `title` | string | Idea content title | | ↳ `text` | string | Idea content text | | `edges` | array | Edges with cursor and full idea node | | ↳ `cursor` | string | Cursor for this node | | ↳ `node` | object | node output from the tool | | ↳ `id` | string | Idea id | | ↳ `content` | object | Idea content | | ↳ `aiAssisted` | boolean | IdeaContent aiAssisted | | ↳ `date` | string | IdeaContent date | | ↳ `media` | array | IdeaContent media | | ↳ `id` | string | IdeaMedia id | | ↳ `alt` | string | IdeaMedia alt | | ↳ `size` | number | IdeaMedia size | | ↳ `source` | object | IdeaMedia source | | ↳ `id` | string | IdeaMediaSource id | | ↳ `author` | string | IdeaMediaSource author | | ↳ `authorUrl` | string | IdeaMediaSource authorUrl | | ↳ `name` | string | IdeaMediaSource name | | ↳ `thumbnailUrl` | string | IdeaMedia thumbnailUrl | | ↳ `type` | string | IdeaMedia type | | ↳ `url` | string | IdeaMedia url | | ↳ `services` | array | IdeaContent services | | ↳ `tags` | array | IdeaContent tags | | ↳ `id` | string | PublishingTag id | | ↳ `color` | string | PublishingTag color | | ↳ `colorName` | string | PublishingTag colorName | | ↳ `name` | string | PublishingTag name | | ↳ `text` | string | IdeaContent text | | ↳ `title` | string | IdeaContent title | | ↳ `groupId` | string | Idea groupId | | ↳ `organizationId` | string | Idea organizationId | | ↳ `position` | number | Idea position | | ↳ `createdAt` | number | Idea createdAt | | ↳ `updatedAt` | number | Idea updatedAt | | ↳ `title` | string | Idea content title | | ↳ `text` | string | Idea content text | | `pageInfo` | object | Pagination info for fetching the next page | | ↳ `endCursor` | string | PaginationPageInfo endCursor | | ↳ `hasNextPage` | boolean | PaginationPageInfo hasNextPage | | ↳ `hasPreviousPage` | boolean | PaginationPageInfo hasPreviousPage | | ↳ `startCursor` | string | PaginationPageInfo startCursor | ### Buffer Get Idea Groups [#buffer-get-idea-groups] List idea groups (board columns) in a Buffer organization, including the group IDs used when creating ideas #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationId` | string | Yes | Buffer organization ID (find it with the Get Account operation) | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------- | | `ideaGroups` | array | Idea groups (board columns) in the organization | | ↳ `id` | string | IdeaGroup id | | ↳ `isLocked` | boolean | IdeaGroup isLocked | | ↳ `name` | string | IdeaGroup name | ### Buffer Get Account [#buffer-get-account] Get the authenticated Buffer account, including its organizations and their IDs (needed for channel and post operations) #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Buffer API key | | `organizationFilter` | json | No | Filter account organizations by organization ID. Schema | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------- | | `account` | object | The authenticated Buffer account | | ↳ `id` | string | Account id | | ↳ `email` | string | Account email | | ↳ `backupEmail` | string | Account backupEmail | | ↳ `avatar` | string | Account avatar | | ↳ `createdAt` | string | Account createdAt | | ↳ `organizations` | array | Account organizations | | ↳ `id` | string | Organization id | | ↳ `channelCount` | number | Organization channelCount | | ↳ `limits` | object | Organization limits | | ↳ `channels` | number | OrganizationLimits channels | | ↳ `generateContent` | number | OrganizationLimits generateContent | | ↳ `ideaGroups` | number | OrganizationLimits ideaGroups | | ↳ `ideas` | number | OrganizationLimits ideas | | ↳ `members` | number | OrganizationLimits members | | ↳ `postTemplates` | number | OrganizationLimits postTemplates | | ↳ `savedReplies` | number | OrganizationLimits savedReplies | | ↳ `scheduledPosts` | number | OrganizationLimits scheduledPosts | | ↳ `scheduledStoriesPerChannel` | number | OrganizationLimits scheduledStoriesPerChannel | | ↳ `scheduledThreadsPerChannel` | number | OrganizationLimits scheduledThreadsPerChannel | | ↳ `tags` | number | OrganizationLimits tags | | ↳ `members` | object | Organization members | | ↳ `totalCount` | number | MemberConnection totalCount | | ↳ `name` | string | Organization name | | ↳ `ownerEmail` | string | Organization ownerEmail | | ↳ `shouldEnforce2FASetup` | boolean | Organization shouldEnforce2FASetup | | ↳ `timezone` | string | Account timezone | | ↳ `name` | string | Account name | | ↳ `preferences` | object | Account preferences | | ↳ `timeFormat` | string | Preferences timeFormat | | ↳ `startOfWeek` | string | Preferences startOfWeek | | ↳ `defaultScheduleOption` | string | Preferences defaultScheduleOption | | ↳ `connectedApps` | array | Account connectedApps | | ↳ `category` | string | ConnectedApp category | | ↳ `clientId` | string | ConnectedApp clientId | | ↳ `description` | string | ConnectedApp description | | ↳ `name` | string | ConnectedApp name | | ↳ `scopes` | array | ConnectedApp scopes | | ↳ `userId` | string | ConnectedApp userId | | ↳ `website` | string | ConnectedApp website | | ↳ `createdAt` | string | ConnectedApp createdAt | ## JSON Input Schemas [#json-input-schemas] These GraphQL type definitions describe the JSON inputs. `!` marks required values, and brackets mark arrays. Fields with a provider default can be omitted. ### AssetInput [#assetinput] ```graphql input AssetInput { document: DocumentAssetInput image: ImageAssetInput video: VideoAssetInput } input DocumentAssetInput { thumbnailUrl: String! title: String! url: String! } input ImageAssetInput { metadata: ImageMetadataInput thumbnailUrl: String url: String! } input ImageMetadataInput { altText: String! animatedThumbnail: String userTags: [UserTagInput!] } input UserTagInput { handle: String! x: Float! y: Float! } input VideoAssetInput { metadata: VideoMetadataInput thumbnailUrl: String url: String! } input VideoMetadataInput { thumbnailOffset: Int title: String } ``` ### PostInputMetaData [#postinputmetadata] ```graphql input PostInputMetaData { bluesky: BlueskyPostMetadataInput facebook: FacebookPostMetadataInput google: GoogleBusinessPostMetadataInput instagram: InstagramPostMetadataInput linkedin: LinkedInPostMetadataInput mastodon: MastodonPostMetadataInput pinterest: PinterestPostMetadataInput substack: SubstackPostMetadataInput threads: ThreadsPostMetadataInput tiktok: TikTokPostMetadataInput twitter: TwitterPostMetadataInput youtube: YoutubePostMetadataInput } input BlueskyPostMetadataInput { linkAttachment: LinkAttachmentInput thread: [ThreadedPostInput!] } input LinkAttachmentInput { description: String thumbnail: LinkAttachmentThumbnailInput title: String url: String! } input LinkAttachmentThumbnailInput { url: String! } input ThreadedPostInput { assets: [AssetInput!]! # Provider default when omitted metadata: ThreadItemMetadataInput text: String } input AssetInput { document: DocumentAssetInput image: ImageAssetInput video: VideoAssetInput } input DocumentAssetInput { thumbnailUrl: String! title: String! url: String! } input ImageAssetInput { metadata: ImageMetadataInput thumbnailUrl: String url: String! } input ImageMetadataInput { altText: String! animatedThumbnail: String userTags: [UserTagInput!] } input UserTagInput { handle: String! x: Float! y: Float! } input VideoAssetInput { metadata: VideoMetadataInput thumbnailUrl: String url: String! } input VideoMetadataInput { thumbnailOffset: Int title: String } input ThreadItemMetadataInput { bluesky: ThreadItemBlueskyMetadataInput threads: ThreadItemThreadsMetadataInput } input ThreadItemBlueskyMetadataInput { linkAttachment: LinkAttachmentInput } input ThreadItemThreadsMetadataInput { linkAttachment: LinkAttachmentInput } input FacebookPostMetadataInput { annotations: [AnnotationInputFacebook!] firstComment: String linkAttachment: LinkAttachmentInput type: PostTypeFacebook! } input AnnotationInputFacebook { content: String! indices: [Int!]! text: String! url: String! } enum PostTypeFacebook { post reel story } input GoogleBusinessPostMetadataInput { detailsEvent: GoogleBusinessEventMetaDataInput detailsOffer: GoogleBusinessOfferMetaDataInput detailsWhatsNew: GoogleBusinessWhatsNewMetaDataInput title: String type: PostTypeGoogleBusiness! } input GoogleBusinessEventMetaDataInput { button: GoogleBusinessPostActionType endDate: DateTime isFullDayEvent: Boolean! link: String startDate: DateTime title: String } enum GoogleBusinessPostActionType { book call learn_more none order shop signup } input GoogleBusinessOfferMetaDataInput { code: String endDate: DateTime link: String startDate: DateTime terms: String title: String } input GoogleBusinessWhatsNewMetaDataInput { button: GoogleBusinessPostActionType link: String } enum PostTypeGoogleBusiness { event offer whats_new } input InstagramPostMetadataInput { firstComment: String geolocation: InstagramGeolocationInput isAiGenerated: Boolean link: String shouldShareToFeed: Boolean! stickerFields: InstagramStickerFieldsInput type: PostType! } input InstagramGeolocationInput { id: String text: String } input InstagramStickerFieldsInput { music: String other: String products: String text: String topics: String } enum PostType { carousel event ghost_post offer post reel short story thread whats_new } input LinkedInPostMetadataInput { annotations: [AnnotationInputLinkedIn!] firstComment: String linkAttachment: LinkAttachmentInput } input AnnotationInputLinkedIn { id: String! entity: String! length: Int! link: String! localizedName: String! start: Int! vanityName: String! } input MastodonPostMetadataInput { spoilerText: String thread: [ThreadedPostInput!] } input PinterestPostMetadataInput { boardServiceId: String title: String url: String } input SubstackPostMetadataInput { linkAttachment: LinkAttachmentInput } input ThreadsPostMetadataInput { linkAttachment: LinkAttachmentInput locationId: String locationName: String thread: [ThreadedPostInput!] topic: String type: PostType } input TikTokPostMetadataInput { isAiGenerated: Boolean title: String } input TwitterPostMetadataInput { isAiGenerated: Boolean retweet: RetweetMetadataInput thread: [ThreadedPostInput!] } input RetweetMetadataInput { id: String! comment: String } input YoutubePostMetadataInput { categoryId: String embeddable: Boolean # Provider default when omitted isAiGenerated: Boolean license: YoutubeLicense # Provider default when omitted madeForKids: Boolean # Provider default when omitted notifySubscribers: Boolean # Provider default when omitted privacy: YoutubePrivacy # Provider default when omitted title: String } enum YoutubeLicense { creativeCommon youtube } enum YoutubePrivacy { private public unlisted } ``` ### PostsFiltersInput [#postsfiltersinput] ```graphql input PostsFiltersInput { channelIds: [ChannelId!] dueAt: DateTimeComparator dueAtPresence: DateTimePresence postTypes: [PostType!] status: [PostStatus!] tags: TagComparator createdAt: DateTimeComparator } input DateTimeComparator { end: DateTime start: DateTime } enum DateTimePresence { absent present } enum PostType { carousel event ghost_post offer post reel short story thread whats_new } enum PostStatus { draft error needs_approval scheduled sending sent } input TagComparator { in: [TagId!]! isEmpty: Boolean! # Provider default when omitted } ``` ### PostSortInput [#postsortinput] ```graphql input PostSortInput { direction: SortDirection! field: PostSortableKey! } enum SortDirection { asc desc } enum PostSortableKey { dueAt createdAt } ``` ### ChannelsFiltersInput [#channelsfiltersinput] ```graphql input ChannelsFiltersInput { isLocked: Boolean product: Product } enum Product { analyze buffer comments engage publish startPage } ``` ### TagComparator [#tagcomparator] ```graphql input TagComparator { in: [TagId!]! isEmpty: Boolean! # Provider default when omitted } ``` ### IdeaContentInput [#ideacontentinput] ```graphql input IdeaContentInput { aiAssisted: Boolean date: DateTime media: [IdeaMediaInput!] services: [Service!] tags: [TagInput!] text: String title: String } input IdeaMediaInput { url: String! alt: String thumbnailUrl: String type: MediaType! size: Int source: IdeaMediaSourceInput } enum MediaType { image gif video link document unsupported } input IdeaMediaSourceInput { name: String! id: String trigger: String author: String authorUrl: String } enum Service { bluesky facebook googlebusiness instagram linkedin mastodon pinterest startPage substack threads tiktok twitter whatsapp youtube } input TagInput { id: ID! name: String! color: String! } ``` ### IdeaGroupInput [#ideagroupinput] ```graphql input IdeaGroupInput { groupId: ID placeAfterId: ID } ``` ### IdeasGroupFilter [#ideasgroupfilter] ```graphql input IdeasGroupFilter { # Choose exactly one non-null field groups: [ID!] membership: IdeaGroupMembership } enum IdeaGroupMembership { grouped ungrouped } ``` ### OrganizationFilterInput [#organizationfilterinput] ```graphql input OrganizationFilterInput { organizationId: String! } ``` --- # Cal.com API Keys (/integrations/calcom-service-account) Connect Cal.com with an API key from the account whose bookings and event types your workflows should manage. The key carries that user's permissions and remains valid until it expires or is revoked. ## Prerequisites [#prerequisites] You need a Cal.com account (cal.com cloud). Any user can create API keys from their own settings — no admin role required. Cal.com API keys are tied to the user who creates them. For production workflows, create the key from a dedicated service login (e.g. `agentserve-bot@yourcompany.com`) rather than a personal account — the credential then survives any individual employee leaving, and bookings and event types the workflows manage belong to the bot user. ## Creating the API Key [#creating-the-api-key] Log in to Cal.com and go to **Settings** → **Developer** → **API keys** (direct link: [app.cal.com/settings/developer/api-keys](https://app.cal.com/settings/developer/api-keys)) {/* TODO(screenshot): Cal.com settings Developer section with the API keys page open */} Click **+ Add**, give the key a name (e.g. `agentserve-workflows`), and set its expiry. Choose a non-expiring key if the option is available — otherwise pick the longest expiry offered and note the date so you can rotate before it lapses {/* TODO(screenshot): Cal.com create API key dialog with name and expiry fields */} Copy the key when it's shown. Cal.com only displays it once — if you close the dialog, you'll have to create a new key. Live-mode keys start with `cal_live_`; test-mode keys start with `cal_`. Either form is accepted. The API key carries the full privileges of the user who created it — there is no scope selection. Treat it like a password: do not commit it to source control or share it publicly. Agent Serve encrypts the key at rest. ## Adding the API Key to Agent Serve [#adding-the-api-key-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Cal.com" and open it, then click **Add to Agent Serve** and choose **Add API key** {/* TODO(screenshot): Cal.com integration page with the service-account connect option */} Paste the API key, and optionally set a display name and description {/* TODO(screenshot): Add Cal.com API key dialog with the API key filled in */} Click **Add API key**. Agent Serve verifies the key by calling Cal.com's `/v2/me` endpoint — if it fails, you'll see a specific error explaining what went wrong. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Cal.com block to your workflow. In the credential dropdown, select the saved Cal.com API key. Select it and configure the block as you normally would. {/* TODO(screenshot): Cal.com block in a workflow with the Cal.com service account selected as the credential */} The block calls Cal.com's API (`api.cal.com/v2`) with the key. The credential acts as the Cal.com user who created the key — bookings, event types, and schedules the workflows touch are the ones that user can see and manage. --- # Cal.com (/integrations/calcom) {/* MANUAL-CONTENT-START:intro */} Use [Cal.com](https://cal.com/) to manage bookings, event types, schedules, and available slots. Booking webhooks can start workflows when a booking changes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Cal.com into your workflow. Create and manage bookings, event types, schedules, and check availability slots. Supports creating, listing, rescheduling, and canceling bookings, as well as managing event types and schedules. Can also trigger workflows based on Cal.com webhook events (booking created, cancelled, rescheduled). Connect your Cal.com account via OAuth. ## Actions [#actions] ### Cal.com Create Booking [#calcom-create-booking] Create a new booking on Cal.com #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `eventTypeId` | number | Yes | The ID of the event type to book | | `start` | string | Yes | Start time in UTC ISO 8601 format (e.g., 2024-01-15T09:00:00Z) | | `attendee` | object | Yes | Attendee information object with name, email, timeZone, and optional phoneNumber. The Cal.com block composes this from its individual attendee fields; a direct caller sends the object. | | `guests` | array | No | Array of guest email addresses | | `lengthInMinutes` | number | No | Duration of the booking in minutes (overrides event type default) | | `metadata` | object | No | Custom metadata to attach to the booking | #### Output [#output] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Created booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `meetingUrl` | string | URL to join the meeting | | ↳ `location` | string | Location of the booking | | ↳ `absentHost` | boolean | Whether the host was absent | | ↳ `guests` | array | Guest email addresses | | ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `icsUid` | string | ICS calendar UID | | ↳ `createdAt` | string | When the booking was created | ### Cal.com Get Booking [#calcom-get-booking] Get details of a specific booking by its UID #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `bookingUid` | string | Yes | Unique identifier (UID) of the booking | #### Output [#output-1] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `description` | string | Description of the booking | | ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `meetingUrl` | string | URL to join the meeting | | ↳ `location` | string | Location of the booking | | ↳ `absentHost` | boolean | Whether the host was absent | | ↳ `guests` | array | Guest email addresses | | ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `rating` | number | Booking rating | | ↳ `icsUid` | string | ICS calendar UID | | ↳ `cancellationReason` | string | Reason for cancellation if cancelled | | ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled | | ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled | | ↳ `rescheduledToUid` | string | New booking UID after reschedule | | ↳ `cancelledByEmail` | string | Email of person who cancelled the booking | | ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking | | ↳ `createdAt` | string | When the booking was created | | ↳ `updatedAt` | string | When the booking was last updated | ### Cal.com List Bookings [#calcom-list-bookings] List all bookings with optional status filter #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------- | | `status` | string | No | Filter bookings by status: upcoming, recurring, past, cancelled, or unconfirmed | | `take` | number | No | Number of bookings to return (pagination limit) | | `skip` | number | No | Number of bookings to skip (pagination offset) | #### Output [#output-2] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------- | | `status` | string | Response status | | `data` | array | Array of bookings | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `description` | string | Description of the booking | | ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `meetingUrl` | string | URL to join the meeting | | ↳ `location` | string | Location of the booking | | ↳ `absentHost` | boolean | Whether the host was absent | | ↳ `guests` | array | Guest email addresses | | ↳ `bookingFieldsResponses` | json | Custom booking field responses (dynamic keys based on event type configuration) | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `rating` | number | Booking rating | | ↳ `icsUid` | string | ICS calendar UID | | ↳ `cancellationReason` | string | Reason for cancellation if cancelled | | ↳ `cancelledByEmail` | string | Email of person who cancelled the booking | | ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled | | ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking | | ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled | | ↳ `rescheduledToUid` | string | New booking UID after reschedule | | ↳ `createdAt` | string | When the booking was created | | ↳ `updatedAt` | string | When the booking was last updated | | `pagination` | object | Pagination metadata | | ↳ `totalItems` | number | Total number of items | | ↳ `remainingItems` | number | Remaining items after current page | | ↳ `returnedItems` | number | Number of items returned in this response | | ↳ `itemsPerPage` | number | Items per page | | ↳ `currentPage` | number | Current page number | | ↳ `totalPages` | number | Total number of pages | | ↳ `hasNextPage` | boolean | Whether there is a next page | | ↳ `hasPreviousPage` | boolean | Whether there is a previous page | ### Cal.com Cancel Booking [#calcom-cancel-booking] Cancel an existing booking #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------ | | `bookingUid` | string | Yes | Unique identifier (UID) of the booking to cancel | | `cancellationReason` | string | No | Reason for cancelling the booking | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Cancelled booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `cancellationReason` | string | Reason for cancellation if cancelled | | ↳ `cancelledByEmail` | string | Email of person who cancelled the booking | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `location` | string | Location of the booking | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `createdAt` | string | When the booking was created | | ↳ `status` | string | Booking status (should be cancelled) | ### Cal.com Reschedule Booking [#calcom-reschedule-booking] Reschedule an existing booking to a new time #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------ | | `bookingUid` | string | Yes | Unique identifier (UID) of the booking to reschedule | | `start` | string | Yes | New start time in UTC ISO 8601 format (e.g., 2024-01-15T09:00:00Z) | | `reschedulingReason` | string | No | Reason for rescheduling the booking | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Rescheduled booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `title` | string | Title of the booking | | ↳ `status` | string | Booking status (e.g., accepted, pending, cancelled) | | ↳ `reschedulingReason` | string | Reason for rescheduling if rescheduled | | ↳ `rescheduledFromUid` | string | Original booking UID if this booking was rescheduled | | ↳ `rescheduledByEmail` | string | Email of person who rescheduled the booking | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `meetingUrl` | string | URL to join the meeting | | ↳ `location` | string | Location of the booking | | ↳ `guests` | array | Guest email addresses | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `icsUid` | string | ICS calendar UID | | ↳ `createdAt` | string | When the booking was created | | ↳ `uid` | string | Unique identifier for the new booking | | ↳ `start` | string | New start time in ISO 8601 format | | ↳ `end` | string | New end time in ISO 8601 format | ### Cal.com Confirm Booking [#calcom-confirm-booking] Confirm a pending booking that requires confirmation #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------- | | `bookingUid` | string | Yes | Unique identifier (UID) of the booking to confirm | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Confirmed booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `meetingUrl` | string | URL to join the meeting | | ↳ `location` | string | Location of the booking | | ↳ `guests` | array | Guest email addresses | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `icsUid` | string | ICS calendar UID | | ↳ `createdAt` | string | When the booking was created | | ↳ `status` | string | Booking status (should be accepted/confirmed) | ### Cal.com Decline Booking [#calcom-decline-booking] Decline a pending booking request #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------- | | `bookingUid` | string | Yes | Unique identifier (UID) of the booking to decline | | `reason` | string | No | Reason for declining the booking | #### Output [#output-6] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Response status | | `data` | object | Declined booking details | | ↳ `eventType` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `slug` | string | Event type slug | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `timeZone` | string | Attendee timezone (IANA format) | | ↳ `phoneNumber` | string | Attendee phone number | | ↳ `language` | string | Attendee language preference (ISO code) | | ↳ `absent` | boolean | Whether attendee was absent | | ↳ `hosts` | array | List of hosts | | ↳ `id` | number | Host user ID | | ↳ `name` | string | Host display name | | ↳ `email` | string | Host actual email address | | ↳ `displayEmail` | string | Email shown publicly (may differ from actual email) | | ↳ `username` | string | Host Cal.com username | | ↳ `timeZone` | string | Host timezone (IANA format) | | ↳ `id` | number | Numeric booking ID | | ↳ `uid` | string | Unique identifier for the booking | | ↳ `title` | string | Title of the booking | | ↳ `cancellationReason` | string | Reason for cancellation if cancelled | | ↳ `start` | string | Start time in ISO 8601 format | | ↳ `end` | string | End time in ISO 8601 format | | ↳ `duration` | number | Duration in minutes | | ↳ `eventTypeId` | number | Event type ID | | ↳ `location` | string | Location of the booking | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic key-value pairs) | | ↳ `createdAt` | string | When the booking was created | | ↳ `status` | string | Booking status (should be cancelled/rejected) | ### Cal.com Create Event Type [#calcom-create-event-type] Create a new event type in Cal.com #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------ | | `title` | string | Yes | Title of the event type | | `slug` | string | Yes | Unique slug for the event type URL | | `lengthInMinutes` | number | Yes | Duration of the event in minutes | | `description` | string | No | Description of the event type | | `slotInterval` | number | No | Interval between available booking slots in minutes | | `minimumBookingNotice` | number | No | Minimum notice required before booking in minutes | | `beforeEventBuffer` | number | No | Buffer time before the event in minutes | | `afterEventBuffer` | number | No | Buffer time after the event in minutes | | `scheduleId` | number | No | ID of the schedule to use for availability | | `disableGuests` | boolean | No | Whether to disable guests from being added to bookings | #### Output [#output-7] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------- | | `status` | string | Response status | | `data` | object | Created event type details | | ↳ `id` | number | Event type ID | | ↳ `title` | string | Event type title | | ↳ `slug` | string | Event type slug | | ↳ `description` | string | Event type description | | ↳ `lengthInMinutes` | number | Duration in minutes | | ↳ `slotInterval` | number | Slot interval in minutes | | ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes | | ↳ `beforeEventBuffer` | number | Buffer before event in minutes | | ↳ `afterEventBuffer` | number | Buffer after event in minutes | | ↳ `scheduleId` | number | Schedule ID | | ↳ `disableGuests` | boolean | Whether guests are disabled | | ↳ `createdAt` | string | ISO timestamp of creation | | ↳ `updatedAt` | string | ISO timestamp of last update | ### Cal.com Get Event Type [#calcom-get-event-type] Get detailed information about a specific event type #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------- | | `eventTypeId` | number | Yes | Event type ID to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------- | | `status` | string | Response status | | `data` | object | Event type details | | ↳ `id` | number | Event type ID | | ↳ `title` | string | Event type title | | ↳ `slug` | string | Event type slug | | ↳ `description` | string | Event type description | | ↳ `lengthInMinutes` | number | Duration in minutes | | ↳ `slotInterval` | number | Slot interval in minutes | | ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes | | ↳ `beforeEventBuffer` | number | Buffer before event in minutes | | ↳ `afterEventBuffer` | number | Buffer after event in minutes | | ↳ `scheduleId` | number | Schedule ID | | ↳ `disableGuests` | boolean | Whether guests are disabled | | ↳ `createdAt` | string | ISO timestamp of creation | | ↳ `updatedAt` | string | ISO timestamp of last update | ### Cal.com List Event Types [#calcom-list-event-types] Retrieve a list of all event types #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------- | | `sortCreatedAt` | string | No | Sort by creation date: "asc" or "desc" | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------- | | `status` | string | Response status | | `data` | array | Array of event types | | ↳ `id` | number | Event type ID | | ↳ `title` | string | Event type title | | ↳ `slug` | string | Event type slug | | ↳ `description` | string | Event type description | | ↳ `lengthInMinutes` | number | Duration in minutes | | ↳ `slotInterval` | number | Slot interval in minutes | | ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes | | ↳ `beforeEventBuffer` | number | Buffer before event in minutes | | ↳ `afterEventBuffer` | number | Buffer after event in minutes | | ↳ `scheduleId` | number | Schedule ID | | ↳ `disableGuests` | boolean | Whether guests are disabled | | ↳ `createdAt` | string | ISO timestamp of creation | | ↳ `updatedAt` | string | ISO timestamp of last update | ### Cal.com Update Event Type [#calcom-update-event-type] Update an existing event type in Cal.com #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------ | | `eventTypeId` | number | Yes | Event type ID to update (e.g., 12345) | | `title` | string | No | Title of the event type | | `slug` | string | No | Unique slug for the event type URL | | `lengthInMinutes` | number | No | Duration of the event in minutes | | `description` | string | No | Description of the event type | | `slotInterval` | number | No | Interval between available booking slots in minutes | | `minimumBookingNotice` | number | No | Minimum notice required before booking in minutes | | `beforeEventBuffer` | number | No | Buffer time before the event in minutes | | `afterEventBuffer` | number | No | Buffer time after the event in minutes | | `scheduleId` | number | No | ID of the schedule to use for availability | | `disableGuests` | boolean | No | Whether to disable guests from being added to bookings | #### Output [#output-10] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------- | | `status` | string | Response status | | `data` | object | Updated event type details | | ↳ `id` | number | Event type ID | | ↳ `title` | string | Event type title | | ↳ `slug` | string | Event type slug | | ↳ `description` | string | Event type description | | ↳ `lengthInMinutes` | number | Duration in minutes | | ↳ `slotInterval` | number | Slot interval in minutes | | ↳ `minimumBookingNotice` | number | Minimum booking notice in minutes | | ↳ `beforeEventBuffer` | number | Buffer before event in minutes | | ↳ `afterEventBuffer` | number | Buffer after event in minutes | | ↳ `scheduleId` | number | Schedule ID | | ↳ `disableGuests` | boolean | Whether guests are disabled | | ↳ `createdAt` | string | ISO timestamp of creation | | ↳ `updatedAt` | string | ISO timestamp of last update | ### Cal.com Delete Event Type [#calcom-delete-event-type] Delete an event type from Cal.com #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------- | | `eventTypeId` | number | Yes | Event type ID to delete | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------ | -------------------------- | | `status` | string | Response status | | `data` | object | Deleted event type details | | ↳ `id` | number | Event type ID | | ↳ `lengthInMinutes` | number | Duration in minutes | | ↳ `title` | string | Event type title | | ↳ `slug` | string | Event type slug | ### Cal.com Create Schedule [#calcom-create-schedule] Create a new availability schedule in Cal.com #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------- | | `name` | string | Yes | Name of the schedule | | `timeZone` | string | Yes | Timezone for the schedule (e.g., America/New\_York) | | `isDefault` | boolean | Yes | Whether this schedule should be the default | | `availability` | array | No | Availability intervals for the schedule | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `status` | string | Response status | | `data` | object | Created schedule data | | ↳ `id` | number | Schedule ID | | ↳ `ownerId` | number | Owner user ID | | ↳ `name` | string | Schedule name | | ↳ `timeZone` | string | Timezone (e.g., America/New\_York) | | ↳ `isDefault` | boolean | Whether this is the default schedule | | ↳ `availability` | array | Availability windows | | ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | | ↳ `overrides` | array | Date-specific availability overrides | | ↳ `date` | string | Date in YYYY-MM-DD format | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | ### Cal.com Get Schedule [#calcom-get-schedule] Get a specific schedule by ID from Cal.com #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | `scheduleId` | string | Yes | ID of the schedule to retrieve | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `status` | string | Response status | | `data` | object | Schedule data | | ↳ `id` | number | Schedule ID | | ↳ `ownerId` | number | Owner user ID | | ↳ `name` | string | Schedule name | | ↳ `timeZone` | string | Timezone (e.g., America/New\_York) | | ↳ `isDefault` | boolean | Whether this is the default schedule | | ↳ `availability` | array | Availability windows | | ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | | ↳ `overrides` | array | Date-specific availability overrides | | ↳ `date` | string | Date in YYYY-MM-DD format | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | ### Cal.com List Schedules [#calcom-list-schedules] List all availability schedules from Cal.com #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `status` | string | Response status | | `data` | array | Array of schedule objects | | ↳ `id` | number | Schedule ID | | ↳ `ownerId` | number | Owner user ID | | ↳ `name` | string | Schedule name | | ↳ `timeZone` | string | Timezone (e.g., America/New\_York) | | ↳ `isDefault` | boolean | Whether this is the default schedule | | ↳ `availability` | array | Availability windows | | ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | | ↳ `overrides` | array | Date-specific availability overrides | | ↳ `date` | string | Date in YYYY-MM-DD format | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | ### Cal.com Update Schedule [#calcom-update-schedule] Update an existing schedule in Cal.com #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------- | | `scheduleId` | string | Yes | ID of the schedule to update | | `name` | string | No | New name for the schedule | | `timeZone` | string | No | New timezone for the schedule (e.g., America/New\_York) | | `isDefault` | boolean | No | Whether this schedule should be the default | | `availability` | array | No | New availability intervals for the schedule | #### Output [#output-15] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `status` | string | Response status | | `data` | object | Updated schedule data | | ↳ `id` | number | Schedule ID | | ↳ `ownerId` | number | Owner user ID | | ↳ `name` | string | Schedule name | | ↳ `timeZone` | string | Timezone (e.g., America/New\_York) | | ↳ `isDefault` | boolean | Whether this is the default schedule | | ↳ `availability` | array | Availability windows | | ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | | ↳ `overrides` | array | Date-specific availability overrides | | ↳ `date` | string | Date in YYYY-MM-DD format | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | ### Cal.com Delete Schedule [#calcom-delete-schedule] Delete a schedule from Cal.com #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------- | | `scheduleId` | string | Yes | ID of the schedule to delete | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `status` | string | Response status (success or error) | ### Cal.com Get Default Schedule [#calcom-get-default-schedule] Get the default availability schedule from Cal.com #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `status` | string | Response status | | `data` | object | Default schedule data | | ↳ `id` | number | Schedule ID | | ↳ `ownerId` | number | Owner user ID | | ↳ `name` | string | Schedule name | | ↳ `timeZone` | string | Timezone (e.g., America/New\_York) | | ↳ `isDefault` | boolean | Whether this is the default schedule | | ↳ `availability` | array | Availability windows | | ↳ `days` | array | Days of the week (Monday, Tuesday, etc.) | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | | ↳ `overrides` | array | Date-specific availability overrides | | ↳ `date` | string | Date in YYYY-MM-DD format | | ↳ `startTime` | string | Start time in HH:MM format | | ↳ `endTime` | string | End time in HH:MM format | ### Cal.com Get Slots [#calcom-get-slots] Get available booking slots for a Cal.com event type within a time range #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------- | | `start` | string | Yes | Start of time range in UTC ISO 8601 format (e.g., 2024-01-15T00:00:00Z) | | `end` | string | Yes | End of time range in UTC ISO 8601 format (e.g., 2024-01-22T00:00:00Z) | | `eventTypeId` | number | No | Event type ID for direct lookup | | `eventTypeSlug` | string | No | Event type slug (requires username to be set) | | `username` | string | No | Username for personal event types (required when using eventTypeSlug) | | `timeZone` | string | No | Timezone for returned slots (defaults to UTC) | | `duration` | number | No | Slot length in minutes | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `status` | string | Response status | | `data` | json | Available time slots grouped by date (YYYY-MM-DD keys). Each date maps to an array of slot objects with start time, optional end time, and seated event info. | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### CalCom Booking Cancelled [#calcom-booking-cancelled] Trigger workflow when a booking is cancelled in Cal.com #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-19] | Parameter | Type | Description | | ---------------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Booking start time (ISO 8601) | | ↳ `endTime` | string | Booking end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status | | ↳ `location` | string | Meeting location or URL | | ↳ `cancellationReason` | string | Reason for cancellation | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `responses` | json | Booking form responses | | ↳ `metadata` | json | Custom metadata attached to the booking | *** ### CalCom Booking Created [#calcom-booking-created] Trigger workflow when a new booking is created in Cal.com #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------- | | `triggerEvent` | string | The webhook event type | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Booking start time (ISO 8601) | | ↳ `endTime` | string | Booking end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status | | ↳ `location` | string | Meeting location or URL | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `responses` | json | Booking form responses (dynamic - fields depend on your event type configuration) | | ↳ `metadata` | json | Custom metadata attached to the booking (dynamic - user-defined key-value pairs) | | ↳ `videoCallData` | json | Video call details (structure varies by provider) | *** ### CalCom Booking Paid [#calcom-booking-paid] Trigger workflow when payment is completed for a paid booking #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------- | | `triggerEvent` | string | The webhook event type (BOOKING\_PAID) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Booking start time (ISO 8601) | | ↳ `endTime` | string | Booking end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status | | ↳ `location` | string | Meeting location or URL | | ↳ `payment` | object | Payment details | | ↳ `id` | string | Payment ID | | ↳ `amount` | number | Payment amount | | ↳ `currency` | string | Payment currency | | ↳ `success` | boolean | Whether payment succeeded | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `metadata` | json | Custom metadata attached to the booking | *** ### CalCom Booking Rejected [#calcom-booking-rejected] Trigger workflow when a booking request is rejected by the host #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-22] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type (BOOKING\_REJECTED) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Requested start time (ISO 8601) | | ↳ `endTime` | string | Requested end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status (rejected) | | ↳ `rejectionReason` | string | Reason for rejection provided by host | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `metadata` | json | Custom metadata attached to the booking | *** ### CalCom Booking Requested [#calcom-booking-requested] Trigger workflow when a booking request is submitted (pending confirmation) #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type (BOOKING\_REQUESTED) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Requested start time (ISO 8601) | | ↳ `endTime` | string | Requested end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status (pending) | | ↳ `location` | string | Meeting location or URL | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `responses` | json | Booking form responses | | ↳ `metadata` | json | Custom metadata attached to the booking | *** ### CalCom Booking Rescheduled [#calcom-booking-rescheduled] Trigger workflow when a booking is rescheduled in Cal.com #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-24] | Parameter | Type | Description | | ----------------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Booking title | | ↳ `description` | string | Booking description | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | New booking start time (ISO 8601) | | ↳ `endTime` | string | New booking end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `status` | string | Booking status | | ↳ `location` | string | Meeting location or URL | | ↳ `rescheduleId` | number | Previous booking ID | | ↳ `rescheduleUid` | string | Previous booking UID | | ↳ `rescheduleStartTime` | string | Original start time (ISO 8601) | | ↳ `rescheduleEndTime` | string | Original end time (ISO 8601) | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `responses` | json | Booking form responses | | ↳ `metadata` | json | Custom metadata attached to the booking | *** ### CalCom Meeting Ended [#calcom-meeting-ended] Trigger workflow when a Cal.com meeting ends #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-25] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type (MEETING\_ENDED) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Meeting title | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Meeting start time (ISO 8601) | | ↳ `endTime` | string | Meeting end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `duration` | number | Actual meeting duration in minutes | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | | ↳ `videoCallData` | json | Video call details | *** ### CalCom Recording Ready [#calcom-recording-ready] Trigger workflow when a meeting recording is ready for download #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-26] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------- | | `triggerEvent` | string | The webhook event type (RECORDING\_READY) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | object | payload output from the tool | | ↳ `title` | string | Meeting title | | ↳ `eventTypeId` | number | Event type ID | | ↳ `startTime` | string | Meeting start time (ISO 8601) | | ↳ `endTime` | string | Meeting end time (ISO 8601) | | ↳ `uid` | string | Unique booking identifier | | ↳ `bookingId` | number | Numeric booking ID | | ↳ `recordingUrl` | string | URL to download the recording | | ↳ `transcription` | string | Meeting transcription text (if available) | | ↳ `organizer` | object | Organizer details | | ↳ `id` | number | Organizer user ID | | ↳ `name` | string | Organizer name | | ↳ `email` | string | Organizer email | | ↳ `username` | string | Organizer username | | ↳ `timeZone` | string | Organizer timezone | | ↳ `attendees` | array | List of attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | ↳ `timeZone` | string | Attendee timezone | | ↳ `language` | string | Attendee language preference | *** ### CalCom Webhook (All Events) [#calcom-webhook-all-events] Trigger workflow on any Cal.com webhook event (configure event types in Cal.com) #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. | #### Output [#output-27] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------- | | `triggerEvent` | string | The webhook event type (e.g., BOOKING\_CREATED, MEETING\_ENDED) | | `createdAt` | string | When the webhook event was created (ISO 8601) | | `payload` | json | Complete webhook payload (structure varies by event type) | --- # Calendly (/integrations/calendly) {/* MANUAL-CONTENT-START:intro */} [Calendly](https://calendly.com/) is a popular scheduling automation platform that helps you book meetings, events, and appointments with ease. With Calendly, teams and individuals can streamline scheduling, reduce back-and-forth emails, and automate tasks around events. With the Agent Serve Calendly integration, your agents can: * **Retrieve information about your account and scheduled events**: Use tools to fetch user info, event types, and scheduled events for analysis or automation. * **Manage event types and scheduling**: Access and list available event types for users or organizations, retrieve details about specific event types, and monitor scheduled meetings and invitee data. * **Automate follow-ups and workflows**: When users schedule, reschedule, or cancel meetings, Agent Serve agents can automatically trigger corresponding workflows—such as sending reminders, updating CRMs, or notifying participants. * **Integrate easily using webhooks**: Set up Agent Serve workflows to respond to real-time Calendly webhook events, including when invitees schedule, cancel, or interact with routing forms. Whether you want to automate meeting prep, manage invites, or run custom workflows in response to scheduling activity, the Calendly tools in Agent Serve give you flexible and secure access. Unlock new automation by reacting instantly to scheduling changes—streamlining your team's operations and communications. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Calendly into your workflow. Manage event types, scheduled events, invitees, and webhooks. Can also trigger workflows based on Calendly webhook events (invitee scheduled, invitee canceled, routing form submitted). Requires Personal Access Token. ## Actions [#actions] ### Calendly Get Current User [#calendly-get-current-user] Get information about the currently authenticated Calendly user #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Calendly Personal Access Token | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------- | | `resource` | object | Current user information | | ↳ `uri` | string | Canonical reference to the user | | ↳ `name` | string | User full name | | ↳ `slug` | string | Unique identifier for the user in URLs | | ↳ `email` | string | User email address | | ↳ `scheduling_url` | string | URL to the user's scheduling page | | ↳ `timezone` | string | User timezone | | ↳ `avatar_url` | string | URL to user avatar image | | ↳ `created_at` | string | ISO timestamp when user was created | | ↳ `updated_at` | string | ISO timestamp when user was last updated | | ↳ `current_organization` | string | URI of current organization | ### Calendly Get User [#calendly-get-user] Get information about a specific Calendly user #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `userUuid` | string | Yes | User UUID. Format: UUID (e.g., "abc123-def456"), full URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)"), or the constant "me" for the authenticated user | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------- | | `resource` | object | User information | | ↳ `uri` | string | Canonical reference to the user | | ↳ `name` | string | User full name | | ↳ `slug` | string | Unique identifier for the user in URLs | | ↳ `email` | string | User email address | | ↳ `scheduling_url` | string | URL to the user's scheduling page | | ↳ `timezone` | string | User timezone | | ↳ `time_notation` | string | Time notation preference (12h or 24h) | | ↳ `avatar_url` | string | URL to user avatar image | | ↳ `created_at` | string | ISO timestamp when user was created | | ↳ `updated_at` | string | ISO timestamp when user was last updated | | ↳ `current_organization` | string | URI of current organization | | ↳ `resource_type` | string | Resource type | | ↳ `locale` | string | User locale | ### Calendly List Event Types [#calendly-list-event-types] Retrieve a list of all event types for a user or organization #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `user` | string | No | Return only event types that belong to this user. Format: URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)") | | `organization` | string | No | Return only event types that belong to this organization. Format: URI (e.g., "[https://api.calendly.com/organizations/abc123-def456](https://api.calendly.com/organizations/abc123-def456)") | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | | `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "name:asc", "name:desc") | | `active` | boolean | No | When true, show only active event types. When false or unchecked, show all event types (both active and inactive). | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------- | | `collection` | array | Array of event type objects | | ↳ `uri` | string | Canonical reference to the event type | | ↳ `name` | string | Event type name | | ↳ `active` | boolean | Whether the event type is active | | ↳ `booking_method` | string | Booking method (e.g., "round\_robin\_or\_collect", "collective") | | ↳ `color` | string | Hex color code | | ↳ `created_at` | string | ISO timestamp of creation | | ↳ `description_html` | string | HTML formatted description | | ↳ `description_plain` | string | Plain text description | | ↳ `duration` | number | Duration in minutes | | ↳ `scheduling_url` | string | URL to scheduling page | | ↳ `slug` | string | Unique identifier for URLs | | ↳ `type` | string | Event type classification | | ↳ `updated_at` | string | ISO timestamp of last update | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ### Calendly Get Event Type [#calendly-get-event-type] Get detailed information about a specific event type #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventTypeUuid` | string | Yes | Event type UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456](https://api.calendly.com/event_types/abc123-def456)") | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `resource` | object | Event type details | | ↳ `uri` | string | Canonical reference to the event type | | ↳ `name` | string | Event type name | | ↳ `active` | boolean | Whether the event type is active | | ↳ `booking_method` | string | Booking method | | ↳ `color` | string | Hex color code | | ↳ `created_at` | string | ISO timestamp of creation | | ↳ `custom_questions` | array | Custom questions for invitees | | ↳ `name` | string | Question text | | ↳ `type` | string | Question type (text, single\_select, multi\_select, etc.) | | ↳ `position` | number | Question order | | ↳ `enabled` | boolean | Whether question is enabled | | ↳ `required` | boolean | Whether question is required | | ↳ `answer_choices` | array | Available answer choices | | ↳ `description_html` | string | HTML formatted description | | ↳ `description_plain` | string | Plain text description | | ↳ `duration` | number | Duration in minutes | | ↳ `scheduling_url` | string | URL to scheduling page | | ↳ `slug` | string | Unique identifier for URLs | | ↳ `type` | string | Event type classification | | ↳ `updated_at` | string | ISO timestamp of last update | ### Calendly List Event Type Available Times [#calendly-list-event-type-available-times] Retrieve bookable time slots for an event type within a date range #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventTypeUri` | string | Yes | Event type to check. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456](https://api.calendly.com/event_types/abc123-def456)") | | `startTime` | string | Yes | Start of the availability range. Cannot be in the past. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") | | `endTime` | string | Yes | End of the availability range. Must be in the future and no more than 31 days after the start. Format: ISO 8601 (e.g., "2024-01-15T00:00:00Z") | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------ | | `collection` | array | Array of available time slots | | ↳ `status` | string | Availability status of the slot | | ↳ `invitees_remaining` | number | Number of invitees that can still book this slot | | ↳ `start_time` | string | ISO timestamp of the slot start | | ↳ `scheduling_url` | string | URL that books this exact slot | ### Calendly List Scheduled Events [#calendly-list-scheduled-events] Retrieve a list of scheduled events for a user or organization #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Calendly Personal Access Token | | `user` | string | No | Return events that belong to this user. Either "user" or "organization" must be provided. Format: URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)") | | `organization` | string | No | Return events that belong to this organization. Either "user" or "organization" must be provided. Format: URI (e.g., "[https://api.calendly.com/organizations/abc123-def456](https://api.calendly.com/organizations/abc123-def456)") | | `invitee_email` | string | No | Return events where invitee has this email | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `max_start_time` | string | No | Return events with start time before this time. Format: ISO 8601 (e.g., "2024-01-15T09:00:00Z") | | `min_start_time` | string | No | Return events with start time after this time. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | | `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "start\_time:asc", "start\_time:desc") | | `status` | string | No | Filter by status. Format: "active" or "canceled" | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------------------------- | | `collection` | array | Array of scheduled event objects | | ↳ `uri` | string | Canonical reference to the event | | ↳ `name` | string | Event name | | ↳ `status` | string | Event status (active or canceled) | | ↳ `start_time` | string | ISO timestamp of event start | | ↳ `end_time` | string | ISO timestamp of event end | | ↳ `event_type` | string | URI of the event type | | ↳ `location` | object | Event location details | | ↳ `type` | string | Location type (e.g., "zoom", "google\_meet", "physical") | | ↳ `location` | string | Location description | | ↳ `join_url` | string | URL to join online meeting (if applicable) | | ↳ `invitees_counter` | object | Invitee count information | | ↳ `total` | number | Total number of invitees | | ↳ `active` | number | Number of active invitees | | ↳ `limit` | number | Maximum number of invitees | | ↳ `created_at` | string | ISO timestamp of event creation | | ↳ `updated_at` | string | ISO timestamp of last update | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ### Calendly Get Scheduled Event [#calendly-get-scheduled-event] Get detailed information about a specific scheduled event #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456](https://api.calendly.com/scheduled_events/abc123-def456)") | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------- | | `resource` | object | Scheduled event details | | ↳ `uri` | string | Canonical reference to the event | | ↳ `name` | string | Event name | | ↳ `status` | string | Event status (active or canceled) | | ↳ `start_time` | string | ISO timestamp of event start | | ↳ `end_time` | string | ISO timestamp of event end | | ↳ `event_type` | string | URI of the event type | | ↳ `location` | object | Event location details | | ↳ `type` | string | Location type | | ↳ `location` | string | Location description | | ↳ `join_url` | string | URL to join online meeting | | ↳ `invitees_counter` | object | Invitee count information | | ↳ `total` | number | Total number of invitees | | ↳ `active` | number | Number of active invitees | | ↳ `limit` | number | Maximum number of invitees | | ↳ `event_memberships` | array | Event hosts/members | | ↳ `user` | string | User URI | | ↳ `user_email` | string | User email | | ↳ `user_name` | string | User name | | ↳ `event_guests` | array | Additional guests | | ↳ `email` | string | Guest email | | ↳ `created_at` | string | When guest was added | | ↳ `updated_at` | string | When guest info was updated | | ↳ `created_at` | string | ISO timestamp of event creation | | ↳ `updated_at` | string | ISO timestamp of last update | ### Calendly List Event Invitees [#calendly-list-event-invitees] Retrieve a list of invitees for a scheduled event #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456](https://api.calendly.com/scheduled_events/abc123-def456)") | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `email` | string | No | Filter invitees by email address | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | | `sort` | string | No | Sort order for results. Format: "field:direction" (e.g., "created\_at:asc", "created\_at:desc") | | `status` | string | No | Filter by status. Format: "active" or "canceled" | #### Output [#output-7] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------- | | `collection` | array | Array of invitee objects | | ↳ `uri` | string | Canonical reference to the invitee | | ↳ `email` | string | Invitee email address | | ↳ `name` | string | Invitee full name | | ↳ `first_name` | string | Invitee first name | | ↳ `last_name` | string | Invitee last name | | ↳ `status` | string | Invitee status (active or canceled) | | ↳ `questions_and_answers` | array | Responses to custom questions | | ↳ `question` | string | Question text | | ↳ `answer` | string | Invitee answer | | ↳ `position` | number | Question order | | ↳ `timezone` | string | Invitee timezone | | ↳ `event` | string | URI of the scheduled event | | ↳ `created_at` | string | ISO timestamp when invitee was created | | ↳ `updated_at` | string | ISO timestamp when invitee was updated | | ↳ `cancel_url` | string | URL to cancel the booking | | ↳ `reschedule_url` | string | URL to reschedule the booking | | ↳ `rescheduled` | boolean | Whether invitee rescheduled | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ### Calendly Get Event Invitee [#calendly-get-event-invitee] Retrieve a single invitee of a scheduled event, including their intake answers #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventUuid` | string | Yes | Scheduled event UUID. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456](https://api.calendly.com/scheduled_events/abc123-def456)") | | `inviteeUuid` | string | Yes | Invitee UUID. Format: UUID (e.g., "abc123-def456") or full invitee URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123/invitees/def456](https://api.calendly.com/scheduled_events/abc123/invitees/def456)") | #### Output [#output-8] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------- | | `resource` | object | Invitee details | | ↳ `uri` | string | Canonical reference to the invitee | | ↳ `email` | string | Invitee email address | | ↳ `name` | string | Invitee full name | | ↳ `first_name` | string | Invitee first name | | ↳ `last_name` | string | Invitee last name | | ↳ `status` | string | Invitee status (active or canceled) | | ↳ `timezone` | string | Invitee timezone | | ↳ `event` | string | URI of the scheduled event | | ↳ `created_at` | string | ISO timestamp when invitee was created | | ↳ `updated_at` | string | ISO timestamp when invitee was updated | | ↳ `cancel_url` | string | URL to cancel the booking | | ↳ `reschedule_url` | string | URL to reschedule the booking | | ↳ `rescheduled` | boolean | Whether the invitee rescheduled | | ↳ `text_reminder_number` | string | Phone number used for SMS reminders | | ↳ `routing_form_submission` | string | URI of the routing form submission that produced this booking | | ↳ `questions_and_answers` | array | Responses to custom questions | | ↳ `question` | string | Question text | | ↳ `answer` | string | Invitee answer | | ↳ `position` | number | Question order | | ↳ `tracking` | object | UTM and Salesforce tracking parameters captured at booking | | ↳ `utm_campaign` | string | UTM campaign | | ↳ `utm_source` | string | UTM source | | ↳ `utm_medium` | string | UTM medium | | ↳ `utm_content` | string | UTM content | | ↳ `utm_term` | string | UTM term | | ↳ `salesforce_uuid` | string | Salesforce record identifier | | ↳ `cancellation` | object | Cancellation details when the invitee has canceled | | ↳ `canceled_by` | string | Name of person who canceled | | ↳ `reason` | string | Cancellation reason | | ↳ `canceler_type` | string | Type of canceler (host or invitee) | | ↳ `created_at` | string | ISO timestamp of the cancellation | | ↳ `no_show` | object | No-show record when the invitee has been marked as a no-show | | ↳ `uri` | string | Canonical reference to the no-show | | ↳ `created_at` | string | ISO timestamp when marked as no-show | | ↳ `payment` | object | Payment collected at booking | | ↳ `external_id` | string | Payment identifier at the provider | | ↳ `provider` | string | Payment provider | | ↳ `amount` | number | Amount charged | | ↳ `currency` | string | Currency code | | ↳ `terms` | string | Payment terms | | ↳ `successful` | boolean | Whether the payment succeeded | ### Calendly Book Meeting [#calendly-book-meeting] Book a meeting by creating an invitee on an event type at a chosen time. Requires a paid Calendly plan #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventTypeUri` | string | Yes | Event type to book. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456](https://api.calendly.com/event_types/abc123-def456)") | | `startTime` | string | Yes | Start time of the booking in UTC. Must be an available slot. Format: ISO 8601 (e.g., "2024-01-15T09:00:00Z") | | `inviteeEmail` | string | Yes | Email address of the invitee being booked | | `inviteeTimezone` | string | Yes | Invitee timezone. Format: IANA timezone (e.g., "America/New\_York") | | `inviteeName` | string | No | Full name of the invitee. Required when a first name is not provided | | `inviteeFirstName` | string | No | First name of the invitee. Required when a full name is not provided | | `inviteeLastName` | string | No | Last name of the invitee | | `textReminderNumber` | string | No | Phone number for SMS reminders. Format: E.164 phone number (e.g., "+14155551234") | | `eventGuests` | json | No | Additional guests to copy on the invite. Format: array of email strings (max 10, e.g., \["[guest@example.com](mailto:guest@example.com)"]) | #### Output [#output-9] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------ | | `resource` | object | The invitee created for the booking | | ↳ `uri` | string | Canonical reference to the invitee | | ↳ `email` | string | Invitee email address | | ↳ `name` | string | Invitee full name | | ↳ `first_name` | string | Invitee first name | | ↳ `last_name` | string | Invitee last name | | ↳ `status` | string | Invitee status (active or canceled) | | ↳ `timezone` | string | Invitee timezone | | ↳ `event` | string | URI of the scheduled event that was booked | | ↳ `created_at` | string | ISO timestamp when the booking was created | | ↳ `updated_at` | string | ISO timestamp when the booking was updated | | ↳ `cancel_url` | string | URL to cancel the booking | | ↳ `reschedule_url` | string | URL to reschedule the booking | | ↳ `rescheduled` | boolean | Whether the invitee rescheduled | | ↳ `text_reminder_number` | string | Phone number used for SMS reminders | | ↳ `questions_and_answers` | array | Responses to custom questions | | ↳ `question` | string | Question text | | ↳ `answer` | string | Invitee answer | | ↳ `position` | number | Question order | ### Calendly Cancel Event [#calendly-cancel-event] Cancel a scheduled event #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventUuid` | string | Yes | Scheduled event UUID to cancel. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123-def456](https://api.calendly.com/scheduled_events/abc123-def456)") | | `reason` | string | No | Reason for cancellation (will be sent to invitees) | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------- | | `resource` | object | Cancellation details | | ↳ `canceler_type` | string | Type of canceler (host or invitee) | | ↳ `canceled_by` | string | Name of person who canceled | | ↳ `reason` | string | Cancellation reason | | ↳ `created_at` | string | ISO timestamp when event was canceled | ### Calendly Mark Invitee No-Show [#calendly-mark-invitee-no-show] Mark an invitee of a scheduled event as a no-show #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `inviteeUri` | string | Yes | Full invitee URI to mark as a no-show. Format: URI (e.g., "[https://api.calendly.com/scheduled\_events/abc123/invitees/def456](https://api.calendly.com/scheduled_events/abc123/invitees/def456)") | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `resource` | object | The created no-show record | | ↳ `uri` | string | Canonical reference to the no-show | | ↳ `invitee` | string | URI of the invitee marked as a no-show | | ↳ `created_at` | string | ISO timestamp when the no-show was recorded | ### Calendly Unmark Invitee No-Show [#calendly-unmark-invitee-no-show] Remove the no-show status from an invitee #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `noShowUuid` | string | Yes | No-show UUID to remove. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/invitee\_no\_shows/abc123-def456](https://api.calendly.com/invitee_no_shows/abc123-def456)") | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------- | | `deleted` | boolean | Whether the no-show status was successfully removed | | `message` | string | Status message | ### Calendly Create Scheduling Link [#calendly-create-scheduling-link] Create a single-use scheduling link for an event type #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `eventTypeUri` | string | Yes | Event type the link books. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/event\_types/abc123-def456](https://api.calendly.com/event_types/abc123-def456)") | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `resource` | object | The created scheduling link | | ↳ `booking_url` | string | Single-use URL to share with an invitee | | ↳ `owner` | string | URI of the event type that owns the link | | ↳ `owner_type` | string | Resource type of the owner | ### Calendly List User Busy Times [#calendly-list-user-busy-times] Retrieve a user's internal and external busy times within a date range, based on their connected calendars #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `user` | string | Yes | User whose busy times are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)") | | `startTime` | string | Yes | Start of the requested range. Cannot be in the past. Format: ISO 8601 (e.g., "2024-01-01T00:00:00Z") | | `endTime` | string | Yes | End of the requested range. Must be after the start and no more than 7 days later. Format: ISO 8601 (e.g., "2024-01-07T00:00:00Z") | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------- | | `collection` | array | Array of busy time blocks | | ↳ `type` | string | Source of the busy block (calendly, external, or reserved) | | ↳ `start_time` | string | ISO timestamp when the block starts | | ↳ `end_time` | string | ISO timestamp when the block ends | | ↳ `buffered_start_time` | string | ISO timestamp when the block starts including buffer | | ↳ `buffered_end_time` | string | ISO timestamp when the block ends including buffer | | ↳ `event` | object | The Calendly event occupying this block | | ↳ `uri` | string | URI of the scheduled event | ### Calendly List User Availability Schedules [#calendly-list-user-availability-schedules] Retrieve a user's availability schedules, working hours, and date overrides #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Calendly Personal Access Token | | `user` | string | Yes | User whose schedules are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)") | #### Output [#output-15] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------- | | `collection` | array | Array of availability schedules | | ↳ `uri` | string | Canonical reference to the schedule | | ↳ `name` | string | Schedule name | | ↳ `default` | boolean | Whether this is the user's default schedule | | ↳ `user` | string | URI of the owning user | | ↳ `timezone` | string | Timezone the schedule is defined in | | ↳ `rules` | array | Weekly rules and date overrides that make up the schedule | | ↳ `type` | string | Rule type (wday or date) | | ↳ `wday` | string | Day of week the rule applies to, for wday rules | | ↳ `date` | string | Calendar date the rule overrides, for date rules | | ↳ `intervals` | array | Available intervals for the rule; empty means unavailable | | ↳ `from` | string | Interval start time (HH:MM) | | ↳ `to` | string | Interval end time (HH:MM) | ### Calendly List Organization Memberships [#calendly-list-organization-memberships] Retrieve the members of an organization, including each member profile and role #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `organization` | string | No | Return memberships that belong to this organization. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/organizations/abc123-def456](https://api.calendly.com/organizations/abc123-def456)") | | `user` | string | No | Return memberships that belong to this user. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/users/abc123-def456](https://api.calendly.com/users/abc123-def456)") | | `email` | string | No | Filter memberships by member email address | | `role` | string | No | Filter by role. Format: "owner", "admin", or "user" | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | #### Output [#output-16] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------- | | `collection` | array | Array of organization membership objects | | ↳ `uri` | string | Canonical reference to the membership | | ↳ `role` | string | Member role (owner, admin, or user) | | ↳ `organization` | string | URI of the organization | | ↳ `created_at` | string | ISO timestamp when the member joined | | ↳ `updated_at` | string | ISO timestamp when the membership changed | | ↳ `user` | object | The member | | ↳ `uri` | string | Canonical reference to the user | | ↳ `name` | string | User full name | | ↳ `slug` | string | Unique identifier for the user in URLs | | ↳ `email` | string | User email address | | ↳ `scheduling_url` | string | URL to the user's scheduling page | | ↳ `timezone` | string | User timezone | | ↳ `time_notation` | string | Time notation preference (12h or 24h) | | ↳ `avatar_url` | string | URL to user avatar image | | ↳ `locale` | string | User locale | | ↳ `created_at` | string | ISO timestamp when user was created | | ↳ `updated_at` | string | ISO timestamp when user was updated | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ### Calendly List Routing Forms [#calendly-list-routing-forms] Retrieve the routing forms of an organization, including their questions #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `organization` | string | Yes | Organization whose routing forms are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/organizations/abc123-def456](https://api.calendly.com/organizations/abc123-def456)") | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | | `sort` | string | No | Sort order for results. Format: "created\_at:direction" (e.g., "created\_at:asc", "created\_at:desc") | #### Output [#output-17] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------- | | `collection` | array | Array of routing form objects | | ↳ `uri` | string | Canonical reference to the routing form | | ↳ `organization` | string | URI of the owning organization | | ↳ `name` | string | Routing form name | | ↳ `status` | string | Routing form status (published or draft) | | ↳ `created_at` | string | ISO timestamp when the form was created | | ↳ `updated_at` | string | ISO timestamp when the form was updated | | ↳ `questions` | array | Questions asked by the routing form | | ↳ `uuid` | string | Question identifier | | ↳ `name` | string | Question text | | ↳ `type` | string | Question answer type | | ↳ `required` | boolean | Whether an answer is required | | ↳ `answer_choices` | array | Selectable answers for choice questions | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ### Calendly List Routing Form Submissions [#calendly-list-routing-form-submissions] Retrieve the submissions of a routing form, including answers and routing result #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Calendly Personal Access Token | | `formUri` | string | Yes | Routing form whose submissions are returned. Format: UUID (e.g., "abc123-def456") or full URI (e.g., "[https://api.calendly.com/routing\_forms/abc123-def456](https://api.calendly.com/routing_forms/abc123-def456)") | | `count` | number | No | Number of results per page. Format: integer (default: 20, max: 100) | | `pageToken` | string | No | Page token for pagination. Format: opaque string from previous response next\_page\_token | | `sort` | string | No | Sort order for results. Format: "created\_at:direction" (e.g., "created\_at:asc", "created\_at:desc") | #### Output [#output-18] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------------------------------------------- | | `collection` | array | Array of routing form submission objects | | ↳ `uri` | string | Canonical reference to the submission | | ↳ `routing_form` | string | URI of the routing form | | ↳ `submitter` | string | URI of the invitee who submitted, when the submission led to a booking | | ↳ `submitter_type` | string | Type of the submitter | | ↳ `created_at` | string | ISO timestamp when the form was submitted | | ↳ `updated_at` | string | ISO timestamp when the submission was updated | | ↳ `questions_and_answers` | array | Answers given on the routing form | | ↳ `question_uuid` | string | Question identifier | | ↳ `question` | string | Question text | | ↳ `answer` | string | Submitted answer | | ↳ `tracking` | object | UTM and Salesforce tracking parameters captured at submission | | ↳ `utm_campaign` | string | UTM campaign | | ↳ `utm_source` | string | UTM source | | ↳ `utm_medium` | string | UTM medium | | ↳ `utm_content` | string | UTM content | | ↳ `utm_term` | string | UTM term | | ↳ `salesforce_uuid` | string | Salesforce record identifier | | ↳ `result` | object | Where the submission routed to | | ↳ `type` | string | Routing result type | | ↳ `value` | string | Routing destination | | `pagination` | object | Pagination information | | ↳ `count` | number | Number of results in this page | | ↳ `next_page` | string | URL to next page (if available) | | ↳ `previous_page` | string | URL to previous page (if available) | | ↳ `next_page_token` | string | Token for next page | | ↳ `previous_page_token` | string | Token for previous page | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Calendly Invitee Canceled [#calendly-invitee-canceled] Trigger workflow when someone cancels a scheduled event on Calendly #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Personal Access Token | | `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. | #### Output [#output-19] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------- | | `event` | string | Event type (invitee.created or invitee.canceled) | | `created_at` | string | Webhook event creation timestamp | | `created_by` | string | URI of the Calendly user who created this webhook | | `payload` | object | payload output from the tool | | ↳ `uri` | string | Invitee URI | | ↳ `email` | string | Invitee email address | | ↳ `name` | string | Invitee full name | | ↳ `first_name` | string | Invitee first name | | ↳ `last_name` | string | Invitee last name | | ↳ `status` | string | Invitee status (active or canceled) | | ↳ `timezone` | string | Invitee timezone | | ↳ `event` | string | Scheduled event URI | | ↳ `questions_and_answers` | array | Questions and answers from the booking form | | ↳ `tracking` | object | tracking output from the tool | | ↳ `utm_campaign` | string | UTM campaign parameter | | ↳ `utm_source` | string | UTM source parameter | | ↳ `utm_medium` | string | UTM medium parameter | | ↳ `utm_content` | string | UTM content parameter | | ↳ `utm_term` | string | UTM term parameter | | ↳ `salesforce_uuid` | string | Salesforce UUID | | ↳ `text_reminder_number` | string | Phone number for text reminders | | ↳ `rescheduled` | boolean | Whether this invitee rescheduled | | ↳ `old_invitee` | string | URI of the old invitee (if rescheduled) | | ↳ `new_invitee` | string | URI of the new invitee (if rescheduled) | | ↳ `cancel_url` | string | URL to cancel the event | | ↳ `reschedule_url` | string | URL to reschedule the event | | ↳ `created_at` | string | Invitee creation timestamp | | ↳ `updated_at` | string | Invitee last update timestamp | | ↳ `canceled` | boolean | Whether the event was canceled | | ↳ `cancellation` | object | Cancellation details | | ↳ `canceled_by` | string | Who canceled the event | | ↳ `reason` | string | Cancellation reason | | ↳ `payment` | object | Payment details | | ↳ `id` | string | Payment ID | | ↳ `provider` | string | Payment provider | | ↳ `amount` | number | Payment amount | | ↳ `currency` | string | Payment currency | | ↳ `terms` | string | Payment terms | | ↳ `successful` | boolean | Whether payment was successful | | ↳ `no_show` | object | No-show details | | ↳ `created_at` | string | No-show marked timestamp | | ↳ `reconfirmation` | object | Reconfirmation details | | ↳ `created_at` | string | Reconfirmation timestamp | | ↳ `confirmed_at` | string | Confirmation timestamp | *** ### Calendly Invitee Created [#calendly-invitee-created] Trigger workflow when someone schedules a new event on Calendly #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Personal Access Token | | `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. | #### Output [#output-20] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------- | | `event` | string | Event type (invitee.created or invitee.canceled) | | `created_at` | string | Webhook event creation timestamp | | `created_by` | string | URI of the Calendly user who created this webhook | | `payload` | object | payload output from the tool | | ↳ `uri` | string | Invitee URI | | ↳ `email` | string | Invitee email address | | ↳ `name` | string | Invitee full name | | ↳ `first_name` | string | Invitee first name | | ↳ `last_name` | string | Invitee last name | | ↳ `status` | string | Invitee status (active or canceled) | | ↳ `timezone` | string | Invitee timezone | | ↳ `event` | string | Scheduled event URI | | ↳ `questions_and_answers` | array | Questions and answers from the booking form | | ↳ `tracking` | object | tracking output from the tool | | ↳ `utm_campaign` | string | UTM campaign parameter | | ↳ `utm_source` | string | UTM source parameter | | ↳ `utm_medium` | string | UTM medium parameter | | ↳ `utm_content` | string | UTM content parameter | | ↳ `utm_term` | string | UTM term parameter | | ↳ `salesforce_uuid` | string | Salesforce UUID | | ↳ `text_reminder_number` | string | Phone number for text reminders | | ↳ `rescheduled` | boolean | Whether this invitee rescheduled | | ↳ `old_invitee` | string | URI of the old invitee (if rescheduled) | | ↳ `new_invitee` | string | URI of the new invitee (if rescheduled) | | ↳ `cancel_url` | string | URL to cancel the event | | ↳ `reschedule_url` | string | URL to reschedule the event | | ↳ `created_at` | string | Invitee creation timestamp | | ↳ `updated_at` | string | Invitee last update timestamp | | ↳ `canceled` | boolean | Whether the event was canceled | | ↳ `cancellation` | object | Cancellation details | | ↳ `canceled_by` | string | Who canceled the event | | ↳ `reason` | string | Cancellation reason | | ↳ `payment` | object | Payment details | | ↳ `id` | string | Payment ID | | ↳ `provider` | string | Payment provider | | ↳ `amount` | number | Payment amount | | ↳ `currency` | string | Payment currency | | ↳ `terms` | string | Payment terms | | ↳ `successful` | boolean | Whether payment was successful | | ↳ `no_show` | object | No-show details | | ↳ `created_at` | string | No-show marked timestamp | | ↳ `reconfirmation` | object | Reconfirmation details | | ↳ `created_at` | string | Reconfirmation timestamp | | ↳ `confirmed_at` | string | Confirmation timestamp | *** ### Calendly Routing Form Submitted [#calendly-routing-form-submitted] Trigger workflow when someone submits a Calendly routing form #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Personal Access Token | | `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. | #### Output [#output-21] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------------ | | `event` | string | Event type (routing\_form\_submission.created) | | `created_at` | string | Webhook event creation timestamp | | `created_by` | string | URI of the Calendly user who created this webhook | | `payload` | object | payload output from the tool | | ↳ `uri` | string | Routing form submission URI | | ↳ `routing_form` | string | Routing form URI | | ↳ `submitter` | object | Submitter details | | ↳ `uri` | string | Submitter URI | | ↳ `email` | string | Submitter email address | | ↳ `name` | string | Submitter full name | | ↳ `submitter_type` | string | Type of submitter | | ↳ `questions_and_answers` | array | Questions and answers from the booking form | | ↳ `tracking` | object | tracking output from the tool | | ↳ `utm_campaign` | string | UTM campaign parameter | | ↳ `utm_source` | string | UTM source parameter | | ↳ `utm_medium` | string | UTM medium parameter | | ↳ `utm_content` | string | UTM content parameter | | ↳ `utm_term` | string | UTM term parameter | | ↳ `salesforce_uuid` | string | Salesforce UUID | | ↳ `result` | object | Routing result details | | ↳ `type` | string | Result type (event\_type, custom\_message, or external\_url) | | ↳ `value` | string | Result value (event type URI, message, or URL) | | ↳ `created_at` | string | Submission creation timestamp | | ↳ `updated_at` | string | Submission last update timestamp | *** ### Calendly Webhook [#calendly-webhook] Trigger workflow from any Calendly webhook event #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Personal Access Token | | `organization` | string | Yes | Organization URI for the webhook subscription. Get this from "Get Current User" operation. | #### Output [#output-22] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------ | | `event` | string | Event type (invitee.created, invitee.canceled, or routing\_form\_submission.created) | | `created_at` | string | Webhook event creation timestamp | | `created_by` | string | URI of the Calendly user who created this webhook | | `payload` | object | Complete event payload (structure varies by event type) | --- # CB Insights (/integrations/cbinsights) {/* MANUAL-CONTENT-START:intro */} [CB Insights](https://www.cbinsights.com/) is a private-market intelligence platform. Its API v2 exposes both the underlying firmographic and transaction record — companies, investors, funding rounds, cap tables, exits, business relationships, leadership — and the proprietary models CB Insights layers on top of it: the Mosaic Score, Commercial Maturity, and Exit Probability. **Why CB Insights?** * **Predictive, not just descriptive:** Mosaic Score, Commercial Maturity, and Exit Probability are scored models with published methodologies, and each returns the signals behind it rather than a bare number. * **Peer-relative by default:** Exit probabilities come with the mean for comparable companies and a ratio to it, so a score can be read against its cohort instead of in isolation. * **Depth on terms:** Cap table history carries issuance and conversion prices, liquidation preference, participation rights, and anti-dilution provisions — detail that rarely survives into aggregated datasets. * **Free identity resolution:** The organization lookup never charges credits, so your own records can be matched to CB Insights IDs before you spend anything. **Using CB Insights in Agent Serve** This integration covers every non-streaming v2 endpoint. Authentication is a client-credential exchange — Agent Serve trades your client ID and secret for a short-lived bearer token on your behalf and refreshes it automatically, so there is no token to manage in the workflow. **Key benefits of using CB Insights in Agent Serve:** * **Credit-aware enrichment:** Resolve companies with the free **Look Up Organizations** operation first, confirm the match, then spend credits only on the records you actually want. * **Bulk over per-record:** The `List` operations cover up to 100 organizations in a single call — use them instead of looping the single-organization equivalents when refreshing a table. * **Score history, not just a snapshot:** Mosaic, Commercial Maturity, and Exit Probability each have a history operation, so a trend can be read rather than a point value. * **Relationship mapping:** **Get Strategy Map** returns the companies connected to an organization grouped by category, with the partnerships, investments, and acquisitions that link them. * **AI on tap:** **Get Scouting Report** writes a full company analysis, **Ask ChatCBI** answers questions with sources, and **Retrieve Context** returns the raw structured records for your own model to reason over. **Before you start** Client credentials come from your CB Insights Customer Success Manager rather than a self-serve settings page. **Most operations consume credits, and which datasets answer at all depends on your license** — Firmographics, Financial Transactions, Business Relationships, Management and Board, Outlook, and Scouting Reports are separately licensed. An operation outside your entitlement returns an error from CB Insights rather than partial data. Two behaviors are worth knowing before you build against them. A **pending or rumored funding round zeroes the exit probabilities** rather than omitting them, so a `0` alongside a set `incompleteRoundType` means "suppressed", not "unlikely". And on every multi-organization operation, **an organization with no data is omitted from the response** rather than returned empty — treat a missing ID as "no data", not as a failure. The two streaming endpoints (`chatcbichunked` and `scoutingreportstream`) are intentionally not exposed; they deliver incremental JSON chunks, and the non-streaming operations here return the same content in one piece. Note that a Scouting Report can take several minutes to generate. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates the CB Insights API v2 into the workflow. Resolve companies to CB Insights IDs for free, search firmographics across markets and geographies, pull funding rounds, cap tables, investments, and exits, map business relationships, read leadership and board history, and retrieve the proprietary Mosaic Score, Commercial Maturity, and Exit Probability outlooks. Generate AI Scouting Reports, or ask ChatCBI directly. Which datasets answer depends on your CB Insights license. ## Actions [#actions] ### CB Insights Look Up Organizations [#cb-insights-look-up-organizations] Resolve company names or websites to CB Insights organization IDs. This endpoint never charges credits, so use it to match your own records before spending credits on the data endpoints. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `names` | json | No | Organization names to look up, e.g. \["CB Insights"] | | `urls` | json | No | Organization websites to look up, e.g. \["cbinsights.com"] | | `profileUrl` | string | No | A CB Insights profile URL to resolve. Mutually exclusive with names and urls — the API rejects a request that sets both. | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------------------------------- | | `orgs` | json | Matched organizations as \[\{orgId, name, description, aliases, urls}] | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights Search Firmographics [#cb-insights-search-firmographics] Search profiles of private companies, public companies, and investors by market, industry, geography, headcount, funding, and valuation. Each field is ANDed together; values within a field are ORed. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `keyword` | string | No | Search term matched against organization names, descriptions, and aliases | | `orgIds` | json | No | CB Insights organization IDs to return, e.g. \[129410, 129411] | | `orgNames` | json | No | Organization names to match exactly, e.g. \["CB Insights"] | | `urls` | json | No | Organization websites to match, e.g. \["cbinsights.com"] | | `tickers` | json | No | Stock tickers to match, each optionally suffixed with an exchange code after a colon | | `marketIds` | json | No | CB Insights market IDs to match, e.g. \[6, 95, 106] | | `marketNames` | json | No | CB Insights market names to match. Partial matches count — "AI" returns every market whose name contains it. | | `industryIds` | json | No | CB Insights industry IDs to match (mid level of the taxonomy) | | `sectorIds` | json | No | CB Insights sector IDs to match (top level of the taxonomy) | | `subindustryIds` | json | No | CB Insights sub-industry IDs to match (lowest level of the taxonomy) | | `businessModelIds` | json | No | CB Insights business model IDs to match | | `technologyIds` | json | No | CB Insights technology landscape IDs to match | | `collectionIds` | json | No | Expert Collection IDs to search within | | `countryIds` | json | No | CB Insights country IDs to match | | `stateProvinceIds` | json | No | CB Insights state or province IDs to match | | `cityIds` | json | No | CB Insights city IDs to match | | `continentIds` | json | No | CB Insights continent IDs to match | | `regionIds` | json | No | CB Insights region IDs to match | | `orgStatusIds` | json | No | CB Insights organization status IDs to match (active, acquired, dead, IPO, merged) | | `investorOrgIds` | json | No | Return organizations these investor organization IDs have invested in | | `investorTypeIds` | json | No | Return investor organizations of these investor types | | `fundingInvestorTypeIds` | json | No | Return organizations funded by these investor types | | `lastFundingRoundIds` | json | No | CB Insights funding round IDs of the most recent round | | `lastFundingRoundCategoryIds` | json | No | CB Insights funding round category IDs of the most recent round | | `minCurrentHeadcount` | number | No | Minimum current headcount | | `maxCurrentHeadcount` | number | No | Maximum current headcount | | `minTotalFundingInMillions` | number | No | Minimum total funding raised, in millions of US dollars | | `maxTotalFundingInMillions` | number | No | Maximum total funding raised, in millions of US dollars | | `minValuationInMillions` | number | No | Minimum valuation, in millions of US dollars | | `maxValuationInMillions` | number | No | Maximum valuation, in millions of US dollars | | `minLastFundingDate` | string | No | Earliest date of the most recent funding round, as YYYY-MM-DD | | `maxLastFundingDate` | string | No | Latest date of the most recent funding round, as YYYY-MM-DD | | `vcBacked` | boolean | No | Restrict to organizations that have received venture funding | | `sortField` | string | No | Sort field: orgName, orgId, lastUpdateTime, lastFundingDate, latestValuation, mosaicOverall, mosaicManagement, mosaicMarket, mosaicMomentum, mosaicMoney, headcountCurrent, headcount6MonthGrowth, headcount12MonthGrowth, or headcount24MonthGrowth | | `sortDirection` | string | No | Sort direction, "asc" or "desc" | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `orgs` | json | Matching profiles as \[\{orgId, summary, taxonomy, financials, headcount, identifiers, businessModels, competitors, expertCollections, parentOrgs, childOrgs}] | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights Get Organization Fundings [#cb-insights-get-organization-fundings] Retrieve the funding rounds one organization has received, its cap table history, and AI-generated insights extracting the key themes of each deal. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-2] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ | | `fundings` | json | Rounds as \[\{dealId, date, round, roundCategory, amountInMillions, valuationInMillions, investors, insights, sources}] | | `capTableHistory` | json | Ownership structure as \[\{dealId, roundType, issuancePrice, conversionPrice, percentageOwned, sharesAuthorized, terms}] | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights Get Organization Investments [#cb-insights-get-organization-investments] Retrieve the rounds in which one organization invested in another, with AI-generated insights extracting the key themes of each deal. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-3] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------- | | `investments` | json | Rounds as \[\{dealId, date, round, roundCategory, amountInMillions, valuationInMillions, recipient, investors, insights, sources}] | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights Get Organization Portfolio Exits [#cb-insights-get-organization-portfolio-exits] Retrieve exit rounds for companies this organization invested in before the exit, with AI-generated insights on each deal. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ---- | --------------------------------------------------------------------------------------------------------------------------------- | | `portfolioExits` | json | Exits as \[\{dealId, date, round, roundCategory, amountInMillions, valuationInMillions, recipient, investors, insights, sources}] | ### CB Insights Get Organization Business Relationships [#cb-insights-get-organization-business-relationships] Retrieve one organization's partnerships, client/vendor relationships, and licensing activity, with AI-generated insights on each. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ---- | ---------------------------------------------------------------------------------------------------------- | | `businessRelationships` | json | Relationships as \[\{relationshipId, startDate, partners, insights, newsSnippet, sources, lastUpdateTime}] | ### CB Insights Get Organization Management and Board [#cb-insights-get-organization-management-and-board] Retrieve an organization's leadership team and board members with their education, work history, and board seats, plus the Management factor of its Mosaic Score. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `titleIds` | json | No | CB Insights person title IDs to filter the people returned, e.g. \[50, 75] | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------- | | `people` | json | People as \[\{personId, givenName, middleName, surname, email, linkedInUrl, education, workExperience, boardAssociations}] | | `mosaicManagement` | number | Management factor of the Mosaic Score, measuring the pedigree and track record of the leadership team | ### CB Insights Get Organization Outlook [#cb-insights-get-organization-outlook] Retrieve an organization's current Mosaic Score, Commercial Maturity level, and two-year IPO and M\&A exit probabilities, with the signals driving each. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `mosaicScore` | json | Mosaic Score on a 0-1000 scale: \{overall, management, market, momentum, money}, each with scoreValue, asOfDate, and scoreInsights | | `commercialMaturity` | json | Commercial Maturity on a 1-5 scale: \{maturityLevel: \{level, stage, stageDescription, asOfDate}, commercialMaturitySignals}. Available only for a subset of companies. | | `exitProbability` | json | Two-year exit probability: \{ipo, mna, exitSignals, incompleteRoundType}. A pending round zeroes the probabilities rather than omitting them. | ### CB Insights Get Organization Funding Window [#cb-insights-get-organization-funding-window] Retrieve the estimated window in which an organization is likely to raise its next round, with the cohort it was compared against. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------------------ | | `windowStart` | string | Estimated start of the next funding window, as YYYY-MM-DD | | `windowEnd` | string | Estimated end of the next funding window, as YYYY-MM-DD | | `cohortNextRoundRate` | number | Share of the cohort that historically raised another round, as a decimal between 0 and 1 | | `cohortCriteria` | json | How the comparison cohort was defined: \{cohortGeo, cohortRoundCategory, cohortLandscapes} | | `latestFunding` | json | The latest equity-backed round: \{date, dealId} | ### CB Insights Get Organization Revenue [#cb-insights-get-organization-revenue] Retrieve reported and estimated revenue by calendar year for one organization, with the sources behind each figure. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `orgId` | number | CB Insights organization ID | | `orgName` | string | The organization's name | | `orgUrl` | string | The organization's website | | `revenue` | json | Revenue by year as \[\{calendarYear, lowestValue, averageValue, highestValue, isActual, reportedMetric, yoyGrowthPercent, sources}] | ### CB Insights Get Mosaic History [#cb-insights-get-mosaic-history] Retrieve an organization's historical Mosaic Scores — overall plus the management, market, momentum, and money factors — so a trend can be read rather than a single snapshot. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `startDate` | string | No | Earliest date to return, as YYYY-MM-DD. Must be on or after 2024-01-01 and within the last 24 months. Defaults to the later of one year ago and 2024-01-01. | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ---- | ------------------------------------------------------------ | | `overall` | json | Overall Mosaic Score over time as \[\{asOfDate, scoreValue}] | | `management` | json | Management factor over time as \[\{asOfDate, scoreValue}] | | `market` | json | Market factor over time as \[\{asOfDate, scoreValue}] | | `momentum` | json | Momentum factor over time as \[\{asOfDate, scoreValue}] | | `money` | json | Money factor over time as \[\{asOfDate, scoreValue}] | ### CB Insights Get Commercial Maturity History [#cb-insights-get-commercial-maturity-history] Retrieve an organization's historical Commercial Maturity levels, tracking how its ability to compete for customers or serve as a partner has moved over time. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `startDate` | string | No | Earliest date to return, as YYYY-MM-DD. Must be on or after 2024-07-25 and within 24 months of endDate. Defaults to the later of one year ago and 2024-07-25. | | `endDate` | string | No | Latest date to return, as YYYY-MM-DD. Must be on or after 2024-07-25 and within 24 months of startDate. Defaults to today. | #### Output [#output-11] | Parameter | Type | Description | | --------------------------- | ---- | ------------------------------------------------------------------------------------------------- | | `commercialMaturityHistory` | json | Maturity levels over time as \[\{asOfDate, level, stage, stageDescription}], where level runs 1-5 | ### CB Insights Get Exit Probability History [#cb-insights-get-exit-probability-history] Retrieve an organization's historical two-year IPO and M\&A exit probabilities, each alongside the mean for comparable companies. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | | `startDate` | string | No | Earliest date to return, as YYYY-MM-DD. Must be on or after 2025-02-25 and within 24 months of endDate. Defaults to the later of one year ago and 2025-02-25. | | `endDate` | string | No | Latest date to return, as YYYY-MM-DD. Must be on or after 2025-02-25 and within 24 months of startDate. Defaults to today. | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------- | | `ipo` | json | IPO probability over time as \[\{asOfDate, exitProbability, meanProbability, ratioToMean}] | | `mna` | json | M\&A probability over time as \[\{asOfDate, exitProbability, meanProbability, ratioToMean}] | | `incompleteRoundType` | string | An in-progress round, if any. A pending round zeroes every probability; a rumored round zeroes only the matching exit type. | ### CB Insights Get Strategy Map [#cb-insights-get-strategy-map] Retrieve the companies related to an organization, grouped into industry categories, with the relationships, investments, and acquisitions that connect them. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------ | | `orgName` | string | The organization's name | | `logoUrl` | string | URL of the organization's logo | | `categories` | json | Industry categories as \[\{name, companies: \[\{orgId, name, logoUrl, connections: \{businessRelationships, investments, acquisitions}}]}] | ### CB Insights Get Scouting Report [#cb-insights-get-scouting-report] Generate an AI-written Scouting Report on a private company covering its business model, market position, strengths, and opportunities. Only active companies are eligible, and generation can take several minutes. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgId` | number | Yes | CB Insights organization ID of an active company. Resolve a name or website to one with Look Up Organizations, which never charges credits. | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `orgInfo` | json | Firmographics and proprietary scores for the company: \{id, name, url, description, foundedYear, headcount, address, stage, totalFunding, lastFundingDate, overallMosaicScore, commercialMaturity} | | `reportMarkdown` | string | The Scouting Report as Markdown, including citations | | `reportJson` | string | The Scouting Report as a JSON string. Citation links are not included in this form — use reportMarkdown when they matter. | ### CB Insights List Fundings [#cb-insights-list-fundings] Retrieve funding rounds and cap table history for up to 100 organizations at once, with AI-generated insights extracting the key themes of each deal. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, fundings, capTableHistory}]. An organization with no data is omitted from the response. | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights List Investments [#cb-insights-list-investments] Retrieve the rounds up to 100 organizations participated in as investors, with AI-generated insights extracting the key themes of each deal. #### Input [#input-16] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-16] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, investments}]. An organization with no data is omitted from the response. | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights List Portfolio Exits [#cb-insights-list-portfolio-exits] Retrieve exit rounds for companies up to 100 organizations invested in before the exit, with AI-generated insights on each deal. #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | | `limit` | number | No | Rows to return in a single response, 1-100 | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-17] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, portfolioExits}]. An organization with no data is omitted from the response. | | `nextPageToken` | string | Token for the next page, or null when there are no more results | | `totalHits` | number | Total number of matching records | | `totalHitsRelation` | string | Whether totalHits is exact ('eq') or a floor ('gte', used above 10,000) | ### CB Insights List Business Relationships [#cb-insights-list-business-relationships] Retrieve partnerships, client/vendor relationships, and licensing activity for up to 100 organizations at once, with AI-generated insights on each. #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | | `nextPageToken` | string | No | Continuation token from a previous response; omit for the first page | #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, businessRelationships}] | | `nextPageToken` | string | Token for the next page, or null when there are no more results | ### CB Insights List Management and Board [#cb-insights-list-management-and-board] Retrieve leadership teams, board members, and the Management factor of the Mosaic Score for up to 100 organizations at once. #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | | `titleIds` | json | No | CB Insights person title IDs to filter the people returned, e.g. \[50, 75] | #### Output [#output-19] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, managementAndBoard: \{mosaicManagement, people}}]. An organization with no data is omitted from the response. | ### CB Insights List Outlook [#cb-insights-list-outlook] Retrieve Mosaic Score, Commercial Maturity, and Exit Probability for up to 100 organizations at once. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | #### Output [#output-20] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `orgs` | json | Organizations as \[\{orgId, mosaicScore, commercialMaturity, exitProbability}]. An organization with no data is omitted from the response. | ### CB Insights List Funding Windows [#cb-insights-list-funding-windows] Retrieve the estimated next-round funding window for up to 100 organizations at once, with the cohort each was compared against. #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | #### Output [#output-21] | Parameter | Type | Description | | --------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `orgs` | json | Organizations as \[\{orgId, windowStart, windowEnd, cohortNextRoundRate, cohortCriteria, latestFunding}]. An organization with no data is omitted from the response. | ### CB Insights List Revenue [#cb-insights-list-revenue] Retrieve reported and estimated revenue by calendar year for up to 100 organizations at once. #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `orgIds` | json | Yes | CB Insights organization IDs, 1-100 per request, e.g. \[129410, 1034157] | #### Output [#output-22] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------------------------------------------------------------------------ | | `orgs` | json | Organizations as \[\{orgId, orgName, orgUrl, revenue}]. An organization with no data is omitted from the response. | ### CB Insights Chat [#cb-insights-chat] Ask ChatCBI a question in natural language and get an answer grounded in CB Insights data, with its sources and suggested follow-ups. Uses generative AI and can be wrong — verify anything that matters. #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `message` | string | Yes | The question to ask, e.g. "Which emerging technology markets are seeing the highest equity funding growth right now?" | | `chatId` | string | No | Conversation ID returned by a previous call. Pass it to continue that conversation rather than starting a new one. | #### Output [#output-23] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------------------------------------- | | `chatId` | string | Conversation ID. Pass it back as chatId to continue this conversation. | | `title` | string | Title CB Insights gave the conversation | | `message` | string | ChatCBI's answer, as Markdown | | `sources` | json | Sources behind the answer as \[\{sourceIndex, result: \{title, url, date, thumbnailUrl}}] | | `relatedContent` | json | Related references as \[\{title, url, date, thumbnailUrl}] | | `suggestions` | json | Suggested follow-up questions | ### CB Insights Retrieve Context [#cb-insights-retrieve-context] Retrieve the raw structured CB Insights data relevant to a question, for feeding your own model rather than reading a written answer. Uses generative AI and can be wrong — verify anything that matters. #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `clientId` | string | Yes | CB Insights API client ID, exchanged for a bearer token before each call | | `clientSecret` | string | Yes | CB Insights API client secret, exchanged for a bearer token before each call | | `message` | string | Yes | The question to retrieve context for. Must be under 10,000 characters. | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `data` | string | Retrieved records as a JSON string, keyed by source (companySearch, dealSearch, markets, scoutingReports, businessRelationships, revenue, investments, and others) | | `guidance` | json | Notes describing what each returned data source contains | --- # Checkr (/integrations/checkr) ## Usage Instructions [#usage-instructions] Integrate Checkr into the workflow. Create and update candidates, send background check invitations, order and upgrade reports, read screening results and assessments, manage report tags, run the adverse action process, schedule recurring checks and continuous monitoring, look up packages, geos, nodes, programs, documents, and users, and react to report, invitation, candidate, verification, adverse action, and continuous check webhooks. ## Actions [#actions] ### Checkr Add Report Tag [#checkr-add-report-tag] Add a tag to a report, keeping its existing tags. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | | `tag` | string | Yes | Tag to add, e.g. To Review | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `tags` | array | Tag names on the report | | `count` | number | Number of tags on the report | ### Checkr Apply Report Review Action [#checkr-apply-report-review-action] Continue or skip the remaining screenings on a report that is paused awaiting a review action. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the paused report | | `decision` | string | Yes | continue to run the remaining screenings, or skip\_remaining to skip them and complete the report | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `message` | string | Confirmation message from Checkr | ### Checkr Cancel Adverse Action [#checkr-cancel-adverse-action] Cancel an adverse action so the post-adverse action notice is not sent. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `adverseActionId` | string | Yes | ID of the adverse action to cancel | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------------------------------ | | `adverseAction` | object | The canceled adverse action | | ↳ `id` | string | Adverse action ID | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `reportId` | string | Report the adverse action is based on | | ↳ `createdAt` | string | Time the adverse action was created | | ↳ `canceledAt` | string | Time the adverse action was canceled | | ↳ `postNoticeScheduledAt` | string | Time the post-adverse action notice is scheduled to send | | ↳ `postNoticeReadyAt` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualizedAssessmentEngaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | Notice delivery state | | ↳ `state` | string | Delivery state (none, queued, sent, delivered, error, unknown, unopened) | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updatedAt` | string | Time the delivery state changed | | ↳ `adverseItems` | array | Adverse items the action is based on | | ↳ `id` | string | Adverse item ID | | ↳ `text` | string | Description of the adverse item | | ↳ `assessment` | json | Assess details (value, rule with name and type) when Assess is enabled | | ↳ `events` | array | Lifecycle events | | ↳ `id` | string | Event ID | | ↳ `type` | string | Event type (created, completed) | | ↳ `time` | string | Time of the event | | ↳ `trigger` | string | What triggered the event | | ↳ `user` | string | User who triggered the event | ### Checkr Cancel Continuous Check [#checkr-cancel-continuous-check] Cancel a continuous check to stop monitoring the candidate. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `continuousCheckId` | string | Yes | ID of the continuous check to cancel | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------- | | `continuousCheck` | object | The canceled continuous check | | ↳ `id` | string | Continuous check ID | | ↳ `type` | string | Continuous check type (criminal, mvr) | | ↳ `candidateId` | string | Enrolled candidate ID | | ↳ `createdAt` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations for the continuous check | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Cancel Invitation [#checkr-cancel-invitation] Cancel a pending invitation so the candidate can no longer complete it. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `invitationId` | string | Yes | ID of the invitation to cancel | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------- | | `invitation` | object | The canceled invitation | | ↳ `id` | string | Invitation ID | | ↳ `uri` | string | Invitation API URI | | ↳ `invitationUrl` | string | URL the candidate opens to complete the invitation | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `createdAt` | string | Time the invitation was created | | ↳ `expiresAt` | string | Time the invitation expires | | ↳ `completedAt` | string | Time the candidate completed the invitation | | ↳ `deletedAt` | string | Time the invitation was canceled | | ↳ `package` | string | Package slug for the invitation | | ↳ `candidateId` | string | Invited candidate ID | | ↳ `reportId` | string | ID of the report created once the invitation is completed | | ↳ `archived` | boolean | Whether the invitation is archived | | ↳ `archivedInfo` | json | Archive details (time, user with email and id) | ### Checkr Cancel Subscription [#checkr-cancel-subscription] Cancel a subscription so no further recurring checks run. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `subscriptionId` | string | Yes | ID of the subscription to cancel | #### Output [#output-5] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------- | | `subscription` | object | The canceled subscription | | ↳ `id` | string | Subscription ID | | ↳ `uri` | string | Subscription API URI | | ↳ `status` | string | Status (active, inactive) | | ↳ `package` | string | Package run on each occurrence | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `intervalCount` | number | Number of intervals between checks | | ↳ `intervalUnit` | string | Interval unit (day, week, month, year) | | ↳ `startDate` | string | Date of the first check | | ↳ `nextOccurrenceDate` | string | Date of the next check | | ↳ `createdAt` | string | Time the subscription was created | | ↳ `canceledAt` | string | Time the subscription was canceled | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations used for each report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Complete Report [#checkr-complete-report] Complete a report now, canceling any pending or suspended screenings. Canceled screenings record a cancellation reason. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report to complete | #### Output [#output-6] | Parameter | Type | Description | | --------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `report` | object | The completed report | | ↳ `id` | string | Report ID | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) for Assess-enabled accounts | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created (api, continuous\_check, form, manual\_order, recurrence, web) | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `includesCanceled` | boolean | Whether the report includes a canceled screening | | ↳ `createdAt` | string | Time the report was created | | ↳ `completedAt` | string | Time the report was completed | | ↳ `revisedAt` | string | Time the report was revised | | ↳ `upgradedAt` | string | Time the report was upgraded | | ↳ `turnaroundTime` | number | Seconds from creation to completion | | ↳ `estimatedCompletionTime` | string | Predicted completion date | | ↳ `archived` | boolean | Whether the report is archived | | ↳ `programId` | string | Program ID linked to the report | | ↳ `segmentStamps` | array | Hierarchy node tier\|name stamps for the ordering node and its parents | | ↳ `workLocations` | array | Work locations set when ordering the report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | | ↳ `geoIds` | array | Geo IDs | | ↳ `documentIds` | array | Document IDs | | ↳ `candidateStoryIds` | array | Candidate story IDs linked to the report | | ↳ `ssnTraceId` | string | SSN trace ID | | ↳ `sexOffenderSearchId` | string | Sex offender search ID | | ↳ `nationalCriminalSearchId` | string | National criminal search ID | | ↳ `globalWatchlistSearchId` | string | Global watchlist search ID | | ↳ `federalCriminalSearchId` | string | Federal criminal search ID | | ↳ `federalDistrictCriminalSearchId` | string | Federal district criminal search ID | | ↳ `federalCivilSearchId` | string | Federal civil search ID | | ↳ `federalDistrictCivilSearchId` | string | Federal district civil search ID | | ↳ `motorVehicleReportId` | string | Motor vehicle report ID | | ↳ `drugScreeningId` | string | Drug screening ID | | ↳ `facisSearchId` | string | FACIS search ID | | ↳ `socialMediaScreeningsId` | string | Social media screening ID | | ↳ `identityVerificationId` | string | Identity verification ID | | ↳ `drugAlcoholClearinghouseId` | string | Drug & Alcohol Clearinghouse search ID | | ↳ `identityDataEvaluationId` | string | Identity data evaluation ID | | ↳ `occupationalHealthScreeningId` | string | Occupational health screening ID | | ↳ `arrestSearchId` | string | Arrest search ID | | ↳ `internationalGlobalWatchlistSearchId` | string | International global watchlist search ID | | ↳ `internationalEducationVerificationId` | string | International education verification ID | | ↳ `internationalEmploymentVerificationId` | string | International employment verification ID | | ↳ `internationalIdentityDocumentValidationId` | string | International identity document validation ID | | ↳ `internationalCriminalSearchIds` | array | International criminal search IDs | | ↳ `internationalAdverseMediaSearchIds` | array | International adverse media search IDs | | ↳ `countyCriminalSearchIds` | array | County criminal search IDs | | ↳ `stateCriminalSearchIds` | array | State criminal search IDs | | ↳ `professionalLicenseVerificationIds` | array | Professional license verification IDs | | ↳ `personalReferenceVerificationIds` | array | Personal reference verification IDs | | ↳ `professionalReferenceVerificationIds` | array | Professional reference verification IDs | | ↳ `drugScreening` | json | Embedded drug screening (id, status, result, disposition, mro\_notes, analytes, events, screening\_pass\_expires\_at, appointment\_id) | ### Checkr Create Adverse Action [#checkr-create-adverse-action] Start the adverse action process on a report by sending the pre-adverse action notice. The report must have a consider result and no active adverse action. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report the adverse action is based on | | `adverseItemIds` | array | Yes | IDs of the adverse items to cite, from List Adverse Items | | `postNoticeScheduledAt` | string | No | ISO 8601 time to send the post-adverse action notice; defaults to 7 days after creation | | `context` | string | No | Optional scoping identifier for the adverse action | | `medium` | json | No | Delivery channels as a JSON object, e.g. \{"email":\{"priority":1,"required":true},"postal":\{"priority":0,"required":false}} | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------------------------------ | | `adverseAction` | object | The created adverse action | | ↳ `id` | string | Adverse action ID | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `reportId` | string | Report the adverse action is based on | | ↳ `createdAt` | string | Time the adverse action was created | | ↳ `canceledAt` | string | Time the adverse action was canceled | | ↳ `postNoticeScheduledAt` | string | Time the post-adverse action notice is scheduled to send | | ↳ `postNoticeReadyAt` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualizedAssessmentEngaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | Notice delivery state | | ↳ `state` | string | Delivery state (none, queued, sent, delivered, error, unknown, unopened) | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updatedAt` | string | Time the delivery state changed | | ↳ `adverseItems` | array | Adverse items the action is based on | | ↳ `id` | string | Adverse item ID | | ↳ `text` | string | Description of the adverse item | | ↳ `assessment` | json | Assess details (value, rule with name and type) when Assess is enabled | | ↳ `events` | array | Lifecycle events | | ↳ `id` | string | Event ID | | ↳ `type` | string | Event type (created, completed) | | ↳ `time` | string | Time of the event | | ↳ `trigger` | string | What triggered the event | | ↳ `user` | string | User who triggered the event | ### Checkr Create Candidate [#checkr-create-candidate] Create a candidate to screen. Only email is required when the candidate will be invited; ordering a report directly also needs name, date of birth, and the PII its package requires. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `email` | string | Yes | Candidate's email address | | `firstName` | string | No | Candidate's first name | | `middleName` | string | No | Candidate's middle name (required to order a report unless noMiddleName is true) | | `noMiddleName` | boolean | No | Set to true when the candidate has no middle name | | `lastName` | string | No | Candidate's last name | | `motherMaidenName` | string | No | Candidate's mother's maiden name | | `phone` | string | No | Candidate's phone number (a mobile number is recommended for identity checks) | | `zipcode` | string | No | Candidate's 5-digit zip code (required for criminal screenings) | | `dob` | string | No | Date of birth in YYYY-MM-DD format | | `ssn` | string | No | Social Security Number, e.g. 111-11-2001 (required for criminal screenings) | | `driverLicenseNumber` | string | No | Driver license number (required for motor vehicle reports) | | `driverLicenseState` | string | No | Driver license issuing state as a two-letter code, e.g. CA | | `previousDriverLicenseNumber` | string | No | Previous driver license number | | `previousDriverLicenseState` | string | No | Previous driver license issuing state as a two-letter code | | `copyRequested` | boolean | No | Whether the candidate wants a copy of their report | | `customId` | string | No | Your own unique ID for the candidate, such as an HRIS ID | | `geoIds` | array | No | Geo IDs to assign (replaces existing geos) | | `metadata` | json | No | Up to 50 custom key-value pairs as a JSON object | | `postalAddress` | json | No | Postal address as a JSON object with name, street, street2, city, state, and zipcode | | `workLocations` | array | No | Work locations (required for candidates outside the US), e.g. \[\{"country":"GB","state":"LND","city":"London"}] | #### Output [#output-8] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `candidate` | object | The created candidate | | ↳ `id` | string | Candidate ID | | ↳ `uri` | string | Candidate API URI | | ↳ `createdAt` | string | Time the candidate was created | | ↳ `firstName` | string | First name | | ↳ `middleName` | string | Middle name | | ↳ `noMiddleName` | boolean | Whether the candidate has no middle name | | ↳ `lastName` | string | Last name | | ↳ `motherMaidenName` | string | Mother's maiden name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | 5-digit zip code | | ↳ `dob` | string | Date of birth (YYYY-MM-DD) | | ↳ `ssn` | string | Social Security Number, redacted to the last four digits | | ↳ `driverLicenseNumber` | string | Driver license number | | ↳ `driverLicenseState` | string | Driver license issuing state (ISO 3166-2:US) | | ↳ `previousDriverLicenseNumber` | string | Previous driver license number | | ↳ `previousDriverLicenseState` | string | Previous driver license issuing state | | ↳ `copyRequested` | boolean | Whether the candidate asked for a copy of their report | | ↳ `customId` | string | Your own ID for the candidate | | ↳ `adjudication` | string | Adjudication of the most recent report (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `reportIds` | array | IDs of reports for this candidate | | ↳ `geoIds` | array | IDs of geos assigned to this candidate | | ↳ `postalAddress` | json | Postal address (name, street, street2, city, state, zipcode) | | ↳ `metadata` | json | Custom key-value metadata | ### Checkr Create Continuous Check [#checkr-create-continuous-check] Enroll a candidate in continuous criminal or motor vehicle monitoring so new records trigger a report. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to enroll | | `continuousCheckType` | string | Yes | Type of monitoring: criminal or mvr | | `mvrEnrollmentType` | string | No | For mvr checks, the enrollment type: commercial for commercial drivers or standard | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | #### Output [#output-9] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------- | | `continuousCheck` | object | The created continuous check | | ↳ `id` | string | Continuous check ID | | ↳ `type` | string | Continuous check type (criminal, mvr) | | ↳ `candidateId` | string | Enrolled candidate ID | | ↳ `createdAt` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations for the continuous check | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Create Geo [#checkr-create-geo] Create a geo to group candidates by work location. A geo with the same name and state already existing returns an error. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `name` | string | Yes | Name of the geo, e.g. San Francisco | | `state` | string | Yes | Two-letter US state for the geo, e.g. CA | | `city` | string | No | A major city within the state | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `geo` | object | The created geo | | ↳ `id` | string | Geo ID | | ↳ `uri` | string | Geo API URI | | ↳ `name` | string | Geo name | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `createdAt` | string | Time the geo was created | | ↳ `deletedAt` | string | Time the geo was deleted | ### Checkr Create Invitation [#checkr-create-invitation] Invite a candidate to complete a background check through the Checkr-hosted apply flow. Checkr emails the candidate a link to provide their information and consent. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to invite | | `package` | string | Yes | Slug of the package to run, e.g. driver\_pro | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | | `tags` | array | No | Tags for the resulting report | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------- | | `invitation` | object | The created invitation | | ↳ `id` | string | Invitation ID | | ↳ `uri` | string | Invitation API URI | | ↳ `invitationUrl` | string | URL the candidate opens to complete the invitation | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `createdAt` | string | Time the invitation was created | | ↳ `expiresAt` | string | Time the invitation expires | | ↳ `completedAt` | string | Time the candidate completed the invitation | | ↳ `deletedAt` | string | Time the invitation was canceled | | ↳ `package` | string | Package slug for the invitation | | ↳ `candidateId` | string | Invited candidate ID | | ↳ `reportId` | string | ID of the report created once the invitation is completed | | ↳ `archived` | boolean | Whether the invitation is archived | | ↳ `archivedInfo` | json | Archive details (time, user with email and id) | ### Checkr Create Report [#checkr-create-report] Order a background check report for a candidate using a package. Use only when you collect the candidate’s PII and consent yourself; otherwise create an invitation. Packages with international screenings must use invitations. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to screen | | `package` | string | Yes | Slug of the package to run, e.g. driver\_pro | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | | `tags` | array | No | Tags for the report | | `selfDisclosures` | array | No | Candidate self-disclosed criminal history. Cannot be changed after the report is created | #### Output [#output-12] | Parameter | Type | Description | | --------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `report` | object | The created report | | ↳ `id` | string | Report ID | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) for Assess-enabled accounts | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created (api, continuous\_check, form, manual\_order, recurrence, web) | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `includesCanceled` | boolean | Whether the report includes a canceled screening | | ↳ `createdAt` | string | Time the report was created | | ↳ `completedAt` | string | Time the report was completed | | ↳ `revisedAt` | string | Time the report was revised | | ↳ `upgradedAt` | string | Time the report was upgraded | | ↳ `turnaroundTime` | number | Seconds from creation to completion | | ↳ `estimatedCompletionTime` | string | Predicted completion date | | ↳ `archived` | boolean | Whether the report is archived | | ↳ `programId` | string | Program ID linked to the report | | ↳ `segmentStamps` | array | Hierarchy node tier\|name stamps for the ordering node and its parents | | ↳ `workLocations` | array | Work locations set when ordering the report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | | ↳ `geoIds` | array | Geo IDs | | ↳ `documentIds` | array | Document IDs | | ↳ `candidateStoryIds` | array | Candidate story IDs linked to the report | | ↳ `ssnTraceId` | string | SSN trace ID | | ↳ `sexOffenderSearchId` | string | Sex offender search ID | | ↳ `nationalCriminalSearchId` | string | National criminal search ID | | ↳ `globalWatchlistSearchId` | string | Global watchlist search ID | | ↳ `federalCriminalSearchId` | string | Federal criminal search ID | | ↳ `federalDistrictCriminalSearchId` | string | Federal district criminal search ID | | ↳ `federalCivilSearchId` | string | Federal civil search ID | | ↳ `federalDistrictCivilSearchId` | string | Federal district civil search ID | | ↳ `motorVehicleReportId` | string | Motor vehicle report ID | | ↳ `drugScreeningId` | string | Drug screening ID | | ↳ `facisSearchId` | string | FACIS search ID | | ↳ `socialMediaScreeningsId` | string | Social media screening ID | | ↳ `identityVerificationId` | string | Identity verification ID | | ↳ `drugAlcoholClearinghouseId` | string | Drug & Alcohol Clearinghouse search ID | | ↳ `identityDataEvaluationId` | string | Identity data evaluation ID | | ↳ `occupationalHealthScreeningId` | string | Occupational health screening ID | | ↳ `arrestSearchId` | string | Arrest search ID | | ↳ `internationalGlobalWatchlistSearchId` | string | International global watchlist search ID | | ↳ `internationalEducationVerificationId` | string | International education verification ID | | ↳ `internationalEmploymentVerificationId` | string | International employment verification ID | | ↳ `internationalIdentityDocumentValidationId` | string | International identity document validation ID | | ↳ `internationalCriminalSearchIds` | array | International criminal search IDs | | ↳ `internationalAdverseMediaSearchIds` | array | International adverse media search IDs | | ↳ `countyCriminalSearchIds` | array | County criminal search IDs | | ↳ `stateCriminalSearchIds` | array | State criminal search IDs | | ↳ `professionalLicenseVerificationIds` | array | Professional license verification IDs | | ↳ `personalReferenceVerificationIds` | array | Personal reference verification IDs | | ↳ `professionalReferenceVerificationIds` | array | Professional reference verification IDs | | ↳ `drugScreening` | json | Embedded drug screening (id, status, result, disposition, mro\_notes, analytes, events, screening\_pass\_expires\_at, appointment\_id) | ### Checkr Create Subscription [#checkr-create-subscription] Schedule a recurring background check for a candidate, running a package every interval starting on a date. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to screen | | `package` | string | Yes | Slug of the package to run on each occurrence | | `startDate` | string | Yes | Date of the first check in YYYY-MM-DD format | | `intervalCount` | number | No | Number of interval units between checks, e.g. 1 | | `intervalUnit` | string | No | Interval unit: day, week, month, or year | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | #### Output [#output-13] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------- | | `subscription` | object | The created subscription | | ↳ `id` | string | Subscription ID | | ↳ `uri` | string | Subscription API URI | | ↳ `status` | string | Status (active, inactive) | | ↳ `package` | string | Package run on each occurrence | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `intervalCount` | number | Number of intervals between checks | | ↳ `intervalUnit` | string | Interval unit (day, week, month, year) | | ↳ `startDate` | string | Date of the first check | | ↳ `nextOccurrenceDate` | string | Date of the next check | | ↳ `createdAt` | string | Time the subscription was created | | ↳ `canceledAt` | string | Time the subscription was canceled | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations used for each report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Delete Candidate PII [#checkr-delete-candidate-pii] Request removal of a candidate's personally identifiable information. Fails if PII was already removed. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate whose PII should be removed | | `deletionContactEmail` | string | Yes | Email address of the person requesting the PII removal | | `deletionContactFirstName` | string | No | First name of the person requesting the PII removal | | `deletionContactLastName` | string | No | Last name of the person requesting the PII removal | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `candidate` | object | The candidate after the PII removal request | | ↳ `id` | string | Candidate ID | | ↳ `uri` | string | Candidate API URI | | ↳ `createdAt` | string | Time the candidate was created | | ↳ `firstName` | string | First name | | ↳ `middleName` | string | Middle name | | ↳ `noMiddleName` | boolean | Whether the candidate has no middle name | | ↳ `lastName` | string | Last name | | ↳ `motherMaidenName` | string | Mother's maiden name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | 5-digit zip code | | ↳ `dob` | string | Date of birth (YYYY-MM-DD) | | ↳ `ssn` | string | Social Security Number, redacted to the last four digits | | ↳ `driverLicenseNumber` | string | Driver license number | | ↳ `driverLicenseState` | string | Driver license issuing state (ISO 3166-2:US) | | ↳ `previousDriverLicenseNumber` | string | Previous driver license number | | ↳ `previousDriverLicenseState` | string | Previous driver license issuing state | | ↳ `copyRequested` | boolean | Whether the candidate asked for a copy of their report | | ↳ `customId` | string | Your own ID for the candidate | | ↳ `adjudication` | string | Adjudication of the most recent report (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `reportIds` | array | IDs of reports for this candidate | | ↳ `geoIds` | array | IDs of geos assigned to this candidate | | ↳ `postalAddress` | json | Postal address (name, street, street2, city, state, zipcode) | | ↳ `metadata` | json | Custom key-value metadata | ### Checkr Delete Geo [#checkr-delete-geo] Delete a geo. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `geoId` | string | Yes | ID of the geo to delete | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | --------------------------- | | `deleted` | boolean | Whether the geo was deleted | | `geoId` | string | ID of the deleted geo | ### Checkr Get Account [#checkr-get-account] Retrieve the authenticated Checkr account, including whether it is authorized to order checks and which screenings are available. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | #### Output [#output-16] | Parameter | Type | Description | | -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `account` | object | The authenticated account | | ↳ `id` | string | Account ID | | ↳ `name` | string | Account name | | ↳ `uriName` | string | Account slug used in URLs | | ↳ `purpose` | string | Permissible purpose (employment, business, insurance, tenant) | | ↳ `authorized` | boolean | Whether the account is credentialed to order checks | | ↳ `apiAuthorized` | boolean | Whether the account can order checks through the API | | ↳ `geosRequired` | boolean | Whether a geo is required to order a report | | ↳ `segmentationEnabled` | boolean | Whether the account hierarchy (nodes) is enabled | | ↳ `availableScreenings` | array | Screening types available to the account | | ↳ `adverseActionEmail` | string | Email that sends adverse action notices | | ↳ `billingEmail` | string | Billing contact email | | ↳ `complianceContactEmail` | string | Compliance contact email | | ↳ `technicalContactEmail` | string | Technical contact email | | ↳ `supportEmail` | string | Email candidates use to contact you | | ↳ `supportPhone` | string | Phone number candidates use to contact you | | ↳ `defaultComplianceCity` | string | Fallback compliance city | | ↳ `defaultComplianceState` | string | Fallback compliance state | | ↳ `createdAt` | string | Time the account was created | | ↳ `company` | json | Company details (name, dba\_name, street, city, state, zipcode, phone, website, industry, incorporation\_state, incorporation\_type, tax\_id) | | ↳ `accountDeauthorization` | json | Deauthorization details (reason) when the account is deauthorized | ### Checkr Get Adverse Action [#checkr-get-adverse-action] Retrieve an adverse action by ID, including its status and notice delivery state. #### Input [#input-17] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `adverseActionId` | string | Yes | ID of the adverse action | #### Output [#output-17] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------------------------------ | | `adverseAction` | object | The adverse action | | ↳ `id` | string | Adverse action ID | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `reportId` | string | Report the adverse action is based on | | ↳ `createdAt` | string | Time the adverse action was created | | ↳ `canceledAt` | string | Time the adverse action was canceled | | ↳ `postNoticeScheduledAt` | string | Time the post-adverse action notice is scheduled to send | | ↳ `postNoticeReadyAt` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualizedAssessmentEngaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | Notice delivery state | | ↳ `state` | string | Delivery state (none, queued, sent, delivered, error, unknown, unopened) | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updatedAt` | string | Time the delivery state changed | | ↳ `adverseItems` | array | Adverse items the action is based on | | ↳ `id` | string | Adverse item ID | | ↳ `text` | string | Description of the adverse item | | ↳ `assessment` | json | Assess details (value, rule with name and type) when Assess is enabled | | ↳ `events` | array | Lifecycle events | | ↳ `id` | string | Event ID | | ↳ `type` | string | Event type (created, completed) | | ↳ `time` | string | Time of the event | | ↳ `trigger` | string | What triggered the event | | ↳ `user` | string | User who triggered the event | ### Checkr Get Candidate [#checkr-get-candidate] Retrieve a candidate by ID, including their report and geo IDs. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to retrieve | #### Output [#output-18] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `candidate` | object | The candidate | | ↳ `id` | string | Candidate ID | | ↳ `uri` | string | Candidate API URI | | ↳ `createdAt` | string | Time the candidate was created | | ↳ `firstName` | string | First name | | ↳ `middleName` | string | Middle name | | ↳ `noMiddleName` | boolean | Whether the candidate has no middle name | | ↳ `lastName` | string | Last name | | ↳ `motherMaidenName` | string | Mother's maiden name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | 5-digit zip code | | ↳ `dob` | string | Date of birth (YYYY-MM-DD) | | ↳ `ssn` | string | Social Security Number, redacted to the last four digits | | ↳ `driverLicenseNumber` | string | Driver license number | | ↳ `driverLicenseState` | string | Driver license issuing state (ISO 3166-2:US) | | ↳ `previousDriverLicenseNumber` | string | Previous driver license number | | ↳ `previousDriverLicenseState` | string | Previous driver license issuing state | | ↳ `copyRequested` | boolean | Whether the candidate asked for a copy of their report | | ↳ `customId` | string | Your own ID for the candidate | | ↳ `adjudication` | string | Adjudication of the most recent report (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `reportIds` | array | IDs of reports for this candidate | | ↳ `geoIds` | array | IDs of geos assigned to this candidate | | ↳ `postalAddress` | json | Postal address (name, street, street2, city, state, zipcode) | | ↳ `metadata` | json | Custom key-value metadata | ### Checkr Get Continuous Check [#checkr-get-continuous-check] Retrieve a continuous check by ID. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `continuousCheckId` | string | Yes | ID of the continuous check | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------- | | `continuousCheck` | object | The continuous check | | ↳ `id` | string | Continuous check ID | | ↳ `type` | string | Continuous check type (criminal, mvr) | | ↳ `candidateId` | string | Enrolled candidate ID | | ↳ `createdAt` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations for the continuous check | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Get Document [#checkr-get-document] Retrieve a report or candidate document by ID, including a download link valid for 15 minutes. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `documentId` | string | Yes | ID of the document | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------- | | `document` | object | The document | | ↳ `id` | string | Document ID | | ↳ `type` | string | Document type, such as driver\_license or consent | | ↳ `filename` | string | File name | | ↳ `contentType` | string | MIME type | | ↳ `filesize` | number | File size in bytes | | ↳ `downloadUri` | string | Temporary download URL, valid for 15 minutes | | ↳ `locale` | string | Document locale | | ↳ `createdAt` | string | Time the document was created | ### Checkr Get Geo [#checkr-get-geo] Retrieve a geo by ID. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `geoId` | string | Yes | ID of the geo | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `geo` | object | The geo | | ↳ `id` | string | Geo ID | | ↳ `uri` | string | Geo API URI | | ↳ `name` | string | Geo name | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `createdAt` | string | Time the geo was created | | ↳ `deletedAt` | string | Time the geo was deleted | ### Checkr Get Invitation [#checkr-get-invitation] Retrieve an invitation by ID, including its status and invitation URL. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `invitationId` | string | Yes | ID of the invitation to retrieve | | `includeDeleted` | boolean | No | Whether to return the invitation even if it was canceled | #### Output [#output-22] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------- | | `invitation` | object | The invitation | | ↳ `id` | string | Invitation ID | | ↳ `uri` | string | Invitation API URI | | ↳ `invitationUrl` | string | URL the candidate opens to complete the invitation | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `createdAt` | string | Time the invitation was created | | ↳ `expiresAt` | string | Time the invitation expires | | ↳ `completedAt` | string | Time the candidate completed the invitation | | ↳ `deletedAt` | string | Time the invitation was canceled | | ↳ `package` | string | Package slug for the invitation | | ↳ `candidateId` | string | Invited candidate ID | | ↳ `reportId` | string | ID of the report created once the invitation is completed | | ↳ `archived` | boolean | Whether the invitation is archived | | ↳ `archivedInfo` | json | Archive details (time, user with email and id) | ### Checkr Get Node [#checkr-get-node] Retrieve an account hierarchy node by its custom ID. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `nodeCustomId` | string | Yes | Custom ID of the node | | `includePackages` | boolean | No | Include the package slugs available to the node | #### Output [#output-23] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------- | | `node` | object | The node | | ↳ `customId` | string | Node custom ID | | ↳ `name` | string | Node name | | ↳ `tier` | string | Hierarchy tier label | | ↳ `parentCustomId` | string | Parent node custom ID | | ↳ `packages` | array | Package slugs visible to the node (when packages are included) | ### Checkr Get Package [#checkr-get-package] Retrieve a package by ID, including its slug, price, and screenings. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `packageId` | string | Yes | ID of the package | #### Output [#output-24] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `package` | object | The package | | ↳ `id` | string | Package ID | | ↳ `uri` | string | Package API URI | | ↳ `name` | string | Package name | | ↳ `slug` | string | Package slug used when ordering reports | | ↳ `price` | number | Price in USD cents | | ↳ `applyUrl` | string | URL where candidates can apply with this package | | ↳ `createdAt` | string | Time the package was created | | ↳ `deletedAt` | string | Time the package was deleted | | ↳ `screenings` | array | Screenings included in the package | | ↳ `type` | string | Screening type | | ↳ `subtype` | string | Screening subtype | ### Checkr Get Program [#checkr-get-program] Retrieve a program by ID, including its package and geo IDs. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `programId` | string | Yes | ID of the program | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------ | ---------------------------- | | `program` | object | The program | | ↳ `id` | string | Program ID | | ↳ `name` | string | Program name | | ↳ `createdAt` | string | Time the program was created | | ↳ `deletedAt` | string | Time the program was deleted | | ↳ `packageIds` | array | Associated package IDs | | ↳ `geoIds` | array | Associated geo IDs | ### Checkr Get Report [#checkr-get-report] Retrieve a report by ID, including its status, result, adjudication, and the IDs of each screening it ran. #### Input [#input-26] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report to retrieve | #### Output [#output-26] | Parameter | Type | Description | | --------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `report` | object | The report | | ↳ `id` | string | Report ID | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) for Assess-enabled accounts | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created (api, continuous\_check, form, manual\_order, recurrence, web) | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `includesCanceled` | boolean | Whether the report includes a canceled screening | | ↳ `createdAt` | string | Time the report was created | | ↳ `completedAt` | string | Time the report was completed | | ↳ `revisedAt` | string | Time the report was revised | | ↳ `upgradedAt` | string | Time the report was upgraded | | ↳ `turnaroundTime` | number | Seconds from creation to completion | | ↳ `estimatedCompletionTime` | string | Predicted completion date | | ↳ `archived` | boolean | Whether the report is archived | | ↳ `programId` | string | Program ID linked to the report | | ↳ `segmentStamps` | array | Hierarchy node tier\|name stamps for the ordering node and its parents | | ↳ `workLocations` | array | Work locations set when ordering the report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | | ↳ `geoIds` | array | Geo IDs | | ↳ `documentIds` | array | Document IDs | | ↳ `candidateStoryIds` | array | Candidate story IDs linked to the report | | ↳ `ssnTraceId` | string | SSN trace ID | | ↳ `sexOffenderSearchId` | string | Sex offender search ID | | ↳ `nationalCriminalSearchId` | string | National criminal search ID | | ↳ `globalWatchlistSearchId` | string | Global watchlist search ID | | ↳ `federalCriminalSearchId` | string | Federal criminal search ID | | ↳ `federalDistrictCriminalSearchId` | string | Federal district criminal search ID | | ↳ `federalCivilSearchId` | string | Federal civil search ID | | ↳ `federalDistrictCivilSearchId` | string | Federal district civil search ID | | ↳ `motorVehicleReportId` | string | Motor vehicle report ID | | ↳ `drugScreeningId` | string | Drug screening ID | | ↳ `facisSearchId` | string | FACIS search ID | | ↳ `socialMediaScreeningsId` | string | Social media screening ID | | ↳ `identityVerificationId` | string | Identity verification ID | | ↳ `drugAlcoholClearinghouseId` | string | Drug & Alcohol Clearinghouse search ID | | ↳ `identityDataEvaluationId` | string | Identity data evaluation ID | | ↳ `occupationalHealthScreeningId` | string | Occupational health screening ID | | ↳ `arrestSearchId` | string | Arrest search ID | | ↳ `internationalGlobalWatchlistSearchId` | string | International global watchlist search ID | | ↳ `internationalEducationVerificationId` | string | International education verification ID | | ↳ `internationalEmploymentVerificationId` | string | International employment verification ID | | ↳ `internationalIdentityDocumentValidationId` | string | International identity document validation ID | | ↳ `internationalCriminalSearchIds` | array | International criminal search IDs | | ↳ `internationalAdverseMediaSearchIds` | array | International adverse media search IDs | | ↳ `countyCriminalSearchIds` | array | County criminal search IDs | | ↳ `stateCriminalSearchIds` | array | State criminal search IDs | | ↳ `professionalLicenseVerificationIds` | array | Professional license verification IDs | | ↳ `personalReferenceVerificationIds` | array | Personal reference verification IDs | | ↳ `professionalReferenceVerificationIds` | array | Professional reference verification IDs | | ↳ `drugScreening` | json | Embedded drug screening (id, status, result, disposition, mro\_notes, analytes, events, screening\_pass\_expires\_at, appointment\_id) | ### Checkr Get Report ETA [#checkr-get-report-eta] Retrieve the estimated completion date for a report. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | #### Output [#output-27] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------- | | `estimateGeneratedAt` | string | Time the estimate was generated | | `estimatedCompletionTime` | string | Predicted completion date (only the date is meaningful) | ### Checkr Get Progressive Report Status [#checkr-get-progressive-report-status] Retrieve checkpoint progress for an Enterprise Progressive report, including which checkpoint is waiting on a review action. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the progressive report | #### Output [#output-28] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `report` | object | Report identity and status | | ↳ `id` | string | Report ID | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Report status | | `progressiveContinuationStatus` | string | Whether the report can still be advanced (eligible, ineligible, expired) | | `expiresAt` | string | Deadline for applying a review action to run the remaining screenings | | `checkpoints` | array | Ordered progressive checkpoints | | ↳ `position` | number | 1-based checkpoint position | | ↳ `name` | string | Checkpoint name | | ↳ `status` | string | Checkpoint status (defined, prepared, start\_requested, in\_progress, completed, skipped, canceled, failed) | | ↳ `productKeys` | array | Product keys run at this checkpoint, e.g. ssn\_trace | | ↳ `userReview` | object | User review state for the checkpoint | | ↳ `status` | string | Review status | | ↳ `decision` | string | Decision applied (continue, skip, or a custom label) | | ↳ `expired` | boolean | Whether the review window closed and the default decision applied | | ↳ `pausedAt` | string | Time the report paused for this review | ### Checkr Get Report Tags [#checkr-get-report-tags] List the tags on a report. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `tags` | array | Tag names on the report | | `count` | number | Number of tags on the report | ### Checkr Get Screening [#checkr-get-screening] Retrieve the results of one screening in a report, such as an SSN trace, county criminal search, or motor vehicle report. Get the screening ID from the report. #### Input [#input-30] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `screeningType` | string | Yes | Screening type, one of: ssn\_trace, sex\_offender\_search, global\_watchlist\_search, national\_criminal\_search, county\_criminal\_search, state\_criminal\_search, federal\_criminal\_search, federal\_district\_criminal\_search, federal\_civil\_search, federal\_district\_civil\_search, motor\_vehicle\_report, drug\_alcohol\_clearinghouse\_search, fmcsa\_pre\_employment\_screening\_program\_search, education\_verification, employment\_verification, personal\_reference\_verification, professional\_reference\_verification, professional\_license\_verification, social\_media\_screening, facis\_search, identity\_data\_evaluation, international\_adverse\_media\_search, international\_criminal\_search, international\_education\_verification, international\_employment\_verification, international\_global\_watchlist\_search, international\_identity\_document\_validation, international\_motor\_vehicle\_report | | `screeningId` | string | Yes | ID of the screening, taken from the matching report field | #### Output [#output-30] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `screening` | object | The screening | | ↳ `id` | string | Screening ID | | ↳ `object` | string | Screening object type, e.g. county\_criminal\_search | | ↳ `uri` | string | Screening API URI | | ↳ `status` | string | Status (pending, complete, canceled, suspended) | | ↳ `result` | string | Result (clear, consider) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) for Assess-enabled accounts | | ↳ `createdAt` | string | Time the screening was created | | ↳ `completedAt` | string | Time the screening was completed | | ↳ `turnaroundTime` | number | Seconds from creation to completion | | ↳ `estimatedCompletionTime` | string | Estimated completion time, where Checkr provides one | | ↳ `cancellationReason` | string | Cancellation reason code when the screening was canceled | | ↳ `cancellationReasonDescription` | string | Cancellation reason description | | ↳ `records` | json | Records found by criminal and civil searches (case\_number, county, state, charges with charge, classification, disposition, offense\_date, and more); empty for screenings without records | | ↳ `details` | json | Complete screening object as returned by Checkr, including type-specific fields such as county, state, licenses, violations, or verification results | ### Checkr Get Subscription [#checkr-get-subscription] Retrieve a subscription by ID, including its schedule and next occurrence. #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `subscriptionId` | string | Yes | ID of the subscription | #### Output [#output-31] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------- | | `subscription` | object | The subscription | | ↳ `id` | string | Subscription ID | | ↳ `uri` | string | Subscription API URI | | ↳ `status` | string | Status (active, inactive) | | ↳ `package` | string | Package run on each occurrence | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `intervalCount` | number | Number of intervals between checks | | ↳ `intervalUnit` | string | Interval unit (day, week, month, year) | | ↳ `startDate` | string | Date of the first check | | ↳ `nextOccurrenceDate` | string | Date of the next check | | ↳ `createdAt` | string | Time the subscription was created | | ↳ `canceledAt` | string | Time the subscription was canceled | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations used for each report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Get Verification [#checkr-get-verification] Retrieve a verification by ID. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `verificationId` | string | Yes | ID of the verification | #### Output [#output-32] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------------- | | `verification` | object | The verification | | ↳ `id` | string | Verification ID | | ↳ `uri` | string | Verification API URI | | ↳ `verificationType` | string | Verification type, such as id or ssn\_confirmation | | ↳ `verificationUrl` | string | URL where the candidate submits the requested information | | ↳ `reportId` | string | Report ID | | ↳ `createdAt` | string | Time the verification was created | | ↳ `completedAt` | string | Time the candidate completed the verification | | ↳ `processedAt` | string | Time the verification was processed | ### Checkr List Adverse Actions [#checkr-list-adverse-actions] List the adverse actions for a report, optionally filtered by context. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | | `context` | string | No | Only return adverse actions with this context | #### Output [#output-33] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------------------------------ | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `adverseActions` | array | Adverse actions for the report | | ↳ `id` | string | Adverse action ID | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `reportId` | string | Report the adverse action is based on | | ↳ `createdAt` | string | Time the adverse action was created | | ↳ `canceledAt` | string | Time the adverse action was canceled | | ↳ `postNoticeScheduledAt` | string | Time the post-adverse action notice is scheduled to send | | ↳ `postNoticeReadyAt` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualizedAssessmentEngaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | Notice delivery state | | ↳ `state` | string | Delivery state (none, queued, sent, delivered, error, unknown, unopened) | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updatedAt` | string | Time the delivery state changed | | ↳ `adverseItems` | array | Adverse items the action is based on | | ↳ `id` | string | Adverse item ID | | ↳ `text` | string | Description of the adverse item | | ↳ `assessment` | json | Assess details (value, rule with name and type) when Assess is enabled | | ↳ `events` | array | Lifecycle events | | ↳ `id` | string | Event ID | | ↳ `type` | string | Event type (created, completed) | | ↳ `time` | string | Time of the event | | ↳ `trigger` | string | What triggered the event | | ↳ `user` | string | User who triggered the event | ### Checkr List Adverse Items [#checkr-list-adverse-items] List the adverse items on a report that can be cited in an adverse action. The report must have a consider result and no active adverse action. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | #### Output [#output-34] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------------------------- | | `adverseItems` | array | Adverse items that can be cited in an adverse action | | ↳ `id` | string | Adverse item ID | | ↳ `text` | string | Description of the adverse item | | ↳ `assessment` | json | Assess details (value, rule with name and type) when Assess is enabled | | `count` | number | Number of adverse items | ### Checkr List Assessments [#checkr-list-assessments] List the Assess results for a report, including the ruleset applied and which rule flagged each record. Requires Checkr Assess. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | #### Output [#output-35] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------------------------- | | `assessments` | array | Assessments for the report | | ↳ `value` | string | Assessment value (eligible, review, escalated) | | ↳ `createdAt` | string | Time the assessment was made | | ↳ `ruleset` | json | Ruleset applied (id, name, version with number) | | ↳ `results` | json | Rule results, each with value, assessed\_objects (object\_id, object\_type), and rule (name, type) | | `count` | number | Number of assessments | ### Checkr List Candidate Documents [#checkr-list-candidate-documents] List documents a candidate provided, such as driver licenses and consent forms. Download links expire after 15 minutes. #### Input [#input-36] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate | | `documentTypes` | array | No | Only return these document types, e.g. driver\_license, consent | #### Output [#output-36] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------- | | `documents` | array | Candidate documents | | ↳ `id` | string | Document ID | | ↳ `type` | string | Document type, such as driver\_license or consent | | ↳ `filename` | string | File name | | ↳ `contentType` | string | MIME type | | ↳ `filesize` | number | File size in bytes | | ↳ `downloadUri` | string | Temporary download URL, valid for 15 minutes | | ↳ `locale` | string | Document locale | | ↳ `createdAt` | string | Time the document was created | | `count` | number | Number of documents | ### Checkr List Candidates [#checkr-list-candidates] List candidates, optionally filtered by email, name, custom ID, adjudication, dates, geo, or program. Candidates with non-US work locations are not returned. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `email` | string | No | Only return candidates with this email address | | `fullName` | string | No | Only return candidates with this full name | | `customId` | string | No | Only return candidates with this custom ID | | `adjudication` | string | No | Only return candidates with this adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | `createdAfter` | string | No | Only return candidates created after this date (YYYY-MM-DD or ISO 8601) | | `createdBefore` | string | No | Only return candidates created before this date (YYYY-MM-DD or ISO 8601) | | `reportAdjudicatedAfter` | string | No | Only return candidates with a report adjudicated after this date | | `reportAdjudicatedBefore` | string | No | Only return candidates with a report adjudicated before this date | | `reportAdjudicatorEmail` | string | No | Only return candidates with a report adjudicated by this user email | | `reportRevisedAfter` | string | No | Only return candidates with a report revised after this date | | `reportRevisedBefore` | string | No | Only return candidates with a report revised before this date | | `driverLicenseNumber` | string | No | Only return candidates with this driver license number | | `geoId` | string | No | Only return candidates assigned to this geo ID | | `programId` | string | No | Only return candidates in this program ID | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-37] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `candidates` | array | Matching candidates | | ↳ `id` | string | Candidate ID | | ↳ `uri` | string | Candidate API URI | | ↳ `createdAt` | string | Time the candidate was created | | ↳ `firstName` | string | First name | | ↳ `middleName` | string | Middle name | | ↳ `noMiddleName` | boolean | Whether the candidate has no middle name | | ↳ `lastName` | string | Last name | | ↳ `motherMaidenName` | string | Mother's maiden name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | 5-digit zip code | | ↳ `dob` | string | Date of birth (YYYY-MM-DD) | | ↳ `ssn` | string | Social Security Number, redacted to the last four digits | | ↳ `driverLicenseNumber` | string | Driver license number | | ↳ `driverLicenseState` | string | Driver license issuing state (ISO 3166-2:US) | | ↳ `previousDriverLicenseNumber` | string | Previous driver license number | | ↳ `previousDriverLicenseState` | string | Previous driver license issuing state | | ↳ `copyRequested` | boolean | Whether the candidate asked for a copy of their report | | ↳ `customId` | string | Your own ID for the candidate | | ↳ `adjudication` | string | Adjudication of the most recent report (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `reportIds` | array | IDs of reports for this candidate | | ↳ `geoIds` | array | IDs of geos assigned to this candidate | | ↳ `postalAddress` | json | Postal address (name, street, street2, city, state, zipcode) | | ↳ `metadata` | json | Custom key-value metadata | ### Checkr List Continuous Checks [#checkr-list-continuous-checks] List the continuous checks a candidate is enrolled in. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate | #### Output [#output-38] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------- | | `continuousChecks` | array | Continuous checks for the candidate | | ↳ `id` | string | Continuous check ID | | ↳ `type` | string | Continuous check type (criminal, mvr) | | ↳ `candidateId` | string | Enrolled candidate ID | | ↳ `createdAt` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations for the continuous check | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | | `count` | number | Number of continuous checks | ### Checkr List Counties [#checkr-list-counties] List US counties for one or more states, with their FIPS codes. Use the county names in report self-disclosures. #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `states` | string | No | Comma-separated state FIPS codes, e.g. 08,06 for Colorado and California. Leave empty for every US county | #### Output [#output-39] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------- | | `counties` | array | Counties grouped under their state abbreviation | | ↳ `state` | string | State abbreviation, e.g. CO | | ↳ `name` | string | County name, e.g. BOULDER | | ↳ `fipsCode` | string | 5-digit county FIPS code (state + county) | ### Checkr List Geos [#checkr-list-geos] List geos (work locations used for compliance), optionally filtered by name or state. #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `name` | string | No | Only return geos with this name | | `state` | string | No | Only return geos in this two-letter state | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-40] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `geos` | array | Matching geos | | ↳ `id` | string | Geo ID | | ↳ `uri` | string | Geo API URI | | ↳ `name` | string | Geo name | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `createdAt` | string | Time the geo was created | | ↳ `deletedAt` | string | Time the geo was deleted | ### Checkr List Invitations [#checkr-list-invitations] List invitations, optionally filtered by candidate or status. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | No | Only return invitations for this candidate ID | | `status` | string | No | Only return invitations with this status (pending, completed, expired) | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-41] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `invitations` | array | Matching invitations | | ↳ `id` | string | Invitation ID | | ↳ `uri` | string | Invitation API URI | | ↳ `invitationUrl` | string | URL the candidate opens to complete the invitation | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `createdAt` | string | Time the invitation was created | | ↳ `expiresAt` | string | Time the invitation expires | | ↳ `completedAt` | string | Time the candidate completed the invitation | | ↳ `deletedAt` | string | Time the invitation was canceled | | ↳ `package` | string | Package slug for the invitation | | ↳ `candidateId` | string | Invited candidate ID | | ↳ `reportId` | string | ID of the report created once the invitation is completed | | ↳ `archived` | boolean | Whether the invitation is archived | | ↳ `archivedInfo` | json | Archive details (time, user with email and id) | ### Checkr List Nodes [#checkr-list-nodes] List the nodes in the account hierarchy. Hierarchy-enabled accounts need a node custom ID to order reports and invitations. #### Input [#input-42] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `includePackages` | boolean | No | Include the package slugs available to each node | | `orderBy` | string | No | Sort field: custom\_id or created\_at (default created\_at) | | `order` | string | No | Sort direction: asc or desc (default asc) | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-42] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `nodes` | array | Hierarchy nodes | | ↳ `customId` | string | Node custom ID | | ↳ `name` | string | Node name | | ↳ `tier` | string | Hierarchy tier label | | ↳ `parentCustomId` | string | Parent node custom ID | | ↳ `packages` | array | Package slugs visible to the node (when packages are included) | ### Checkr List Packages [#checkr-list-packages] List the background check packages on the account, with their slugs, prices, and included screenings. #### Input [#input-43] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-43] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `packages` | array | Packages on the account | | ↳ `id` | string | Package ID | | ↳ `uri` | string | Package API URI | | ↳ `name` | string | Package name | | ↳ `slug` | string | Package slug used when ordering reports | | ↳ `price` | number | Price in USD cents | | ↳ `applyUrl` | string | URL where candidates can apply with this package | | ↳ `createdAt` | string | Time the package was created | | ↳ `deletedAt` | string | Time the package was deleted | | ↳ `screenings` | array | Screenings included in the package | | ↳ `type` | string | Screening type | | ↳ `subtype` | string | Screening subtype | ### Checkr List Programs [#checkr-list-programs] List programs, which group packages and geos, optionally filtered by name. #### Input [#input-44] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `name` | string | No | Only return programs with this name | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-44] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `programs` | array | Matching programs | | ↳ `id` | string | Program ID | | ↳ `name` | string | Program name | | ↳ `createdAt` | string | Time the program was created | | ↳ `deletedAt` | string | Time the program was deleted | | ↳ `packageIds` | array | Associated package IDs | | ↳ `geoIds` | array | Associated geo IDs | ### Checkr List Report Addresses [#checkr-list-report-addresses] List the address history found for a report. #### Input [#input-45] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-45] | Parameter | Type | Description | | ------------- | ------ | ------------------------------ | | `addresses` | array | Addresses found for the report | | ↳ `name` | string | Location name | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `startDate` | string | Start of residence | | ↳ `endDate` | string | End of residence | | `count` | number | Number of addresses | ### Checkr List Subscriptions [#checkr-list-subscriptions] List recurring check subscriptions, optionally filtered by candidate, status, or creation date. #### Input [#input-46] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | No | Only return subscriptions for this candidate ID | | `status` | string | No | Only return subscriptions with this status (active, inactive) | | `createdAfter` | string | No | Only return subscriptions created after this date | | `createdBefore` | string | No | Only return subscriptions created before this date | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-46] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `subscriptions` | array | Matching subscriptions | | ↳ `id` | string | Subscription ID | | ↳ `uri` | string | Subscription API URI | | ↳ `status` | string | Status (active, inactive) | | ↳ `package` | string | Package run on each occurrence | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `intervalCount` | number | Number of intervals between checks | | ↳ `intervalUnit` | string | Interval unit (day, week, month, year) | | ↳ `startDate` | string | Date of the first check | | ↳ `nextOccurrenceDate` | string | Date of the next check | | ↳ `createdAt` | string | Time the subscription was created | | ↳ `canceledAt` | string | Time the subscription was canceled | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations used for each report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr List Users [#checkr-list-users] List the users on the Checkr account and their roles. #### Input [#input-47] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `page` | number | No | Page number to retrieve (starts at 1) | | `perPage` | number | No | Number of records per page, from 0 to 100 (default 25) | #### Output [#output-47] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `count` | number | Total number of matching records | | `nextHref` | string | URL of the next page of results, if any | | `previousHref` | string | URL of the previous page of results, if any | | `users` | array | Users on the account | | ↳ `id` | string | User ID | | ↳ `email` | string | Email address | | ↳ `fullName` | string | Full name | | ↳ `createdAt` | string | Time the user was created | | ↳ `roles` | array | Role names, e.g. admin | ### Checkr List Verifications [#checkr-list-verifications] List the verifications on a report, such as requests for the candidate to confirm their SSN or upload an ID. #### Input [#input-48] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | #### Output [#output-48] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------------- | | `verifications` | array | Verifications on the report | | ↳ `id` | string | Verification ID | | ↳ `uri` | string | Verification API URI | | ↳ `verificationType` | string | Verification type, such as id or ssn\_confirmation | | ↳ `verificationUrl` | string | URL where the candidate submits the requested information | | ↳ `reportId` | string | Report ID | | ↳ `createdAt` | string | Time the verification was created | | ↳ `completedAt` | string | Time the candidate completed the verification | | ↳ `processedAt` | string | Time the verification was processed | | `count` | number | Number of verifications | ### Checkr Remove Report Tag [#checkr-remove-report-tag] Remove a tag from a report. #### Input [#input-49] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | | `tag` | string | Yes | Tag to remove | #### Output [#output-49] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `tags` | array | Tag names on the report | | `count` | number | Number of tags on the report | ### Checkr Set Report Tags [#checkr-set-report-tags] Replace all tags on a report with the given list. Pass \[] to remove every tag. #### Input [#input-50] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report | | `tags` | array | Yes | Complete list of tags; an empty list removes every tag | #### Output [#output-50] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `tags` | array | Tag names on the report | | `count` | number | Number of tags on the report | ### Checkr Update Candidate [#checkr-update-candidate] Update a candidate. Once a report is ordered only empty fields can change, except email, phone, previous driver license, copy requested, custom ID, and geo IDs. #### Input [#input-51] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Checkr production secret API key | | `candidateId` | string | Yes | ID of the candidate to update | | `email` | string | No | Candidate's email address | | `firstName` | string | No | Candidate's first name | | `middleName` | string | No | Candidate's middle name (required to order a report unless noMiddleName is true) | | `noMiddleName` | boolean | No | Set to true when the candidate has no middle name | | `lastName` | string | No | Candidate's last name | | `motherMaidenName` | string | No | Candidate's mother's maiden name | | `phone` | string | No | Candidate's phone number (a mobile number is recommended for identity checks) | | `zipcode` | string | No | Candidate's 5-digit zip code (required for criminal screenings) | | `dob` | string | No | Date of birth in YYYY-MM-DD format | | `ssn` | string | No | Social Security Number, e.g. 111-11-2001 (required for criminal screenings) | | `driverLicenseNumber` | string | No | Driver license number (required for motor vehicle reports) | | `driverLicenseState` | string | No | Driver license issuing state as a two-letter code, e.g. CA | | `previousDriverLicenseNumber` | string | No | Previous driver license number | | `previousDriverLicenseState` | string | No | Previous driver license issuing state as a two-letter code | | `copyRequested` | boolean | No | Whether the candidate wants a copy of their report | | `customId` | string | No | Your own unique ID for the candidate, such as an HRIS ID | | `geoIds` | array | No | Geo IDs to assign (replaces existing geos) | | `metadata` | json | No | Up to 50 custom key-value pairs as a JSON object | | `postalAddress` | json | No | Postal address as a JSON object with name, street, street2, city, state, and zipcode | #### Output [#output-51] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `candidate` | object | The updated candidate | | ↳ `id` | string | Candidate ID | | ↳ `uri` | string | Candidate API URI | | ↳ `createdAt` | string | Time the candidate was created | | ↳ `firstName` | string | First name | | ↳ `middleName` | string | Middle name | | ↳ `noMiddleName` | boolean | Whether the candidate has no middle name | | ↳ `lastName` | string | Last name | | ↳ `motherMaidenName` | string | Mother's maiden name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | 5-digit zip code | | ↳ `dob` | string | Date of birth (YYYY-MM-DD) | | ↳ `ssn` | string | Social Security Number, redacted to the last four digits | | ↳ `driverLicenseNumber` | string | Driver license number | | ↳ `driverLicenseState` | string | Driver license issuing state (ISO 3166-2:US) | | ↳ `previousDriverLicenseNumber` | string | Previous driver license number | | ↳ `previousDriverLicenseState` | string | Previous driver license issuing state | | ↳ `copyRequested` | boolean | Whether the candidate asked for a copy of their report | | ↳ `customId` | string | Your own ID for the candidate | | ↳ `adjudication` | string | Adjudication of the most recent report (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `reportIds` | array | IDs of reports for this candidate | | ↳ `geoIds` | array | IDs of geos assigned to this candidate | | ↳ `postalAddress` | json | Postal address (name, street, street2, city, state, zipcode) | | ↳ `metadata` | json | Custom key-value metadata | ### Checkr Update Continuous Check [#checkr-update-continuous-check] Change the node or work locations of a continuous check. #### Input [#input-52] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `continuousCheckId` | string | Yes | ID of the continuous check to update | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | #### Output [#output-52] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------- | | `continuousCheck` | object | The updated continuous check | | ↳ `id` | string | Continuous check ID | | ↳ `type` | string | Continuous check type (criminal, mvr) | | ↳ `candidateId` | string | Enrolled candidate ID | | ↳ `createdAt` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations for the continuous check | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ### Checkr Update Geo [#checkr-update-geo] Add a city to a geo. A geo’s city can only be set once. #### Input [#input-53] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `geoId` | string | Yes | ID of the geo | | `city` | string | Yes | City to set on the geo | #### Output [#output-53] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `geo` | object | The updated geo | | ↳ `id` | string | Geo ID | | ↳ `uri` | string | Geo API URI | | ↳ `name` | string | Geo name | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `createdAt` | string | Time the geo was created | | ↳ `deletedAt` | string | Time the geo was deleted | ### Checkr Update Report [#checkr-update-report] Upgrade a report to a different package or mark it as engaged. Provide a package, an adjudication, or both. #### Input [#input-54] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `reportId` | string | Yes | ID of the report to update | | `package` | string | No | Slug of the package to upgrade the report to | | `adjudication` | string | No | Adjudication to set; Checkr accepts only "engaged" | #### Output [#output-54] | Parameter | Type | Description | | --------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `report` | object | The updated report | | ↳ `id` | string | Report ID | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) for Assess-enabled accounts | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created (api, continuous\_check, form, manual\_order, recurrence, web) | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `includesCanceled` | boolean | Whether the report includes a canceled screening | | ↳ `createdAt` | string | Time the report was created | | ↳ `completedAt` | string | Time the report was completed | | ↳ `revisedAt` | string | Time the report was revised | | ↳ `upgradedAt` | string | Time the report was upgraded | | ↳ `turnaroundTime` | number | Seconds from creation to completion | | ↳ `estimatedCompletionTime` | string | Predicted completion date | | ↳ `archived` | boolean | Whether the report is archived | | ↳ `programId` | string | Program ID linked to the report | | ↳ `segmentStamps` | array | Hierarchy node tier\|name stamps for the ordering node and its parents | | ↳ `workLocations` | array | Work locations set when ordering the report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | | ↳ `geoIds` | array | Geo IDs | | ↳ `documentIds` | array | Document IDs | | ↳ `candidateStoryIds` | array | Candidate story IDs linked to the report | | ↳ `ssnTraceId` | string | SSN trace ID | | ↳ `sexOffenderSearchId` | string | Sex offender search ID | | ↳ `nationalCriminalSearchId` | string | National criminal search ID | | ↳ `globalWatchlistSearchId` | string | Global watchlist search ID | | ↳ `federalCriminalSearchId` | string | Federal criminal search ID | | ↳ `federalDistrictCriminalSearchId` | string | Federal district criminal search ID | | ↳ `federalCivilSearchId` | string | Federal civil search ID | | ↳ `federalDistrictCivilSearchId` | string | Federal district civil search ID | | ↳ `motorVehicleReportId` | string | Motor vehicle report ID | | ↳ `drugScreeningId` | string | Drug screening ID | | ↳ `facisSearchId` | string | FACIS search ID | | ↳ `socialMediaScreeningsId` | string | Social media screening ID | | ↳ `identityVerificationId` | string | Identity verification ID | | ↳ `drugAlcoholClearinghouseId` | string | Drug & Alcohol Clearinghouse search ID | | ↳ `identityDataEvaluationId` | string | Identity data evaluation ID | | ↳ `occupationalHealthScreeningId` | string | Occupational health screening ID | | ↳ `arrestSearchId` | string | Arrest search ID | | ↳ `internationalGlobalWatchlistSearchId` | string | International global watchlist search ID | | ↳ `internationalEducationVerificationId` | string | International education verification ID | | ↳ `internationalEmploymentVerificationId` | string | International employment verification ID | | ↳ `internationalIdentityDocumentValidationId` | string | International identity document validation ID | | ↳ `internationalCriminalSearchIds` | array | International criminal search IDs | | ↳ `internationalAdverseMediaSearchIds` | array | International adverse media search IDs | | ↳ `countyCriminalSearchIds` | array | County criminal search IDs | | ↳ `stateCriminalSearchIds` | array | State criminal search IDs | | ↳ `professionalLicenseVerificationIds` | array | Professional license verification IDs | | ↳ `personalReferenceVerificationIds` | array | Personal reference verification IDs | | ↳ `professionalReferenceVerificationIds` | array | Professional reference verification IDs | | ↳ `drugScreening` | json | Embedded drug screening (id, status, result, disposition, mro\_notes, analytes, events, screening\_pass\_expires\_at, appointment\_id) | ### Checkr Update Subscription [#checkr-update-subscription] Change the package, schedule, node, or work locations of a subscription. #### Input [#input-55] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Checkr production secret API key | | `subscriptionId` | string | Yes | ID of the subscription to update | | `package` | string | No | Slug of the package to run on each occurrence | | `startDate` | string | No | Date of the first check in YYYY-MM-DD format | | `intervalCount` | number | No | Number of interval units between checks | | `intervalUnit` | string | No | Interval unit: day, week, month, or year | | `node` | string | No | custom\_id of the account hierarchy node (required for hierarchy-enabled accounts) | | `workLocations` | array | No | Work locations (required for hierarchy-enabled accounts), e.g. \[\{"country":"US","state":"CA","city":"San Francisco"}] | #### Output [#output-55] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------- | | `subscription` | object | The updated subscription | | ↳ `id` | string | Subscription ID | | ↳ `uri` | string | Subscription API URI | | ↳ `status` | string | Status (active, inactive) | | ↳ `package` | string | Package run on each occurrence | | ↳ `candidateId` | string | Screened candidate ID | | ↳ `intervalCount` | number | Number of intervals between checks | | ↳ `intervalUnit` | string | Interval unit (day, week, month, year) | | ↳ `startDate` | string | Date of the first check | | ↳ `nextOccurrenceDate` | string | Date of the next check | | ↳ `createdAt` | string | Time the subscription was created | | ↳ `canceledAt` | string | Time the subscription was canceled | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `workLocations` | array | Work locations used for each report | | ↳ `country` | string | Country (ISO 3166-1 alpha-2) | | ↳ `state` | string | Two-letter state code | | ↳ `city` | string | City name | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Checkr Adverse Action Canceled [#checkr-adverse-action-canceled] Trigger workflow when an adverse action is canceled #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-56] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr Adverse Action Completed [#checkr-adverse-action-completed] Trigger workflow when the post-adverse action notice is sent #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-57] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr Adverse Action Created [#checkr-adverse-action-created] Trigger workflow when an adverse action is created #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-58] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr Adverse Action Notice Not Delivered [#checkr-adverse-action-notice-not-delivered] Trigger workflow when an adverse action notice cannot be delivered #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-59] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr Adverse Action Paused [#checkr-adverse-action-paused] Trigger workflow when delivery of a post-adverse action notice is paused #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-60] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr Adverse Action Resumed [#checkr-adverse-action-resumed] Trigger workflow when a paused adverse action resumes #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-61] | Parameter | Type | Description | | ------------------------------------- | ------- | -------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `adverseAction` | object | adverseAction output from the tool | | ↳ `id` | string | Adverse action ID | | ↳ `object` | string | Object type (adverse\_action) | | ↳ `uri` | string | Adverse action API URI | | ↳ `status` | string | Status (pending, complete, dispute, canceled) | | ↳ `report_id` | string | Report the adverse action is based on | | ↳ `created_at` | string | Time the adverse action was created | | ↳ `canceled_at` | string | Time the adverse action was canceled | | ↳ `post_notice_scheduled_at` | string | Time the post-adverse action notice is scheduled | | ↳ `post_notice_ready_at` | string | Earliest time the post-adverse action notice can be sent | | ↳ `individualized_assessment_engaged` | boolean | Whether an individualized assessment was engaged | | ↳ `context` | string | Scoping identifier for the adverse action | | ↳ `delivery` | object | delivery output from the tool | | ↳ `state` | string | Notice delivery state | | ↳ `reason` | string | Reason for the delivery state | | ↳ `updated_at` | string | Time the delivery state changed | | ↳ `adverse_items` | array | Adverse items (id, object, text) | *** ### Checkr All Events [#checkr-all-events] Trigger workflow on any Checkr event #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-62] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------ | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `data` | json | The event object (a report, candidate, invitation, verification, adverse action, package, continuous check, or Form I-9) | *** ### Checkr Candidate Created [#checkr-candidate-created] Trigger workflow when a candidate is created #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-63] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `candidate` | object | candidate output from the tool | | ↳ `id` | string | Candidate ID | | ↳ `object` | string | Object type (candidate) | | ↳ `uri` | string | Candidate API URI | | ↳ `created_at` | string | Time the candidate was created | | ↳ `first_name` | string | First name | | ↳ `middle_name` | string | Middle name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | Zip code | | ↳ `dob` | string | Date of birth | | ↳ `ssn` | string | SSN redacted to the last four digits | | ↳ `driver_license_state` | string | Driver license state | | ↳ `driver_license_number` | string | Driver license number | | ↳ `adjudication` | string | Adjudication of the most recent report | | ↳ `custom_id` | string | Your own ID for the candidate | | ↳ `report_ids` | array | Report IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `metadata` | json | Custom key-value metadata | *** ### Checkr Candidate Updated [#checkr-candidate-updated] Trigger workflow when a candidate is updated #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-64] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `candidate` | object | candidate output from the tool | | ↳ `id` | string | Candidate ID | | ↳ `object` | string | Object type (candidate) | | ↳ `uri` | string | Candidate API URI | | ↳ `created_at` | string | Time the candidate was created | | ↳ `first_name` | string | First name | | ↳ `middle_name` | string | Middle name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `zipcode` | string | Zip code | | ↳ `dob` | string | Date of birth | | ↳ `ssn` | string | SSN redacted to the last four digits | | ↳ `driver_license_state` | string | Driver license state | | ↳ `driver_license_number` | string | Driver license number | | ↳ `adjudication` | string | Adjudication of the most recent report | | ↳ `custom_id` | string | Your own ID for the candidate | | ↳ `report_ids` | array | Report IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `metadata` | json | Custom key-value metadata | *** ### Checkr Continuous Check Confirmation Required [#checkr-continuous-check-confirmation-required] Trigger workflow when a candidate is unenrolled from Continuous MVR and must be re-enrolled #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-65] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `continuousCheck` | object | continuousCheck output from the tool | | ↳ `id` | string | Continuous check ID | | ↳ `object` | string | Object type (continuous\_check) | | ↳ `candidate_id` | string | Enrolled candidate ID | | ↳ `created_at` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `work_locations` | array | Work locations (country, state, city) | *** ### Checkr Continuous Check Enrollment Error [#checkr-continuous-check-enrollment-error] Trigger workflow when enrolling a candidate in Continuous MVR fails #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-66] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `continuousCheck` | object | continuousCheck output from the tool | | ↳ `id` | string | Continuous check ID | | ↳ `object` | string | Object type (continuous\_check) | | ↳ `candidate_id` | string | Enrolled candidate ID | | ↳ `created_at` | string | Time the continuous check was created | | ↳ `node` | string | Hierarchy node custom ID | | ↳ `work_locations` | array | Work locations (country, state, city) | *** ### Checkr Invitation Canceled [#checkr-invitation-canceled] Trigger workflow when an invitation is canceled #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-67] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------ | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `invitation` | object | invitation output from the tool | | ↳ `id` | string | Invitation ID | | ↳ `object` | string | Object type (invitation) | | ↳ `uri` | string | Invitation API URI | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `invitation_url` | string | URL the candidate opens to apply | | ↳ `package` | string | Package slug | | ↳ `candidate_id` | string | Invited candidate ID | | ↳ `report_id` | string | Report created when the invitation was completed | | ↳ `created_at` | string | Time the invitation was created | | ↳ `expires_at` | string | Time the invitation expires | | ↳ `completed_at` | string | Time the invitation was completed | | ↳ `deleted_at` | string | Time the invitation was canceled | *** ### Checkr Invitation Completed [#checkr-invitation-completed] Trigger workflow when a candidate completes an invitation #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-68] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------ | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `invitation` | object | invitation output from the tool | | ↳ `id` | string | Invitation ID | | ↳ `object` | string | Object type (invitation) | | ↳ `uri` | string | Invitation API URI | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `invitation_url` | string | URL the candidate opens to apply | | ↳ `package` | string | Package slug | | ↳ `candidate_id` | string | Invited candidate ID | | ↳ `report_id` | string | Report created when the invitation was completed | | ↳ `created_at` | string | Time the invitation was created | | ↳ `expires_at` | string | Time the invitation expires | | ↳ `completed_at` | string | Time the invitation was completed | | ↳ `deleted_at` | string | Time the invitation was canceled | *** ### Checkr Invitation Created [#checkr-invitation-created] Trigger workflow when an invitation is created #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-69] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------ | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `invitation` | object | invitation output from the tool | | ↳ `id` | string | Invitation ID | | ↳ `object` | string | Object type (invitation) | | ↳ `uri` | string | Invitation API URI | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `invitation_url` | string | URL the candidate opens to apply | | ↳ `package` | string | Package slug | | ↳ `candidate_id` | string | Invited candidate ID | | ↳ `report_id` | string | Report created when the invitation was completed | | ↳ `created_at` | string | Time the invitation was created | | ↳ `expires_at` | string | Time the invitation expires | | ↳ `completed_at` | string | Time the invitation was completed | | ↳ `deleted_at` | string | Time the invitation was canceled | *** ### Checkr Invitation Expired [#checkr-invitation-expired] Trigger workflow when an invitation expires #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-70] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------ | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `invitation` | object | invitation output from the tool | | ↳ `id` | string | Invitation ID | | ↳ `object` | string | Object type (invitation) | | ↳ `uri` | string | Invitation API URI | | ↳ `status` | string | Status (pending, completed, expired) | | ↳ `invitation_url` | string | URL the candidate opens to apply | | ↳ `package` | string | Package slug | | ↳ `candidate_id` | string | Invited candidate ID | | ↳ `report_id` | string | Report created when the invitation was completed | | ↳ `created_at` | string | Time the invitation was created | | ↳ `expires_at` | string | Time the invitation expires | | ↳ `completed_at` | string | Time the invitation was completed | | ↳ `deleted_at` | string | Time the invitation was canceled | *** ### Checkr Report Canceled [#checkr-report-canceled] Trigger workflow when a report is canceled #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-71] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Completed [#checkr-report-completed] Trigger workflow when a report is completed #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-72] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Created [#checkr-report-created] Trigger workflow when a report is created #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-73] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Dispute Completed [#checkr-report-dispute-completed] Trigger workflow when a report dispute is resolved #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-74] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Disputed [#checkr-report-disputed] Trigger workflow when a candidate disputes a report #### Configuration [#configuration-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-75] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Engaged [#checkr-report-engaged] Trigger workflow when a report is adjudicated as engaged #### Configuration [#configuration-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-76] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Paused [#checkr-report-paused] Trigger workflow when a report pauses awaiting a review action #### Configuration [#configuration-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-77] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Post-Adverse Action Sent [#checkr-report-post-adverse-action-sent] Trigger workflow when the post-adverse action notice for a report is sent #### Configuration [#configuration-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-78] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Pre-Adverse Action Sent [#checkr-report-pre-adverse-action-sent] Trigger workflow when the pre-adverse action notice for a report is sent #### Configuration [#configuration-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-79] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Resumed [#checkr-report-resumed] Trigger workflow when a suspended report resumes #### Configuration [#configuration-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-80] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Suspended [#checkr-report-suspended] Trigger workflow when a report is suspended awaiting candidate documentation #### Configuration [#configuration-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-81] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Updated [#checkr-report-updated] Trigger workflow when a report is updated, such as an ETA change or drug screening update #### Configuration [#configuration-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-82] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Report Upgraded [#checkr-report-upgraded] Trigger workflow when a report is upgraded to another package #### Configuration [#configuration-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-83] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `report` | object | report output from the tool | | ↳ `id` | string | Report ID | | ↳ `object` | string | Object type (report) | | ↳ `uri` | string | Report API URI | | ↳ `status` | string | Status (pending, complete, suspended, paused, dispute, canceled) | | ↳ `result` | string | Result (clear, consider) | | ↳ `adjudication` | string | Adjudication (engaged, pre\_adverse\_action, post\_adverse\_action) | | ↳ `assessment` | string | Assess result (eligible, review, escalated) | | ↳ `package` | string | Package the report was ordered with | | ↳ `source` | string | How the report was created | | ↳ `candidate_id` | string | Screened candidate ID | | ↳ `created_at` | string | Time the report was created | | ↳ `received_at` | string | Time the report was received | | ↳ `completed_at` | string | Time the report was completed | | ↳ `revised_at` | string | Time the report was revised | | ↳ `upgraded_at` | string | Time the report was upgraded | | ↳ `turnaround_time` | number | Seconds from creation to completion | | ↳ `estimated_completion_time` | string | Predicted completion date | | ↳ `includes_canceled` | boolean | Whether the report includes a canceled screening | | ↳ `ssn_trace_id` | string | SSN trace ID | | ↳ `sex_offender_search_id` | string | Sex offender search ID | | ↳ `national_criminal_search_id` | string | National criminal search ID | | ↳ `global_watchlist_search_id` | string | Global watchlist search ID | | ↳ `motor_vehicle_report_id` | string | Motor vehicle report ID | | ↳ `county_criminal_search_ids` | array | County criminal search IDs | | ↳ `state_criminal_search_ids` | array | State criminal search IDs | | ↳ `document_ids` | array | Document IDs | | ↳ `geo_ids` | array | Geo IDs | | ↳ `dispute_summary` | json | Dispute outcome on report.dispute\_completed (unresolved\_disputes, disputes with id, status, changes\_made, resolved\_at) | *** ### Checkr Verification Completed [#checkr-verification-completed] Trigger workflow when a candidate completes a verification #### Configuration [#configuration-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-84] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `verification` | object | verification output from the tool | | ↳ `id` | string | Verification ID | | ↳ `object` | string | Object type (verification) | | ↳ `uri` | string | Verification API URI | | ↳ `verification_type` | string | Verification type, such as id or ssn\_confirmation | | ↳ `verification_url` | string | URL where the candidate submits the requested information | | ↳ `report_id` | string | Report ID | | ↳ `created_at` | string | Time the verification was created | | ↳ `completed_at` | string | Time the candidate completed the verification | | ↳ `processed_at` | string | Time the verification was processed | *** ### Checkr Verification Created [#checkr-verification-created] Trigger workflow when a candidate is asked to verify information or upload a document #### Configuration [#configuration-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-85] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `verification` | object | verification output from the tool | | ↳ `id` | string | Verification ID | | ↳ `object` | string | Object type (verification) | | ↳ `uri` | string | Verification API URI | | ↳ `verification_type` | string | Verification type, such as id or ssn\_confirmation | | ↳ `verification_url` | string | URL where the candidate submits the requested information | | ↳ `report_id` | string | Report ID | | ↳ `created_at` | string | Time the verification was created | | ↳ `completed_at` | string | Time the candidate completed the verification | | ↳ `processed_at` | string | Time the verification was processed | *** ### Checkr Verification Processed [#checkr-verification-processed] Trigger workflow when a verification is processed and a decision is made #### Configuration [#configuration-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-86] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------- | | `eventId` | string | Checkr event ID, stable across delivery retries | | `eventType` | string | Event type, e.g. report.completed | | `createdAt` | string | Time the event occurred (ISO 8601) | | `accountId` | string | Checkr account ID the event belongs to | | `objectType` | string | Type of the object in the event, e.g. report | | `objectId` | string | ID of the object in the event | | `verification` | object | verification output from the tool | | ↳ `id` | string | Verification ID | | ↳ `object` | string | Object type (verification) | | ↳ `uri` | string | Verification API URI | | ↳ `verification_type` | string | Verification type, such as id or ssn\_confirmation | | ↳ `verification_url` | string | URL where the candidate submits the requested information | | ↳ `report_id` | string | Report ID | | ↳ `created_at` | string | Time the verification was created | | ↳ `completed_at` | string | Time the candidate completed the verification | | ↳ `processed_at` | string | Time the verification was processed | --- # Circleback (/integrations/circleback) {/* MANUAL-CONTENT-START:intro */} Use [Circleback](https://circleback.ai/) to read meetings, notes, transcripts, and action items, or start workflows from meeting webhooks. **How it works in Agent Serve:**\ Circleback uses webhook triggers: whenever a meeting is processed, data is pushed automatically to your agent or automation. You can build further automations based on: * Meeting completed (all processed data available) * New notes (notes ready even before full meeting is processed) * Raw webhook integration for advanced use cases **The following information is available in the Circleback meeting webhook payload:** | Field | Type | Description | | -------------- | ------ | --------------------------------------------- | | `id` | number | Circleback meeting ID | | `name` | string | Meeting title | | `url` | string | Virtual meeting URL (Zoom, Meet, Teams, etc.) | | `createdAt` | string | Meeting creation timestamp | | `duration` | number | Duration in seconds | | `recordingUrl` | string | Recording URL (valid 24 hours) | | `tags` | json | Array of tags | | `icalUid` | string | Calendar event ID | | `attendees` | json | Array of attendee objects | | `notes` | string | Meeting notes in Markdown | | `actionItems` | json | Array of action items | | `transcript` | json | Array of transcript segments | | `insights` | json | User-created insights | | `meeting` | json | Full meeting payload | {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Circleback into your workflow to read meetings, notes, transcripts, and insights, search across meetings, manage action items and tags, and browse the people and companies you meet with. Circleback can also trigger workflows when meetings are processed. ## Actions [#actions] ### Circleback List Meetings [#circleback-list-meetings] Lists meetings from Circleback with optional ownership, status, tag, and attendee filters. #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `ownership` | string | No | Which meetings to return: All, Mine, or Shared. Defaults to Mine | | `statuses` | string | No | Comma-separated meeting statuses to filter by | | `tagIds` | string | No | Comma-separated tag IDs to filter by | | `attendeeProfileIds` | string | No | Comma-separated profile IDs of attendees to filter by | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `meetings` | array | The meetings on this page | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | ↳ `updatedAt` | string | When the meeting was last updated (ISO 8601) | | ↳ `duration` | number | The meeting duration in seconds | | ↳ `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | ↳ `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | ↳ `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | ↳ `icalUid` | string | The identifier of the calendar event associated with the meeting | | ↳ `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | ↳ `notes` | string | The meeting notes with Markdown formatting | | ↳ `privateNotes` | string | The authenticated user private notes for the meeting | | ↳ `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | ↳ `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | ↳ `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | ↳ `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of meetings is available | ### Circleback Get Meeting [#circleback-get-meeting] Gets a Circleback meeting by ID, including notes, attendees, action items, insights, and recording details. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Circleback API key | | `meetingId` | string | Yes | The unique identifier of the meeting | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `id` | string | The Circleback meeting ID | | `name` | string | The meeting name | | `createdAt` | string | When the meeting was created (ISO 8601) | | `updatedAt` | string | When the meeting was last updated (ISO 8601) | | `duration` | number | The meeting duration in seconds | | `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | `icalUid` | string | The identifier of the calendar event associated with the meeting | | `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | `notes` | string | The meeting notes with Markdown formatting | | `privateNotes` | string | The authenticated user private notes for the meeting | | `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | ### Circleback Search Meetings [#circleback-search-meetings] Searches Circleback meetings by name and content, with optional filters for specific meetings, tags, and people. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Circleback API key | | `searchTerm` | string | No | The text to search for across meeting names and content | | `meetingIds` | string | No | Comma-separated meeting IDs to restrict the search to | | `tagIds` | string | No | Comma-separated tag IDs to restrict the search to | | `attendeeProfileIds` | string | No | Comma-separated profile IDs of attendees to restrict the search to | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `meetings` | array | The matching meetings on this page | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | ↳ `updatedAt` | string | When the meeting was last updated (ISO 8601) | | ↳ `duration` | number | The meeting duration in seconds | | ↳ `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | ↳ `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | ↳ `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | ↳ `icalUid` | string | The identifier of the calendar event associated with the meeting | | ↳ `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | ↳ `notes` | string | The meeting notes with Markdown formatting | | ↳ `privateNotes` | string | The authenticated user private notes for the meeting | | ↳ `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | ↳ `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | ↳ `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | ↳ `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of results is available | ### Circleback Get Transcript [#circleback-get-transcript] Gets the full transcript for a Circleback meeting. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Circleback API key | | `meetingId` | string | Yes | The unique identifier of the meeting | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------------------- | | `transcript` | array | The transcript segments in order | | ↳ `speaker` | string | The speaker name | | ↳ `text` | string | The words spoken | | ↳ `timestamp` | number | The timestamp in seconds that marks the beginning of the segment | ### Circleback Update Meeting [#circleback-update-meeting] Updates the name, notes, or private notes of a Circleback meeting. The API returns only the fields that were updated. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `meetingId` | string | Yes | The unique identifier of the meeting | | `name` | string | No | The new name of the meeting | | `notes` | string | No | The new meeting notes in Markdown | | `privateNotes` | string | No | The authenticated user private notes for the meeting | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------------- | | `id` | string | The Circleback meeting ID | | `name` | string | The updated meeting name, when the name was updated | | `notes` | string | The updated meeting notes, when the notes were updated | | `privateNotes` | string | The updated private notes, when the private notes were updated | | `updatedAt` | string | When the meeting was last updated (ISO 8601) | ### Circleback Delete Meeting [#circleback-delete-meeting] Deletes a Circleback meeting. Only the owner of the meeting can delete it. Returns the deleted meeting. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Circleback API key | | `meetingId` | string | Yes | The unique identifier of the meeting | #### Output [#output-5] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `id` | string | The Circleback meeting ID | | `name` | string | The meeting name | | `createdAt` | string | When the meeting was created (ISO 8601) | | `updatedAt` | string | When the meeting was last updated (ISO 8601) | | `duration` | number | The meeting duration in seconds | | `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | `icalUid` | string | The identifier of the calendar event associated with the meeting | | `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | `notes` | string | The meeting notes with Markdown formatting | | `privateNotes` | string | The authenticated user private notes for the meeting | | `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | ### Circleback List Action Items [#circleback-list-action-items] Lists action items across the authenticated user meetings, filtered by assignee, status, tags, and attendees. Defaults to incomplete action items assigned to the API key owner. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `assigneeType` | string | No | The assignee scope to filter by: Me, NotMe, Profile, MyWorkspace, OutsideMyWorkspace, Unassigned, or Anyone. Defaults to Me | | `assigneeProfileId` | string | No | Profile ID of the assignee to filter by | | `assigneeTeamId` | string | No | Team ID of the assignee to filter by | | `status` | string | No | Completion status to filter by: PENDING or DONE. Defaults to incomplete action items | | `attendeeProfileIds` | string | No | Comma-separated profile IDs of meeting attendees to filter by | | `tagIds` | string | No | Comma-separated tag IDs to filter by | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `actionItems` | array | The action items on this page. Each also carries canEditActionItem, whether the caller may edit it | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `completedAt` | string | When the action item was marked done, or null if not completed | | ↳ `meetingId` | string | The ID of the meeting the action item belongs to, or null | | ↳ `status` | string | The completion status, PENDING or DONE | | ↳ `meetings` | array | The meetings the action item is associated with | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | ↳ `canEditActionItem` | boolean | Whether the caller may edit the action item. Returned only by the list operation | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of action items is available | ### Circleback Update Action Item [#circleback-update-action-item] Updates the title, description, status, or assignee of a Circleback action item. Returns the updated action item. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `actionItemId` | string | Yes | The unique identifier of the action item | | `title` | string | No | The new title of the action item | | `description` | string | No | The new detailed description of the action item | | `assigneeProfileId` | string | No | The profile ID to assign the action item to, or the literal text null to remove the assignee | | `status` | string | No | The completion status: PENDING or DONE | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `id` | number | The unique identifier of the action item | | `title` | string | The action item title | | `description` | string | The action item description | | `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | `completedAt` | string | When the action item was marked done, or null if not completed | | `meetingId` | string | The ID of the meeting the action item belongs to, or null | | `status` | string | The completion status, PENDING or DONE | | `meetings` | array | The meetings the action item is associated with | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | `canEditActionItem` | boolean | Whether the caller may edit the action item. Returned only by the list operation | ### Circleback Delete Action Item [#circleback-delete-action-item] Deletes a Circleback action item. Returns the deleted action item. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `actionItemId` | string | Yes | The unique identifier of the action item | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `id` | number | The unique identifier of the action item | | `title` | string | The action item title | | `description` | string | The action item description | | `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | `completedAt` | string | When the action item was marked done, or null if not completed | | `meetingId` | string | The ID of the meeting the action item belongs to, or null | | `status` | string | The completion status, PENDING or DONE | | `meetings` | array | The meetings the action item is associated with | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | `canEditActionItem` | boolean | Whether the caller may edit the action item. Returned only by the list operation | ### Circleback List Calendar Events [#circleback-list-calendar-events] Lists upcoming calendar events from the authenticated user connected calendars, with pagination and a configurable time window. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `startTimeLookbackHours` | string | No | How many hours in the past to include calendar meetings from | | `startTimeLookaheadHours` | string | No | How many hours in the future to include calendar meetings from | | `sortDirection` | string | No | The direction calendar meetings are sorted in by start time: ascending or descending. Defaults to ascending | | `includeOfflineSingleAttendee` | string | No | Set to true to include calendar meetings that have no meeting link and only one attendee | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------------------------------------- | | `events` | array | The calendar events on this page | | ↳ `id` | string | The unique identifier of the calendar meeting | | ↳ `title` | string | The title of the calendar meeting | | ↳ `icalUid` | string | The iCalendar UID of the calendar event | | ↳ `attendees` | array | The attendees invited to the calendar meeting | | ↳ `name` | string | The name of the attendee | | ↳ `email` | string | The email address of the attendee | | ↳ `isOrganizer` | boolean | Whether the attendee organized the calendar meeting | | ↳ `status` | string | The attendee response to the invitation: accepted, declined, tentative, or not\_available | | ↳ `calendarDescription` | string | The description of the calendar event | | ↳ `calendarPlatform` | string | The calendar platform the meeting was synced from | | ↳ `startTime` | string | When the calendar meeting starts (ISO 8601) | | ↳ `endTime` | string | When the calendar meeting ends (ISO 8601) | | ↳ `isExternal` | boolean | Whether the meeting includes attendees from more than one email domain | | ↳ `isHostedByMe` | boolean | Whether the current user organized the calendar meeting | | ↳ `location` | string | The location of the calendar meeting | | ↳ `meetingId` | string | The Circleback meeting associated with the calendar meeting, when one exists | | ↳ `meetingPlatform` | string | The conferencing platform hosting the meeting, when detected | | ↳ `organizerEmail` | string | The email address of the meeting organizer | | ↳ `platform` | string | The conferencing platform hosting the meeting, when detected. Alias of meetingPlatform | | ↳ `overrideShouldRecord` | boolean | Whether the user manually overrode the automatic recording decision, or null when no override is set | | ↳ `recurringEventId` | string | The identifier of the recurring event series the meeting belongs to | | ↳ `willRecord` | boolean | Whether the notetaker will join and record the meeting | | ↳ `willRecordReason` | string | A human-readable explanation of why the meeting will or will not be recorded | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of calendar events is available | ### Circleback List Companies [#circleback-list-companies] Lists the companies whose people attend the authenticated user meetings, with optional tag filters. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `tagIds` | string | No | Comma-separated tag IDs. Filters companies to those with meetings so tagged | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------- | | `companies` | array | The companies on this page | | ↳ `id` | number | The unique identifier of the company | | ↳ `name` | string | The company name | | ↳ `avatarUrl` | string | The URL of the company logo image | | ↳ `domain` | string | The company website domain | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of companies is available | ### Circleback Get Company [#circleback-get-company] Gets a company by its domain from Circleback, including its people and external links. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `domain` | string | Yes | The website domain of the company to fetch, such as example.com | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | | `name` | string | The company name | | `avatarUrl` | string | The URL of the company logo image | | `domain` | string | The company website domain | | `externalLinks` | array | Links to the company on external platforms and connected integrations | | ↳ `url` | string | The URL of the external resource | | ↳ `objectType` | string | Whether the link refers to a person or a company | | ↳ `type` | string | The platform or integration the link points to, such as Attio, HubSpot, Linear, Salesforce, Zoho, linkedin, or website | | `people` | array | People at the company the authenticated user has met with | | ↳ `id` | number | The unique identifier of the person | | ↳ `title` | string | The person job title | | ↳ `companyId` | number | The unique identifier of the company the person belongs to | | ↳ `companyName` | string | The name of the company the person belongs to | | ↳ `email` | string | The person email address | | ↳ `firstName` | string | The person first name | | ↳ `lastName` | string | The person last name | ### Circleback List People [#circleback-list-people] Lists the people who attend the authenticated user meetings, ordered by most recent meeting, with optional company and tag filters. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `domains` | string | No | Comma-separated company domains to filter people by | | `tagIds` | string | No | Comma-separated tag IDs. Filters people to attendees of meetings so tagged | | `limit` | string | No | The maximum number of people to return | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------- | | `people` | array | The people on this page | | ↳ `id` | number | The unique identifier of the person | | ↳ `title` | string | The person job title | | ↳ `companyId` | number | The unique identifier of the company the person belongs to | | ↳ `companyName` | string | The name of the company the person belongs to | | ↳ `email` | string | The person email address | | ↳ `firstName` | string | The person first name | | ↳ `lastName` | string | The person last name | | `nextCursor` | string | Pagination cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether another page of people is available | ### Circleback Get Person [#circleback-get-person] Gets a person by their profile ID from Circleback, including their profile details and external links. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `profileId` | string | Yes | The unique identifier of the person profile | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | | `id` | number | The unique identifier of the person | | `title` | string | The person job title | | `companyId` | number | The unique identifier of the company the person belongs to | | `companyName` | string | The name of the company the person belongs to | | `email` | string | The person email address | | `firstName` | string | The person first name | | `lastName` | string | The person last name | | `externalLinks` | array | Links to the person on external platforms and connected integrations | | ↳ `url` | string | The URL of the external resource | | ↳ `objectType` | string | Whether the link refers to a person or a company | | ↳ `type` | string | The platform or integration the link points to, such as Attio, HubSpot, Linear, Salesforce, Zoho, linkedin, or website | ### Circleback List Tags [#circleback-list-tags] Lists every tag available to the authenticated Circleback user. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Circleback API key | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------- | | `tags` | array | Every tag available to the authenticated user | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | ### Circleback Create Tag [#circleback-create-tag] Creates a new tag in Circleback. If a tag with the same name already exists, a conflict error is returned. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | Circleback API key | | `tagName` | string | Yes | The display name of the tag | | `tagDescription` | string | No | A description of the tag | #### Output [#output-15] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `id` | number | The unique identifier of the tag | | `name` | string | The display name of the tag | | `description` | string | A description of the tag | ### Circleback Update Tag [#circleback-update-tag] Updates the name or description of a Circleback tag. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `tagId` | string | Yes | The unique identifier of the tag | | `tagName` | string | No | The new display name of the tag | | `tagDescription` | string | No | The new description of the tag | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `id` | number | The unique identifier of the tag | | `name` | string | The display name of the tag | | `description` | string | A description of the tag | ### Circleback Delete Tag [#circleback-delete-tag] Permanently deletes a Circleback tag and removes it from every meeting it was applied to. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `tagId` | string | Yes | The unique identifier of the tag | #### Output [#output-17] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `id` | number | The unique identifier of the tag | | `name` | string | The display name of the tag | | `description` | string | A description of the tag | ### Circleback Add Tag to Meetings [#circleback-add-tag-to-meetings] Applies an existing Circleback tag to one or more meetings and returns the updated meetings. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Circleback API key | | `tagId` | string | Yes | The unique identifier of the tag to apply | | `meetingIds` | string | No | Comma-separated IDs of the meetings to tag | #### Output [#output-18] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `meetings` | array | The updated meetings | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | ↳ `updatedAt` | string | When the meeting was last updated (ISO 8601) | | ↳ `duration` | number | The meeting duration in seconds | | ↳ `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | ↳ `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | ↳ `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | ↳ `icalUid` | string | The identifier of the calendar event associated with the meeting | | ↳ `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | ↳ `notes` | string | The meeting notes with Markdown formatting | | ↳ `privateNotes` | string | The authenticated user private notes for the meeting | | ↳ `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | ↳ `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | ↳ `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | ↳ `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | ### Circleback Remove Tag from Meetings [#circleback-remove-tag-from-meetings] Removes a Circleback tag from one or more meetings and returns the updated meetings. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Circleback API key | | `tagId` | string | Yes | The unique identifier of the tag to remove | | `meetingIds` | string | No | Comma-separated IDs of the meetings to remove the tag from | #### Output [#output-19] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `meetings` | array | The updated meetings | | ↳ `id` | string | The Circleback meeting ID | | ↳ `name` | string | The meeting name | | ↳ `createdAt` | string | When the meeting was created (ISO 8601) | | ↳ `updatedAt` | string | When the meeting was last updated (ISO 8601) | | ↳ `duration` | number | The meeting duration in seconds | | ↳ `url` | string | The URL of the virtual meeting (Zoom, Google Meet, or Microsoft Teams) | | ↳ `recordingUrl` | string | The URL of the meeting recording file, valid for 24 hours | | ↳ `tags` | array | Tags added to the meeting | | ↳ `id` | number | The unique identifier of the tag | | ↳ `name` | string | The display name of the tag | | ↳ `description` | string | A description of the tag | | ↳ `icalUid` | string | The identifier of the calendar event associated with the meeting | | ↳ `attendees` | array | The meeting attendees | | ↳ `profileId` | number | The unique identifier of the attendee profile | | ↳ `name` | string | The attendee name | | ↳ `title` | string | The attendee job title | | ↳ `companyName` | string | The name of the company the attendee belongs to | | ↳ `email` | string | The attendee email address | | ↳ `isCalendarEventOrganizer` | boolean | Whether the attendee organized the calendar event | | ↳ `isCalendarInvitee` | boolean | Whether the attendee was invited on the calendar event | | ↳ `notes` | string | The meeting notes with Markdown formatting | | ↳ `privateNotes` | string | The authenticated user private notes for the meeting | | ↳ `actionItems` | array | Action items created for the meeting | | ↳ `id` | number | The unique identifier of the action item | | ↳ `title` | string | The action item title | | ↳ `description` | string | The action item description | | ↳ `assignee` | json | The assignee as an object with profileId, name, title, companyName, and email, or null if unassigned | | ↳ `status` | string | The completion status, PENDING or DONE | | ↳ `insights` | json | Insight results for the meeting, keyed by the name of the user-created insight | | ↳ `linkAccess` | string | Who can access the meeting through its shareable link: Editor, Viewer, or LimitedViewer | | ↳ `calendarEvent` | json | The associated calendar event as an object with id, icalUid, description, platform, and platformId, or null | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Circleback Meeting Completed [#circleback-meeting-completed] Trigger workflow when a meeting is processed and ready in Circleback #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. | #### Output [#output-20] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------- | | `id` | number | Circleback meeting ID | | `name` | string | Meeting title/name | | `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) | | `createdAt` | string | ISO8601 timestamp when meeting was created | | `duration` | number | Meeting duration in seconds | | `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) | | `tags` | array | Array of tag strings | | `icalUid` | string | Calendar event identifier | | `attendees` | array | Array of attendee objects with name and email | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email address | | `notes` | string | Meeting notes in Markdown format | | `actionItems` | array | Array of action item objects | | ↳ `id` | number | Action item ID | | ↳ `title` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `assignee` | object | Person assigned to the action item (or null) | | ↳ `name` | string | Assignee name | | ↳ `email` | string | Assignee email | | ↳ `status` | string | Status: PENDING or DONE | | `transcript` | array | Array of transcript segments | | ↳ `speaker` | string | Speaker name | | ↳ `text` | string | Transcript text | | ↳ `timestamp` | number | Timestamp in seconds | | `insights` | object | User-created insights keyed by insight name | | `meeting` | object | Full meeting payload object | | ↳ `id` | number | Meeting ID | | ↳ `name` | string | Meeting name | | ↳ `url` | string | Meeting URL | | ↳ `duration` | number | Duration in seconds | | ↳ `createdAt` | string | Creation timestamp | | ↳ `recordingUrl` | string | Recording URL | *** ### Circleback Meeting Notes Ready [#circleback-meeting-notes-ready] Trigger workflow when meeting notes and action items are ready #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. | #### Output [#output-21] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------- | | `id` | number | Circleback meeting ID | | `name` | string | Meeting title/name | | `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) | | `createdAt` | string | ISO8601 timestamp when meeting was created | | `duration` | number | Meeting duration in seconds | | `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) | | `tags` | array | Array of tag strings | | `icalUid` | string | Calendar event identifier | | `attendees` | array | Array of attendee objects with name and email | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email address | | `notes` | string | Meeting notes in Markdown format | | `actionItems` | array | Array of action item objects | | ↳ `id` | number | Action item ID | | ↳ `title` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `assignee` | object | Person assigned to the action item (or null) | | ↳ `name` | string | Assignee name | | ↳ `email` | string | Assignee email | | ↳ `status` | string | Status: PENDING or DONE | | `transcript` | array | Array of transcript segments | | ↳ `speaker` | string | Speaker name | | ↳ `text` | string | Transcript text | | ↳ `timestamp` | number | Timestamp in seconds | | `insights` | object | User-created insights keyed by insight name | | `meeting` | object | Full meeting payload object | | ↳ `id` | number | Meeting ID | | ↳ `name` | string | Meeting name | | ↳ `url` | string | Meeting URL | | ↳ `duration` | number | Duration in seconds | | ↳ `createdAt` | string | Creation timestamp | | ↳ `recordingUrl` | string | Recording URL | *** ### Circleback Webhook [#circleback-webhook] Generic webhook trigger for all Circleback events #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. | #### Output [#output-22] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------- | | `id` | number | Circleback meeting ID | | `name` | string | Meeting title/name | | `url` | string | URL of the virtual meeting (Zoom, Google Meet, Teams, etc.) | | `createdAt` | string | ISO8601 timestamp when meeting was created | | `duration` | number | Meeting duration in seconds | | `recordingUrl` | string | Recording URL (valid for 24 hours, if enabled) | | `tags` | array | Array of tag strings | | `icalUid` | string | Calendar event identifier | | `attendees` | array | Array of attendee objects with name and email | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email address | | `notes` | string | Meeting notes in Markdown format | | `actionItems` | array | Array of action item objects | | ↳ `id` | number | Action item ID | | ↳ `title` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `assignee` | object | Person assigned to the action item (or null) | | ↳ `name` | string | Assignee name | | ↳ `email` | string | Assignee email | | ↳ `status` | string | Status: PENDING or DONE | | `transcript` | array | Array of transcript segments | | ↳ `speaker` | string | Speaker name | | ↳ `text` | string | Transcript text | | ↳ `timestamp` | number | Timestamp in seconds | | `insights` | object | User-created insights keyed by insight name | | `meeting` | object | Full meeting payload object | | ↳ `id` | number | Meeting ID | | ↳ `name` | string | Meeting name | | ↳ `url` | string | Meeting URL | | ↳ `duration` | number | Duration in seconds | | ↳ `createdAt` | string | Creation timestamp | | ↳ `recordingUrl` | string | Recording URL | --- # Clay (/integrations/clay) {/* MANUAL-CONTENT-START:intro */} [Clay](https://www.clay.com/) organizes and enriches data in tables. Use the Clay Populate action to send structured data from your Agent Serve workflow to a Clay table through its webhook URL—for example, lead records or research results. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Clay into the workflow. Can populate a table with data. ## Actions [#actions] ### Clay Populate [#clay-populate] Populate Clay with data from a JSON file. Enables direct communication and notifications with timestamp tracking and channel confirmation. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------- | | `webhookURL` | string | Yes | The webhook URL to populate | | `data` | json | Yes | The data to populate | | `authToken` | string | No | Optional auth token for Clay webhook authentication (most webhooks do not require this) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `data` | json | Response data from Clay webhook | | `metadata` | object | Webhook response metadata | | ↳ `status` | number | HTTP status code | | ↳ `statusText` | string | HTTP status text | | ↳ `headers` | object | Response headers from Clay | | ↳ `timestamp` | string | ISO timestamp when webhook was received | | ↳ `contentType` | string | Content type of the response | --- # Clerk (/integrations/clerk) {/* MANUAL-CONTENT-START:intro */} [Clerk](https://clerk.com/) is a comprehensive identity infrastructure platform that helps you manage users, authentication, and sessions for your applications. In Agent Serve, the Clerk integration lets your agents automate user and session management through easy-to-use API-based tools. Agents can securely list users, update user profiles, manage organizations, monitor sessions, and revoke access directly in your workflow. With Clerk, you can: * **Authenticate users and manage sessions**: Seamlessly control sign-in, sign-up, and session lifecycle for your users. * **List and update users**: Automatically pull user lists, update user attributes, or view profile details as part of your agent tasks. * **Manage organizations and memberships**: Add or update organizations and administer user memberships with clarity. * **Monitor and revoke sessions**: See active or past user sessions, and revoke access immediately if needed for security. The integration enables real-time, auditable management of your user base—all from within Agent Serve. Connected agents can automate onboarding, enforce policies, keep directories up to date, and react to authentication events or organizational changes, helping you run secure and flexible processes using Clerk as your identity engine. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Clerk authentication and user management into your workflow. Create, update, delete, ban, lock, and list users. Manage organizations, their memberships, and invitations. Monitor and control user sessions. Maintain allowlist/blocklist identifiers, JWT templates, and actor tokens. ## Actions [#actions] ### List Users from Clerk [#list-users-from-clerk] List all users in your Clerk application with optional filtering and pagination #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | | `orderBy` | string | No | Sort field with optional +/- prefix for direction (default: -created\_at) | | `emailAddress` | string | No | Filter by email address (e.g., [user@example.com](mailto:user@example.com) or [user1@example.com](mailto:user1@example.com),[user2@example.com](mailto:user2@example.com)) | | `phoneNumber` | string | No | Filter by phone number (comma-separated for multiple) | | `externalId` | string | No | Filter by external ID (comma-separated for multiple) | | `username` | string | No | Filter by username (comma-separated for multiple) | | `userId` | string | No | Filter by user ID (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC or comma-separated for multiple) | | `query` | string | No | Search query to match across email, phone, username, and names (e.g., john or [john@example.com](mailto:john@example.com)) | #### Output [#output] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------- | | `users` | array | Array of Clerk user objects | | ↳ `id` | string | User ID | | ↳ `username` | string | Username | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `imageUrl` | string | Profile image URL | | ↳ `hasImage` | boolean | Whether user has a profile image | | ↳ `primaryEmailAddressId` | string | Primary email address ID | | ↳ `primaryPhoneNumberId` | string | Primary phone number ID | | ↳ `emailAddresses` | array | User email addresses | | ↳ `id` | string | Email address ID | | ↳ `emailAddress` | string | Email address | | ↳ `phoneNumbers` | array | User phone numbers | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number | | ↳ `externalId` | string | External system ID | | ↳ `passwordEnabled` | boolean | Whether password is enabled | | ↳ `twoFactorEnabled` | boolean | Whether 2FA is enabled | | ↳ `banned` | boolean | Whether user is banned | | ↳ `locked` | boolean | Whether user is locked | | ↳ `lastSignInAt` | number | Last sign-in timestamp | | ↳ `lastActiveAt` | number | Last activity timestamp | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | ↳ `publicMetadata` | json | Public metadata | | `totalCount` | number | Total number of users matching the query | | `success` | boolean | Operation success status | ### Get User from Clerk [#get-user-from-clerk] Retrieve a single user by their ID from Clerk #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------ | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to retrieve (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-1] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------ | | `id` | string | User ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `imageUrl` | string | Profile image URL | | `hasImage` | boolean | Whether user has a profile image | | `primaryEmailAddressId` | string | Primary email address ID | | `primaryPhoneNumberId` | string | Primary phone number ID | | `primaryWeb3WalletId` | string | Primary Web3 wallet ID | | `emailAddresses` | array | User email addresses | | ↳ `id` | string | Email address ID | | ↳ `emailAddress` | string | Email address | | ↳ `verified` | boolean | Whether email is verified | | `phoneNumbers` | array | User phone numbers | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number | | ↳ `verified` | boolean | Whether phone is verified | | `externalId` | string | External system ID | | `passwordEnabled` | boolean | Whether password is enabled | | `twoFactorEnabled` | boolean | Whether 2FA is enabled | | `totpEnabled` | boolean | Whether TOTP is enabled | | `backupCodeEnabled` | boolean | Whether backup codes are enabled | | `banned` | boolean | Whether user is banned | | `locked` | boolean | Whether user is locked | | `deleteSelfEnabled` | boolean | Whether user can delete themselves | | `createOrganizationEnabled` | boolean | Whether user can create organizations | | `lastSignInAt` | number | Last sign-in timestamp | | `lastActiveAt` | number | Last activity timestamp | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata (readable from frontend) | | `privateMetadata` | json | Private metadata (backend only) | | `unsafeMetadata` | json | Unsafe metadata (modifiable from frontend) | | `success` | boolean | Operation success status | ### Create User in Clerk [#create-user-in-clerk] Create a new user in your Clerk application #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ----------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `emailAddress` | string | No | Email addresses for the user (comma-separated for multiple) | | `phoneNumber` | string | No | Phone numbers for the user (comma-separated for multiple) | | `username` | string | No | Username for the user (must be unique) | | `password` | string | No | Password for the user (minimum 8 characters) | | `firstName` | string | No | First name of the user | | `lastName` | string | No | Last name of the user | | `externalId` | string | No | External system identifier (must be unique) | | `publicMetadata` | json | No | Public metadata (JSON object, readable from frontend) | | `privateMetadata` | json | No | Private metadata (JSON object, backend only) | | `unsafeMetadata` | json | No | Unsafe metadata (JSON object, modifiable from frontend) | | `skipPasswordChecks` | boolean | No | Skip password validation checks | | `skipPasswordRequirement` | boolean | No | Make password optional | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------- | | `id` | string | Created user ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `imageUrl` | string | Profile image URL | | `primaryEmailAddressId` | string | Primary email address ID | | `primaryPhoneNumberId` | string | Primary phone number ID | | `emailAddresses` | array | User email addresses | | ↳ `id` | string | Email address ID | | ↳ `emailAddress` | string | Email address | | ↳ `verified` | boolean | Whether email is verified | | `phoneNumbers` | array | User phone numbers | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number | | ↳ `verified` | boolean | Whether phone is verified | | `externalId` | string | External system ID | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata | | `success` | boolean | Operation success status | ### Update User in Clerk [#update-user-in-clerk] Update an existing user in your Clerk application #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ---------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to update (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `firstName` | string | No | First name of the user | | `lastName` | string | No | Last name of the user | | `username` | string | No | Username (must be unique) | | `password` | string | No | New password (minimum 8 characters) | | `externalId` | string | No | External system identifier | | `primaryEmailAddressId` | string | No | ID of verified email to set as primary | | `primaryPhoneNumberId` | string | No | ID of verified phone to set as primary | | `publicMetadata` | json | No | Public metadata (JSON object) | | `privateMetadata` | json | No | Private metadata (JSON object) | | `unsafeMetadata` | json | No | Unsafe metadata (JSON object) | | `skipPasswordChecks` | boolean | No | Skip password validation checks | #### Output [#output-3] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------- | | `id` | string | Updated user ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `imageUrl` | string | Profile image URL | | `primaryEmailAddressId` | string | Primary email address ID | | `primaryPhoneNumberId` | string | Primary phone number ID | | `emailAddresses` | array | User email addresses | | ↳ `id` | string | Email address ID | | ↳ `emailAddress` | string | Email address | | ↳ `verified` | boolean | Whether email is verified | | `phoneNumbers` | array | User phone numbers | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number | | ↳ `verified` | boolean | Whether phone is verified | | `externalId` | string | External system ID | | `banned` | boolean | Whether user is banned | | `locked` | boolean | Whether user is locked | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata | | `success` | boolean | Operation success status | ### Delete User from Clerk [#delete-user-from-clerk] Delete a user from your Clerk application #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to delete (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `id` | string | Deleted user ID | | `object` | string | Object type (user) | | `deleted` | boolean | Whether the user was deleted | | `success` | boolean | Operation success status | ### Ban User in Clerk [#ban-user-in-clerk] Ban a user, preventing them from signing in #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to ban (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-5] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------- | | `id` | string | User ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `banned` | boolean | Whether the user is banned | | `locked` | boolean | Whether the user is locked | | `lockoutExpiresInSeconds` | number | Seconds until lockout expires | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Unban User in Clerk [#unban-user-in-clerk] Remove a ban from a user, allowing them to sign in again #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to unban (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-6] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------- | | `id` | string | User ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `banned` | boolean | Whether the user is banned | | `locked` | boolean | Whether the user is locked | | `lockoutExpiresInSeconds` | number | Seconds until lockout expires | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Lock User in Clerk [#lock-user-in-clerk] Lock a user account, blocking sign-in attempts #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to lock (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-7] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------- | | `id` | string | User ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `banned` | boolean | Whether the user is banned | | `locked` | boolean | Whether the user is locked | | `lockoutExpiresInSeconds` | number | Seconds until lockout expires | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Unlock User in Clerk [#unlock-user-in-clerk] Unlock a previously locked user account #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user to unlock (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-8] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------- | | `id` | string | User ID | | `username` | string | Username | | `firstName` | string | First name | | `lastName` | string | Last name | | `banned` | boolean | Whether the user is banned | | `locked` | boolean | Whether the user is locked | | `lockoutExpiresInSeconds` | number | Seconds until lockout expires | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Get User OAuth Access Token from Clerk [#get-user-oauth-access-token-from-clerk] Retrieve a user's OAuth access token for a connected external provider (e.g. Google, GitHub, Microsoft) obtained via Clerk SSO #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | The ID of the user (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `provider` | string | Yes | OAuth provider slug, e.g. google, github, microsoft, discord (without the oauth\_ prefix) | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------- | | `accessTokens` | array | OAuth access tokens for the connected provider | | ↳ `externalAccountId` | string | External account ID | | ↳ `token` | string | OAuth access token | | ↳ `expiresAt` | number | Expiration timestamp | | ↳ `provider` | string | OAuth provider slug | | ↳ `label` | string | Token label | | ↳ `scopes` | array | OAuth scopes granted to the token | | ↳ `publicMetadata` | json | Public metadata associated with the token | | `success` | boolean | Operation success status | ### List Organizations from Clerk [#list-organizations-from-clerk] List all organizations in your Clerk application with optional filtering #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | | `includeMembersCount` | boolean | No | Include member count for each organization | | `query` | string | No | Search by organization ID, name, or slug (e.g., Acme Corp or acme-corp) | | `orderBy` | string | No | Sort field (name, created\_at, members\_count) with +/- prefix | #### Output [#output-10] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------- | | `organizations` | array | Array of Clerk organization objects | | ↳ `id` | string | Organization ID | | ↳ `name` | string | Organization name | | ↳ `slug` | string | Organization slug | | ↳ `imageUrl` | string | Organization image URL | | ↳ `hasImage` | boolean | Whether organization has an image | | ↳ `membersCount` | number | Number of members | | ↳ `pendingInvitationsCount` | number | Number of pending invitations | | ↳ `maxAllowedMemberships` | number | Max allowed memberships | | ↳ `adminDeleteEnabled` | boolean | Whether admin delete is enabled | | ↳ `createdBy` | string | Creator user ID | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | ↳ `publicMetadata` | json | Public metadata | | `totalCount` | number | Total number of organizations | | `success` | boolean | Operation success status | ### Get Organization from Clerk [#get-organization-from-clerk] Retrieve a single organization by ID or slug from Clerk #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID or slug of the organization to retrieve (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC or my-org-slug) | #### Output [#output-11] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------- | | `id` | string | Organization ID | | `name` | string | Organization name | | `slug` | string | Organization slug | | `imageUrl` | string | Organization image URL | | `hasImage` | boolean | Whether organization has an image | | `membersCount` | number | Number of members | | `pendingInvitationsCount` | number | Number of pending invitations | | `maxAllowedMemberships` | number | Max allowed memberships | | `adminDeleteEnabled` | boolean | Whether admin delete is enabled | | `createdBy` | string | Creator user ID | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata | | `success` | boolean | Operation success status | ### Create Organization in Clerk [#create-organization-in-clerk] Create a new organization in your Clerk application #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `name` | string | Yes | Name of the organization | | `createdBy` | string | Yes | User ID of the creator who will become admin (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `slug` | string | No | Slug identifier for the organization | | `maxAllowedMemberships` | number | No | Maximum member capacity (0 for unlimited) | | `publicMetadata` | json | No | Public metadata (JSON object) | | `privateMetadata` | json | No | Private metadata (JSON object) | #### Output [#output-12] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------- | | `id` | string | Created organization ID | | `name` | string | Organization name | | `slug` | string | Organization slug | | `imageUrl` | string | Organization image URL | | `hasImage` | boolean | Whether organization has an image | | `membersCount` | number | Number of members | | `pendingInvitationsCount` | number | Number of pending invitations | | `maxAllowedMemberships` | number | Max allowed memberships | | `adminDeleteEnabled` | boolean | Whether admin delete is enabled | | `createdBy` | string | Creator user ID | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata | | `success` | boolean | Operation success status | ### Update Organization in Clerk [#update-organization-in-clerk] Update an existing organization in your Clerk application #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization to update (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `name` | string | No | Name of the organization | | `slug` | string | No | Slug identifier for the organization | | `maxAllowedMemberships` | number | No | Maximum member capacity (0 for unlimited) | | `adminDeleteEnabled` | boolean | No | Whether admins can delete the organization | #### Output [#output-13] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------- | | `id` | string | Organization ID | | `name` | string | Organization name | | `slug` | string | Organization slug | | `imageUrl` | string | Organization image URL | | `hasImage` | boolean | Whether organization has an image | | `membersCount` | number | Number of members | | `pendingInvitationsCount` | number | Number of pending invitations | | `maxAllowedMemberships` | number | Max allowed memberships | | `adminDeleteEnabled` | boolean | Whether admin delete is enabled | | `createdBy` | string | Creator user ID | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `publicMetadata` | json | Public metadata | | `success` | boolean | Operation success status | ### Delete Organization from Clerk [#delete-organization-from-clerk] Delete an organization from your Clerk application #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization to delete (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `id` | string | Deleted organization ID | | `object` | string | Object type (organization) | | `deleted` | boolean | Whether the organization was deleted | | `success` | boolean | Operation success status | ### List Organization Memberships from Clerk [#list-organization-memberships-from-clerk] List members of a Clerk organization with optional filtering and pagination #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | | `orderBy` | string | No | Sort field (e.g., created\_at) with +/- prefix for direction | | `role` | string | No | Filter by role, comma-separated for multiple (e.g., org:admin,org:member) | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------- | | `memberships` | array | Array of Clerk organization membership objects | | ↳ `id` | string | Membership ID | | ↳ `role` | string | Member role | | ↳ `roleName` | string | Human-readable role name | | ↳ `permissions` | array | Permissions granted by the role | | ↳ `organizationId` | string | Organization ID | | ↳ `userId` | string | Member user ID | | ↳ `firstName` | string | Member first name | | ↳ `lastName` | string | Member last name | | ↳ `imageUrl` | string | Member profile image URL | | ↳ `identifier` | string | Member identifier (e.g., email) | | ↳ `username` | string | Member username | | ↳ `banned` | boolean | Whether the member is banned | | ↳ `publicMetadata` | json | Public metadata | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of memberships | | `success` | boolean | Operation success status | ### Add Organization Member in Clerk [#add-organization-member-in-clerk] Add a user as a member of a Clerk organization with a given role #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `userId` | string | Yes | ID of the user to add as a member | | `role` | string | Yes | Role to assign, e.g. org:admin or org:member | #### Output [#output-16] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `id` | string | Membership ID | | `role` | string | Member role | | `roleName` | string | Human-readable role name | | `permissions` | array | Permissions granted by the role | | `organizationId` | string | Organization ID | | `userId` | string | Member user ID | | `firstName` | string | Member first name | | `lastName` | string | Member last name | | `imageUrl` | string | Member profile image URL | | `identifier` | string | Member identifier (e.g., email) | | `username` | string | Member username | | `banned` | boolean | Whether the member is banned | | `publicMetadata` | json | Public metadata | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Update Organization Membership in Clerk [#update-organization-membership-in-clerk] Change a member's role within a Clerk organization #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `userId` | string | Yes | ID of the member whose role is being changed | | `role` | string | Yes | New role to assign, e.g. org:admin or org:member | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `id` | string | Membership ID | | `role` | string | Member role | | `roleName` | string | Human-readable role name | | `permissions` | array | Permissions granted by the role | | `organizationId` | string | Organization ID | | `userId` | string | Member user ID | | `firstName` | string | Member first name | | `lastName` | string | Member last name | | `imageUrl` | string | Member profile image URL | | `identifier` | string | Member identifier (e.g., email) | | `username` | string | Member username | | `banned` | boolean | Whether the member is banned | | `publicMetadata` | json | Public metadata | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Remove Organization Member from Clerk [#remove-organization-member-from-clerk] Remove a member from a Clerk organization #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `userId` | string | Yes | ID of the member to remove | #### Output [#output-18] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `id` | string | Membership ID | | `role` | string | Member role | | `roleName` | string | Human-readable role name | | `permissions` | array | Permissions granted by the role | | `organizationId` | string | Organization ID | | `userId` | string | Member user ID | | `firstName` | string | Member first name | | `lastName` | string | Member last name | | `imageUrl` | string | Member profile image URL | | `identifier` | string | Member identifier (e.g., email) | | `username` | string | Member username | | `banned` | boolean | Whether the member is banned | | `publicMetadata` | json | Public metadata | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Create Organization Invitation in Clerk [#create-organization-invitation-in-clerk] Invite a user by email to join a Clerk organization with a given role #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `emailAddress` | string | Yes | Email address of the user to invite | | `role` | string | Yes | Role to assign on acceptance, e.g. org:admin or org:member | | `inviterUserId` | string | No | User ID of the inviter | | `redirectUrl` | string | No | URL to redirect to after the invitation is accepted | | `expiresInDays` | number | No | Days until the invitation expires (1-365, default 30) | | `publicMetadata` | json | No | Public metadata (JSON object) | | `privateMetadata` | json | No | Private metadata (JSON object) | | `notify` | boolean | No | Whether Clerk sends the invitation email (default true) | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------- | | `id` | string | Invitation ID | | `emailAddress` | string | Invited email address | | `role` | string | Role to assign on acceptance | | `roleName` | string | Human-readable role name | | `organizationId` | string | Organization ID | | `inviterId` | string | User ID of the inviter | | `inviterEmail` | string | Inviter's email address | | `inviterFirstName` | string | Inviter's first name | | `inviterLastName` | string | Inviter's last name | | `status` | string | Invitation status | | `url` | string | Invitation URL | | `expiresAt` | number | Expiration timestamp | | `publicMetadata` | json | Public metadata | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### List Organization Invitations from Clerk [#list-organization-invitations-from-clerk] List pending and past invitations for a Clerk organization #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `organizationId` | string | Yes | The ID of the organization (e.g., org\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | | `status` | string | No | Filter by status: pending, accepted, revoked, or expired | | `emailAddress` | string | No | Filter by invited email address | | `orderBy` | string | No | Sort field (created\_at, email\_address) with +/- prefix (default: -created\_at) | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | #### Output [#output-20] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------- | | `invitations` | array | Array of Clerk organization invitation objects | | ↳ `id` | string | Invitation ID | | ↳ `emailAddress` | string | Invited email address | | ↳ `role` | string | Role to assign on acceptance | | ↳ `roleName` | string | Human-readable role name | | ↳ `organizationId` | string | Organization ID | | ↳ `inviterId` | string | User ID of the inviter | | ↳ `inviterEmail` | string | Inviter's email address | | ↳ `inviterFirstName` | string | Inviter's first name | | ↳ `inviterLastName` | string | Inviter's last name | | ↳ `status` | string | Invitation status | | ↳ `url` | string | Invitation URL | | ↳ `expiresAt` | number | Expiration timestamp | | ↳ `publicMetadata` | json | Public metadata | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of invitations | | `success` | boolean | Operation success status | ### List Sessions from Clerk [#list-sessions-from-clerk] List sessions for a user or client in your Clerk application #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | No | User ID to list sessions for (e.g., user\_2NNEqL2nrIRdJ194ndJqAHwEfxC; required if clientId not provided) | | `clientId` | string | No | Client ID to list sessions for (required if userId not provided) | | `status` | string | No | Filter by session status (abandoned, active, ended, expired, pending, removed, replaced, revoked) | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | #### Output [#output-21] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------ | | `sessions` | array | Array of Clerk session objects | | ↳ `id` | string | Session ID | | ↳ `userId` | string | User ID | | ↳ `clientId` | string | Client ID | | ↳ `status` | string | Session status | | ↳ `lastActiveAt` | number | Last activity timestamp | | ↳ `lastActiveOrganizationId` | string | Last active organization ID | | ↳ `expireAt` | number | Expiration timestamp | | ↳ `abandonAt` | number | Abandon timestamp | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of sessions | | `success` | boolean | Operation success status | ### Get Session from Clerk [#get-session-from-clerk] Retrieve a single session by ID from Clerk #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `sessionId` | string | Yes | The ID of the session to retrieve (e.g., sess\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-22] | Parameter | Type | Description | | -------------------------- | ------- | --------------------------- | | `id` | string | Session ID | | `userId` | string | User ID | | `clientId` | string | Client ID | | `status` | string | Session status | | `lastActiveAt` | number | Last activity timestamp | | `lastActiveOrganizationId` | string | Last active organization ID | | `expireAt` | number | Expiration timestamp | | `abandonAt` | number | Abandon timestamp | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Revoke Session in Clerk [#revoke-session-in-clerk] Revoke a session to immediately invalidate it #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `sessionId` | string | Yes | The ID of the session to revoke (e.g., sess\_2NNEqL2nrIRdJ194ndJqAHwEfxC) | #### Output [#output-23] | Parameter | Type | Description | | -------------------------- | ------- | ---------------------------------- | | `id` | string | Session ID | | `userId` | string | User ID | | `clientId` | string | Client ID | | `status` | string | Session status (should be revoked) | | `lastActiveAt` | number | Last activity timestamp | | `lastActiveOrganizationId` | string | Last active organization ID | | `expireAt` | number | Expiration timestamp | | `abandonAt` | number | Abandon timestamp | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### List Allowlist Identifiers from Clerk [#list-allowlist-identifiers-from-clerk] List email/phone/web3-wallet identifiers on your Clerk instance allowlist #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `limit` | number | No | Number of results per page (e.g., 10, 50, 100; range: 1-500, default: 10) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 10, 20) | #### Output [#output-24] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------- | | `identifiers` | array | Array of Clerk allowlist identifier objects | | ↳ `id` | string | Allowlist identifier ID | | ↳ `identifier` | string | Email, phone, or web3 wallet identifier | | ↳ `identifierType` | string | Type of identifier | | ↳ `invitationId` | string | Associated invitation ID | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of allowlist identifiers | | `success` | boolean | Operation success status | ### Create Allowlist Identifier in Clerk [#create-allowlist-identifier-in-clerk] Add an email, phone number, or web3 wallet to your Clerk instance allowlist #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `identifier` | string | Yes | Email address, phone number, or web3 wallet to allow (wildcards like \*@example.com supported for email) | | `notify` | boolean | No | Whether to notify the identifier owner by email (default false) | #### Output [#output-25] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------- | | `id` | string | Allowlist identifier ID | | `identifier` | string | Email, phone, or web3 wallet identifier | | `identifierType` | string | Type of identifier | | `invitationId` | string | Associated invitation ID | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Delete Allowlist Identifier from Clerk [#delete-allowlist-identifier-from-clerk] Remove an identifier from your Clerk instance allowlist #### Input [#input-26] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `identifierId` | string | Yes | ID of the allowlist identifier to delete | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `id` | string | Deleted allowlist identifier ID | | `object` | string | Object type (allowlist\_identifier) | | `deleted` | boolean | Whether the identifier was deleted | | `success` | boolean | Operation success status | ### List Blocklist Identifiers from Clerk [#list-blocklist-identifiers-from-clerk] List email/phone/web3-wallet identifiers on your Clerk instance blocklist #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | #### Output [#output-27] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------- | | `identifiers` | array | Array of Clerk blocklist identifier objects | | ↳ `id` | string | Blocklist identifier ID | | ↳ `identifier` | string | Email, phone, or web3 wallet identifier | | ↳ `identifierType` | string | Type of identifier | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of blocklist identifiers | | `success` | boolean | Operation success status | ### Create Blocklist Identifier in Clerk [#create-blocklist-identifier-in-clerk] Add an email, phone number, or web3 wallet to your Clerk instance blocklist to prevent sign-ups #### Input [#input-28] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `identifier` | string | Yes | Email address, phone number, or web3 wallet to block | #### Output [#output-28] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------- | | `id` | string | Blocklist identifier ID | | `identifier` | string | Email, phone, or web3 wallet identifier | | `identifierType` | string | Type of identifier | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Delete Blocklist Identifier from Clerk [#delete-blocklist-identifier-from-clerk] Remove an identifier from your Clerk instance blocklist #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `identifierId` | string | Yes | ID of the blocklist identifier to delete | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `id` | string | Deleted blocklist identifier ID | | `object` | string | Object type (blocklist\_identifier) | | `deleted` | boolean | Whether the identifier was deleted | | `success` | boolean | Operation success status | ### List JWT Templates from Clerk [#list-jwt-templates-from-clerk] List custom JWT templates configured on your Clerk instance #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | #### Output [#output-30] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `templates` | array | Array of Clerk JWT template objects | | ↳ `id` | string | JWT template ID | | ↳ `name` | string | JWT template name | | ↳ `claims` | json | Custom claims defined on the template | | ↳ `lifetime` | number | Token lifetime in seconds | | ↳ `allowedClockSkew` | number | Allowed clock skew in seconds | | ↳ `customSigningKey` | boolean | Whether a custom signing key is configured | | ↳ `signingAlgorithm` | string | Signing algorithm used | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `totalCount` | number | Total number of JWT templates | | `success` | boolean | Operation success status | ### Get JWT Template from Clerk [#get-jwt-template-from-clerk] Retrieve a single custom JWT template by ID from Clerk #### Input [#input-31] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `templateId` | string | Yes | ID of the JWT template to retrieve | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------ | | `id` | string | JWT template ID | | `name` | string | JWT template name | | `claims` | json | Custom claims defined on the template | | `lifetime` | number | Token lifetime in seconds | | `allowedClockSkew` | number | Allowed clock skew in seconds | | `customSigningKey` | boolean | Whether a custom signing key is configured | | `signingAlgorithm` | string | Signing algorithm used | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Create Actor Token in Clerk [#create-actor-token-in-clerk] Create an actor token to impersonate a user (God Mode / act-as-user), e.g. for support tooling #### Input [#input-32] | Parameter | Type | Required | Description | | ----------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `userId` | string | Yes | ID of the user to impersonate | | `actor` | json | Yes | Actor JSON object identifying who is impersonating, must include a "sub" field, e.g. \{"sub": "user\_support\_agent\_id"} | | `expiresInSeconds` | number | No | Seconds until the token expires (default 3600) | | `sessionMaxDurationInSeconds` | number | No | Max duration in seconds for sessions created with this token (default 1800) | #### Output [#output-32] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------- | | `id` | string | Actor token ID | | `status` | string | Actor token status | | `userId` | string | ID of the impersonated user | | `actor` | json | Actor object identifying who is impersonating | | `token` | string | Signed actor token (JWT) | | `url` | string | Sign-in URL for the actor token | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ### Revoke Actor Token in Clerk [#revoke-actor-token-in-clerk] Revoke an actor token before it is used or expires #### Input [#input-33] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `secretKey` | string | Yes | The Clerk Secret Key for API authentication | | `actorTokenId` | string | Yes | ID of the actor token to revoke | #### Output [#output-33] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------- | | `id` | string | Actor token ID | | `status` | string | Actor token status (should be revoked) | | `userId` | string | ID of the impersonated user | | `actor` | json | Actor object identifying who is impersonating | | `token` | string | Signed actor token (JWT) | | `url` | string | Sign-in URL for the actor token | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `success` | boolean | Operation success status | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Clerk Organization Created [#clerk-organization-created] Trigger workflow when a Clerk organization is created #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-34] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------ | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `organizationId` | string | Clerk organization ID (data.id) | | `name` | string | Organization name (data.name) | | `slug` | string | Organization slug (data.slug) | | `createdBy` | string | User ID of the creator (data.created\_by) | | `membersCount` | number | Number of members (data.members\_count) | | `maxAllowedMemberships` | number | Maximum allowed memberships (data.max\_allowed\_memberships) | | `createdAt` | number | Organization creation timestamp (data.created\_at) | *** ### Clerk Organization Deleted [#clerk-organization-deleted] Trigger workflow when a Clerk organization is deleted #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-35] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `organizationId` | string | Deleted Clerk organization ID (data.id) | | `deleted` | boolean | Whether the organization was deleted (data.deleted) | *** ### Clerk Organization Membership Created [#clerk-organization-membership-created] Trigger workflow when a Clerk organization membership is created #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-36] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `membershipId` | string | Membership ID (data.id) | | `role` | string | Membership role, e.g. org:admin (data.role) | | `organizationId` | string | Organization ID (data.organization.id) | | `userId` | string | User ID of the member (data.public\_user\_data.user\_id) | | `createdAt` | number | Membership creation timestamp (data.created\_at) | *** ### Clerk Organization Membership Deleted [#clerk-organization-membership-deleted] Trigger workflow when a Clerk organization membership is deleted #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `membershipId` | string | Deleted membership ID (data.id) | | `deleted` | boolean | Whether the membership was deleted (data.deleted) | *** ### Clerk Organization Membership Updated [#clerk-organization-membership-updated] Trigger workflow when a Clerk organization membership is updated #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-38] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `membershipId` | string | Membership ID (data.id) | | `role` | string | Membership role, e.g. org:admin (data.role) | | `organizationId` | string | Organization ID (data.organization.id) | | `userId` | string | User ID of the member (data.public\_user\_data.user\_id) | | `createdAt` | number | Membership creation timestamp (data.created\_at) | *** ### Clerk Organization Updated [#clerk-organization-updated] Trigger workflow when a Clerk organization is updated #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-39] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------ | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `organizationId` | string | Clerk organization ID (data.id) | | `name` | string | Organization name (data.name) | | `slug` | string | Organization slug (data.slug) | | `createdBy` | string | User ID of the creator (data.created\_by) | | `membersCount` | number | Number of members (data.members\_count) | | `maxAllowedMemberships` | number | Maximum allowed memberships (data.max\_allowed\_memberships) | | `createdAt` | number | Organization creation timestamp (data.created\_at) | *** ### Clerk Session Created [#clerk-session-created] Trigger workflow when a Clerk session is created #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-40] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `sessionId` | string | Clerk session ID (data.id) | | `userId` | string | User the session belongs to (data.user\_id) | | `clientId` | string | Client ID for the session (data.client\_id) | | `status` | string | Session status (data.status) | | `createdAt` | number | Session creation timestamp (data.created\_at) | *** ### Clerk Session Ended [#clerk-session-ended] Trigger workflow when a Clerk session ends #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-41] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `sessionId` | string | Clerk session ID (data.id) | | `userId` | string | User the session belongs to (data.user\_id) | | `clientId` | string | Client ID for the session (data.client\_id) | | `status` | string | Session status (data.status) | | `createdAt` | number | Session creation timestamp (data.created\_at) | *** ### Clerk Session Removed [#clerk-session-removed] Trigger workflow when a Clerk session is removed #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-42] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `sessionId` | string | Clerk session ID (data.id) | | `userId` | string | User the session belongs to (data.user\_id) | | `clientId` | string | Client ID for the session (data.client\_id) | | `status` | string | Session status (data.status) | | `createdAt` | number | Session creation timestamp (data.created\_at) | *** ### Clerk Session Revoked [#clerk-session-revoked] Trigger workflow when a Clerk session is revoked #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-43] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `sessionId` | string | Clerk session ID (data.id) | | `userId` | string | User the session belongs to (data.user\_id) | | `clientId` | string | Client ID for the session (data.client\_id) | | `status` | string | Session status (data.status) | | `createdAt` | number | Session creation timestamp (data.created\_at) | *** ### Clerk User Created [#clerk-user-created] Trigger workflow when a Clerk user is created #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-44] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `userId` | string | Clerk user ID (data.id) | | `firstName` | string | User's first name | | `lastName` | string | User's last name | | `username` | string | User's username | | `imageUrl` | string | Profile image URL | | `primaryEmailAddressId` | string | Primary email address ID | | `emailAddresses` | json | Array of email address objects | | `phoneNumbers` | json | Array of phone number objects | | `externalId` | string | External system ID linked to the user | | `createdAt` | number | User creation timestamp (data.created\_at) | | `updatedAt` | number | User last update timestamp (data.updated\_at) | *** ### Clerk User Deleted [#clerk-user-deleted] Trigger workflow when a Clerk user is deleted #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-45] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `userId` | string | Deleted Clerk user ID (data.id) | | `deleted` | boolean | Whether the user was deleted (data.deleted) | *** ### Clerk User Updated [#clerk-user-updated] Trigger workflow when a Clerk user is updated #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-46] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | | `userId` | string | Clerk user ID (data.id) | | `firstName` | string | User's first name | | `lastName` | string | User's last name | | `username` | string | User's username | | `imageUrl` | string | Profile image URL | | `primaryEmailAddressId` | string | Primary email address ID | | `emailAddresses` | json | Array of email address objects | | `phoneNumbers` | json | Array of phone number objects | | `externalId` | string | External system ID linked to the user | | `createdAt` | number | User creation timestamp (data.created\_at) | | `updatedAt` | number | User last update timestamp (data.updated\_at) | *** ### Clerk Webhook [#clerk-webhook] Trigger workflow on any Clerk webhook event #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `signingSecret` | string | Yes | Copy this from your Clerk webhook endpoint to verify event signatures. | #### Output [#output-47] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `type` | string | Event type (e.g., user.created, session.created) | | `object` | string | Always "event" | | `timestamp` | number | Timestamp in milliseconds when the event occurred | | `instance_id` | string | Identifier of your Clerk instance | | `data` | json | Raw event `data` object (shape varies by event type) | --- # ClickHouse (/integrations/clickhouse) {/* MANUAL-CONTENT-START:intro */} [ClickHouse](https://clickhouse.com) is an open-source, column-oriented database management system for online analytical processing (OLAP). It is built for speed at scale — running aggregations and analytical queries over billions of rows in real time. The ClickHouse block connects to any ClickHouse deployment (ClickHouse Cloud or self-hosted) over the [HTTP interface](https://clickhouse.com/docs/interfaces/http). Use it to run analytical queries, stream rows into tables, manage schemas, inspect system state, and execute arbitrary SQL — all from within a workflow. **Connection details** * **Host** — your ClickHouse hostname (e.g. `your-instance.clickhouse.cloud` or your server address). * **Port** — the HTTP interface port. Use `8443` for HTTPS (ClickHouse Cloud) or `8123` for plain HTTP (self-hosted). * **Database** / **Username** — default to `default` if not specified. * **Password** — optional for unauthenticated local instances. * **Use HTTPS** — keep enabled for any remote or Cloud instance. **Things to know** * `UPDATE` and `DELETE` are implemented as ClickHouse [mutations](https://clickhouse.com/docs/sql-reference/statements/alter/update) (`ALTER TABLE ... UPDATE/DELETE`). Mutations run **asynchronously** in the background, so the affected row count is not returned immediately. * ClickHouse is optimized for bulk inserts. Prefer batching many rows per insert over many single-row inserts. * The connection host is validated to block private/internal addresses, so the block cannot reach `localhost` or internal-only hosts. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate ClickHouse into the workflow. Query and insert data, manage databases and tables, inspect schemas, monitor mutations and running queries, manage partitions, and execute raw SQL over the ClickHouse HTTP interface. ## Actions [#actions] ### ClickHouse Query [#clickhouse-query] Execute a SELECT query on a ClickHouse database #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `query` | string | Yes | SQL SELECT query to execute | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### ClickHouse Execute [#clickhouse-execute] Execute raw SQL (DDL, mutations, or queries) on a ClickHouse database #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `query` | string | Yes | Raw SQL statement to execute | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the statement | | `rowCount` | number | Number of rows returned or affected | ### ClickHouse Insert [#clickhouse-insert] Insert a row into a ClickHouse table #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to insert data into | | `data` | object | Yes | Data object to insert (key-value pairs mapping column names to values) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Inserted rows (empty for ClickHouse inserts) | | `rowCount` | number | Number of rows inserted | ### ClickHouse Insert Rows [#clickhouse-insert-rows] Insert multiple rows into a ClickHouse table #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | --------------------------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table to insert into | | `rows` | json | Yes | Array of row objects to insert, e.g. \[\{"id":1,"name":"a"},\{"id":2,"name":"b"}] | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Inserted rows (empty for ClickHouse inserts) | | `rowCount` | number | Number of rows inserted | ### ClickHouse Update [#clickhouse-update] Update rows in a ClickHouse table via an ALTER TABLE ... UPDATE mutation #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to update data in | | `data` | object | Yes | Data object with fields to update (key-value pairs) | | `where` | string | Yes | WHERE clause condition (without the WHERE keyword) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Updated rows (empty for ClickHouse mutations) | | `rowCount` | number | Number of rows written by the mutation | ### ClickHouse Delete [#clickhouse-delete] Delete rows from a ClickHouse table via an ALTER TABLE ... DELETE mutation #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to delete data from | | `where` | string | Yes | WHERE clause condition (without the WHERE keyword) | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Deleted rows (empty for ClickHouse mutations) | | `rowCount` | number | Number of rows affected by the mutation | ### ClickHouse List Databases [#clickhouse-list-databases] List all databases on a ClickHouse server #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------- | | `message` | string | Operation status message | | `rows` | array | List of databases with engine and comment | | `rowCount` | number | Number of rows returned | ### ClickHouse List Tables [#clickhouse-list-tables] List tables in the connected ClickHouse database #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### ClickHouse Describe Table [#clickhouse-describe-table] Describe the columns of a ClickHouse table #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to describe | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### ClickHouse Show Create Table [#clickhouse-show-create-table] Get the CREATE TABLE statement (DDL) for a ClickHouse table #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to get the CREATE statement for | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `message` | string | Operation status message | | `ddl` | string | The CREATE TABLE statement | ### ClickHouse Count Rows [#clickhouse-count-rows] Count rows in a ClickHouse table, optionally filtered #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to count rows in | | `where` | string | No | Optional WHERE clause condition without the WHERE keyword | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | | `count` | number | Number of rows | ### ClickHouse Introspect [#clickhouse-introspect] Introspect a ClickHouse database to retrieve table structures, columns, and engines #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to introspect | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `message` | string | Operation status message | | `tables` | array | Array of table schemas with columns and engines | | ↳ `name` | string | Table name | | ↳ `database` | string | Database the table belongs to | | ↳ `engine` | string | Table engine (e.g., MergeTree, Log) | | ↳ `totalRows` | number | Approximate total number of rows in the table | | ↳ `columns` | array | Table columns | | ↳ `name` | string | Column name | | ↳ `type` | string | ClickHouse data type (e.g., UInt32, String, DateTime) | | ↳ `defaultKind` | string | Kind of default expression (DEFAULT, MATERIALIZED, ALIAS) | | ↳ `defaultExpression` | string | Default value expression for the column | | ↳ `isInPrimaryKey` | boolean | Whether the column is part of the primary key | | ↳ `isInSortingKey` | boolean | Whether the column is part of the sorting key | ### ClickHouse Create Database [#clickhouse-create-database] Create a new database on a ClickHouse server #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `name` | string | Yes | Name of the database to create | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Drop Database [#clickhouse-drop-database] Drop a database from a ClickHouse server #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `name` | string | Yes | Name of the database to drop | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Create Table [#clickhouse-create-table] Create a new MergeTree-family table in ClickHouse #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Name of the table to create | | `columns` | json | Yes | Array of column definitions, each an object with name and type, e.g. \[\{"name":"id","type":"UInt64"},\{"name":"ts","type":"DateTime"}] | | `engine` | string | No | Table engine (default MergeTree) | | `orderBy` | string | Yes | ORDER BY expression, e.g. "id" or "(id, ts)" | | `partitionBy` | string | No | Optional PARTITION BY expression, e.g. toYYYYMM(ts) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Drop Table [#clickhouse-drop-table] Drop a table from a ClickHouse database #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to drop | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Truncate Table [#clickhouse-truncate-table] Remove all rows from a ClickHouse table #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to truncate | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Rename Table [#clickhouse-rename-table] Rename a ClickHouse table #### Input [#input-17] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Current table name | | `newTable` | string | Yes | New table name | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse Optimize Table [#clickhouse-optimize-table] Trigger a merge of table parts via OPTIMIZE TABLE #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table to optimize | | `final` | boolean | No | Force a merge to a single part using FINAL | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse List Partitions [#clickhouse-list-partitions] List active partitions for a ClickHouse table #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name to inspect partitions for | #### Output [#output-19] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### ClickHouse Drop Partition [#clickhouse-drop-partition] Drop a partition from a ClickHouse table #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | Yes | Table name | | `partition` | string | Yes | Partition expression, e.g. '2024-01' or 202401 | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### ClickHouse List Mutations [#clickhouse-list-mutations] List mutations (async ALTER UPDATE/DELETE) for the connected database #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | No | Optional table name to filter mutations | | `onlyRunning` | boolean | No | Only show mutations that are still running | #### Output [#output-21] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of mutation rows | | `rowCount` | number | Number of rows returned | ### ClickHouse List Running Queries [#clickhouse-list-running-queries] List currently running queries on a ClickHouse server #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | #### Output [#output-22] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### ClickHouse Kill Query [#clickhouse-kill-query] Kill a running query by its query ID #### Input [#input-23] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `queryId` | string | Yes | The query\_id of the running query to kill | #### Output [#output-23] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Kill status rows | | `rowCount` | number | Number of rows returned | ### ClickHouse Table Stats [#clickhouse-table-stats] Get row counts and on-disk size for tables in the connected database #### Input [#input-24] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | | `table` | string | No | Optional table name to get stats for | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | ------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of table stats rows | | `rowCount` | number | Number of rows returned | ### ClickHouse List Clusters [#clickhouse-list-clusters] List configured clusters, shards, and replicas #### Input [#input-25] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | ClickHouse server hostname (e.g., your-instance.clickhouse.cloud) | | `port` | number | Yes | ClickHouse HTTP interface port (8443 for HTTPS, 8123 for HTTP) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | ClickHouse username | | `password` | string | No | ClickHouse password | | `secure` | boolean | No | Use a secure HTTPS connection (default: true) | #### Output [#output-25] | Parameter | Type | Description | | ---------- | ------ | -------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of cluster node rows | | `rowCount` | number | Number of rows returned | --- # ClickUp API Tokens (/integrations/clickup-service-account) Connect ClickUp with a personal API token. The workflow acts with the permissions of the user who created the token. Tokens are bound to the user who creates them: every action a workflow takes is attributed to that user, and the token stops working if the user is deactivated or removed from the workspace. For production workflows, create the token from a dedicated service user (e.g. `agentserve-bot@yourcompany.com`) rather than a personal account. ## Prerequisites [#prerequisites] A ClickUp account with access to the workspaces your workflows need. Any user can generate a personal API token from their settings. ## Creating the API Token [#creating-the-api-token] Log in as the service user, click your avatar in ClickUp, and open **Settings** {/* TODO(screenshot): ClickUp avatar menu with Settings highlighted */} In the sidebar, go to **Apps** (labeled **API Token** in some plans) Click **Generate** to create your personal token {/* TODO(screenshot): ClickUp Apps page with the Generate API token button visible */} Copy the token — it starts with `pk_` — and store it somewhere safe. The API token carries the creating user's full access to every workspace they belong to. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the token at rest. ## Adding the API Token to Agent Serve [#adding-the-api-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "ClickUp" and open it, then click **Add to Agent Serve** and choose **Add API token** {/* TODO(screenshot): ClickUp integration page with the service-account connect option */} Paste the API token (`pk_...`) and optionally set a display name and description {/* TODO(screenshot): Add ClickUp API token dialog with the token filled in */} Click **Add API token**. Agent Serve verifies the token by fetching the authorized user from ClickUp — if it fails, you'll see a specific error explaining what went wrong. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a ClickUp block to your workflow. In the credential dropdown, select the saved ClickUp API token. Select it and configure the block as you normally would. {/* TODO(screenshot): ClickUp block in a workflow with the service account selected as the credential */} The block calls the ClickUp API (`api.clickup.com`) with the token. Everything the workflow does — creating tasks, adding comments, uploading attachments — is attributed to the user who created the token. --- # ClickUp (/integrations/clickup) {/* MANUAL-CONTENT-START:intro */} [ClickUp](https://clickup.com/) is a work management platform that organizes tasks into a hierarchy of workspaces, spaces, folders, and lists. It combines task tracking, comments, checklists, custom fields, and time tracking in one place, with configurable statuses and views for each team. With the ClickUp integration in Agent Serve, you can: * **Manage tasks**: Create, get, update, and delete tasks, and list or search tasks across a workspace * **Collaborate with comments**: Create, list, update, and delete comments on tasks * **Organize the hierarchy**: Look up workspaces, spaces, folders, and lists, and create new folders and lists * **Work with custom fields**: Retrieve a list's custom fields, and set or clear their values on a task * **Track checklists**: Create, update, and delete checklists and their individual items * **Track time**: List, create, update, and delete time entries, and start, stop, or inspect a running timer * **Apply tags and attachments**: Add or remove space tags on a task and upload file attachments * **Look up people**: Retrieve the members of a task or a list * **React to changes**: Trigger workflows on task, list, folder, space, goal, and key-result events In Agent Serve, the ClickUp integration enables your agents to participate in your team's project workflow. Agents can open tasks from incoming requests, comment with context they gathered elsewhere, move work through statuses, log time, and run downstream automation the moment a task is created, updated, or moved. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate ClickUp into the workflow. Create, read, update, and delete tasks, manage comments, tags, folders, and lists, upload attachments, and look up workspaces, members, and custom fields. Can also trigger workflows on ClickUp events like task, list, folder, space, and goal changes. ## Actions [#actions] ### ClickUp Create Task [#clickup-create-task] Create a new task in a ClickUp list #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `listId` | string | Yes | ID of the list to create the task in | | `name` | string | Yes | Name of the task | | `description` | string | No | Plain text description of the task | | `markdownContent` | string | No | Markdown description of the task (overrides description) | | `status` | string | No | Status to create the task with (must exist in the list) | | `priority` | number | No | Priority: 1 (urgent), 2 (high), 3 (normal), 4 (low) | | `dueDate` | number | No | Due date as a Unix timestamp in milliseconds | | `dueDateTime` | boolean | No | Whether the due date includes a time of day | | `startDate` | number | No | Start date as a Unix timestamp in milliseconds | | `startDateTime` | boolean | No | Whether the start date includes a time of day | | `assignees` | array | No | User IDs to assign to the task | | `tags` | array | No | Tag names to apply to the task | | `timeEstimate` | number | No | Time estimate in milliseconds | | `points` | number | No | Sprint points for the task | | `parent` | string | No | Parent task ID to create this task as a subtask | | `notifyAll` | boolean | No | When true, creation notifications are sent to everyone, including the task creator | #### Output [#output] | Parameter | Type | Description | | --------- | ---- | ---------------- | | `task` | json | The created task | ### ClickUp Get Task [#clickup-get-task] Retrieve a task from ClickUp by ID #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ---------------------------------------------- | | `taskId` | string | Yes | ID of the task to retrieve | | `includeSubtasks` | boolean | No | Include subtasks in the response | | `includeMarkdownDescription` | boolean | No | Return the task description in Markdown format | #### Output [#output-1] | Parameter | Type | Description | | --------- | ---- | ------------------ | | `task` | json | The requested task | ### ClickUp Update Task [#clickup-update-task] Update an existing task in ClickUp #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------ | | `taskId` | string | Yes | ID of the task to update | | `name` | string | No | New name for the task | | `description` | string | No | New plain text description (use a single space to clear) | | `markdownContent` | string | No | New Markdown description (takes precedence over description) | | `status` | string | No | New status for the task (must exist in the list) | | `priority` | number | No | Priority: 1 (urgent), 2 (high), 3 (normal), 4 (low) | | `dueDate` | number | No | New due date as a Unix timestamp in milliseconds | | `dueDateTime` | boolean | No | Whether the due date includes a time of day | | `startDate` | number | No | New start date as a Unix timestamp in milliseconds | | `startDateTime` | boolean | No | Whether the start date includes a time of day | | `timeEstimate` | number | No | New time estimate in milliseconds | | `points` | number | No | New sprint points value | | `parent` | string | No | Parent task ID to move this task under (cannot be cleared) | | `archived` | boolean | No | Set to true to archive the task, false to unarchive | | `assigneesToAdd` | array | No | User IDs to add as assignees | | `assigneesToRemove` | array | No | User IDs to remove from assignees | #### Output [#output-2] | Parameter | Type | Description | | --------- | ---- | ---------------- | | `task` | json | The updated task | ### ClickUp Delete Task [#clickup-delete-task] Delete a task from ClickUp #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------ | | `taskId` | string | Yes | ID of the task to delete | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `id` | string | ID of the deleted task | | `deleted` | boolean | Whether the task was deleted | ### ClickUp Get Tasks [#clickup-get-tasks] List the tasks in a ClickUp list (100 tasks per page; increment page until an empty result to paginate) #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | --------------------------------------------------------- | | `listId` | string | Yes | ID of the list to fetch tasks from | | `page` | number | No | Page to fetch (starts at 0) | | `orderBy` | string | No | Order by field: id, created, updated, or due\_date | | `reverse` | boolean | No | Return tasks in reverse order | | `subtasks` | boolean | No | Include subtasks (excluded by default) | | `includeClosed` | boolean | No | Include closed tasks (excluded by default) | | `includeMarkdownDescription` | boolean | No | Return task descriptions in Markdown format | | `archived` | boolean | No | Return archived tasks | | `statuses` | array | No | Filter tasks by status names | | `assignees` | array | No | Filter tasks by assignee user IDs | | `tags` | array | No | Filter tasks by tag names | | `dueDateGt` | number | No | Only tasks due after this Unix timestamp in milliseconds | | `dueDateLt` | number | No | Only tasks due before this Unix timestamp in milliseconds | #### Output [#output-4] | Parameter | Type | Description | | --------- | ----- | ----------------- | | `tasks` | array | Tasks in the list | ### ClickUp Search Tasks [#clickup-search-tasks] Search tasks across a ClickUp workspace with filters for lists, folders, spaces, statuses, assignees, tags, and due dates (100 tasks per page; increment page until an empty result to paginate) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | --------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) to search tasks in | | `page` | number | No | Page to fetch (starts at 0) | | `orderBy` | string | No | Order by field: id, created, updated, or due\_date | | `reverse` | boolean | No | Return tasks in reverse order | | `subtasks` | boolean | No | Include subtasks (excluded by default) | | `includeClosed` | boolean | No | Include closed tasks (excluded by default) | | `includeMarkdownDescription` | boolean | No | Return task descriptions in Markdown format | | `listIds` | array | No | Filter by list IDs | | `spaceIds` | array | No | Filter by space IDs | | `folderIds` | array | No | Filter by folder IDs | | `statuses` | array | No | Filter tasks by status names | | `assignees` | array | No | Filter tasks by assignee user IDs | | `tags` | array | No | Filter tasks by tag names | | `dueDateGt` | number | No | Only tasks due after this Unix timestamp in milliseconds | | `dueDateLt` | number | No | Only tasks due before this Unix timestamp in milliseconds | #### Output [#output-5] | Parameter | Type | Description | | --------- | ----- | -------------------------- | | `tasks` | array | Tasks matching the filters | ### ClickUp Create Comment [#clickup-create-comment] Add a comment to a ClickUp task #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `taskId` | string | Yes | ID of the task to comment on | | `commentText` | string | Yes | Content of the comment | | `assignee` | number | No | User ID to assign the comment to | | `notifyAll` | boolean | No | When true, comment notifications are sent to everyone, including the comment creator | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------- | | `id` | string | ID of the created comment | | `histId` | string | History ID of the created comment | | `date` | number | Creation timestamp of the comment (Unix ms) | ### ClickUp Get Comments [#clickup-get-comments] Retrieve comments on a ClickUp task, newest first (25 per page; paginate with start and startId) #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `taskId` | string | Yes | ID of the task to fetch comments from | | `start` | number | No | Unix timestamp (ms) of the reference comment for pagination (use the date of the last comment from the previous page, together with startId) | | `startId` | string | No | ID of the reference comment for pagination (use the id of the last comment from the previous page, together with start) | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ----- | ---------------------------------- | | `comments` | array | Comments on the task, newest first | ### ClickUp Update Comment [#clickup-update-comment] Update the content, assignee, or resolved state of a ClickUp task comment #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------- | | `commentId` | string | Yes | ID of the comment to update | | `commentText` | string | No | New content for the comment | | `assignee` | number | No | User ID to assign the comment to | | `resolved` | boolean | No | Whether the comment is resolved | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `id` | string | ID of the updated comment | | `updated` | boolean | Whether the comment was updated | ### ClickUp Delete Comment [#clickup-delete-comment] Delete a comment from a ClickUp task #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------- | | `commentId` | string | Yes | ID of the comment to delete | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `id` | string | ID of the deleted comment | | `deleted` | boolean | Whether the comment was deleted | ### ClickUp Upload Attachment [#clickup-upload-attachment] Upload a file to a ClickUp task as an attachment #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `taskId` | string | Yes | ID of the task to attach the file to | | `file` | file | Yes | File to attach to the task | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------ | | `attachment` | json | The created attachment | | ↳ `id` | string | Attachment ID | | ↳ `version` | string | Attachment version | | ↳ `title` | string | Attachment title | | ↳ `extension` | string | File extension | | ↳ `url` | string | URL of the uploaded attachment | | ↳ `date` | number | Upload timestamp (Unix ms) | | ↳ `thumbnailSmall` | string | Small thumbnail URL | | ↳ `thumbnailLarge` | string | Large thumbnail URL | | `files` | file\[] | The uploaded attachment file | ### ClickUp Add Tag To Task [#clickup-add-tag-to-task] Add an existing space tag to a ClickUp task #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `taskId` | string | Yes | ID of the task to tag | | `tagName` | string | Yes | Name of the tag to add (must exist in the space) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `taskId` | string | ID of the tagged task | | `tagName` | string | Name of the tag that was added | ### ClickUp Remove Tag From Task [#clickup-remove-tag-from-task] Remove a tag from a ClickUp task #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `taskId` | string | Yes | ID of the task to remove the tag from | | `tagName` | string | Yes | Name of the tag to remove | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `taskId` | string | ID of the task | | `tagName` | string | Name of the tag that was removed | ### ClickUp Get Space Tags [#clickup-get-space-tags] List the task tags available in a ClickUp space #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `spaceId` | string | Yes | ID of the space to list tags from | #### Output [#output-13] | Parameter | Type | Description | | --------- | ----- | --------------------------- | | `tags` | array | Tags available in the space | ### ClickUp Get Task Members [#clickup-get-task-members] List the workspace members who have explicit access to a ClickUp task #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `taskId` | string | Yes | ID of the task to list members for | #### Output [#output-14] | Parameter | Type | Description | | --------- | ----- | ---------------------------------------- | | `members` | array | Members with explicit access to the task | ### ClickUp Get List Members [#clickup-get-list-members] List the workspace members who have explicit access to a ClickUp list #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `listId` | string | Yes | ID of the list to list members for | #### Output [#output-15] | Parameter | Type | Description | | --------- | ----- | ---------------------------------------- | | `members` | array | Members with explicit access to the list | ### ClickUp Get Custom Fields [#clickup-get-custom-fields] List the custom fields accessible in a ClickUp list #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `listId` | string | Yes | ID of the list to fetch custom fields from | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------- | | `fields` | array | Custom fields accessible in the list | | ↳ `id` | string | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `type` | string | Custom field type (e.g. text, number, drop\_down) | | ↳ `typeConfig` | json | Type-specific configuration (e.g. dropdown options) | | ↳ `dateCreated` | string | Creation timestamp (Unix ms) | | ↳ `hideFromGuests` | boolean | Whether the field is hidden from guests | ### ClickUp Get Workspaces [#clickup-get-workspaces] List the ClickUp workspaces (teams) available to the connected account #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------- | | `workspaces` | array | Workspaces available to the connected account | | ↳ `id` | string | Workspace ID | | ↳ `name` | string | Workspace name | | ↳ `color` | string | Workspace color | | ↳ `avatar` | string | Workspace avatar URL | ### ClickUp Get Spaces [#clickup-get-spaces] List the spaces in a ClickUp workspace #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) to list spaces from | | `archived` | boolean | No | Return archived spaces | #### Output [#output-18] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------ | | `spaces` | array | Spaces in the workspace | | ↳ `id` | string | Space ID | | ↳ `name` | string | Space name | | ↳ `private` | boolean | Whether the space is private | | ↳ `archived` | boolean | Whether the space is archived | | ↳ `statuses` | array | Task statuses available in the space | | ↳ `status` | string | Status name | | ↳ `color` | string | Status color | | ↳ `type` | string | Status type | ### ClickUp Get Folders [#clickup-get-folders] List the folders in a ClickUp space #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------ | | `spaceId` | string | Yes | ID of the space to list folders from | | `archived` | boolean | No | Return archived folders | #### Output [#output-19] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `folders` | array | Folders in the space | ### ClickUp Get Lists [#clickup-get-lists] List the lists in a ClickUp folder, or the folderless lists in a space when a space ID is provided instead #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------- | | `folderId` | string | No | ID of the folder to list lists from (provide this or spaceId; folderId takes precedence when both are set) | | `spaceId` | string | No | ID of the space to list folderless lists from (provide this or folderId) | | `archived` | boolean | No | Return archived lists | #### Output [#output-20] | Parameter | Type | Description | | --------- | ----- | ---------------------------- | | `lists` | array | Lists in the folder or space | ### ClickUp Create Folder [#clickup-create-folder] Create a new folder in a ClickUp space #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `spaceId` | string | Yes | ID of the space to create the folder in | | `name` | string | Yes | Name of the folder | #### Output [#output-21] | Parameter | Type | Description | | --------- | ---- | ------------------ | | `folder` | json | The created folder | ### ClickUp Create List [#clickup-create-list] Create a new list in a ClickUp folder, or a folderless list in a space when a space ID is provided instead #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `folderId` | string | No | ID of the folder to create the list in (provide this or spaceId; folderId takes precedence when both are set) | | `spaceId` | string | No | ID of the space to create a folderless list in (provide this or folderId) | | `name` | string | Yes | Name of the list | | `content` | string | No | Plain text description of the list | | `markdownContent` | string | No | Markdown description of the list (use instead of content) | #### Output [#output-22] | Parameter | Type | Description | | --------- | ---- | ---------------- | | `list` | json | The created list | ### ClickUp Set Custom Field Value [#clickup-set-custom-field-value] Set the value of a custom field on a ClickUp task (the value shape depends on the field type) #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `taskId` | string | Yes | ID of the task to set the custom field on | | `fieldId` | string | Yes | UUID of the custom field (find it with the Get Custom Fields or Get Task operations) | | `value` | json | Yes | Value to set. The shape depends on the field type: text/number fields take a plain value, label fields take an array of option UUIDs, dropdown fields take an option UUID | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | ----------------------------------- | | `taskId` | string | ID of the updated task | | `fieldId` | string | ID of the custom field that was set | ### ClickUp Remove Custom Field Value [#clickup-remove-custom-field-value] Remove the value of a custom field from a ClickUp task (does not delete the field itself) #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `taskId` | string | Yes | ID of the task to remove the custom field value from | | `fieldId` | string | Yes | UUID of the custom field to clear | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `taskId` | string | ID of the updated task | | `fieldId` | string | ID of the custom field that was cleared | ### ClickUp Create Checklist [#clickup-create-checklist] Add a new checklist to a ClickUp task #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------- | | `taskId` | string | Yes | ID of the task to add the checklist to | | `name` | string | Yes | Name of the checklist | #### Output [#output-25] | Parameter | Type | Description | | ----------- | ---- | --------------------- | | `checklist` | json | The created checklist | ### ClickUp Update Checklist [#clickup-update-checklist] Rename or reorder a checklist on a ClickUp task #### Input [#input-26] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------- | | `checklistId` | string | Yes | UUID of the checklist to update | | `name` | string | No | New name for the checklist | | `position` | number | No | New position of the checklist on the task (0 places it first) | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `id` | string | ID of the updated checklist | | `updated` | boolean | Whether the checklist was updated | ### ClickUp Delete Checklist [#clickup-delete-checklist] Delete a checklist from a ClickUp task #### Input [#input-27] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------- | | `checklistId` | string | Yes | UUID of the checklist to delete | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `id` | string | ID of the deleted checklist | | `deleted` | boolean | Whether the checklist was deleted | ### ClickUp Create Checklist Item [#clickup-create-checklist-item] Add an item to a checklist on a ClickUp task #### Input [#input-28] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------- | | `checklistId` | string | Yes | UUID of the checklist to add the item to | | `name` | string | Yes | Name of the checklist item | | `assignee` | number | No | User ID to assign the item to | #### Output [#output-28] | Parameter | Type | Description | | ----------- | ---- | ----------------------------------------- | | `checklist` | json | The updated checklist including its items | ### ClickUp Update Checklist Item [#clickup-update-checklist-item] Update a checklist item on a ClickUp task — rename, assign, resolve, or nest it #### Input [#input-29] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------ | | `checklistId` | string | Yes | UUID of the checklist containing the item | | `checklistItemId` | string | Yes | UUID of the checklist item to update | | `name` | string | No | New name for the checklist item | | `assignee` | number | No | User ID to assign the item to | | `resolved` | boolean | No | Whether the item is resolved | | `parent` | string | No | UUID of another checklist item to nest this item under | #### Output [#output-29] | Parameter | Type | Description | | ----------- | ---- | ----------------------------------------- | | `checklist` | json | The updated checklist including its items | ### ClickUp Delete Checklist Item [#clickup-delete-checklist-item] Delete an item from a checklist on a ClickUp task #### Input [#input-30] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------- | | `checklistId` | string | Yes | UUID of the checklist containing the item | | `checklistItemId` | string | Yes | UUID of the checklist item to delete | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `id` | string | ID of the deleted checklist item | | `deleted` | boolean | Whether the item was deleted | ### ClickUp Get Time Entries [#clickup-get-time-entries] List time entries in a ClickUp workspace within a date range (defaults to the last 30 days for the authenticated user) #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) to list time entries from | | `startDate` | number | No | Start of the date range as a Unix timestamp in milliseconds | | `endDate` | number | No | End of the date range as a Unix timestamp in milliseconds | | `assignee` | string | No | Filter by user IDs, comma-separated (requires workspace owner/admin to view others) | | `taskId` | string | No | Only entries for this task (use at most one location filter) | | `listId` | string | No | Only entries in this list (use at most one location filter) | | `folderId` | string | No | Only entries in this folder (use at most one location filter) | | `spaceId` | string | No | Only entries in this space (use at most one location filter) | | `includeTaskTags` | boolean | No | Include task tags in the response | | `includeLocationNames` | boolean | No | Include list, folder, and space names in the response | #### Output [#output-31] | Parameter | Type | Description | | ------------- | ----- | ------------------------------ | | `timeEntries` | array | Time entries in the date range | ### ClickUp Create Time Entry [#clickup-create-time-entry] Create a manual time entry in a ClickUp workspace, optionally linked to a task #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) to create the entry in | | `start` | number | Yes | Start of the entry as a Unix timestamp in milliseconds | | `duration` | number | Yes | Duration of the entry in milliseconds | | `description` | string | No | Description of the time entry | | `billable` | boolean | No | Whether the entry is billable | | `taskId` | string | No | Task ID to associate the entry with | | `assignee` | number | No | User ID to create the entry for (workspace owners/admins only) | #### Output [#output-32] | Parameter | Type | Description | | ----------- | ---- | ---------------------- | | `timeEntry` | json | The created time entry | ### ClickUp Update Time Entry [#clickup-update-time-entry] Update a time entry in a ClickUp workspace — description, start/end times, task, or billable state #### Input [#input-33] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) the entry belongs to | | `timerId` | string | Yes | ID of the time entry to update | | `description` | string | No | New description for the entry | | `start` | number | No | New start (Unix ms); when provided, end must also be provided | | `end` | number | No | New end (Unix ms); when provided, start must also be provided | | `duration` | number | No | New duration in milliseconds | | `taskId` | string | No | Task ID to associate the entry with | | `billable` | boolean | No | Whether the entry is billable | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `id` | string | ID of the updated time entry | | `updated` | boolean | Whether the entry was updated | ### ClickUp Delete Time Entry [#clickup-delete-time-entry] Delete a time entry from a ClickUp workspace #### Input [#input-34] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) the entry belongs to | | `timerId` | string | Yes | ID of the time entry to delete | #### Output [#output-34] | Parameter | Type | Description | | ----------- | ---- | ---------------------- | | `timeEntry` | json | The deleted time entry | ### ClickUp Start Timer [#clickup-start-timer] Start a timer for the authenticated user in a ClickUp workspace #### Input [#input-35] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------ | | `workspaceId` | string | Yes | ID of the workspace (team) to start the timer in | | `taskId` | string | No | Task ID to associate the timer with | | `description` | string | No | Description of the time entry | | `billable` | boolean | No | Whether the entry is billable | | `tags` | array | No | Time entry tag names to apply | #### Output [#output-35] | Parameter | Type | Description | | ----------- | ---- | ----------------------------------------------------------- | | `timeEntry` | json | The started time entry (duration is negative while running) | ### ClickUp Stop Timer [#clickup-stop-timer] Stop the authenticated user's currently running timer in a ClickUp workspace #### Input [#input-36] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) the timer is running in | #### Output [#output-36] | Parameter | Type | Description | | ----------- | ---- | ---------------------- | | `timeEntry` | json | The stopped time entry | ### ClickUp Get Running Timer [#clickup-get-running-timer] Get the currently running time entry in a ClickUp workspace (null when no timer is running) #### Input [#input-37] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (team) to check | | `assignee` | number | No | User ID to check instead of the authenticated user (owners/admins only) | #### Output [#output-37] | Parameter | Type | Description | | ----------- | ---- | ------------------------------------------------------------------------------------------ | | `timeEntry` | json | The running time entry (duration is negative while running); null when no timer is running | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### ClickUp Folder Created [#clickup-folder-created] Trigger workflow when a folder is created in ClickUp #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-38] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `folderId` | string | ID of the affected folder | *** ### ClickUp Folder Deleted [#clickup-folder-deleted] Trigger workflow when a folder is deleted in ClickUp #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `folderId` | string | ID of the affected folder | *** ### ClickUp Folder Updated [#clickup-folder-updated] Trigger workflow when a folder is updated in ClickUp #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-40] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `folderId` | string | ID of the affected folder | *** ### ClickUp Goal Created [#clickup-goal-created] Trigger workflow when a goal is created in ClickUp #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-41] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp Goal Deleted [#clickup-goal-deleted] Trigger workflow when a goal is deleted in ClickUp #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-42] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp Goal Updated [#clickup-goal-updated] Trigger workflow when a goal is updated in ClickUp #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-43] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp Key Result Created [#clickup-key-result-created] Trigger workflow when a key result is created in ClickUp #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-44] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp Key Result Deleted [#clickup-key-result-deleted] Trigger workflow when a key result is deleted in ClickUp #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-45] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp Key Result Updated [#clickup-key-result-updated] Trigger workflow when a key result is updated in ClickUp #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-46] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | *** ### ClickUp List Created [#clickup-list-created] Trigger workflow when a list is created in ClickUp #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-47] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `listId` | string | ID of the affected list | *** ### ClickUp List Deleted [#clickup-list-deleted] Trigger workflow when a list is deleted in ClickUp #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-48] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `listId` | string | ID of the affected list | *** ### ClickUp List Updated [#clickup-list-updated] Trigger workflow when a list is updated in ClickUp #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-49] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `listId` | string | ID of the affected list | *** ### ClickUp Space Created [#clickup-space-created] Trigger workflow when a space is created in ClickUp #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-50] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `spaceId` | string | ID of the affected space | *** ### ClickUp Space Deleted [#clickup-space-deleted] Trigger workflow when a space is deleted in ClickUp #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-51] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `spaceId` | string | ID of the affected space | *** ### ClickUp Space Updated [#clickup-space-updated] Trigger workflow when a space is updated in ClickUp #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-52] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `spaceId` | string | ID of the affected space | *** ### ClickUp Task Assignee Updated [#clickup-task-assignee-updated] Trigger workflow when the assignees of a task change in ClickUp #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-53] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Comment Posted [#clickup-task-comment-posted] Trigger workflow when a comment is posted on a task in ClickUp #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-54] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Comment Updated [#clickup-task-comment-updated] Trigger workflow when a task comment is updated in ClickUp #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-55] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Created [#clickup-task-created] Trigger workflow when a task is created in ClickUp #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-56] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Deleted [#clickup-task-deleted] Trigger workflow when a task is deleted in ClickUp #### Configuration [#configuration-19] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-57] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Due Date Updated [#clickup-task-due-date-updated] Trigger workflow when the due date of a task changes in ClickUp #### Configuration [#configuration-20] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-58] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Moved [#clickup-task-moved] Trigger workflow when a task is moved to a different list in ClickUp #### Configuration [#configuration-21] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-59] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Priority Updated [#clickup-task-priority-updated] Trigger workflow when the priority of a task changes in ClickUp #### Configuration [#configuration-22] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-60] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Status Updated [#clickup-task-status-updated] Trigger workflow when the status of a task changes in ClickUp #### Configuration [#configuration-23] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-61] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Tag Updated [#clickup-task-tag-updated] Trigger workflow when the tags of a task change in ClickUp #### Configuration [#configuration-24] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-62] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Time Estimate Updated [#clickup-task-time-estimate-updated] Trigger workflow when the time estimate of a task changes in ClickUp #### Configuration [#configuration-25] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-63] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Time Tracked Updated [#clickup-task-time-tracked-updated] Trigger workflow when the tracked time of a task changes in ClickUp #### Configuration [#configuration-26] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-64] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Task Updated [#clickup-task-updated] Trigger workflow when a task is updated in ClickUp #### Configuration [#configuration-27] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-65] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task | *** ### ClickUp Webhook [#clickup-webhook] Trigger workflow on any ClickUp event (subscribes to all events) #### Configuration [#configuration-28] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | ClickUp Account | | `triggerWorkspaceId` | string | Yes | The ClickUp Workspace the webhook is registered in | | `triggerSpaceId` | string | No | Only receive events from this space. ClickUp applies the most specific location when several are set | | `triggerFolderId` | string | No | Only receive events from this folder. ClickUp applies the most specific location when several are set | | `triggerListId` | string | No | Only receive events from this list. ClickUp applies the most specific location when several are set | | `triggerTaskId` | string | No | Only receive events for this task. ClickUp applies the most specific location when several are set | #### Output [#output-66] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------- | | `eventType` | string | The ClickUp event name (e.g. taskCreated) | | `historyItems` | json | History items describing what changed (id, type, date, source, user, before, after) | | `payload` | json | Full raw ClickUp webhook payload | | `taskId` | string | ID of the affected task (task events only) | | `listId` | string | ID of the affected list (list events only) | | `folderId` | string | ID of the affected folder (folder events only) | | `spaceId` | string | ID of the affected space (space events only) | --- # Cloudflare (/integrations/cloudflare) {/* MANUAL-CONTENT-START:intro */} Use [Cloudflare](https://cloudflare.com/) in Agent Serve to manage zones, DNS records, cache, zone settings, WAF rules, rate limits, and Cloudflare Access. The actions also list SSL/TLS certificates and inspect R2 buckets, Workers, and Tunnels. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Cloudflare into the workflow. Manage Cloudflare DNS, zones, SSL, cache, and analytics. Configure WAF rulesets and rate limiting; administer Access applications, policies, groups, and service tokens; manage Worker routes and tunnels; and configure R2 buckets, CORS, and lifecycle rules. ## Actions [#actions] ### Cloudflare Create Access Application [#cloudflare-create-access-application] Creates a Cloudflare Access (Zero Trust) application that puts an identity check in front of a hostname. Until at least one policy is attached the application denies everyone, so pair this with "Create Access Policy". Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `destinations` | json | No | JSON array. List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. Fields: overrides, type, uri, cidr, hostname, l4\_protocol, port\_range, vnet\_id, mcp\_server\_id, worker\_id. | | `oauth_configuration` | json | No | JSON object. Required for end\_user applications. **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. When set, Access will act as the OAuth authorization server for this application. Only compatible with OAuth clients that support \[RFC 8707]\([https://datatracker.ietf.org/doc/html/rfc8707](https://datatracker.ietf.org/doc/html/rfc8707)) (Resource Indicators for OAuth 2.0). This feature is currently in beta. Fields: dynamic\_client\_registration, enabled, grant. | | `self_hosted_domains` | json | No | JSON array. List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | `user_populations` | json | No | JSON array. Required for end\_user applications. The single user population associated with this application. | | `allow_authenticate_via_warp` | boolean | No | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | `allow_iframe` | boolean | No | Enables loading application content in an iFrame. | | `cors_headers` | json | No | JSON object. cors headers Fields: allow\_all\_headers, allow\_all\_methods, allow\_all\_origins, allow\_credentials, allowed\_headers, allowed\_methods, allowed\_origins, max\_age. | | `custom_non_identity_deny_url` | string | No | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | `custom_pages` | json | No | JSON array. The custom pages that will be displayed when applicable for this application | | `eager_redirect_cookie_setting` | boolean | No | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | `enable_binding_cookie` | boolean | No | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | `http_only_cookie_attribute` | boolean | No | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | `mfa_config` | json | No | JSON object. Configures multi-factor authentication (MFA) settings. Fields: allowed\_authenticators, mfa\_disabled, session\_duration. | | `options_preflight_bypass` | boolean | No | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | `path_cookie_attribute` | boolean | No | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | `read_service_tokens_from_header` | string | No | Allows matching Access Service Tokens passed HTTP in a single header with this name. This works as an alternative to the (CF-Access-Client-Id, CF-Access-Client-Secret) pair of headers. The header value will be interpreted as a json object similar to: \{ "cf-access-client-id": "\", "cf-access-client-secret": "\" } | | `same_site_cookie_attribute` | string | No | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | `scim_config` | json | No | JSON object. Configuration for provisioning to this application via SCIM. This is currently in closed beta. Fields: authentication, deactivate\_on\_delete, enabled, idp\_uid, mappings, remote\_uri. | | `service_auth_401_redirect` | boolean | No | Returns a 401 status code when the request is blocked by a Service Auth policy. | | `skip_interstitial` | boolean | No | Enables automatic authentication through cloudflared. | | `use_clientless_isolation_app_launcher_url` | boolean | No | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | `app_launcher_logo_url` | string | No | The image URL of the logo shown in the App Launcher header. | | `bg_color` | string | No | The background color of the App Launcher page. | | `footer_links` | json | No | JSON array. The links in the App Launcher footer. Fields: name, url. | | `header_bg_color` | string | No | The background color of the App Launcher header. | | `landing_page_design` | json | No | JSON object. The design of the App Launcher landing page shown to users when they log in. Fields: button\_color, button\_text\_color, image\_url, message, title. | | `skip_app_launcher_login_page` | boolean | No | Determines when to skip the App Launcher landing page. | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `type` | string | Yes | Application type: self\_hosted, end\_user, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, infrastructure, rdp, mcp, mcp\_portal, or proxy\_endpoint. dash\_sso has no request variant and cannot be created through the API | | `domain` | string | No | The primary hostname and path secured by Access, e.g. internal.example.com or example.com/admin. Required for the self\_hosted, ssh, vnc, and rdp types; optional for bookmark and mcp\_portal; read-only for app\_launcher, warp, biso, and proxy\_endpoint; and absent from the saas, infrastructure, and mcp variants | | `name` | string | No | Friendly name shown in the dashboard and App Launcher | | `sessionDuration` | string | No | How long an Access session stays valid, e.g. 24h or 30m | | `allowedIdps` | string | No | Comma-separated identity provider IDs users may authenticate with. Leave empty to allow all configured providers | | `appLauncherVisible` | boolean | No | Whether the application is shown in the App Launcher | | `autoRedirectToIdentity` | boolean | No | Whether users skip the identity provider picker | | `customDenyMessage` | string | No | Message shown to users who are denied access | | `customDenyUrl` | string | No | URL denied users are redirected to | | `logoUrl` | string | No | Logo image URL shown in the dashboard and App Launcher | | `tags` | string | No | Comma-separated tag names categorizing the application | | `policies` | string | No | JSON array of policies to attach. Entries may be reusable policy IDs or inline policy objects, e.g. \["\"] | | `saasApp` | string | No | JSON SaaS configuration, required for the saas type and rejected on every other type. SAML, e.g. \{ "auth\_type": "saml", "consumer\_service\_url": "[https://example.com/acs](https://example.com/acs)", "sp\_entity\_id": "[https://example.com](https://example.com)" }; OIDC, e.g. \{ "auth\_type": "oidc", "client\_id": "...", "redirect\_uris": \[ "[https://example.com/callback](https://example.com/callback)" ] } | | `targetCriteria` | string | No | JSON array of infrastructure target criteria, required for the infrastructure and rdp types and rejected on every other type, e.g. \[\{"port":22,"protocol":"SSH","target\_attributes":\{"hostname":\["production"]}}] | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output] | Parameter | Type | Description | | --------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `aud` | string | Audience tag. | | `created_at` | string | created at | | `id` | string | UUID. | | `updated_at` | string | updated at | | `allowed_idps` | array | The identity providers your users can select when connecting to this application. Defaults to all IdPs configured in your account. | | `destinations` | array | List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. | | ↳ `overrides` | array | Rules that override how Access handles requests to this destination. Each rule can make a matching path public, bypassing Access authentication. Overrides are supported for public destinations and Worker destinations. | | ↳ `behavior` | string | The behavior to apply to matching requests. Values: public. | | ↳ `path_pattern` | string | The request path pattern to match. Wildcards (`*`) are supported, but each path segment may have at most one wildcard. Unlike the `uri` in public destinations, override path patterns do not implicitly cover subpaths; to do that, use a wildcard. | | ↳ `type` | string | type Values: public, private, via\_mcp\_server\_portal, worker, preview\_worker, all\_workers, all\_preview\_workers. | | ↳ `uri` | string | The URI of the destination. Public destinations' URIs can include a domain and path with \[wildcards]\([https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)). | | ↳ `cidr` | string | The CIDR range of the destination. Single IPs will be computed as /32. | | ↳ `hostname` | string | The hostname of the destination. Matches a valid SNI served by an HTTPS origin. | | ↳ `l4_protocol` | string | The L4 protocol of the destination. When omitted, both UDP and TCP traffic will match. Values: tcp, udp. | | ↳ `port_range` | string | The port range of the destination. Can be a single port or a range of ports. When omitted, all ports will match. | | ↳ `vnet_id` | string | The VNET ID to match the destination. When omitted, all VNETs will match. | | ↳ `mcp_server_id` | string | The MCP server id configured in ai-controls. | | ↳ `worker_id` | string | The ID of the Cloudflare Worker whose preview deployments to protect with Access. | | `domain` | string | The primary hostname and path secured by Access. This domain will be displayed if the app is visible in the App Launcher. | | `name` | string | The name of the application. | | `oauth_configuration` | json | **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. | | ↳ `dynamic_client_registration` | json | Settings for OAuth dynamic client registration. | | ↳ `allow_any_on_localhost` | boolean | Allows any client with redirect URIs on localhost. | | ↳ `allow_any_on_loopback` | boolean | Allows any client with redirect URIs on 127.0.0.1. | | ↳ `allowed_uris` | array | The URIs that are allowed as redirect URIs for dynamically registered clients. HTTP and HTTPS paths may end in `/*` to match all sub-paths. Custom-scheme URIs must be explicitly configured and match exactly. | | ↳ `enabled` | boolean | Whether dynamic client registration is enabled. | | ↳ `enabled` | boolean | Whether the OAuth configuration is enabled for this application. When set to `false`, Access will not handle OAuth for this application. Defaults to `true` if omitted. Values: True. | | ↳ `grant` | json | Settings for OAuth grant behavior. | | ↳ `access_token_lifetime` | string | The lifetime of the access token. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | ↳ `session_duration` | string | The duration of the OAuth session. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | `self_hosted_domains` | array | List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | `type` | string | The application type. Values: end\_user, self\_hosted, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, dash\_sso, infrastructure, rdp, mcp, mcp\_portal, proxy\_endpoint. | | `user_populations` | array | The single user population associated with this application. | | `allow_authenticate_via_warp` | boolean | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | `allow_iframe` | boolean | Enables loading application content in an iFrame. | | `app_launcher_visible` | boolean | Displays the application in the App Launcher. | | `auto_redirect_to_identity` | boolean | When set to `true`, users skip the identity provider selection step during login. You must specify only one identity provider in allowed\_idps. | | `cors_headers` | json | cors headers | | ↳ `allow_all_headers` | boolean | Allows all HTTP request headers. | | ↳ `allow_all_methods` | boolean | Allows all HTTP request methods. | | ↳ `allow_all_origins` | boolean | Allows all origins. | | ↳ `allow_credentials` | boolean | When set to `true`, includes credentials (cookies, authorization headers, or TLS client certificates) with requests. | | ↳ `allowed_headers` | array | Allowed HTTP request headers. | | ↳ `allowed_methods` | array | Allowed HTTP request methods. | | ↳ `allowed_origins` | array | Allowed origins. | | ↳ `max_age` | number | The maximum number of seconds the results of a preflight request can be cached. | | `custom_deny_message` | string | The custom error message shown to a user when they are denied access to the application. | | `custom_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing identity-based rules. | | `custom_non_identity_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | `custom_pages` | array | The custom pages that will be displayed when applicable for this application | | `eager_redirect_cookie_setting` | boolean | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | `enable_binding_cookie` | boolean | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | `http_only_cookie_attribute` | boolean | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | `logo_url` | string | The image URL for the logo shown in the App Launcher dashboard. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | `options_preflight_bypass` | boolean | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | `path_cookie_attribute` | boolean | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | `read_service_tokens_from_header` | string | Allows matching Access Service Tokens passed HTTP in a single header with this name. | | `same_site_cookie_attribute` | string | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | `scim_config` | json | Configuration for provisioning to this application via SCIM. This is currently in closed beta. | | ↳ `authentication` | json | Multiple authentication schemes | | ↳ `password` | string | Password used to authenticate with the remote SCIM service. | | ↳ `scheme` | string | The authentication scheme to use when making SCIM requests to this application. Values: httpbasic, oauthbearertoken, oauth2, access\_service\_token. | | ↳ `user` | string | User name used to authenticate with the remote SCIM service. | | ↳ `token` | string | Token used to authenticate with the remote SCIM service. | | ↳ `authorization_url` | string | URL used to generate the auth code used during token generation. | | ↳ `client_id` | string | Client ID of the Access service token used to authenticate with the remote service. | | ↳ `client_secret` | string | Client secret of the Access service token used to authenticate with the remote service. | | ↳ `scopes` | array | The authorization scopes to request when generating the token used to authenticate with the remove SCIM service. | | ↳ `token_url` | string | URL used to generate the token used to authenticate with the remote SCIM service. | | ↳ `deactivate_on_delete` | boolean | If false, propagates DELETE requests to the target application for SCIM resources. If true, sets 'active' to false on the SCIM resource. Note: Some targets do not support DELETE operations. | | ↳ `enabled` | boolean | Whether SCIM provisioning is turned on for this application. | | ↳ `idp_uid` | string | The UID of the IdP to use as the source for SCIM resources to provision to this application. | | ↳ `mappings` | array | A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned. | | ↳ `enabled` | boolean | Whether or not this mapping is enabled. | | ↳ `filter` | string | A \[SCIM filter expression]\([https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2)) that matches resources that should be provisioned to this application. | | ↳ `operations` | json | Whether or not this mapping applies to creates, updates, or deletes. | | ↳ `create` | boolean | Whether or not this mapping applies to create (POST) operations. | | ↳ `delete` | boolean | Whether or not this mapping applies to DELETE operations. | | ↳ `update` | boolean | Whether or not this mapping applies to update (PATCH/PUT) operations. | | ↳ `schema` | string | Which SCIM resource type this mapping applies to. | | ↳ `strictness` | string | The level of adherence to outbound resource schemas when provisioning to this mapping. ‘Strict’ removes unknown values, while ‘passthrough’ passes unknown values to the target. Values: strict, passthrough. | | ↳ `transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms the resource before provisioning it in the application. | | ↳ `remote_uri` | string | The base URI for the application's SCIM-compatible API. | | `service_auth_401_redirect` | boolean | Returns a 401 status code when the request is blocked by a Service Auth policy. | | `session_duration` | string | The amount of time that tokens issued for this application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `skip_interstitial` | boolean | Enables automatic authentication through cloudflared. | | `tags` | array | The tags you want assigned to an application. Tags are used to filter applications in the App Launcher dashboard. | | `use_clientless_isolation_app_launcher_url` | boolean | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | `policies` | array | policies | | ↳ `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | ↳ `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | ↳ `connection_rules` | json | The rules that define how users may connect to targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | ↳ `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | ↳ `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | ↳ `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `created_at` | string | created at | | ↳ `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | The UUID of the policy | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access policy. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | ↳ `account_id` | string | Identifier. | | ↳ `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | | `saas_app` | json | saas app | | ↳ `auth_type` | string | Identifier of the authentication protocol used for the saas app. Required for OIDC. Values: saml, oidc. | | ↳ `consumer_service_url` | string | The service provider's endpoint that is responsible for receiving and parsing a SAML assertion. | | ↳ `created_at` | string | created at | | ↳ `custom_attributes` | array | custom attributes | | ↳ `friendly_name` | string | The SAML FriendlyName of the attribute. | | ↳ `name` | string | The name of the attribute. | | ↳ `name_format` | string | A globally unique name for an identity or service provider. Values: urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified, urn:oasis:names:tc:SAML:2.0:attrname-format:basic, urn:oasis:names:tc:SAML:2.0:attrname-format:uri. | | ↳ `required` | boolean | If the attribute is required when building a SAML assertion. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP attribute. | | ↳ `name_by_idp` | array | A mapping from IdP ID to attribute name. | | ↳ `idp_id` | string | The UID of the IdP. | | ↳ `source_name` | string | The name of the IdP provided attribute. | | ↳ `default_relay_state` | string | The URL that the user will be redirected to after a successful login for IDP initiated logins. | | ↳ `idp_entity_id` | string | The unique identifier for your SaaS application. | | ↳ `name_id_format` | string | The format of the name identifier sent to the SaaS application. Values: id, email. | | ↳ `name_id_transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into a NameID value for its SAML assertion. This expression should evaluate to a singular string. The output of this expression can override the `name_id_format` setting. | | ↳ `public_key` | string | The Access public certificate that will be used to verify your identity. | | ↳ `saml_attribute_transform_jsonata` | string | A \[JSONata] ([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into attribute assertions in the SAML response. | | ↳ `sp_entity_id` | string | A globally unique name for an identity or service provider. | | ↳ `sso_endpoint` | string | The endpoint where your SaaS application will send login requests. | | ↳ `updated_at` | string | updated at | | ↳ `access_token_lifetime` | string | The lifetime of the OIDC Access Token after creation. Valid units are m,h. Must be greater than or equal to 1m and less than or equal to 24h. | | ↳ `allow_pkce_without_client_secret` | boolean | If client secret should be required on the token endpoint when authorization\_code\_with\_pkce grant is used. | | ↳ `app_launcher_url` | string | The URL where this applications tile redirects users | | ↳ `client_id` | string | The application client id | | ↳ `client_secret` | string | The application client secret, only returned on POST request. | | ↳ `custom_claims` | array | custom claims | | ↳ `name` | string | The name of the claim. | | ↳ `required` | boolean | If the claim is required when building an OIDC token. | | ↳ `scope` | string | The scope of the claim. Values: groups, profile, email, openid. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP claim. | | ↳ `name_by_idp` | json | A mapping from IdP ID to claim name. | | ↳ `grant_types` | array | The OIDC flows supported by this application | | ↳ `group_filter_regex` | string | A regex to filter Cloudflare groups returned in ID token and userinfo endpoint | | ↳ `hybrid_and_implicit_options` | json | hybrid and implicit options | | ↳ `return_access_token_from_authorization_endpoint` | boolean | If an Access Token should be returned from the OIDC Authorization endpoint | | ↳ `return_id_token_from_authorization_endpoint` | boolean | If an ID Token should be returned from the OIDC Authorization endpoint | | ↳ `redirect_uris` | array | The permitted URL's for Cloudflare to return Authorization codes and Access/ID tokens | | ↳ `refresh_token_options` | json | refresh token options | | ↳ `lifetime` | string | How long a refresh token will be valid for after creation. Valid units are m,h,d. Must be longer than 1m. | | ↳ `scopes` | array | Define the user information shared with access, "offline\_access" scope will be automatically enabled if refresh tokens are enabled | | `app_launcher_logo_url` | string | The image URL of the logo shown in the App Launcher header. | | `bg_color` | string | The background color of the App Launcher page. | | `footer_links` | array | The links in the App Launcher footer. | | ↳ `name` | string | The hypertext in the footer link. | | ↳ `url` | string | the hyperlink in the footer link. | | `header_bg_color` | string | The background color of the App Launcher header. | | `landing_page_design` | json | The design of the App Launcher landing page shown to users when they log in. | | ↳ `button_color` | string | The background color of the log in button on the landing page. | | ↳ `button_text_color` | string | The color of the text in the log in button on the landing page. | | ↳ `image_url` | string | The URL of the image shown on the landing page. | | ↳ `message` | string | The message shown on the landing page. | | ↳ `title` | string | The title shown on the landing page. | | `skip_app_launcher_login_page` | boolean | Determines when to skip the App Launcher landing page. | | `target_criteria` | array | target criteria | | ↳ `exclude` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `include` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `port` | number | The port that the targets use for the chosen communication protocol. A port cannot be assigned to multiple protocols. | | ↳ `require` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `target_attributes` | json | Contains a map of target attribute keys to target attribute values. | | ↳ `protocol` | string | The communication protocol your application secures. Values: RDP. | ### Cloudflare Create Access Group [#cloudflare-create-access-group] Creates a new Access group. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `apiKey` | string | Yes | Cloudflare API token | | `exclude` | json | No | JSON array. Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | | `include` | json | Yes | JSON array. Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | | `is_default` | boolean | No | Whether this is the default group | | `name` | string | Yes | The name of the Access group. | | `require` | json | No | JSON array. Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `created_at` | string | created at | | `exclude` | array | Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | UUID. | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `is_default` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access group. | | `require` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | ### Cloudflare Create Access Policy [#cloudflare-create-access-policy] Creates a Cloudflare Access (Zero Trust) policy on an application, deciding who may reach it. A policy takes effect on live traffic as soon as it is created — an allow policy with a broad include rule grants access immediately. Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `approval_groups` | json | No | JSON array. Administrators who can approve a temporary authentication request. Fields: approvals\_needed, email\_addresses, email\_list\_uuid. | | `connection_rules` | json | No | JSON object. The rules that define how users may connect to the targets secured by your application. Fields: rdp, ssh. | | `mfa_config` | json | No | JSON object. Configures multi-factor authentication (MFA) settings for infrastructure applications. Fields: allowed\_authenticators, mfa\_disabled, session\_duration. | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID to attach the policy to | | `name` | string | Yes | Name of the policy | | `decision` | string | Yes | What the policy does when it matches: allow, deny, non\_identity (service tokens and other non-identity rules), or bypass (skip Access entirely) | | `include` | string | Yes | JSON array of Access rules evaluated with OR logic — matching any one selects the policy. Example: \[\{"email":\{"email":"[user@example.com](mailto:user@example.com)"}}] or \[\{"email\_domain":\{"domain":"example.com"}}] | | `exclude` | string | No | JSON array of Access rules evaluated with NOT logic — matching any one rejects the request | | `require` | string | No | JSON array of Access rules evaluated with AND logic — all of them must match | | `precedence` | number | No | Evaluation order of the policy within the application | | `sessionDuration` | string | No | How long a session granted by this policy stays valid, e.g. 24h. Leave it unset on a policy attached to an infrastructure-typed application — Cloudflare rejects those with error 12130 | | `approvalRequired` | boolean | No | Whether an approver must grant each access request | | `isolationRequired` | boolean | No | Whether the session must run in a remote isolated browser | | `purposeJustificationRequired` | boolean | No | Whether users must state a reason for access | | `purposeJustificationPrompt` | string | No | Prompt shown when a justification is required | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-2] | Parameter | Type | Description | | --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | `connection_rules` | json | The rules that define how users may connect to the targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `ssh` | json | The SSH-specific rules that define how users may connect to the targets secured by your application. | | ↳ `allow_email_alias` | boolean | Enables using Identity Provider email alias as SSH username. | | ↳ `usernames` | array | Contains the Unix usernames that may be used when connecting over SSH. | | `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings for infrastructure applications. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. For infrastructure applications, supported values are `piv_key` and `ssh_fido2_key`. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples: `5m` or `24h`. | | `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `created_at` | string | created at | | `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | The UUID of the policy | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access policy. | | `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | | `account_id` | string | Identifier. | | `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | ### Cloudflare Create Access Service Token [#cloudflare-create-access-service-token] Creates a Cloudflare Access (Zero Trust) service token so a machine can authenticate to Access-protected applications. This is the only response that ever contains the client secret — Cloudflare will not return it again, so capture it in the same run. Requires an API token with Account Access: Service Tokens Edit. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `client_secret_version` | number | No | A version number identifying the current `client_secret` associated with the service token. Incrementing it triggers a rotation; the previous secret will still be accepted until the time indicated by `previous_client_secret_expires_at`. If the service token was reported as leaked, `previous_client_secret_expires_at` is not required, may not be in the future, and the previous secret is discarded immediately. | | `enabled` | boolean | No | Whether the service token is enabled. A disabled service token cannot be used to authenticate; both its current and previous `client_secret` stop being accepted, but the token itself is preserved and can be re-enabled. A service token reported as leaked is disabled automatically and cannot be re-enabled until its secret is rotated; attempting to do so returns a 409. Defaults to enabled when omitted on create. | | `previous_client_secret_expires_at` | string | No | The expiration of the previous `client_secret`. This can be modified at any point after a rotation. For example, you may extend it further into the future if you need more time to update services with the new secret; or move it into the past to immediately invalidate the previous token in case of compromise. Rotating a service token that was reported as leaked discards the previous secret entirely, so no grace period can be set. | | `accountId` | string | Yes | The Cloudflare account ID. Service tokens are account-scoped | | `name` | string | Yes | Name of the service token | | `duration` | string | No | How long the token stays valid before it expires, e.g. 8760h. Defaults to Cloudflare's standard lifetime | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `client_secret` | string | The Client Secret for the service token. Access will check for this value in the `CF-Access-Client-Secret` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `id` | string | The ID of the service token. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | | `expires_at` | string | Service token expires at when returned by Cloudflare; retained for existing workflows | | `last_seen_at` | string | Service token last seen at when returned by Cloudflare; retained for existing workflows | ### Cloudflare Create DNS Record [#cloudflare-create-dns-record] Creates a new DNS record for a zone. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `settings` | json | No | JSON object. Settings for the DNS record. Fields: ipv4\_only, ipv6\_only, flatten\_cname. | | `private_routing` | boolean | No | Enables private network routing to the origin. | | `data` | json | No | JSON object. Structured record data. The available fields depend on the DNS record type. Fields: flags, tag, value, algorithm, certificate, key\_tag, type, protocol, public\_key, digest, digest\_type, priority, target, altitude, lat\_degrees, lat\_direction, lat\_minutes, lat\_seconds, long\_degrees, long\_direction, long\_minutes, long\_seconds, precision\_horz, precision\_vert, size, order, preference, regex, replacement, service, matching\_type, selector, usage, port, weight, fingerprint. | | `include_shadow_metadata` | boolean | No | Whether to include shadow metadata in the `meta` field of each record in the response. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `zoneId` | string | Yes | The zone ID to create the DNS record in | | `type` | string | Yes | DNS record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT", "NS", "SRV") | | `name` | string | Yes | DNS record name (e.g., "example.com" or "subdomain.example.com") | | `content` | string | No | DNS record content (e.g., IP address for A records, target for CNAME) | | `ttl` | number | No | Time to live in seconds (1 = automatic, default: 1) | | `proxied` | boolean | No | Whether to enable Cloudflare proxy (default: false) | | `priority` | number | No | Record priority. Cloudflare accepts this top-level field for MX and URI records only; use the data object for structured records such as SRV (priority, weight, port, target) | | `comment` | string | No | Comment for the DNS record | | `tags` | string | No | Comma-separated tags for the DNS record | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-4] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `comment` | string | Comments or notes about the DNS record. This field has no effect on DNS responses. | | `name` | string | Complete DNS record name, including the zone name, in Punycode. | | `proxied` | boolean | Whether the record is receiving the performance and security benefits of Cloudflare. | | `settings` | json | Settings for the DNS record. | | ↳ `ipv4_only` | boolean | When enabled, only A records will be generated, and AAAA records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `ipv6_only` | boolean | When enabled, only AAAA records will be generated, and A records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `flatten_cname` | boolean | If enabled, causes the CNAME record to be resolved externally and the resulting address records (e.g., A and AAAA) to be returned instead of the CNAME record itself. This setting is unavailable for proxied records, since they are always flattened. | | `tags` | array | Custom tags for the DNS record. This field has no effect on DNS responses. | | `ttl` | number | Time To Live (TTL) of the DNS record in seconds. Setting to 1 means 'automatic'. Value must be between 60 and 86400, with the minimum reduced to 30 for Enterprise zones. Values: 1. | | `content` | string | Formatted URI content. See 'data' to set URI properties. | | `private_routing` | boolean | Enables private network routing to the origin. | | `type` | string | Record type. Values: A, AAAA, CNAME, MX, NS, OPENPGPKEY, PTR, TXT, CAA, CERT, DNSKEY, DS, HTTPS, LOC, NAPTR, SMIMEA, SRV, SSHFP, SVCB, TLSA, URI. | | `priority` | number | Required for MX and URI records; ignored for other record types (but may still be returned by the API). Records with lower priorities are preferred. This field is to be deprecated in favor of the priority field within the data map. | | `data` | json | Structured record data. The available fields depend on the DNS record type. | | ↳ `flags` | json | Flags. | | ↳ `tag` | string | Name of the property controlled by this record (e.g.: issue, issuewild, iodef). | | ↳ `value` | string | Value. | | ↳ `algorithm` | number | Algorithm. | | ↳ `certificate` | string | Certificate. | | ↳ `key_tag` | number | Key Tag. | | ↳ `type` | number | Type. | | ↳ `protocol` | number | Protocol. | | ↳ `public_key` | string | Public Key. | | ↳ `digest` | string | Digest. | | ↳ `digest_type` | number | Digest Type. | | ↳ `priority` | number | Priority. | | ↳ `target` | string | The record content. | | ↳ `altitude` | number | Altitude of location in meters. | | ↳ `lat_degrees` | number | Degrees of latitude. | | ↳ `lat_direction` | string | Latitude direction. Values: N, S. | | ↳ `lat_minutes` | number | Minutes of latitude. | | ↳ `lat_seconds` | number | Seconds of latitude. | | ↳ `long_degrees` | number | Degrees of longitude. | | ↳ `long_direction` | string | Longitude direction. Values: E, W. | | ↳ `long_minutes` | number | Minutes of longitude. | | ↳ `long_seconds` | number | Seconds of longitude. | | ↳ `precision_horz` | number | Horizontal precision of location. | | ↳ `precision_vert` | number | Vertical precision of location. | | ↳ `size` | number | Size of location in meters. | | ↳ `order` | number | Order. | | ↳ `preference` | number | Preference. | | ↳ `regex` | string | Regex. | | ↳ `replacement` | string | Replacement. | | ↳ `service` | string | Service. | | ↳ `matching_type` | number | Matching Type. | | ↳ `selector` | number | Selector. | | ↳ `usage` | number | Usage. | | ↳ `port` | number | The port of the service. | | ↳ `weight` | number | The record weight. | | ↳ `fingerprint` | string | Fingerprint. | | `comment_modified_on` | string | When the record comment was last modified. Omitted if there is no comment. | | `created_on` | string | When the record was created. | | `id` | string | Identifier. | | `meta` | json | Extra Cloudflare-specific metadata about the record. | | ↳ `dead_glue` | boolean | Whether this glue record is not served because a shallower NS delegation takes precedence over the deeper delegation that needs it. | | ↳ `is_glue` | boolean | Whether this A or AAAA record is glue for a subdomain NS delegation. See \[Glue records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records)). | | ↳ `shadowed_by` | array | IDs of the NS records that shadow this record. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | ↳ `shadowed_records_count` | number | Number of records shadowed by this NS delegation. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `modified_on` | string | When the record was last modified. | | `proxiable` | boolean | Whether the record can be proxied by Cloudflare or not. | | `tags_modified_on` | string | When the record tags were last modified. Omitted if there are no tags. | | `zone_id` | string | Legacy DNS response zone ID when returned by Cloudflare | | `zone_name` | string | Legacy DNS response zone name when returned by Cloudflare | | `locked` | boolean | Legacy DNS response lock flag when returned by Cloudflare | ### Cloudflare Create R2 Bucket [#cloudflare-create-r2-bucket] Creates an R2 object storage bucket in an account. The location hint and jurisdiction are fixed at creation and cannot be changed later. Requires an API token with Account Workers R2 Storage Edit. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. R2 buckets are account-scoped | | `bucketName` | string | Yes | Name for the new bucket | | `locationHint` | string | No | Region hint for where the bucket should live: apac, eeur, enam, weur, wnam, or oc. Cannot be changed after creation | | `storageClass` | string | No | Default storage class for objects: Standard or InfrequentAccess | | `jurisdiction` | string | No | Data-residency jurisdiction to create the bucket in: default, eu, or fedramp. Cannot be changed after creation | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | | `creation_date` | string | Creation timestamp. | | `jurisdiction` | string | Jurisdiction where objects in this bucket are guaranteed to be stored. Values: default, eu, us, fedramp, fedramp-high. | | `location` | string | Location of the bucket. Values: apac, eeur, enam, weur, wnam, oc. | | `name` | string | Name of the bucket. | | `storage_class` | string | Storage class for newly uploaded objects, unless specified otherwise. Values: Standard, InfrequentAccess. | ### Cloudflare Create Rate Limiting Rule [#cloudflare-create-rate-limiting-rule] Creates a rate limiting rule in the http\_ratelimit phase entry point ruleset of a zone, using the current Rulesets-based rate limiting API (the legacy rate\_limits endpoint is no longer available). Run "List Rate Limiting Rules" first to get the ruleset ID. Requires an API token with Zone WAF Edit. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `actionParameters` | json | No | JSON object. The parameters configuring the rule's action. Fields: response, algorithms, id, matched\_data, overrides, cookie\_fields, raw\_response\_fields, request\_fields, response\_fields, transformed\_request\_fields, from\_list, from\_value, headers, uri, host\_header, origin, sni, increment, content\_type, status\_code, content, asset\_name, immutable, max-age, must-revalidate, must-understand, no-cache, no-store, no-transform, private, proxy-revalidate, public, s-maxage, stale-if-error, stale-while-revalidate, additional\_cacheable\_ports, browser\_ttl, cache, cache\_key, cache\_reserve, edge\_ttl, origin\_cache\_control, origin\_error\_page\_passthru, origin\_range\_requests, read\_timeout, respect\_strong\_etags, serve\_stale, shared\_dictionary, strip\_etags, strip\_last\_modified, strip\_set\_cookie, vary, operation, values, expression, automatic\_https\_rewrites, autominify, bic, content\_converter, disable\_apps, disable\_pay\_per\_crawl, disable\_rum, disable\_zaraz, email\_obfuscation, fonts, hotlink\_protection, mirage, opportunistic\_encryption, polish, redirects\_for\_ai\_training, request\_body\_buffering, response\_body\_buffering, rocket\_loader, security\_level, server\_side\_excludes, ssl, sxg, webmcp\_enabled, webmcp\_packs, phase, phases, products, rules, ruleset, rulesets, link\_maze. | | `exposed_credential_check` | json | No | JSON object. Configuration for exposed credential checking. Fields: password\_expression, username\_expression. | | `id` | string | No | The unique ID of the rule. | | `logging` | json | No | JSON object. An object configuring the rule's logging behavior. Fields: enabled. | | `ref` | string | No | The reference of the rule (the rule's ID by default). | | `position` | json | No | JSON object. An object configuring where the rule will be placed. Fields: before, after, index. | | `score_per_period` | number | No | The score threshold per period for which the action will be executed the first time. | | `score_response_header_name` | string | No | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID to add the rate limiting rule to | | `rulesetId` | string | Yes | The http\_ratelimit entry point ruleset ID, as returned by "List Rate Limiting Rules" | | `expression` | string | Yes | Cloudflare filter expression selecting the requests the rule applies to, e.g. (http.request.uri.path matches "^/api/") | | `characteristics` | string | Yes | Comma-separated counting characteristics. cf.colo.id is mandatory. ip.src and cf.unique\_visitor\_id are mutually exclusive — include at most one. Example: cf.colo.id,ip.src | | `period` | number | Yes | Counting window in seconds. Cloudflare accepts only 10, 60, 120, 300, 600, or 3600 | | `requestsPerPeriod` | number | Yes | Number of requests allowed within the counting period before the action fires | | `action` | string | No | Action applied once the limit is exceeded, e.g. block, managed\_challenge, js\_challenge, challenge, or log. Defaults to block | | `mitigationTimeout` | number | No | Seconds the action stays applied after the limit is exceeded. Cloudflare accepts only 0, 10, 60, 120, 300, 600, 3600, or 86400 | | `counting_expression` | string | No | Optional expression defining which requests are counted, when it differs from the matching expression | | `requestsToOrigin` | boolean | No | When true, only requests that reach the origin are counted | | `description` | string | No | Human-readable description of the rule | | `enabled` | boolean | No | Whether the rule is enabled | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-6] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Create Ruleset [#cloudflare-create-ruleset] Creates a zone ruleset for a phase, optionally seeded with its first rules. Use this when a phase has no entry point ruleset yet — reading the entry point returns 404 on a zone that has never had a rule in that phase, and rules can only be appended to a ruleset that already exists. Create the entry point with kind "zone" and the target phase (for example http\_ratelimit for rate limiting rules or http\_request\_firewall\_custom for WAF custom rules), then use the returned ruleset ID for later rule operations. Requires an API token with Zone WAF Edit (or another matching ruleset Edit permission). #### Input [#input-7] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID to create the ruleset in | | `name` | string | Yes | Human-readable name for the ruleset | | `phase` | string | Yes | The ruleset phase, e.g. http\_ratelimit, http\_request\_firewall\_custom, http\_request\_firewall\_managed, http\_request\_transform, http\_request\_dynamic\_redirect | | `kind` | string | No | Ruleset kind: zone or custom. Use zone to create a phase entry point ruleset and custom for a ruleset an execute rule deploys. Defaults to zone. "root" is the account-level phase entry point and "managed" is Cloudflare-owned, so neither can be created on this zone-scoped endpoint | | `description` | string | No | Description of the ruleset | | `rules` | json | No | JSON array of rules to seed the ruleset with, in evaluation order. Each rule takes action, expression, and optionally description, enabled, action\_parameters, and ratelimit | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-7] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Create Ruleset Rule [#cloudflare-create-ruleset-rule] Adds a rule to a zone ruleset. Use "Get Phase Entry Point Ruleset" first to find the ruleset ID for the phase you want (for example http\_request\_firewall\_custom for a WAF custom rule, or http\_request\_firewall\_managed with action "execute" to deploy a managed ruleset). The rule is appended to the end of the ruleset unless a position is given. Requires an API token with Zone WAF Edit (or another matching ruleset Write permission). #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `exposed_credential_check` | json | No | JSON object. Configuration for exposed credential checking. Fields: password\_expression, username\_expression. | | `id` | string | No | The unique ID of the rule. | | `logging` | json | No | JSON object. An object configuring the rule's logging behavior. Fields: enabled. | | `ratelimit` | json | No | JSON object. An object configuring the rule's rate limit behavior. Fields: characteristics, counting\_expression, mitigation\_timeout, period, requests\_per\_period, requests\_to\_origin, score\_per\_period, score\_response\_header\_name. | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID that owns the ruleset | | `rulesetId` | string | Yes | The ruleset ID to add the rule to | | `action` | string | Yes | The action the rule performs. Valid values depend on the phase — e.g. block, challenge, js\_challenge, managed\_challenge, log, skip, or execute (to deploy a managed ruleset) | | `expression` | string | Yes | Cloudflare filter expression selecting matching requests, e.g. (ip.src.country in \{"GB" "FR"}). Use "true" to match every request | | `description` | string | No | Human-readable description of the rule | | `enabled` | boolean | No | Whether the rule is enabled | | `ref` | string | No | Reference tag that stays stable across rule updates | | `actionParameters` | string | No | JSON object of action-specific parameters. For an "execute" rule this carries the managed ruleset id and any overrides, e.g. \{"id":"\","overrides":\{"action":"log"}} | | `position` | string | No | JSON object placing the rule within the ruleset. Exactly one of \{"before":"\"}, \{"after":"\"}, or \{"index":\<1-based position>} | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-8] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Create Tunnel [#cloudflare-create-tunnel] Creates a remotely or locally managed Cloudflare Tunnel in an account. After creation, retrieve its token and run cloudflared to establish the connector connection. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `apiKey` | string | Yes | Cloudflare API token | | `config_src` | string | No | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Allowed values: local, cloudflare. | | `name` | string | Yes | A user-friendly name for a tunnel. | | `tunnel_secret` | string | No | Sets the password required to run a locally-managed tunnel. Must be at least 32 bytes and encoded as a base64 string. | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_tag` | string | Cloudflare account ID | | `config_src` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Values: local, cloudflare. | | `connections` | array | The Cloudflare Tunnel connections between your origin and Cloudflare's edge. | | ↳ `client_id` | string | UUID of the Cloudflare Tunnel connector. | | ↳ `client_version` | string | The cloudflared version used to establish this connection. | | ↳ `colo_name` | string | The Cloudflare data center used for this connection. | | ↳ `id` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `is_pending_reconnect` | boolean | Cloudflare continues to track connections for several minutes after they disconnect. This is an optimization to improve latency and reliability of reconnecting. If `true`, the connection has disconnected but is still being tracked. If `false`, the connection is actively serving traffic. | | ↳ `opened_at` | string | Timestamp of when the connection was established. | | ↳ `origin_ip` | string | The public IP address of the host running cloudflared. | | ↳ `uuid` | string | UUID of the Cloudflare Tunnel connection. | | `conns_active_at` | string | Timestamp of when the tunnel established at least one connection to Cloudflare's edge. If `null`, the tunnel is inactive. | | `conns_inactive_at` | string | Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge). If `null`, the tunnel is active. | | `created_at` | string | Timestamp of when the resource was created. | | `deleted_at` | string | Timestamp of when the resource was deleted. If `null`, the resource has not been deleted. | | `id` | string | UUID of the tunnel. | | `metadata` | json | Metadata associated with the tunnel. | | `name` | string | A user-friendly name for a tunnel. | | `remote_config` | boolean | If `true`, the tunnel can be configured remotely from the Zero Trust dashboard. If `false`, the tunnel must be configured locally on the origin machine. | | `status` | string | The status of the tunnel. | | `tun_type` | string | The type of tunnel. Values: cfd\_tunnel, warp\_connector, warp, magic, ip\_sec, gre, cni. | ### Cloudflare Create Worker Route [#cloudflare-create-worker-route] Creates a route that maps a URL pattern to a Worker. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `apiKey` | string | Yes | Cloudflare API token | | `pattern` | string | Yes | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | `script` | string | No | Name of the script to run if the route matches. | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Identifier. | | `pattern` | string | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | `script` | string | Name of the script to run if the route matches. | ### Cloudflare Create Zone [#cloudflare-create-zone] Adds a new zone (domain) to the Cloudflare account. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | The domain name to add (e.g., "example.com") | | `accountId` | string | Yes | The Cloudflare account ID | | `type` | string | No | Zone type: "full" (Cloudflare manages DNS), "partial" (CNAME setup), "secondary" (secondary DNS), or "internal" (internal DNS zone) | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-11] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account` | json | The account the zone belongs to. | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the account. | | `activated_on` | string | The last time proof of ownership was detected and the zone was made active. | | `cname_suffix` | string | Allows the customer to use a custom apex. *Tenants Only Configuration*. | | `created_on` | string | When the zone was created. | | `development_mode` | number | The interval (in seconds) from when development mode expires (positive integer) or last expired (negative integer) for the domain. If development mode has never been enabled, this value is 0. | | `id` | string | Identifier | | `meta` | json | Metadata about the zone. | | ↳ `cdn_only` | boolean | The zone is only configured for CDN. | | ↳ `custom_certificate_quota` | number | Number of Custom Certificates the zone can have. | | ↳ `dns_only` | boolean | The zone is only configured for DNS. | | ↳ `foundation_dns` | boolean | The zone is setup with Foundation DNS. | | ↳ `page_rule_quota` | number | Number of Page Rules a zone can have. | | ↳ `phishing_detected` | boolean | The zone has been flagged for phishing. | | ↳ `step` | number | step | | `modified_on` | string | When the zone was last modified. | | `name` | string | The domain name. Per \[RFC 1035]\([https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4)) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters. | | `name_servers` | array | The name servers Cloudflare assigns to a zone. | | `original_dnshost` | string | DNS host at the time of switching to Cloudflare. | | `original_name_servers` | array | Original name servers before moving to Cloudflare. | | `original_registrar` | string | Registrar for the domain at the time of switching to Cloudflare. | | `owner` | json | The owner of the zone. | | ↳ `id` | string | Identifier | | ↳ `name` | string | Name of the owner. | | ↳ `type` | string | The type of owner. | | `paused` | boolean | Indicates whether the zone is only using Cloudflare DNS services. A true value means the zone will not receive security or performance benefits. | | `permissions` | array | Legacy permissions based on legacy user membership information. | | `plan` | json | A Zones subscription information. | | ↳ `can_subscribe` | boolean | States if the subscription can be activated. | | ↳ `currency` | string | The denomination of the customer. | | ↳ `externally_managed` | boolean | If this Zone is managed by another company. | | ↳ `frequency` | string | How often the customer is billed. | | ↳ `id` | string | Identifier | | ↳ `is_subscribed` | boolean | States if the subscription active. | | ↳ `legacy_discount` | boolean | If the legacy discount applies to this Zone. | | ↳ `legacy_id` | string | The legacy name of the plan. | | ↳ `name` | string | Name of the owner. | | ↳ `price` | number | How much the customer is paying. | | `status` | string | The zone status on Cloudflare. Values: initializing, pending, active, moved. | | `tenant` | json | The root organizational unit that this zone belongs to (such as a tenant or organization). | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the Tenant account. | | `tenant_unit` | json | The immediate parent organizational unit that this zone belongs to (such as under a tenant or sub-organization). | | ↳ `id` | string | Identifier | | `type` | string | A full zone implies that DNS is hosted with Cloudflare. A partial zone is typically a partner-hosted zone or a CNAME setup. Values: full, partial, secondary, internal. | | `vanity_name_servers` | array | An array of domains used for custom name servers. This is only available for Business and Enterprise plans. | | `verification_key` | string | Verification key for partial zone setup. | ### Cloudflare Delete Access Application [#cloudflare-delete-access-application] Permanently deletes a Cloudflare Access (Zero Trust) application and every policy attached to it. The hostname it protected is immediately left without an Access identity check, so anyone who can reach it can reach the origin. This cannot be undone. Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID to delete permanently | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `id` | string | Identifier of the deleted Access application | ### Cloudflare Delete Access Group [#cloudflare-delete-access-group] Deletes an Access group. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `groupId` | string | Yes | Group id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | UUID. | ### Cloudflare Delete Access Policy [#cloudflare-delete-access-policy] Permanently deletes a Cloudflare Access (Zero Trust) policy from an application. This changes who can reach the application the moment it runs: removing an allow policy locks out everyone it covered, and removing a deny or require policy drops that restriction. This cannot be undone. Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID that owns the policy | | `policyId` | string | Yes | The Access policy ID to delete permanently | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `id` | string | Identifier of the deleted Access policy | ### Cloudflare Delete DNS Record [#cloudflare-delete-dns-record] Deletes a DNS record from a zone. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------- | | `zoneId` | string | Yes | The zone ID containing the DNS record | | `recordId` | string | Yes | The DNS record ID to delete | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ----------------- | | `id` | string | Deleted record ID | ### Cloudflare Delete R2 Bucket [#cloudflare-delete-r2-bucket] Permanently deletes an R2 object storage bucket. Cloudflare only deletes an empty bucket, and the deletion cannot be undone. Requires an API token with Account Workers R2 Storage Edit. #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------ | | `accountId` | string | Yes | The Cloudflare account ID. R2 buckets are account-scoped | | `bucketName` | string | Yes | The name of the bucket to delete permanently | | `jurisdiction` | string | No | Data-residency jurisdiction the bucket lives in: default, eu, or fedramp | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Name of the deleted bucket. Cloudflare returns an empty result body for this endpoint, so the name is echoed from the request | ### Cloudflare Delete R2 Bucket Cors [#cloudflare-delete-r2-bucket-cors] Delete the CORS policy for a bucket. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `bucketName` | string | Yes | Bucket name | | `apiKey` | string | Yes | Cloudflare API token | | `jurisdiction` | string | No | Jurisdiction where objects in this bucket are guaranteed to be stored. | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether Cloudflare accepted the operation | ### Cloudflare Delete Ruleset [#cloudflare-delete-ruleset] Deletes all versions of an existing zone ruleset. #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `rulesetId` | string | Yes | Ruleset id | | `apiKey` | string | Yes | Cloudflare API token | | `dry_run` | boolean | No | Validates the request without persisting changes when set to `true`. Responses that normally return 200 return `result: null`; endpoints that normally return 204 continue to return 204. | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether Cloudflare accepted the operation | ### Cloudflare Delete Ruleset Rule [#cloudflare-delete-ruleset-rule] Permanently deletes a rule from a zone ruleset. This takes effect immediately on live traffic and cannot be undone — deleting a WAF custom rule, a managed-ruleset deployment, or a rate limiting rule removes that protection from the zone. Also use this to delete rate limiting rules, which live in the http\_ratelimit phase ruleset. Requires an API token with Zone WAF Edit (or another matching ruleset Write permission). #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------- | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID that owns the ruleset | | `rulesetId` | string | Yes | The ruleset ID containing the rule | | `ruleId` | string | Yes | The rule ID to delete permanently | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-19] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Delete Tunnel [#cloudflare-delete-tunnel] Permanently deletes a Cloudflare Tunnel from an account. The tunnel must have no active connections. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `tunnelId` | string | Yes | Tunnel id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-20] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_tag` | string | Cloudflare account ID | | `config_src` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Values: local, cloudflare. | | `connections` | array | The Cloudflare Tunnel connections between your origin and Cloudflare's edge. | | ↳ `client_id` | string | UUID of the Cloudflare Tunnel connector. | | ↳ `client_version` | string | The cloudflared version used to establish this connection. | | ↳ `colo_name` | string | The Cloudflare data center used for this connection. | | ↳ `id` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `is_pending_reconnect` | boolean | Cloudflare continues to track connections for several minutes after they disconnect. This is an optimization to improve latency and reliability of reconnecting. If `true`, the connection has disconnected but is still being tracked. If `false`, the connection is actively serving traffic. | | ↳ `opened_at` | string | Timestamp of when the connection was established. | | ↳ `origin_ip` | string | The public IP address of the host running cloudflared. | | ↳ `uuid` | string | UUID of the Cloudflare Tunnel connection. | | `conns_active_at` | string | Timestamp of when the tunnel established at least one connection to Cloudflare's edge. If `null`, the tunnel is inactive. | | `conns_inactive_at` | string | Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge). If `null`, the tunnel is active. | | `created_at` | string | Timestamp of when the resource was created. | | `deleted_at` | string | Timestamp of when the resource was deleted. If `null`, the resource has not been deleted. | | `id` | string | UUID of the tunnel. | | `metadata` | json | Metadata associated with the tunnel. | | `name` | string | A user-friendly name for a tunnel. | | `remote_config` | boolean | If `true`, the tunnel can be configured remotely from the Zero Trust dashboard. If `false`, the tunnel must be configured locally on the origin machine. | | `status` | string | The status of the tunnel. | | `tun_type` | string | The type of tunnel. Values: cfd\_tunnel, warp\_connector, warp, magic, ip\_sec, gre, cni. | ### Cloudflare Delete Worker Route [#cloudflare-delete-worker-route] Deletes a Worker route. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `zoneId` | string | Yes | Zone id | | `routeId` | string | Yes | Route id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | Identifier. | ### Cloudflare Delete Worker Script [#cloudflare-delete-worker-script] Delete your worker. This call has no response body on a successful delete. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `accountId` | string | Yes | Account id | | `scriptName` | string | Yes | Script name | | `apiKey` | string | Yes | Cloudflare API token | | `force` | boolean | No | If true, delete the Worker even when other Workers still reference it. Service bindings in those Workers may be left broken. Durable Object namespaces implemented by the deleted Worker are deleted even if other Workers reference them. | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether Cloudflare accepted the operation | ### Cloudflare Delete Zone [#cloudflare-delete-zone] Deletes a zone (domain) from the Cloudflare account. #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `zoneId` | string | Yes | The zone ID to delete | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | --------------- | | `id` | string | Deleted zone ID | ### Cloudflare DNS Analytics [#cloudflare-dns-analytics] Gets DNS analytics report for a zone including query counts and trends. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to get DNS analytics for | | `since` | string | No | Start date for analytics (ISO 8601, e.g., "2024-01-01T00:00:00Z") or relative (e.g., "-6h") | | `until` | string | No | End date for analytics (ISO 8601, e.g., "2024-01-31T23:59:59Z") or relative (e.g., "now") | | `metrics` | string | No | Comma-separated metrics to retrieve (e.g., "queryCount,uncachedCount,staleCount,responseTimeAvg,responseTimeMedian,responseTime90th,responseTime99th"). Optional in the API | | `dimensions` | string | No | Comma-separated dimensions to group by (e.g., "queryName,queryType,responseCode,responseCached,coloName,origin,dayOfWeek,tcp,ipVersion,querySizeBucket,responseSizeBucket") | | `filters` | string | No | Filters to apply to the data (e.g., "queryType==A") | | `sort` | string | No | Sort order for the result set. Fields must be included in metrics or dimensions (e.g., "+queryCount" or "-responseTimeAvg") | | `limit` | number | No | Maximum number of results to return | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-24] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `totals` | object | Aggregate DNS analytics totals for the entire queried period. Only the metrics that were requested are present. | | ↳ `queryCount` | number | Total number of DNS queries. Absent when queryCount was not requested | | ↳ `uncachedCount` | number | Number of uncached DNS queries. Absent when uncachedCount was not requested | | ↳ `staleCount` | number | Number of stale DNS queries. Absent when staleCount was not requested | | ↳ `responseTimeAvg` | number | Average response time in milliseconds | | ↳ `responseTimeMedian` | number | Median response time in milliseconds | | ↳ `responseTime90th` | number | 90th percentile response time in milliseconds | | ↳ `responseTime99th` | number | 99th percentile response time in milliseconds | | `min` | json | Per-metric minimums. Cloudflare documents this field as currently always an empty object, so treat a populated value as unexpected rather than relied upon. | | `max` | json | Per-metric maximums. Cloudflare documents this field as currently always an empty object, so treat a populated value as unexpected rather than relied upon. | | `data` | array | Raw analytics data rows returned by the Cloudflare DNS analytics report | | ↳ `dimensions` | array | Dimension values for this data row, parallel to the requested dimensions list | | ↳ `metrics` | array | Metric values for this data row, parallel to the requested metrics list | | `data_lag` | number | Processing lag in seconds before analytics data becomes available | | `rows` | number | Total number of rows in the result set | | `query` | object | Echo of the query parameters sent to the API | | ↳ `since` | string | Start date of the analytics query | | ↳ `until` | string | End date of the analytics query | | ↳ `metrics` | array | Metrics requested in the query | | ↳ `dimensions` | array | Dimensions requested in the query | | ↳ `filters` | string | Filters applied to the query | | ↳ `sort` | array | Sort order applied to the query | | ↳ `limit` | number | Maximum number of results requested | ### Cloudflare Get Access Application [#cloudflare-get-access-application] Reads a single Cloudflare Access (Zero Trust) application, including its attached policies. Requires an API token with Account Access: Apps and Policies Read. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID (or audience tag) to read | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-25] | Parameter | Type | Description | | --------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `aud` | string | Audience tag. | | `created_at` | string | created at | | `id` | string | UUID. | | `updated_at` | string | updated at | | `allowed_idps` | array | The identity providers your users can select when connecting to this application. Defaults to all IdPs configured in your account. | | `destinations` | array | List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. | | ↳ `overrides` | array | Rules that override how Access handles requests to this destination. Each rule can make a matching path public, bypassing Access authentication. Overrides are supported for public destinations and Worker destinations. | | ↳ `behavior` | string | The behavior to apply to matching requests. Values: public. | | ↳ `path_pattern` | string | The request path pattern to match. Wildcards (`*`) are supported, but each path segment may have at most one wildcard. Unlike the `uri` in public destinations, override path patterns do not implicitly cover subpaths; to do that, use a wildcard. | | ↳ `type` | string | type Values: public, private, via\_mcp\_server\_portal, worker, preview\_worker, all\_workers, all\_preview\_workers. | | ↳ `uri` | string | The URI of the destination. Public destinations' URIs can include a domain and path with \[wildcards]\([https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)). | | ↳ `cidr` | string | The CIDR range of the destination. Single IPs will be computed as /32. | | ↳ `hostname` | string | The hostname of the destination. Matches a valid SNI served by an HTTPS origin. | | ↳ `l4_protocol` | string | The L4 protocol of the destination. When omitted, both UDP and TCP traffic will match. Values: tcp, udp. | | ↳ `port_range` | string | The port range of the destination. Can be a single port or a range of ports. When omitted, all ports will match. | | ↳ `vnet_id` | string | The VNET ID to match the destination. When omitted, all VNETs will match. | | ↳ `mcp_server_id` | string | The MCP server id configured in ai-controls. | | ↳ `worker_id` | string | The ID of the Cloudflare Worker whose preview deployments to protect with Access. | | `domain` | string | The primary hostname and path secured by Access. This domain will be displayed if the app is visible in the App Launcher. | | `name` | string | The name of the application. | | `oauth_configuration` | json | **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. | | ↳ `dynamic_client_registration` | json | Settings for OAuth dynamic client registration. | | ↳ `allow_any_on_localhost` | boolean | Allows any client with redirect URIs on localhost. | | ↳ `allow_any_on_loopback` | boolean | Allows any client with redirect URIs on 127.0.0.1. | | ↳ `allowed_uris` | array | The URIs that are allowed as redirect URIs for dynamically registered clients. HTTP and HTTPS paths may end in `/*` to match all sub-paths. Custom-scheme URIs must be explicitly configured and match exactly. | | ↳ `enabled` | boolean | Whether dynamic client registration is enabled. | | ↳ `enabled` | boolean | Whether the OAuth configuration is enabled for this application. When set to `false`, Access will not handle OAuth for this application. Defaults to `true` if omitted. Values: True. | | ↳ `grant` | json | Settings for OAuth grant behavior. | | ↳ `access_token_lifetime` | string | The lifetime of the access token. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | ↳ `session_duration` | string | The duration of the OAuth session. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | `self_hosted_domains` | array | List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | `type` | string | The application type. Values: end\_user, self\_hosted, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, dash\_sso, infrastructure, rdp, mcp, mcp\_portal, proxy\_endpoint. | | `user_populations` | array | The single user population associated with this application. | | `allow_authenticate_via_warp` | boolean | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | `allow_iframe` | boolean | Enables loading application content in an iFrame. | | `app_launcher_visible` | boolean | Displays the application in the App Launcher. | | `auto_redirect_to_identity` | boolean | When set to `true`, users skip the identity provider selection step during login. You must specify only one identity provider in allowed\_idps. | | `cors_headers` | json | cors headers | | ↳ `allow_all_headers` | boolean | Allows all HTTP request headers. | | ↳ `allow_all_methods` | boolean | Allows all HTTP request methods. | | ↳ `allow_all_origins` | boolean | Allows all origins. | | ↳ `allow_credentials` | boolean | When set to `true`, includes credentials (cookies, authorization headers, or TLS client certificates) with requests. | | ↳ `allowed_headers` | array | Allowed HTTP request headers. | | ↳ `allowed_methods` | array | Allowed HTTP request methods. | | ↳ `allowed_origins` | array | Allowed origins. | | ↳ `max_age` | number | The maximum number of seconds the results of a preflight request can be cached. | | `custom_deny_message` | string | The custom error message shown to a user when they are denied access to the application. | | `custom_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing identity-based rules. | | `custom_non_identity_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | `custom_pages` | array | The custom pages that will be displayed when applicable for this application | | `eager_redirect_cookie_setting` | boolean | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | `enable_binding_cookie` | boolean | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | `http_only_cookie_attribute` | boolean | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | `logo_url` | string | The image URL for the logo shown in the App Launcher dashboard. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | `options_preflight_bypass` | boolean | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | `path_cookie_attribute` | boolean | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | `read_service_tokens_from_header` | string | Allows matching Access Service Tokens passed HTTP in a single header with this name. | | `same_site_cookie_attribute` | string | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | `scim_config` | json | Configuration for provisioning to this application via SCIM. This is currently in closed beta. | | ↳ `authentication` | json | Multiple authentication schemes | | ↳ `password` | string | Password used to authenticate with the remote SCIM service. | | ↳ `scheme` | string | The authentication scheme to use when making SCIM requests to this application. Values: httpbasic, oauthbearertoken, oauth2, access\_service\_token. | | ↳ `user` | string | User name used to authenticate with the remote SCIM service. | | ↳ `token` | string | Token used to authenticate with the remote SCIM service. | | ↳ `authorization_url` | string | URL used to generate the auth code used during token generation. | | ↳ `client_id` | string | Client ID of the Access service token used to authenticate with the remote service. | | ↳ `client_secret` | string | Client secret of the Access service token used to authenticate with the remote service. | | ↳ `scopes` | array | The authorization scopes to request when generating the token used to authenticate with the remove SCIM service. | | ↳ `token_url` | string | URL used to generate the token used to authenticate with the remote SCIM service. | | ↳ `deactivate_on_delete` | boolean | If false, propagates DELETE requests to the target application for SCIM resources. If true, sets 'active' to false on the SCIM resource. Note: Some targets do not support DELETE operations. | | ↳ `enabled` | boolean | Whether SCIM provisioning is turned on for this application. | | ↳ `idp_uid` | string | The UID of the IdP to use as the source for SCIM resources to provision to this application. | | ↳ `mappings` | array | A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned. | | ↳ `enabled` | boolean | Whether or not this mapping is enabled. | | ↳ `filter` | string | A \[SCIM filter expression]\([https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2)) that matches resources that should be provisioned to this application. | | ↳ `operations` | json | Whether or not this mapping applies to creates, updates, or deletes. | | ↳ `create` | boolean | Whether or not this mapping applies to create (POST) operations. | | ↳ `delete` | boolean | Whether or not this mapping applies to DELETE operations. | | ↳ `update` | boolean | Whether or not this mapping applies to update (PATCH/PUT) operations. | | ↳ `schema` | string | Which SCIM resource type this mapping applies to. | | ↳ `strictness` | string | The level of adherence to outbound resource schemas when provisioning to this mapping. ‘Strict’ removes unknown values, while ‘passthrough’ passes unknown values to the target. Values: strict, passthrough. | | ↳ `transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms the resource before provisioning it in the application. | | ↳ `remote_uri` | string | The base URI for the application's SCIM-compatible API. | | `service_auth_401_redirect` | boolean | Returns a 401 status code when the request is blocked by a Service Auth policy. | | `session_duration` | string | The amount of time that tokens issued for this application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `skip_interstitial` | boolean | Enables automatic authentication through cloudflared. | | `tags` | array | The tags you want assigned to an application. Tags are used to filter applications in the App Launcher dashboard. | | `use_clientless_isolation_app_launcher_url` | boolean | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | `policies` | array | policies | | ↳ `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | ↳ `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | ↳ `connection_rules` | json | The rules that define how users may connect to targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | ↳ `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | ↳ `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | ↳ `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `created_at` | string | created at | | ↳ `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | The UUID of the policy | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access policy. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | ↳ `account_id` | string | Identifier. | | ↳ `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | | `saas_app` | json | saas app | | ↳ `auth_type` | string | Identifier of the authentication protocol used for the saas app. Required for OIDC. Values: saml, oidc. | | ↳ `consumer_service_url` | string | The service provider's endpoint that is responsible for receiving and parsing a SAML assertion. | | ↳ `created_at` | string | created at | | ↳ `custom_attributes` | array | custom attributes | | ↳ `friendly_name` | string | The SAML FriendlyName of the attribute. | | ↳ `name` | string | The name of the attribute. | | ↳ `name_format` | string | A globally unique name for an identity or service provider. Values: urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified, urn:oasis:names:tc:SAML:2.0:attrname-format:basic, urn:oasis:names:tc:SAML:2.0:attrname-format:uri. | | ↳ `required` | boolean | If the attribute is required when building a SAML assertion. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP attribute. | | ↳ `name_by_idp` | array | A mapping from IdP ID to attribute name. | | ↳ `idp_id` | string | The UID of the IdP. | | ↳ `source_name` | string | The name of the IdP provided attribute. | | ↳ `default_relay_state` | string | The URL that the user will be redirected to after a successful login for IDP initiated logins. | | ↳ `idp_entity_id` | string | The unique identifier for your SaaS application. | | ↳ `name_id_format` | string | The format of the name identifier sent to the SaaS application. Values: id, email. | | ↳ `name_id_transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into a NameID value for its SAML assertion. This expression should evaluate to a singular string. The output of this expression can override the `name_id_format` setting. | | ↳ `public_key` | string | The Access public certificate that will be used to verify your identity. | | ↳ `saml_attribute_transform_jsonata` | string | A \[JSONata] ([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into attribute assertions in the SAML response. | | ↳ `sp_entity_id` | string | A globally unique name for an identity or service provider. | | ↳ `sso_endpoint` | string | The endpoint where your SaaS application will send login requests. | | ↳ `updated_at` | string | updated at | | ↳ `access_token_lifetime` | string | The lifetime of the OIDC Access Token after creation. Valid units are m,h. Must be greater than or equal to 1m and less than or equal to 24h. | | ↳ `allow_pkce_without_client_secret` | boolean | If client secret should be required on the token endpoint when authorization\_code\_with\_pkce grant is used. | | ↳ `app_launcher_url` | string | The URL where this applications tile redirects users | | ↳ `client_id` | string | The application client id | | ↳ `client_secret` | string | The application client secret, only returned on POST request. | | ↳ `custom_claims` | array | custom claims | | ↳ `name` | string | The name of the claim. | | ↳ `required` | boolean | If the claim is required when building an OIDC token. | | ↳ `scope` | string | The scope of the claim. Values: groups, profile, email, openid. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP claim. | | ↳ `name_by_idp` | json | A mapping from IdP ID to claim name. | | ↳ `grant_types` | array | The OIDC flows supported by this application | | ↳ `group_filter_regex` | string | A regex to filter Cloudflare groups returned in ID token and userinfo endpoint | | ↳ `hybrid_and_implicit_options` | json | hybrid and implicit options | | ↳ `return_access_token_from_authorization_endpoint` | boolean | If an Access Token should be returned from the OIDC Authorization endpoint | | ↳ `return_id_token_from_authorization_endpoint` | boolean | If an ID Token should be returned from the OIDC Authorization endpoint | | ↳ `redirect_uris` | array | The permitted URL's for Cloudflare to return Authorization codes and Access/ID tokens | | ↳ `refresh_token_options` | json | refresh token options | | ↳ `lifetime` | string | How long a refresh token will be valid for after creation. Valid units are m,h,d. Must be longer than 1m. | | ↳ `scopes` | array | Define the user information shared with access, "offline\_access" scope will be automatically enabled if refresh tokens are enabled | | `app_launcher_logo_url` | string | The image URL of the logo shown in the App Launcher header. | | `bg_color` | string | The background color of the App Launcher page. | | `footer_links` | array | The links in the App Launcher footer. | | ↳ `name` | string | The hypertext in the footer link. | | ↳ `url` | string | the hyperlink in the footer link. | | `header_bg_color` | string | The background color of the App Launcher header. | | `landing_page_design` | json | The design of the App Launcher landing page shown to users when they log in. | | ↳ `button_color` | string | The background color of the log in button on the landing page. | | ↳ `button_text_color` | string | The color of the text in the log in button on the landing page. | | ↳ `image_url` | string | The URL of the image shown on the landing page. | | ↳ `message` | string | The message shown on the landing page. | | ↳ `title` | string | The title shown on the landing page. | | `skip_app_launcher_login_page` | boolean | Determines when to skip the App Launcher landing page. | | `target_criteria` | array | target criteria | | ↳ `exclude` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `include` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `port` | number | The port that the targets use for the chosen communication protocol. A port cannot be assigned to multiple protocols. | | ↳ `require` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `target_attributes` | json | Contains a map of target attribute keys to target attribute values. | | ↳ `protocol` | string | The communication protocol your application secures. Values: RDP. | ### Cloudflare Get Access Group [#cloudflare-get-access-group] Fetches a single Access group. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `groupId` | string | Yes | Group id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-26] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `created_at` | string | created at | | `exclude` | array | Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | UUID. | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `is_default` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access group. | | `require` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | ### Cloudflare Get Access Policy [#cloudflare-get-access-policy] Fetches a single Access policy configured for an application. Returns both exclusively owned and reusable policies used by the application. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `appId` | string | Yes | App id | | `policyId` | string | Yes | Policy id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-27] | Parameter | Type | Description | | --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | `connection_rules` | json | The rules that define how users may connect to the targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `ssh` | json | The SSH-specific rules that define how users may connect to the targets secured by your application. | | ↳ `allow_email_alias` | boolean | Enables using Identity Provider email alias as SSH username. | | ↳ `usernames` | array | Contains the Unix usernames that may be used when connecting over SSH. | | `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings for infrastructure applications. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. For infrastructure applications, supported values are `piv_key` and `ssh_fido2_key`. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples: `5m` or `24h`. | | `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `created_at` | string | created at | | `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | The UUID of the policy | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access policy. | | `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | | `account_id` | string | Identifier. | | `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | ### Cloudflare Get Access Service Token [#cloudflare-get-access-service-token] Fetches a single service token. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `serviceTokenId` | string | Yes | Service token id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-28] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `expires_at` | string | expires at | | `id` | string | UUID. | | `last_seen_at` | string | last seen at | | `leak_report_url` | string | Where the leaked `client_secret` was found, if provided by the reporter. Omitted if the token has not been reported as leaked. | | `leak_reported_at` | string | When a secret scanning partner reported this service token's `client_secret` as leaked. A leaked service token is disabled and must be rotated before it can be re-enabled. Cleared once the secret is rotated. Omitted if the token has not been reported as leaked. | | `leak_reporter` | string | The secret scanning partner that reported the leak. Omitted if the token has not been reported as leaked. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | ### Cloudflare Get Dns Record [#cloudflare-get-dns-record] Retrieves details for a specific DNS record in the zone. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `recordId` | string | Yes | Dns record id | | `apiKey` | string | Yes | Cloudflare API token | | `include_shadow_metadata` | boolean | No | Whether to include shadow metadata in the `meta` field of each record in the response. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | #### Output [#output-29] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `comment` | string | Comments or notes about the DNS record. This field has no effect on DNS responses. | | `name` | string | Complete DNS record name, including the zone name, in Punycode. | | `proxied` | boolean | Whether the record is receiving the performance and security benefits of Cloudflare. | | `settings` | json | Settings for the DNS record. | | ↳ `ipv4_only` | boolean | When enabled, only A records will be generated, and AAAA records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `ipv6_only` | boolean | When enabled, only AAAA records will be generated, and A records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `flatten_cname` | boolean | If enabled, causes the CNAME record to be resolved externally and the resulting address records (e.g., A and AAAA) to be returned instead of the CNAME record itself. This setting is unavailable for proxied records, since they are always flattened. | | `tags` | array | Custom tags for the DNS record. This field has no effect on DNS responses. | | `ttl` | number | Time To Live (TTL) of the DNS record in seconds. Setting to 1 means 'automatic'. Value must be between 60 and 86400, with the minimum reduced to 30 for Enterprise zones. Values: 1. | | `content` | string | Formatted URI content. See 'data' to set URI properties. | | `private_routing` | boolean | Enables private network routing to the origin. | | `type` | string | Record type. Values: A, AAAA, CNAME, MX, NS, OPENPGPKEY, PTR, TXT, CAA, CERT, DNSKEY, DS, HTTPS, LOC, NAPTR, SMIMEA, SRV, SSHFP, SVCB, TLSA, URI. | | `priority` | number | Required for MX and URI records; ignored for other record types (but may still be returned by the API). Records with lower priorities are preferred. This field is to be deprecated in favor of the priority field within the data map. | | `data` | json | Structured record data. The available fields depend on the DNS record type. | | ↳ `flags` | json | Flags. | | ↳ `tag` | string | Name of the property controlled by this record (e.g.: issue, issuewild, iodef). | | ↳ `value` | string | Value. | | ↳ `algorithm` | number | Algorithm. | | ↳ `certificate` | string | Certificate. | | ↳ `key_tag` | number | Key Tag. | | ↳ `type` | number | Type. | | ↳ `protocol` | number | Protocol. | | ↳ `public_key` | string | Public Key. | | ↳ `digest` | string | Digest. | | ↳ `digest_type` | number | Digest Type. | | ↳ `priority` | number | Priority. | | ↳ `target` | string | The record content. | | ↳ `altitude` | number | Altitude of location in meters. | | ↳ `lat_degrees` | number | Degrees of latitude. | | ↳ `lat_direction` | string | Latitude direction. Values: N, S. | | ↳ `lat_minutes` | number | Minutes of latitude. | | ↳ `lat_seconds` | number | Seconds of latitude. | | ↳ `long_degrees` | number | Degrees of longitude. | | ↳ `long_direction` | string | Longitude direction. Values: E, W. | | ↳ `long_minutes` | number | Minutes of longitude. | | ↳ `long_seconds` | number | Seconds of longitude. | | ↳ `precision_horz` | number | Horizontal precision of location. | | ↳ `precision_vert` | number | Vertical precision of location. | | ↳ `size` | number | Size of location in meters. | | ↳ `order` | number | Order. | | ↳ `preference` | number | Preference. | | ↳ `regex` | string | Regex. | | ↳ `replacement` | string | Replacement. | | ↳ `service` | string | Service. | | ↳ `matching_type` | number | Matching Type. | | ↳ `selector` | number | Selector. | | ↳ `usage` | number | Usage. | | ↳ `port` | number | The port of the service. | | ↳ `weight` | number | The record weight. | | ↳ `fingerprint` | string | Fingerprint. | | `comment_modified_on` | string | When the record comment was last modified. Omitted if there is no comment. | | `created_on` | string | When the record was created. | | `id` | string | Identifier. | | `meta` | json | Extra Cloudflare-specific metadata about the record. | | ↳ `dead_glue` | boolean | Whether this glue record is not served because a shallower NS delegation takes precedence over the deeper delegation that needs it. | | ↳ `is_glue` | boolean | Whether this A or AAAA record is glue for a subdomain NS delegation. See \[Glue records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records)). | | ↳ `shadowed_by` | array | IDs of the NS records that shadow this record. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | ↳ `shadowed_records_count` | number | Number of records shadowed by this NS delegation. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `modified_on` | string | When the record was last modified. | | `proxiable` | boolean | Whether the record can be proxied by Cloudflare or not. | | `tags_modified_on` | string | When the record tags were last modified. Omitted if there are no tags. | | `zone_id` | string | Legacy DNS response zone ID when returned by Cloudflare | | `zone_name` | string | Legacy DNS response zone name when returned by Cloudflare | | `locked` | boolean | Legacy DNS response lock flag when returned by Cloudflare | ### Cloudflare Get R2 Bucket [#cloudflare-get-r2-bucket] Reads the metadata of a single R2 object storage bucket. Requires an API token with Account Workers R2 Storage Read. #### Input [#input-30] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------ | | `accountId` | string | Yes | The Cloudflare account ID. R2 buckets are account-scoped | | `bucketName` | string | Yes | The name of the bucket to read | | `jurisdiction` | string | No | Data-residency jurisdiction the bucket lives in: default, eu, or fedramp | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | | `creation_date` | string | Creation timestamp. | | `jurisdiction` | string | Jurisdiction where objects in this bucket are guaranteed to be stored. Values: default, eu, us, fedramp, fedramp-high. | | `location` | string | Location of the bucket. Values: apac, eeur, enam, weur, wnam, oc. | | `name` | string | Name of the bucket. | | `storage_class` | string | Storage class for newly uploaded objects, unless specified otherwise. Values: Standard, InfrequentAccess. | ### Cloudflare Get R2 Bucket Cors [#cloudflare-get-r2-bucket-cors] Get the CORS policy for a bucket. #### Input [#input-31] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `bucketName` | string | Yes | Bucket name | | `apiKey` | string | Yes | Cloudflare API token | | `jurisdiction` | string | No | Jurisdiction where objects in this bucket are guaranteed to be stored. | #### Output [#output-31] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `rules` | array | rules | | ↳ `allowed` | json | Object specifying allowed origins, methods and headers for this CORS rule. | | ↳ `headers` | array | Specifies the value for the Access-Control-Allow-Headers header R2 sets when requesting objects in this bucket from a browser. Cross-origin requests that include custom headers (e.g. x-user-id) should specify these headers as AllowedHeaders. | | ↳ `methods` | array | Specifies the value for the Access-Control-Allow-Methods header R2 sets when requesting objects in a bucket from a browser. | | ↳ `origins` | array | Specifies the value for the Access-Control-Allow-Origin header R2 sets when requesting objects in a bucket from a browser. | | ↳ `exposeHeaders` | array | Specifies the headers that can be exposed back, and accessed by, the JavaScript making the cross-origin request. If you need to access headers beyond the safelisted response headers, such as Content-Encoding or cf-cache-status, you must specify it here. | | ↳ `id` | string | Identifier for this rule. | | ↳ `maxAgeSeconds` | number | Specifies the amount of time (in seconds) browsers are allowed to cache CORS preflight responses. Browsers may limit this to 2 hours or less, even if the maximum value (86400) is specified. | ### Cloudflare Get R2 Bucket Lifecycle [#cloudflare-get-r2-bucket-lifecycle] Get object lifecycle rules for a bucket. #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `bucketName` | string | Yes | Bucket name | | `apiKey` | string | Yes | Cloudflare API token | | `jurisdiction` | string | No | Jurisdiction where objects in this bucket are guaranteed to be stored. | #### Output [#output-32] | Parameter | Type | Description | | ----------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `rules` | array | rules | | ↳ `abortMultipartUploadsTransition` | json | Transition to abort ongoing multipart uploads. | | ↳ `condition` | json | Condition for lifecycle transitions to apply after an object reaches an age in seconds. | | ↳ `maxAge` | number | maxAge | | ↳ `type` | string | type Values: Age. | | ↳ `conditions` | json | Conditions that apply to all transitions of this rule. | | ↳ `prefix` | string | Transitions will only apply to objects/uploads in the bucket that start with the given prefix, an empty prefix can be provided to scope rule to all objects/uploads. | | ↳ `deleteObjectsTransition` | json | Transition to delete objects. | | ↳ `condition` | json | Condition for lifecycle transitions to apply on a specific date. | | ↳ `maxAge` | number | maxAge | | ↳ `type` | string | type Values: Age, Date. | | ↳ `date` | string | date | | ↳ `enabled` | boolean | Whether or not this rule is in effect. | | ↳ `id` | string | Unique identifier for this rule. | | ↳ `storageClassTransitions` | array | Transitions to change the storage class of objects. | | ↳ `condition` | json | Condition for lifecycle transitions to apply on a specific date. | | ↳ `maxAge` | number | maxAge | | ↳ `type` | string | type Values: Age, Date. | | ↳ `date` | string | date | | ↳ `storageClass` | string | storageClass Values: InfrequentAccess. | ### Cloudflare Get Ruleset [#cloudflare-get-ruleset] Reads a single zone ruleset including every rule it contains, in evaluation order. Requires an API token with Zone WAF Read (or another matching ruleset Read permission). #### Input [#input-33] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------- | | `zoneId` | string | Yes | The zone ID that owns the ruleset | | `rulesetId` | string | Yes | The ruleset ID to read | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-33] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Get Phase Entry Point Ruleset [#cloudflare-get-phase-entry-point-ruleset] Reads the entry point ruleset for a phase on a zone, including all of its rules. This is how you find the ruleset ID you need before adding, updating, or deleting a rule — for example http\_request\_firewall\_custom for WAF custom rules, http\_request\_firewall\_managed for managed-ruleset deployments and overrides, or http\_ratelimit for rate limiting rules. Requires an API token with Zone WAF Read (or another matching ruleset Read permission). #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to read the phase entry point for | | `phase` | string | Yes | The ruleset phase, e.g. http\_request\_firewall\_custom, http\_request\_firewall\_managed, http\_ratelimit, http\_request\_transform, http\_request\_dynamic\_redirect | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-34] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Get Tunnel [#cloudflare-get-tunnel] Reads a single Cloudflare Tunnel (cloudflared), including its health status and active connector connections. Requires an API token with Account Cloudflare Tunnel Read. #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Tunnels are account-scoped | | `tunnelId` | string | Yes | The tunnel ID to read | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-35] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_tag` | string | Cloudflare account ID | | `config_src` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Values: local, cloudflare. | | `connections` | array | The Cloudflare Tunnel connections between your origin and Cloudflare's edge. | | ↳ `client_id` | string | UUID of the Cloudflare Tunnel connector. | | ↳ `client_version` | string | The cloudflared version used to establish this connection. | | ↳ `colo_name` | string | The Cloudflare data center used for this connection. | | ↳ `id` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `is_pending_reconnect` | boolean | Cloudflare continues to track connections for several minutes after they disconnect. This is an optimization to improve latency and reliability of reconnecting. If `true`, the connection has disconnected but is still being tracked. If `false`, the connection is actively serving traffic. | | ↳ `opened_at` | string | Timestamp of when the connection was established. | | ↳ `origin_ip` | string | The public IP address of the host running cloudflared. | | ↳ `uuid` | string | UUID of the Cloudflare Tunnel connection. | | `conns_active_at` | string | Timestamp of when the tunnel established at least one connection to Cloudflare's edge. If `null`, the tunnel is inactive. | | `conns_inactive_at` | string | Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge). If `null`, the tunnel is active. | | `created_at` | string | Timestamp of when the resource was created. | | `deleted_at` | string | Timestamp of when the resource was deleted. If `null`, the resource has not been deleted. | | `id` | string | UUID of the tunnel. | | `metadata` | json | Metadata associated with the tunnel. | | `name` | string | A user-friendly name for a tunnel. | | `remote_config` | boolean | If `true`, the tunnel can be configured remotely from the Zero Trust dashboard. If `false`, the tunnel must be configured locally on the origin machine. | | `status` | string | The status of the tunnel. | | `tun_type` | string | The type of tunnel. Values: cfd\_tunnel, warp\_connector, warp, magic, ip\_sec, gre, cni. | ### Cloudflare Get Tunnel Configuration [#cloudflare-get-tunnel-configuration] Reads the configuration of a remotely-managed Cloudflare Tunnel — its ingress rules, origin request settings, and WARP routing. Only tunnels whose configuration source is "cloudflare" have a remote configuration; locally-managed tunnels keep it in their own config file. Requires an API token with Account Cloudflare Tunnel Read. #### Input [#input-36] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Tunnels are account-scoped | | `tunnelId` | string | Yes | The tunnel ID to read the configuration for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-36] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_id` | string | Identifier. | | `config` | json | The tunnel configuration and ingress rules. | | ↳ `ingress` | array | List of public hostname definitions. At least one ingress rule needs to be defined for the tunnel. | | ↳ `hostname` | string | Public hostname for this service. | | ↳ `originRequest` | json | Configuration parameters for the public hostname specific connection settings between cloudflared and origin server. | | ↳ `access` | json | For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header. | | ↳ `audTag` | array | Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API. | | ↳ `required` | boolean | Deny traffic that has not fulfilled Access authorization. | | ↳ `teamName` | string | teamName | | ↳ `caPool` | string | Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare. | | ↳ `connectTimeout` | number | Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout. | | ↳ `disableChunkedEncoding` | boolean | Disables chunked transfer encoding. Useful if you are running a WSGI server. | | ↳ `http2Origin` | boolean | Attempt to connect to origin using HTTP2. Origin must be configured as https. | | ↳ `httpHostHeader` | string | Sets the HTTP Host header on requests sent to the local service. | | ↳ `keepAliveConnections` | number | Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections. | | ↳ `keepAliveTimeout` | number | Timeout after which an idle keepalive connection can be discarded. | | ↳ `matchSNItoHost` | boolean | Auto configure the Hostname on the origin server certificate. | | ↳ `noHappyEyeballs` | boolean | Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols. | | ↳ `noTLSVerify` | boolean | Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted. | | ↳ `originServerName` | string | Hostname that cloudflared should expect from your origin server certificate. | | ↳ `proxyType` | string | cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: "" for the regular proxy and "socks" for a SOCKS5 proxy. | | ↳ `tcpKeepAlive` | number | The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server. | | ↳ `tlsTimeout` | number | Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server. | | ↳ `path` | string | Requests with this path route to this public hostname. | | ↳ `service` | string | Protocol and address of destination server. Supported protocols: http\://, https\://, unix://, tcp\://, ssh://, rdp\://, unix+tls\://, smb://. Alternatively can return a HTTP status code http\_status:\[code] e.g. 'http\_status:404'. | | ↳ `originRequest` | json | Configuration parameters for the public hostname specific connection settings between cloudflared and origin server. | | ↳ `access` | json | For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header. | | ↳ `audTag` | array | Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API. | | ↳ `required` | boolean | Deny traffic that has not fulfilled Access authorization. | | ↳ `teamName` | string | teamName | | ↳ `caPool` | string | Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare. | | ↳ `connectTimeout` | number | Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout. | | ↳ `disableChunkedEncoding` | boolean | Disables chunked transfer encoding. Useful if you are running a WSGI server. | | ↳ `http2Origin` | boolean | Attempt to connect to origin using HTTP2. Origin must be configured as https. | | ↳ `httpHostHeader` | string | Sets the HTTP Host header on requests sent to the local service. | | ↳ `keepAliveConnections` | number | Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections. | | ↳ `keepAliveTimeout` | number | Timeout after which an idle keepalive connection can be discarded. | | ↳ `matchSNItoHost` | boolean | Auto configure the Hostname on the origin server certificate. | | ↳ `noHappyEyeballs` | boolean | Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols. | | ↳ `noTLSVerify` | boolean | Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted. | | ↳ `originServerName` | string | Hostname that cloudflared should expect from your origin server certificate. | | ↳ `proxyType` | string | cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: "" for the regular proxy and "socks" for a SOCKS5 proxy. | | ↳ `tcpKeepAlive` | number | The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server. | | ↳ `tlsTimeout` | number | Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server. | | ↳ `warp-routing` | json | Enable private network access from WARP users to private network routes. This is enabled if the tunnel has an assigned route. | | ↳ `enabled` | boolean | enabled | | `created_at` | string | created at | | `source` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel's configuration on the Zero Trust dashboard. Values: local, cloudflare. | | `tunnel_id` | string | UUID of the tunnel. | | `version` | number | The version of the Tunnel Configuration. | ### Cloudflare Get Tunnel Token [#cloudflare-get-tunnel-token] Gets the connector token used to run a remotely managed Cloudflare Tunnel with cloudflared. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------- | | `accountId` | string | Yes | Cloudflare account ID | | `tunnelId` | string | Yes | Cloudflare Tunnel ID | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-37] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `token` | string | Token for connecting cloudflared to the tunnel | ### Cloudflare Get Worker Route [#cloudflare-get-worker-route] Returns information about a Worker route, including URL pattern and Worker. #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `zoneId` | string | Yes | Zone id | | `routeId` | string | Yes | Route id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-38] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Identifier. | | `pattern` | string | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | `script` | string | Name of the script to run if the route matches. | ### Cloudflare Get Worker Script Settings [#cloudflare-get-worker-script-settings] Reads the deployment settings of a single Workers script — bindings, compatibility date and flags, limits, observability, placement, and tail consumers. The plain "get script" endpoint in the Cloudflare API returns raw JavaScript source rather than JSON, so this settings endpoint is the structured way to inspect one script. Requires an API token with Account Workers Scripts Read. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Workers scripts are account-scoped | | `scriptName` | string | Yes | The name of the Workers script to read settings for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-39] | Parameter | Type | Description | | --------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `annotations` | json | Annotations for the Worker version. Annotations are not inherited across settings updates; omitting this field means the new version will have no annotations. | | ↳ `workers/message` | string | Human-readable message about the version. Truncated to 1000 bytes if longer. | | ↳ `workers/tag` | string | User-provided identifier for the version. Maximum 100 bytes. | | ↳ `workers/triggered_by` | string | Operation that triggered the creation of the version. This is read-only and set by the server. | | `bindings` | array | List of bindings attached to a Worker. You can find more about bindings on our docs: [https://developers.cloudflare.com/workers/configuration/multipart-upload-metadata/#bindings](https://developers.cloudflare.com/workers/configuration/multipart-upload-metadata/#bindings). | | ↳ `name` | string | A JavaScript variable name for the binding. | | ↳ `type` | string | The kind of resource that the binding provides. | | ↳ `instance_name` | string | The user-chosen instance name. Must exist at deploy time. The worker can search, chat, update, and manage items/jobs on this instance. | | ↳ `namespace` | string | The name of the dispatch namespace. | | ↳ `dataset` | string | The name of the dataset to bind to. | | ↳ `database_id` | string | Identifier of the D1 database to bind to. | | ↳ `id` | string | Identifier of the Hyperdrive connection to bind to. | | ↳ `part` | string | The name of the file containing the WebAssembly module content. Only accepted for `service worker syntax` Workers. | | ↳ `outbound` | json | Outbound worker. | | ↳ `params` | array | Pass information from the Dispatch Worker to the Outbound Worker through the parameters. | | ↳ `name` | string | Name of the parameter. | | ↳ `worker` | json | Outbound worker. | | ↳ `entrypoint` | string | Entrypoint to invoke on the outbound worker. | | ↳ `environment` | string | Environment of the outbound worker. | | ↳ `service` | string | Name of the outbound worker. | | ↳ `class_name` | string | Class name of the Workflow. Should only be provided if the Workflow belongs to this script. | | ↳ `dispatch_namespace` | string | The dispatch namespace the Durable Object script belongs to. | | ↳ `environment` | string | Optional environment if the Worker utilizes one. | | ↳ `namespace_id` | string | Identifier of the rate limit namespace to bind to. | | ↳ `script_name` | string | Script name that contains the Workflow. If not provided, defaults to this script name. | | ↳ `old_name` | string | The old name of the inherited binding. If set, the binding will be renamed from `old_name` to `name` in the new version. If not set, the binding will keep the same name between versions. | | ↳ `version_id` | string | Identifier for the version to inherit the binding from. | | ↳ `json` | json | JSON data to use. | | ↳ `certificate_id` | string | Identifier of the certificate to bind to. | | ↳ `text` | string | The secret value to use. | | ↳ `pipeline` | string | Name of the Pipeline to bind to. | | ↳ `stream` | string | ID of a K2 stream owned by the account deploying the Worker. | | ↳ `queue_name` | string | Name of the Queue to bind to. | | ↳ `simple` | json | The rate limit configuration. | | ↳ `limit` | number | The limit (requests per period). | | ↳ `mitigation_timeout` | number | Duration in seconds to apply the mitigation action after the rate limit is exceeded. Valid values are 0 (disabled), 10, or multiples of 60 up to 86400. Must be greater than or equal to the period when non-zero. | | ↳ `period` | number | The period in seconds. | | ↳ `bucket_name` | string | R2 bucket to bind to. | | ↳ `jurisdiction` | string | The \[jurisdiction]\([https://developers.cloudflare.com/r2/reference/data-location/#jurisdictional-restrictions](https://developers.cloudflare.com/r2/reference/data-location/#jurisdictional-restrictions)) of the R2 bucket. Values: eu, fedramp, fedramp-high, us. | | ↳ `allowed_destination_addresses` | array | List of allowed destination addresses. | | ↳ `allowed_sender_addresses` | array | List of allowed sender addresses. | | ↳ `destination_address` | string | Destination address for the email. | | ↳ `entrypoint` | string | Entrypoint to invoke on the target Worker. | | ↳ `service` | string | Name of Worker to bind to. | | ↳ `index_name` | string | Name of the Vectorize index to bind to. | | ↳ `secret_name` | string | Name of the secret in the store. | | ↳ `store_id` | string | ID of the store containing the secret. | | ↳ `app_id` | string | ID of the Flagship app to bind to for feature flag evaluation. | | ↳ `algorithm` | json | Algorithm-specific key parameters. \[Learn more]\([https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#algorithm](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#algorithm)). | | ↳ `format` | string | Data format of the key. \[Learn more]\([https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#format](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#format)). Values: raw, pkcs8, spki, jwk. | | ↳ `key_base64` | string | Base64-encoded key data. Required if `format` is "raw", "pkcs8", or "spki". | | ↳ `key_jwk` | json | Key data in \[JSON Web Key]\([https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#json\_web\_key](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#json_web_key)) format. Required if `format` is "jwk". | | ↳ `usages` | array | Allowed operations with the key. \[Learn more]\([https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#keyUsages](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#keyUsages)). | | ↳ `workflow_name` | string | Name of the Workflow to bind to. | | ↳ `service_id` | string | Identifier of the VPC service to bind to. | | ↳ `identity` | string | Enables Gateway identity for the binding. Requires network\_id to be "cf1:network" and cannot be combined with tunnel\_id. Values: runtime-email-alpha. | | ↳ `network_id` | string | Identifier of the network to bind to. Only "cf1:network" is currently supported. Mutually exclusive with tunnel\_id. | | ↳ `tunnel_id` | string | UUID of the Cloudflare Tunnel to bind to. Mutually exclusive with network\_id. | | `cache_options` | json | Global CacheW configuration for the Worker. When caching is on, the platform provisions a `cloudflare.app` zone for the Worker. A `type: worker` entry in the `exports` map can override this value for a single entrypoint. | | ↳ `cross_version_cache` | boolean | Whether cached responses are shared across Worker version uploads. This is independent of `enabled`. It can stay true while caching is off, so the preference survives turning caching off and back on. | | ↳ `enabled` | boolean | Whether caching is enabled for this Worker. | | `compatibility_date` | string | Date indicating targeted support in the Workers runtime. Backwards incompatible fixes to the runtime following this date will not affect this Worker. | | `compatibility_flags` | array | Flags that enable or disable certain features in the Workers runtime. Used to enable upcoming features or opt in or out of specific changes not included in a `compatibility_date`. | | `exports` | json | Declarative exports for the Worker, keyed by export name. Worker entrypoint entries (`type: worker`) carry cache configuration for that entrypoint. Durable Object entries (`type: durable-object`) are also configured here and drive namespace reconciliation. At most 100 entries; class names are at most 128 characters. | | `exports_reconciliation` | json | Summary of what the declarative exports reconciliation did on this upload. | | ↳ `created` | array | Class names for which a new namespace was provisioned. | | ↳ `deleted` | array | Class names whose namespace was deleted by a `deleted` tombstone. | | ↳ `info` | array | Non-blocking info entries (stale tombstones, tombstone applied with class still in code). See `exports_reconciliation_info`. | | ↳ `class` | string | The class name the info entry is about. | | ↳ `message` | string | Human-readable explanation. | | ↳ `namespace_id` | string | The provisioned namespace the entry relates to, when applicable. | | ↳ `referencing_scripts` | array | Other Workers in the account that still bind to the affected class. Advisory: while non-empty the tombstone is not yet safe to remove — redeploy these Workers with bindings re-pointed first. | | ↳ `scenario` | string | Stable, machine-readable tag identifying which reconciliation scenario produced an error, warning, or info entry. | | ↳ `removable_entries` | array | Source class names whose tombstone entry is now stale and safe to delete from `exports` (no remaining referencing scripts). | | ↳ `renamed` | array | Applied `renamed` tombstones. | | ↳ `from` | string | The original (source) class name. | | ↳ `to` | string | The new class name (`renamed_to`). | | ↳ `transfer_pending` | array | Phase-1 transfer hints recorded on the target side. | | ↳ `class` | string | The target-side class name awaiting transfer. | | ↳ `from` | string | The source script the namespace will be transferred from. | | ↳ `transferred` | array | Committed `transferred` tombstones (phase-2). | | ↳ `class` | string | The source class name that was transferred. | | ↳ `phase` | string | The transfer phase. Currently always `committed`. Values: committed. | | ↳ `to` | string | The destination script that now owns the namespace. | | ↳ `updated` | array | Class names whose provisioned namespace was mutated in place. | | ↳ `warnings` | array | Non-blocking warnings. See `exports_reconciliation_warning`. | | ↳ `class` | string | The class name the warning is about. | | ↳ `message` | string | Human-readable explanation of the warning. | | ↳ `namespace_id` | string | The provisioned namespace the warning relates to, when applicable. | | ↳ `scenario` | string | Stable, machine-readable tag identifying which reconciliation scenario produced an error, warning, or info entry. | | `limits` | json | Limits to apply for this Worker. | | ↳ `cpu_ms` | number | The amount of CPU time this Worker can use in milliseconds. | | ↳ `subrequests` | number | The number of subrequests this Worker can make per request. | | `logpush` | boolean | Whether Logpush is turned on for the Worker. | | `migrations` | json | A single set of migrations to apply. | | ↳ `new_tag` | string | Tag to set as the latest migration tag. | | ↳ `old_tag` | string | Tag used to verify against the latest migration tag for this Worker. If they don't match, the upload is rejected. | | ↳ `deleted_classes` | array | A list of classes to delete Durable Object namespaces from. | | ↳ `new_classes` | array | A list of classes to create Durable Object namespaces from. | | ↳ `new_sqlite_classes` | array | A list of classes to create Durable Object namespaces with SQLite from. | | ↳ `renamed_classes` | array | A list of classes with Durable Object namespaces that were renamed. | | ↳ `from` | string | from | | ↳ `to` | string | to | | ↳ `transferred_classes` | array | A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker. | | ↳ `from` | string | from | | ↳ `from_script` | string | from script | | ↳ `to` | string | to | | ↳ `steps` | array | Migrations to apply in order. | | ↳ `deleted_classes` | array | A list of classes to delete Durable Object namespaces from. | | ↳ `new_classes` | array | A list of classes to create Durable Object namespaces from. | | ↳ `new_sqlite_classes` | array | A list of classes to create Durable Object namespaces with SQLite from. | | ↳ `renamed_classes` | array | A list of classes with Durable Object namespaces that were renamed. | | ↳ `from` | string | from | | ↳ `to` | string | to | | ↳ `transferred_classes` | array | A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker. | | ↳ `from` | string | from | | ↳ `from_script` | string | from script | | ↳ `to` | string | to | | `observability` | json | Observability settings for the Worker. | | ↳ `enabled` | boolean | Whether observability is enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for incoming requests. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `issues` | json | Real-time Issues settings for the Worker. | | ↳ `enabled` | boolean | Whether real-time Issues are enabled for the Worker. | | ↳ `logs` | json | Log settings for the Worker. | | ↳ `destinations` | array | A list of destinations where logs will be exported to. | | ↳ `enabled` | boolean | Whether logs are enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `invocation_logs` | boolean | Whether \[invocation logs]\([https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs)) are enabled for the Worker. | | ↳ `persist` | boolean | Whether log persistence is enabled for the Worker. | | ↳ `redact_query_string` | boolean | Whether query strings are removed from request URLs in logs and traces. | | ↳ `traces` | json | Trace settings for the Worker. | | ↳ `destinations` | array | A list of destinations where traces will be exported to. | | ↳ `enabled` | boolean | Whether traces are enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `persist` | boolean | Whether trace persistence is enabled for the Worker. | | ↳ `propagation_policy` | string | Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. | | `placement` | json | Configuration for \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). Specify mode='smart' for Smart Placement, or one of region/hostname/host. | | ↳ `mode` | string | Targeted placement mode. Values: smart, targeted. | | ↳ `region` | string | Cloud region for targeted placement in format 'provider:region'. | | ↳ `hostname` | string | HTTP hostname for targeted placement. | | ↳ `host` | string | TCP host and port for targeted placement. | | ↳ `target` | array | Array of placement targets (currently limited to single target). | | ↳ `region` | string | Cloud region in format 'provider:region'. | | ↳ `hostname` | string | HTTP hostname for targeted placement. | | ↳ `host` | string | TCP host:port for targeted placement. | | `tags` | array | Tags associated with the Worker. | | `tail_consumers` | array | List of Workers that will consume logs from the attached Worker. | | ↳ `environment` | string | Optional environment if the Worker utilizes one. | | ↳ `namespace` | string | Optional dispatch namespace the script belongs to. | | ↳ `service` | string | Name of Worker that is to be the consumer. | | `usage_model` | string | Usage model for the Worker invocations. Values: standard, bundled, unbound. | ### Cloudflare Get Zone [#cloudflare-get-zone] Gets details for a specific zone (domain) by its ID. #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `zoneId` | string | Yes | The zone ID to retrieve details for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-40] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account` | json | The account the zone belongs to. | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the account. | | `activated_on` | string | The last time proof of ownership was detected and the zone was made active. | | `cname_suffix` | string | Allows the customer to use a custom apex. *Tenants Only Configuration*. | | `created_on` | string | When the zone was created. | | `development_mode` | number | The interval (in seconds) from when development mode expires (positive integer) or last expired (negative integer) for the domain. If development mode has never been enabled, this value is 0. | | `id` | string | Identifier | | `meta` | json | Metadata about the zone. | | ↳ `cdn_only` | boolean | The zone is only configured for CDN. | | ↳ `custom_certificate_quota` | number | Number of Custom Certificates the zone can have. | | ↳ `dns_only` | boolean | The zone is only configured for DNS. | | ↳ `foundation_dns` | boolean | The zone is setup with Foundation DNS. | | ↳ `page_rule_quota` | number | Number of Page Rules a zone can have. | | ↳ `phishing_detected` | boolean | The zone has been flagged for phishing. | | ↳ `step` | number | step | | `modified_on` | string | When the zone was last modified. | | `name` | string | The domain name. Per \[RFC 1035]\([https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4)) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters. | | `name_servers` | array | The name servers Cloudflare assigns to a zone. | | `original_dnshost` | string | DNS host at the time of switching to Cloudflare. | | `original_name_servers` | array | Original name servers before moving to Cloudflare. | | `original_registrar` | string | Registrar for the domain at the time of switching to Cloudflare. | | `owner` | json | The owner of the zone. | | ↳ `id` | string | Identifier | | ↳ `name` | string | Name of the owner. | | ↳ `type` | string | The type of owner. | | `paused` | boolean | Indicates whether the zone is only using Cloudflare DNS services. A true value means the zone will not receive security or performance benefits. | | `permissions` | array | Legacy permissions based on legacy user membership information. | | `plan` | json | A Zones subscription information. | | ↳ `can_subscribe` | boolean | States if the subscription can be activated. | | ↳ `currency` | string | The denomination of the customer. | | ↳ `externally_managed` | boolean | If this Zone is managed by another company. | | ↳ `frequency` | string | How often the customer is billed. | | ↳ `id` | string | Identifier | | ↳ `is_subscribed` | boolean | States if the subscription active. | | ↳ `legacy_discount` | boolean | If the legacy discount applies to this Zone. | | ↳ `legacy_id` | string | The legacy name of the plan. | | ↳ `name` | string | Name of the owner. | | ↳ `price` | number | How much the customer is paying. | | `status` | string | The zone status on Cloudflare. Values: initializing, pending, active, moved. | | `tenant` | json | The root organizational unit that this zone belongs to (such as a tenant or organization). | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the Tenant account. | | `tenant_unit` | json | The immediate parent organizational unit that this zone belongs to (such as under a tenant or sub-organization). | | ↳ `id` | string | Identifier | | `type` | string | A full zone implies that DNS is hosted with Cloudflare. A partial zone is typically a partner-hosted zone or a CNAME setup. Values: full, partial, secondary, internal. | | `vanity_name_servers` | array | An array of domains used for custom name servers. This is only available for Business and Enterprise plans. | | `verification_key` | string | Verification key for partial zone setup. | ### Cloudflare Get Zone Settings [#cloudflare-get-zone-settings] Reads zone settings such as SSL mode, minimum TLS version, security level, and caching level. Cloudflare retired the endpoint that read every setting in one request, so each setting is read individually — name the ones you need to keep the read small. Defaults to ssl, always\_use\_https, min\_tls\_version, tls\_1\_3, security\_level, cache\_level, browser\_cache\_ttl, development\_mode, rocket\_loader, email\_obfuscation, hotlink\_protection, ip\_geolocation, http2, http3, websockets. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to get settings for | | `settingIds` | string | No | Comma-separated setting IDs to read, e.g. "ssl,min\_tls\_version,security\_level". Leave blank to read the default set (ssl, always\_use\_https, min\_tls\_version, tls\_1\_3, security\_level, cache\_level, browser\_cache\_ttl, development\_mode, rocket\_loader, email\_obfuscation, hotlink\_protection, ip\_geolocation, http2, http3, websockets). At most 40 settings per call. | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-41] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `settings` | array | The zone settings that were readable | | ↳ `id` | string | Setting identifier (e.g., ssl, cache\_level, security\_level, always\_use\_https) | | ↳ `value` | string | Setting value as a string. Simple values returned as-is (e.g., "full", "on"). SSL Recommender returns its enabled flag. Complex values are JSON-stringified (e.g., \{"css":"on","html":"on","js":"on"}). | | ↳ `editable` | boolean | Whether the setting can be modified for the current zone plan | | ↳ `modified_on` | string | ISO 8601 timestamp when the setting was last modified | | ↳ `time_remaining` | number | Development mode countdown, in seconds. Cloudflare documents this only on the zones\_development\_mode setting, where it is the interval from when development mode expires (positive) or last expired (negative) | | `unreadable` | array | Requested settings Cloudflare refused, typically because the zone plan does not expose them or the setting ID does not exist | | ↳ `id` | string | The requested setting identifier | | ↳ `error` | string | Why Cloudflare would not return the setting | ### Cloudflare List Access Applications [#cloudflare-list-access-applications] Lists the Cloudflare Access (Zero Trust) applications protecting an account. Requires an API token with Account Access: Apps and Policies Read. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------- | | `target_attributes` | string | No | Target Criteria attributes in key=value format. | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `name` | string | No | Filter by application name | | `domain` | string | No | Filter by the primary hostname the application secures | | `aud` | string | No | Filter by application audience (AUD) tag | | `search` | string | No | Free-text search across applications | | `exact` | boolean | No | Whether the name and domain filters must match exactly | | `page` | number | No | Page number for pagination | | `per_page` | number | No | Number of applications per page | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-42] | Parameter | Type | Description | | --------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `applications` | array | Applications | | ↳ `aud` | string | Audience tag. | | ↳ `created_at` | string | created at | | ↳ `id` | string | UUID. | | ↳ `updated_at` | string | updated at | | ↳ `allowed_idps` | array | The identity providers your users can select when connecting to this application. Defaults to all IdPs configured in your account. | | ↳ `destinations` | array | List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. | | ↳ `overrides` | array | Rules that override how Access handles requests to this destination. Each rule can make a matching path public, bypassing Access authentication. Overrides are supported for public destinations and Worker destinations. | | ↳ `behavior` | string | The behavior to apply to matching requests. Values: public. | | ↳ `path_pattern` | string | The request path pattern to match. Wildcards (`*`) are supported, but each path segment may have at most one wildcard. Unlike the `uri` in public destinations, override path patterns do not implicitly cover subpaths; to do that, use a wildcard. | | ↳ `type` | string | type Values: public, private, via\_mcp\_server\_portal, worker, preview\_worker, all\_workers, all\_preview\_workers. | | ↳ `uri` | string | The URI of the destination. Public destinations' URIs can include a domain and path with \[wildcards]\([https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)). | | ↳ `cidr` | string | The CIDR range of the destination. Single IPs will be computed as /32. | | ↳ `hostname` | string | The hostname of the destination. Matches a valid SNI served by an HTTPS origin. | | ↳ `l4_protocol` | string | The L4 protocol of the destination. When omitted, both UDP and TCP traffic will match. Values: tcp, udp. | | ↳ `port_range` | string | The port range of the destination. Can be a single port or a range of ports. When omitted, all ports will match. | | ↳ `vnet_id` | string | The VNET ID to match the destination. When omitted, all VNETs will match. | | ↳ `mcp_server_id` | string | The MCP server id configured in ai-controls. | | ↳ `worker_id` | string | The ID of the Cloudflare Worker whose preview deployments to protect with Access. | | ↳ `domain` | string | The primary hostname and path secured by Access. This domain will be displayed if the app is visible in the App Launcher. | | ↳ `name` | string | The name of the application. | | ↳ `oauth_configuration` | json | **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. | | ↳ `dynamic_client_registration` | json | Settings for OAuth dynamic client registration. | | ↳ `allow_any_on_localhost` | boolean | Allows any client with redirect URIs on localhost. | | ↳ `allow_any_on_loopback` | boolean | Allows any client with redirect URIs on 127.0.0.1. | | ↳ `allowed_uris` | array | The URIs that are allowed as redirect URIs for dynamically registered clients. HTTP and HTTPS paths may end in `/*` to match all sub-paths. Custom-scheme URIs must be explicitly configured and match exactly. | | ↳ `enabled` | boolean | Whether dynamic client registration is enabled. | | ↳ `enabled` | boolean | Whether the OAuth configuration is enabled for this application. When set to `false`, Access will not handle OAuth for this application. Defaults to `true` if omitted. Values: True. | | ↳ `grant` | json | Settings for OAuth grant behavior. | | ↳ `access_token_lifetime` | string | The lifetime of the access token. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | ↳ `session_duration` | string | The duration of the OAuth session. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | ↳ `self_hosted_domains` | array | List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | ↳ `type` | string | The application type. Values: end\_user, self\_hosted, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, dash\_sso, infrastructure, rdp, mcp, mcp\_portal, proxy\_endpoint. | | ↳ `user_populations` | array | The single user population associated with this application. | | ↳ `allow_authenticate_via_warp` | boolean | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | ↳ `allow_iframe` | boolean | Enables loading application content in an iFrame. | | ↳ `app_launcher_visible` | boolean | Displays the application in the App Launcher. | | ↳ `auto_redirect_to_identity` | boolean | When set to `true`, users skip the identity provider selection step during login. You must specify only one identity provider in allowed\_idps. | | ↳ `cors_headers` | json | cors headers | | ↳ `allow_all_headers` | boolean | Allows all HTTP request headers. | | ↳ `allow_all_methods` | boolean | Allows all HTTP request methods. | | ↳ `allow_all_origins` | boolean | Allows all origins. | | ↳ `allow_credentials` | boolean | When set to `true`, includes credentials (cookies, authorization headers, or TLS client certificates) with requests. | | ↳ `allowed_headers` | array | Allowed HTTP request headers. | | ↳ `allowed_methods` | array | Allowed HTTP request methods. | | ↳ `allowed_origins` | array | Allowed origins. | | ↳ `max_age` | number | The maximum number of seconds the results of a preflight request can be cached. | | ↳ `custom_deny_message` | string | The custom error message shown to a user when they are denied access to the application. | | ↳ `custom_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing identity-based rules. | | ↳ `custom_non_identity_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | ↳ `custom_pages` | array | The custom pages that will be displayed when applicable for this application | | ↳ `eager_redirect_cookie_setting` | boolean | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | ↳ `enable_binding_cookie` | boolean | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | ↳ `http_only_cookie_attribute` | boolean | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | ↳ `logo_url` | string | The image URL for the logo shown in the App Launcher dashboard. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | ↳ `options_preflight_bypass` | boolean | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | ↳ `path_cookie_attribute` | boolean | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | ↳ `read_service_tokens_from_header` | string | Allows matching Access Service Tokens passed HTTP in a single header with this name. | | ↳ `same_site_cookie_attribute` | string | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | ↳ `scim_config` | json | Configuration for provisioning to this application via SCIM. This is currently in closed beta. | | ↳ `authentication` | json | Multiple authentication schemes | | ↳ `password` | string | Password used to authenticate with the remote SCIM service. | | ↳ `scheme` | string | The authentication scheme to use when making SCIM requests to this application. Values: httpbasic, oauthbearertoken, oauth2, access\_service\_token. | | ↳ `user` | string | User name used to authenticate with the remote SCIM service. | | ↳ `token` | string | Token used to authenticate with the remote SCIM service. | | ↳ `authorization_url` | string | URL used to generate the auth code used during token generation. | | ↳ `client_id` | string | Client ID of the Access service token used to authenticate with the remote service. | | ↳ `client_secret` | string | Client secret of the Access service token used to authenticate with the remote service. | | ↳ `scopes` | array | The authorization scopes to request when generating the token used to authenticate with the remove SCIM service. | | ↳ `token_url` | string | URL used to generate the token used to authenticate with the remote SCIM service. | | ↳ `deactivate_on_delete` | boolean | If false, propagates DELETE requests to the target application for SCIM resources. If true, sets 'active' to false on the SCIM resource. Note: Some targets do not support DELETE operations. | | ↳ `enabled` | boolean | Whether SCIM provisioning is turned on for this application. | | ↳ `idp_uid` | string | The UID of the IdP to use as the source for SCIM resources to provision to this application. | | ↳ `mappings` | array | A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned. | | ↳ `enabled` | boolean | Whether or not this mapping is enabled. | | ↳ `filter` | string | A \[SCIM filter expression]\([https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2)) that matches resources that should be provisioned to this application. | | ↳ `operations` | json | Whether or not this mapping applies to creates, updates, or deletes. | | ↳ `create` | boolean | Whether or not this mapping applies to create (POST) operations. | | ↳ `delete` | boolean | Whether or not this mapping applies to DELETE operations. | | ↳ `update` | boolean | Whether or not this mapping applies to update (PATCH/PUT) operations. | | ↳ `schema` | string | Which SCIM resource type this mapping applies to. | | ↳ `strictness` | string | The level of adherence to outbound resource schemas when provisioning to this mapping. ‘Strict’ removes unknown values, while ‘passthrough’ passes unknown values to the target. Values: strict, passthrough. | | ↳ `transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms the resource before provisioning it in the application. | | ↳ `remote_uri` | string | The base URI for the application's SCIM-compatible API. | | ↳ `service_auth_401_redirect` | boolean | Returns a 401 status code when the request is blocked by a Service Auth policy. | | ↳ `session_duration` | string | The amount of time that tokens issued for this application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `skip_interstitial` | boolean | Enables automatic authentication through cloudflared. | | ↳ `tags` | array | The tags you want assigned to an application. Tags are used to filter applications in the App Launcher dashboard. | | ↳ `use_clientless_isolation_app_launcher_url` | boolean | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | ↳ `policies` | array | policies | | ↳ `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | ↳ `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | ↳ `connection_rules` | json | The rules that define how users may connect to targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | ↳ `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | ↳ `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | ↳ `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `created_at` | string | created at | | ↳ `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | The UUID of the policy | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access policy. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | ↳ `account_id` | string | Identifier. | | ↳ `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | | ↳ `saas_app` | json | saas app | | ↳ `auth_type` | string | Identifier of the authentication protocol used for the saas app. Required for OIDC. Values: saml, oidc. | | ↳ `consumer_service_url` | string | The service provider's endpoint that is responsible for receiving and parsing a SAML assertion. | | ↳ `created_at` | string | created at | | ↳ `custom_attributes` | array | custom attributes | | ↳ `friendly_name` | string | The SAML FriendlyName of the attribute. | | ↳ `name` | string | The name of the attribute. | | ↳ `name_format` | string | A globally unique name for an identity or service provider. Values: urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified, urn:oasis:names:tc:SAML:2.0:attrname-format:basic, urn:oasis:names:tc:SAML:2.0:attrname-format:uri. | | ↳ `required` | boolean | If the attribute is required when building a SAML assertion. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP attribute. | | ↳ `name_by_idp` | array | A mapping from IdP ID to attribute name. | | ↳ `idp_id` | string | The UID of the IdP. | | ↳ `source_name` | string | The name of the IdP provided attribute. | | ↳ `default_relay_state` | string | The URL that the user will be redirected to after a successful login for IDP initiated logins. | | ↳ `idp_entity_id` | string | The unique identifier for your SaaS application. | | ↳ `name_id_format` | string | The format of the name identifier sent to the SaaS application. Values: id, email. | | ↳ `name_id_transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into a NameID value for its SAML assertion. This expression should evaluate to a singular string. The output of this expression can override the `name_id_format` setting. | | ↳ `public_key` | string | The Access public certificate that will be used to verify your identity. | | ↳ `saml_attribute_transform_jsonata` | string | A \[JSONata] ([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into attribute assertions in the SAML response. | | ↳ `sp_entity_id` | string | A globally unique name for an identity or service provider. | | ↳ `sso_endpoint` | string | The endpoint where your SaaS application will send login requests. | | ↳ `updated_at` | string | updated at | | ↳ `access_token_lifetime` | string | The lifetime of the OIDC Access Token after creation. Valid units are m,h. Must be greater than or equal to 1m and less than or equal to 24h. | | ↳ `allow_pkce_without_client_secret` | boolean | If client secret should be required on the token endpoint when authorization\_code\_with\_pkce grant is used. | | ↳ `app_launcher_url` | string | The URL where this applications tile redirects users | | ↳ `client_id` | string | The application client id | | ↳ `client_secret` | string | The application client secret, only returned on POST request. | | ↳ `custom_claims` | array | custom claims | | ↳ `name` | string | The name of the claim. | | ↳ `required` | boolean | If the claim is required when building an OIDC token. | | ↳ `scope` | string | The scope of the claim. Values: groups, profile, email, openid. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP claim. | | ↳ `name_by_idp` | json | A mapping from IdP ID to claim name. | | ↳ `grant_types` | array | The OIDC flows supported by this application | | ↳ `group_filter_regex` | string | A regex to filter Cloudflare groups returned in ID token and userinfo endpoint | | ↳ `hybrid_and_implicit_options` | json | hybrid and implicit options | | ↳ `return_access_token_from_authorization_endpoint` | boolean | If an Access Token should be returned from the OIDC Authorization endpoint | | ↳ `return_id_token_from_authorization_endpoint` | boolean | If an ID Token should be returned from the OIDC Authorization endpoint | | ↳ `redirect_uris` | array | The permitted URL's for Cloudflare to return Authorization codes and Access/ID tokens | | ↳ `refresh_token_options` | json | refresh token options | | ↳ `lifetime` | string | How long a refresh token will be valid for after creation. Valid units are m,h,d. Must be longer than 1m. | | ↳ `scopes` | array | Define the user information shared with access, "offline\_access" scope will be automatically enabled if refresh tokens are enabled | | ↳ `app_launcher_logo_url` | string | The image URL of the logo shown in the App Launcher header. | | ↳ `bg_color` | string | The background color of the App Launcher page. | | ↳ `footer_links` | array | The links in the App Launcher footer. | | ↳ `name` | string | The hypertext in the footer link. | | ↳ `url` | string | the hyperlink in the footer link. | | ↳ `header_bg_color` | string | The background color of the App Launcher header. | | ↳ `landing_page_design` | json | The design of the App Launcher landing page shown to users when they log in. | | ↳ `button_color` | string | The background color of the log in button on the landing page. | | ↳ `button_text_color` | string | The color of the text in the log in button on the landing page. | | ↳ `image_url` | string | The URL of the image shown on the landing page. | | ↳ `message` | string | The message shown on the landing page. | | ↳ `title` | string | The title shown on the landing page. | | ↳ `skip_app_launcher_login_page` | boolean | Determines when to skip the App Launcher landing page. | | ↳ `target_criteria` | array | target criteria | | ↳ `exclude` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `include` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `port` | number | The port that the targets use for the chosen communication protocol. A port cannot be assigned to multiple protocols. | | ↳ `require` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `target_attributes` | json | Contains a map of target attribute keys to target attribute values. | | ↳ `protocol` | string | The communication protocol your application secures. Values: RDP. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Access Groups [#cloudflare-list-access-groups] Lists the reusable Cloudflare Access (Zero Trust) groups in an account. Groups bundle identity rules that policies can reference by ID. Requires an API token with Account Access: Organizations, Identity Providers, and Groups Read. #### Input [#input-43] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access groups are account-scoped | | `name` | string | No | Filter by group name | | `search` | string | No | Free-text search across groups | | `page` | number | No | Page number for pagination | | `per_page` | number | No | Number of groups per page | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-43] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `groups` | array | Groups | | ↳ `created_at` | string | created at | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | UUID. | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `is_default` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access group. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Access Identity Providers [#cloudflare-list-access-identity-providers] Lists the identity providers configured for Cloudflare Access (Zero Trust) in an account, such as Okta, Entra ID, Google Workspace, or a one-time PIN. Use the returned IDs to restrict an application with allowed\_idps. Requires an API token with Account Access: Organizations, Identity Providers, and Groups Read. #### Input [#input-44] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `scim_enabled` | string | No | Indicates to Access to only retrieve identity providers that have the System for Cross-Domain Identity Management (SCIM) enabled. | | `page` | number | No | Page number of results. | | `per_page` | number | No | Number of results per page. | | `accountId` | string | Yes | The Cloudflare account ID. Identity providers are account-scoped | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-44] | Parameter | Type | Description | | ------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `identity_providers` | array | Identity providers | | ↳ `config` | json | The configuration parameters for the identity provider. To view the required parameters for a specific provider, refer to our \[developer documentation]\([https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/)). | | ↳ `client_id` | string | Your OAuth Client ID | | ↳ `client_secret` | string | Your OAuth Client Secret | | ↳ `claims` | array | Custom claims | | ↳ `email_claim_name` | string | The claim name for email in the id\_token response. | | ↳ `conditional_access_enabled` | boolean | Should Cloudflare try to load authentication contexts from your account | | ↳ `directory_id` | string | Your Azure directory uuid | | ↳ `prompt` | string | Configures the prompt behavior for Google authentication. Values: login, select\_account, none, consent. | | ↳ `support_groups` | boolean | Should Cloudflare try to load groups from your account | | ↳ `centrify_account` | string | Your centrify account url | | ↳ `centrify_app_id` | string | Your centrify app id | | ↳ `apps_domain` | string | Your companies TLD | | ↳ `use_login_hint` | boolean | Whether to use a previously authenticated Access email as a Google login hint when exactly one email matches the Workspace domain. | | ↳ `auth_url` | string | The authorization\_endpoint URL of your IdP | | ↳ `certs_url` | string | The jwks\_uri endpoint of your IdP to allow the IdP keys to sign the tokens | | ↳ `pkce_enabled` | boolean | Enable Proof Key for Code Exchange (PKCE) | | ↳ `scopes` | array | OAuth scopes | | ↳ `token_url` | string | The token\_endpoint URL of your IdP | | ↳ `issuer_url` | string | IdP Entity ID or Issuer URL | | ↳ `authorization_server_id` | string | Your okta authorization server id | | ↳ `okta_account` | string | Your okta account url | | ↳ `onelogin_account` | string | Your OneLogin account url | | ↳ `ping_env_id` | string | Your PingOne environment identifier | | ↳ `attributes` | array | A list of SAML attribute names that will be added to your signed JWT token and can be used in SAML policy rules. | | ↳ `email_attribute_name` | string | The attribute name for email in the SAML response. | | ↳ `enable_encryption` | boolean | Enable SAML assertion encryption. | | ↳ `force_authn` | boolean | Asks the IdP to reauthenticate the user for each SAML authentication request. | | ↳ `header_attributes` | array | Add a list of attribute names that will be returned in the response header from the Access callback. | | ↳ `attribute_name` | string | attribute name from the IDP | | ↳ `header_name` | string | header that will be added on the request to the origin | | ↳ `idp_public_certs` | array | X509 certificate to verify the signature in the SAML authentication response | | ↳ `max_sso_url_length` | number | The maximum URL length the IdP accepts for the SSO redirect URL. When the constructed SSO URL would exceed this length, the RelayState is stored server-side and a short nonce is passed to the IdP instead. Set this if your IdP enforces a URL length limit. | | ↳ `sign_request` | boolean | Sign the SAML authentication request with Access credentials. To verify the signature, use the public key from the Access certs endpoints. | | ↳ `sso_target_url` | string | URL to send the SAML authentication requests to | | ↳ `redirect_url` | string | redirect url | | ↳ `restrict_to_account_members` | boolean | When enabled, only users who are members of your Cloudflare account can authenticate through this identity provider. When disabled, any user with a Cloudflare account can authenticate, subject to your Access policies. | | ↳ `login_page_auto_prompt` | boolean | When enabled, the Access login page automatically prompts the user to authenticate with a passkey. | | ↳ `id` | string | UUID. | | ↳ `name` | string | The name of the identity provider, shown to users on the login page. | | ↳ `read_only` | boolean | Indicates that the identity provider is immutable and cannot be updated or deleted via the API. | | ↳ `saml_certificate_set` | json | A SAML encryption certificate set containing current and optionally previous certificates for encryption key rotation. | | ↳ `created_at` | string | Timestamp when the certificate set was created | | ↳ `current_certificate` | json | A single SAML encryption certificate with metadata | | ↳ `is_current` | boolean | Indicates whether this is the currently active certificate | | ↳ `not_after` | string | Certificate expiration date. Certificates are automatically rotated 30 days before expiration. | | ↳ `public_certificate` | string | PEM-encoded X.509 certificate containing the public key. Configure this certificate in your external SAML Identity Provider to enable encryption. | | ↳ `uid` | string | Unique identifier for the certificate | | ↳ `previous_certificate` | json | The previous certificate, maintained during rotation to ensure continuity. Null if no rotation has occurred. Mirrors the structure of `saml_certificate`. | | ↳ `uid` | string | Unique identifier for the certificate set | | ↳ `updated_at` | string | Timestamp when the certificate set was last updated (e.g., during rotation) | | ↳ `saml_certificate_set_id` | string | The UID of the SAML encryption certificate set assigned to this Identity Provider. Only present for SAML identity providers with encryption configured. Create a certificate set via POST to `/identity_providers/\{id\}/saml_certificate`. | | ↳ `scim_config` | json | The configuration settings for enabling a System for Cross-Domain Identity Management (SCIM) with the identity provider. | | ↳ `enabled` | boolean | A flag to enable or disable SCIM for the identity provider. | | ↳ `identity_update_behavior` | string | Indicates how a SCIM event updates a user identity used for policy evaluation. | | ↳ `scim_base_url` | string | The base URL of Cloudflare's SCIM V2.0 API endpoint. | | ↳ `seat_deprovision` | boolean | A flag to remove a user's seat in Zero Trust when they have been deprovisioned in the Identity Provider. This cannot be enabled unless user\_deprovision is also enabled. | | ↳ `secret` | string | A read-only token generated when the SCIM integration is enabled for the first time. It is redacted on subsequent requests. If you lose this you will need to refresh it at /access/identity\_providers/:idpID/refresh\_scim\_secret. | | ↳ `user_deprovision` | boolean | A flag to enable revoking a user's session in Access and Gateway when they have been deprovisioned in the Identity Provider. | | ↳ `type` | string | The type of identity provider. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Access Policies [#cloudflare-list-access-policies] Lists the Cloudflare Access (Zero Trust) policies attached to an application, in precedence order. Requires an API token with Account Access: Apps and Policies Read. #### Input [#input-45] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID whose policies should be listed | | `page` | number | No | Page number for pagination | | `per_page` | number | No | Number of policies per page | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-45] | Parameter | Type | Description | | --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `policies` | array | Policies | | ↳ `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | ↳ `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | ↳ `connection_rules` | json | The rules that define how users may connect to the targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `ssh` | json | The SSH-specific rules that define how users may connect to the targets secured by your application. | | ↳ `allow_email_alias` | boolean | Enables using Identity Provider email alias as SSH username. | | ↳ `usernames` | array | Contains the Unix usernames that may be used when connecting over SSH. | | ↳ `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings for infrastructure applications. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. For infrastructure applications, supported values are `piv_key` and `ssh_fido2_key`. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples: `5m` or `24h`. | | ↳ `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | ↳ `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | ↳ `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `created_at` | string | created at | | ↳ `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | The UUID of the policy | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access policy. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | ↳ `account_id` | string | Identifier. | | ↳ `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Access Service Tokens [#cloudflare-list-access-service-tokens] Lists the Cloudflare Access (Zero Trust) service tokens in an account, which let machines authenticate to Access-protected applications. Client secrets are never returned by this endpoint — only on creation. Requires an API token with Account Access: Service Tokens Read. #### Input [#input-46] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------ | | `accountId` | string | Yes | The Cloudflare account ID. Service tokens are account-scoped | | `name` | string | No | Filter by service token name | | `search` | string | No | Free-text search across service tokens | | `page` | number | No | Page number for pagination | | `per_page` | number | No | Number of service tokens per page | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-46] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `service_tokens` | array | Service tokens | | ↳ `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | ↳ `created_at` | string | created at | | ↳ `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | ↳ `enabled` | boolean | Whether the service token is enabled. | | ↳ `expires_at` | string | expires at | | ↳ `id` | string | UUID. | | ↳ `last_seen_at` | string | last seen at | | ↳ `leak_report_url` | string | Where the leaked `client_secret` was found, if provided by the reporter. Omitted if the token has not been reported as leaked. | | ↳ `leak_reported_at` | string | When a secret scanning partner reported this service token's `client_secret` as leaked. A leaked service token is disabled and must be rotated before it can be re-enabled. Cleared once the secret is rotated. Omitted if the token has not been reported as leaked. | | ↳ `leak_reporter` | string | The secret scanning partner that reported the leak. Omitted if the token has not been reported as leaked. | | ↳ `name` | string | The name of the service token. | | ↳ `updated_at` | string | updated at | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Certificates [#cloudflare-list-certificates] Lists SSL/TLS certificate packs for a zone. #### Input [#input-47] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to list certificates for | | `status` | string | No | Set to "all" to include every certificate pack regardless of status. Cloudflare documents no other value for this filter; omitting it returns only active packs | | `page` | number | No | Page number of paginated results (default: 1) | | `per_page` | number | No | Number of certificate packs per page (default: 20, min: 5, max: 50) | | `deploy` | string | No | Filter by deployment environment: "staging" or "production" | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-47] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `certificates` | array | Certificates | | ↳ `certificate_authority` | string | Certificate Authority selected for the order. For information on any certificate authority specific details or restrictions \[see this page for more details]\([https://developers.cloudflare.com/ssl/reference/certificate-authorities](https://developers.cloudflare.com/ssl/reference/certificate-authorities)). Values: google, lets\_encrypt, ssl\_com. | | ↳ `certificates` | array | Array of certificates in this pack. | | ↳ `bundle_method` | string | Certificate bundle method. | | ↳ `expires_on` | string | When the certificate from the authority expires. | | ↳ `geo_restrictions` | json | Specify the region where your private key can be held locally. | | ↳ `label` | string | label Values: us, eu, highest\_security. | | ↳ `hosts` | array | Hostnames covered by this certificate. | | ↳ `id` | string | Certificate identifier. | | ↳ `issuer` | string | The certificate authority that issued the certificate. | | ↳ `modified_on` | string | When the certificate was last modified. | | ↳ `priority` | number | The order/priority in which the certificate will be used. | | ↳ `signature` | string | The type of hash used for the certificate. | | ↳ `status` | string | Certificate status. | | ↳ `uploaded_on` | string | When the certificate was uploaded to Cloudflare. | | ↳ `zone_id` | string | Identifier. | | ↳ `cloudflare_branding` | boolean | Whether or not to add Cloudflare Branding for the order. This will add a subdomain of sni.cloudflaressl.com as the Common Name if set to true. | | ↳ `dcv_delegation_records` | array | DCV Delegation records for domain validation. | | ↳ `cname` | string | The CNAME record hostname for DCV delegation. | | ↳ `cname_target` | string | The CNAME record target value for DCV delegation. | | ↳ `emails` | array | The set of email addresses that the certificate authority (CA) will use to complete domain validation. | | ↳ `http_body` | string | The content that the certificate authority (CA) will expect to find at the http\_url during the domain validation. | | ↳ `http_url` | string | The url that will be checked during domain validation. | | ↳ `status` | string | Status of the validation record. | | ↳ `txt_name` | string | The hostname that the certificate authority (CA) will check for a TXT record during domain validation . | | ↳ `txt_value` | string | The TXT record that the certificate authority (CA) will check during domain validation. | | ↳ `hosts` | array | Comma separated list of valid host names for the certificate packs. Must contain the zone apex, may not contain more than 50 hosts, and may not be empty. | | ↳ `id` | string | The unique identifier for a certificate\_pack. | | ↳ `primary_certificate` | string | Identifier of the primary certificate in a pack. | | ↳ `status` | string | Status of certificate pack. | | ↳ `type` | string | Type of certificate pack. Values: mh\_custom, managed\_hostname, sni\_custom, universal, advanced, total\_tls, keyless, legacy\_custom. | | ↳ `validation_errors` | array | Domain validation errors that have been received by the certificate authority (CA). | | ↳ `message` | string | A domain validation error. | | ↳ `validation_method` | string | Validation Method selected for the order. Values: txt, http, email. | | ↳ `validation_records` | array | Certificates' validation records. | | ↳ `cname` | string | The CNAME record hostname for DCV delegation. | | ↳ `cname_target` | string | The CNAME record target value for DCV delegation. | | ↳ `emails` | array | The set of email addresses that the certificate authority (CA) will use to complete domain validation. | | ↳ `http_body` | string | The content that the certificate authority (CA) will expect to find at the http\_url during the domain validation. | | ↳ `http_url` | string | The url that will be checked during domain validation. | | ↳ `status` | string | Status of the validation record. | | ↳ `txt_name` | string | The hostname that the certificate authority (CA) will check for a TXT record during domain validation . | | ↳ `txt_value` | string | The TXT record that the certificate authority (CA) will check during domain validation. | | ↳ `validity_days` | number | Validity Days selected for the order. Values: 14, 30, 90, 365. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List DNS Records [#cloudflare-list-dns-records] Lists DNS records for a specific zone. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name_contains` | string | No | Substring of the DNS record name. Name filters are case-insensitive. | | `name_startswith` | string | No | Prefix of the DNS record name. Name filters are case-insensitive. | | `name_endswith` | string | No | Suffix of the DNS record name. Name filters are case-insensitive. | | `content_contains` | string | No | Substring of the DNS record content. Content filters are case-insensitive. | | `content_startswith` | string | No | Prefix of the DNS record content. Content filters are case-insensitive. | | `content_endswith` | string | No | Suffix of the DNS record content. Content filters are case-insensitive. | | `comment_present` | boolean | No | If this parameter is present, only records *with* a comment are returned. | | `comment_absent` | boolean | No | If this parameter is present, only records *without* a comment are returned. | | `comment_exact` | string | No | Exact value of the DNS record comment. Comment filters are case-insensitive. | | `comment_startswith` | string | No | Prefix of the DNS record comment. Comment filters are case-insensitive. | | `comment_endswith` | string | No | Suffix of the DNS record comment. Comment filters are case-insensitive. | | `tag_present` | string | No | Name of a tag which must be present on the DNS record. Tag filters are case-insensitive. | | `tag_absent` | string | No | Name of a tag which must *not* be present on the DNS record. Tag filters are case-insensitive. | | `tag_contains` | string | No | A tag and value, of the form `<tag-name>:<tag-value>`. The API will only return DNS records that have a tag named `<tag-name>` whose value contains `<tag-value>`. Tag filters are case-insensitive. | | `tag_startswith` | string | No | A tag and value, of the form `<tag-name>:<tag-value>`. The API will only return DNS records that have a tag named `<tag-name>` whose value starts with `<tag-value>`. Tag filters are case-insensitive. | | `tag_endswith` | string | No | A tag and value, of the form `<tag-name>:<tag-value>`. The API will only return DNS records that have a tag named `<tag-name>` whose value ends with `<tag-value>`. Tag filters are case-insensitive. | | `include_shadow_metadata` | boolean | No | Whether to include shadow metadata in the `meta` field of each record in the response. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `shadowed_by_name` | string | No | Filters the response to records at or below the specified NS delegation name. NS, DS, and NSEC records at the delegation name are excluded because they are not shadowed by that delegation. Those record types are included only when they exist below the delegation. The value must be a non-apex subdomain of the zone. Requires `include_shadow_metadata=true`. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `shadowing_name` | string | No | Returns NS records that shadow the given name, searching at the name itself and each of its ancestor names within the zone, excluding the zone apex. The value must be a subdomain of the zone; the zone apex is not accepted. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `zoneId` | string | Yes | The zone ID to list DNS records for | | `type` | string | No | Filter by record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT") | | `name` | string | No | Filter by record name (exact match) | | `content` | string | No | Filter by record content (exact match) | | `page` | number | No | Page number for pagination (default: 1) | | `per_page` | number | No | Number of records per page (default: 100, max: 5000000) | | `direction` | string | No | Sort direction (asc or desc) | | `match` | string | No | Match logic for filters: any or all (default: all) | | `order` | string | No | Sort field (type, name, content, ttl, proxied) | | `proxied` | boolean | No | Filter by proxy status | | `search` | string | No | Free-text search across record name, content, and value | | `tag` | string | No | Filter by tag name, or an exact name:value pair (e.g., team:DNS) | | `tag_match` | string | No | Tag filter match logic: any or all. Only affects results when combined with multiple tag filter conditions; has no effect with the single exact-match Tag Filter above. | | `commentFilter` | string | No | Filter records by comment content (substring match) | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-48] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `records` | array | Records | | ↳ `comment` | string | Comments or notes about the DNS record. This field has no effect on DNS responses. | | ↳ `name` | string | Complete DNS record name, including the zone name, in Punycode. | | ↳ `proxied` | boolean | Whether the record is receiving the performance and security benefits of Cloudflare. | | ↳ `settings` | json | Settings for the DNS record. | | ↳ `ipv4_only` | boolean | When enabled, only A records will be generated, and AAAA records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `ipv6_only` | boolean | When enabled, only AAAA records will be generated, and A records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `flatten_cname` | boolean | If enabled, causes the CNAME record to be resolved externally and the resulting address records (e.g., A and AAAA) to be returned instead of the CNAME record itself. This setting is unavailable for proxied records, since they are always flattened. | | ↳ `tags` | array | Custom tags for the DNS record. This field has no effect on DNS responses. | | ↳ `ttl` | number | Time To Live (TTL) of the DNS record in seconds. Setting to 1 means 'automatic'. Value must be between 60 and 86400, with the minimum reduced to 30 for Enterprise zones. Values: 1. | | ↳ `content` | string | Formatted URI content. See 'data' to set URI properties. | | ↳ `private_routing` | boolean | Enables private network routing to the origin. | | ↳ `type` | string | Record type. Values: A, AAAA, CNAME, MX, NS, OPENPGPKEY, PTR, TXT, CAA, CERT, DNSKEY, DS, HTTPS, LOC, NAPTR, SMIMEA, SRV, SSHFP, SVCB, TLSA, URI. | | ↳ `priority` | number | Required for MX and URI records; ignored for other record types (but may still be returned by the API). Records with lower priorities are preferred. This field is to be deprecated in favor of the priority field within the data map. | | ↳ `data` | json | Structured record data. The available fields depend on the DNS record type. | | ↳ `flags` | json | Flags. | | ↳ `tag` | string | Name of the property controlled by this record (e.g.: issue, issuewild, iodef). | | ↳ `value` | string | Value. | | ↳ `algorithm` | number | Algorithm. | | ↳ `certificate` | string | Certificate. | | ↳ `key_tag` | number | Key Tag. | | ↳ `type` | number | Type. | | ↳ `protocol` | number | Protocol. | | ↳ `public_key` | string | Public Key. | | ↳ `digest` | string | Digest. | | ↳ `digest_type` | number | Digest Type. | | ↳ `priority` | number | Priority. | | ↳ `target` | string | The record content. | | ↳ `altitude` | number | Altitude of location in meters. | | ↳ `lat_degrees` | number | Degrees of latitude. | | ↳ `lat_direction` | string | Latitude direction. Values: N, S. | | ↳ `lat_minutes` | number | Minutes of latitude. | | ↳ `lat_seconds` | number | Seconds of latitude. | | ↳ `long_degrees` | number | Degrees of longitude. | | ↳ `long_direction` | string | Longitude direction. Values: E, W. | | ↳ `long_minutes` | number | Minutes of longitude. | | ↳ `long_seconds` | number | Seconds of longitude. | | ↳ `precision_horz` | number | Horizontal precision of location. | | ↳ `precision_vert` | number | Vertical precision of location. | | ↳ `size` | number | Size of location in meters. | | ↳ `order` | number | Order. | | ↳ `preference` | number | Preference. | | ↳ `regex` | string | Regex. | | ↳ `replacement` | string | Replacement. | | ↳ `service` | string | Service. | | ↳ `matching_type` | number | Matching Type. | | ↳ `selector` | number | Selector. | | ↳ `usage` | number | Usage. | | ↳ `port` | number | The port of the service. | | ↳ `weight` | number | The record weight. | | ↳ `fingerprint` | string | Fingerprint. | | ↳ `comment_modified_on` | string | When the record comment was last modified. Omitted if there is no comment. | | ↳ `created_on` | string | When the record was created. | | ↳ `id` | string | Identifier. | | ↳ `meta` | json | Extra Cloudflare-specific metadata about the record. | | ↳ `dead_glue` | boolean | Whether this glue record is not served because a shallower NS delegation takes precedence over the deeper delegation that needs it. | | ↳ `is_glue` | boolean | Whether this A or AAAA record is glue for a subdomain NS delegation. See \[Glue records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records)). | | ↳ `shadowed_by` | array | IDs of the NS records that shadow this record. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | ↳ `shadowed_records_count` | number | Number of records shadowed by this NS delegation. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | ↳ `modified_on` | string | When the record was last modified. | | ↳ `proxiable` | boolean | Whether the record can be proxied by Cloudflare or not. | | ↳ `tags_modified_on` | string | When the record tags were last modified. Omitted if there are no tags. | | ↳ `zone_id` | string | Legacy DNS response zone ID when returned by Cloudflare | | ↳ `zone_name` | string | Legacy DNS response zone name when returned by Cloudflare | | ↳ `locked` | boolean | Legacy DNS response lock flag when returned by Cloudflare | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Managed Ruleset Overrides [#cloudflare-list-managed-ruleset-overrides] Lists the WAF managed rulesets deployed on a zone together with the overrides applied to each one. Cloudflare has no dedicated overrides endpoint — overrides live on the "execute" rules of the http\_request\_firewall\_managed phase entry point ruleset, which this reads. Requires an API token with Zone WAF Read. #### Input [#input-49] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to read managed ruleset deployments and overrides for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-49] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ruleset_id` | string | Ruleset ID of the http\_request\_firewall\_managed entry point, needed to edit a deployment rule | | `deployments` | array | Managed rulesets deployed on the zone and the overrides applied to each | | ↳ `rule_id` | string | ID of the execute rule that deploys the managed ruleset | | ↳ `managed_ruleset_id` | string | ID of the deployed managed ruleset | | ↳ `description` | string | Description of the deployment rule | | ↳ `expression` | string | Filter expression scoping which requests the managed ruleset runs on | | ↳ `enabled` | boolean | Whether the deployment is enabled | | ↳ `overrides` | json | Overrides applied to the managed ruleset, at three levels. Cloudflare documents action, enabled, and sensitivity\_level at the ruleset (top) level; category, action, enabled, and sensitivity\_level per category; and id, action, enabled, score\_threshold, and sensitivity\_level per rule. Rule overrides beat category overrides, which beat the ruleset-level override. sensitivity\_level applies only to the DDoS phases, so for a WAF managed ruleset the rule-level properties are action, enabled, and score\_threshold | | `total_count` | number | Number of managed ruleset deployments found | ### Cloudflare List R2 Buckets [#cloudflare-list-r2-buckets] Lists the R2 object storage buckets in an account. Requires an API token with Account Workers R2 Storage Read. #### Input [#input-50] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------- | | `order` | string | No | Order buckets by name. Allowed values: name. | | `accountId` | string | Yes | The Cloudflare account ID. R2 buckets are account-scoped | | `name_contains` | string | No | Only return buckets whose name contains this substring | | `start_after` | string | No | Bucket name to start listing after | | `cursor` | string | No | Pagination cursor returned by a previous call | | `direction` | string | No | Sort direction by bucket name: asc or desc | | `per_page` | number | No | Number of buckets per page | | `jurisdiction` | string | No | Data-residency jurisdiction to list within: default, eu, or fedramp | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-50] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `buckets` | array | Buckets | | ↳ `creation_date` | string | Creation timestamp. | | ↳ `jurisdiction` | string | Jurisdiction where objects in this bucket are guaranteed to be stored. Values: default, eu, us, fedramp, fedramp-high. | | ↳ `location` | string | Location of the bucket. Values: apac, eeur, enam, weur, wnam, oc. | | ↳ `name` | string | Name of the bucket. | | ↳ `storage_class` | string | Storage class for newly uploaded objects, unless specified otherwise. Values: Standard, InfrequentAccess. | | `total_count` | number | Total active buckets in the requested jurisdiction, independent of filtering or pagination. Eventually consistent for accounts with elevated bucket limits. Falls back to this page’s bucket count when the API omits the total. | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total active buckets in the requested jurisdiction, independent of filtering or pagination. Eventually consistent for accounts with elevated bucket limits. | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | | `cursor` | string | Cursor for the next page | ### Cloudflare List Rate Limiting Rules [#cloudflare-list-rate-limiting-rules] Lists the rate limiting rules on a zone by reading the http\_ratelimit phase entry point ruleset. This uses the current Rulesets-based rate limiting API; the legacy rate\_limits endpoint is no longer available. The returned ruleset ID is what "Create Rate Limiting Rule", "Update Rate Limiting Rule", and "Delete Ruleset Rule" need. Requires an API token with Zone WAF Read. #### Input [#input-51] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `zoneId` | string | Yes | The zone ID to list rate limiting rules for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-51] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare List Rulesets [#cloudflare-list-rulesets] Lists every ruleset defined on a zone across all phases (WAF custom rules, managed rules, rate limiting, transform rules, and more). The list response deliberately omits the rules inside each ruleset — use "Get Ruleset" to read them. Requires an API token with Zone WAF Read (or another matching ruleset Read permission). #### Input [#input-52] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to list rulesets for | | `per_page` | number | No | Number of rulesets to return per page | | `cursor` | string | No | Cursor for the next page, taken from the cursor output of a previous call. This endpoint paginates by cursor, not by page number | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-52] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------------------------------------------------- | | `rulesets` | array | Rulesets | | ↳ `description` | string | An informative description of the ruleset. | | ↳ `id` | string | The unique ID of the ruleset. | | ↳ `last_updated` | string | The timestamp of when the ruleset was last modified. | | ↳ `name` | string | The human-readable name of the ruleset. | | ↳ `version` | string | The version of the ruleset. | | ↳ `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | ↳ `phase` | string | The phase of the ruleset. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | | `cursor` | string | Cursor for the next page | ### Cloudflare List Tunnels [#cloudflare-list-tunnels] Lists the Cloudflare Tunnels (cloudflared) in an account, with their health status and active connections. Requires an API token with Account Cloudflare Tunnel Read. #### Input [#input-53] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Tunnels are account-scoped | | `name` | string | No | Filter by exact tunnel name | | `status` | string | No | Filter by tunnel health: inactive, degraded, healthy, or down | | `uuid` | string | No | Filter by tunnel UUID | | `is_deleted` | boolean | No | Whether to return deleted tunnels instead of active ones | | `include_prefix` | string | No | Only include tunnels whose name starts with this prefix | | `exclude_prefix` | string | No | Exclude tunnels whose name starts with this prefix | | `existed_at` | string | No | Return tunnels that existed at this RFC 3339 timestamp | | `was_active_at` | string | No | Return tunnels that were active at this RFC 3339 timestamp | | `was_inactive_at` | string | No | Return tunnels that were inactive at this RFC 3339 timestamp | | `page` | number | No | Page number for pagination | | `per_page` | number | No | Number of tunnels per page | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-53] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tunnels` | array | Tunnels | | ↳ `account_tag` | string | Cloudflare account ID | | ↳ `config_src` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Values: local, cloudflare. | | ↳ `connections` | array | The Cloudflare Tunnel connections between your origin and Cloudflare's edge. | | ↳ `client_id` | string | UUID of the Cloudflare Tunnel connector. | | ↳ `client_version` | string | The cloudflared version used to establish this connection. | | ↳ `colo_name` | string | The Cloudflare data center used for this connection. | | ↳ `id` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `is_pending_reconnect` | boolean | Cloudflare continues to track connections for several minutes after they disconnect. This is an optimization to improve latency and reliability of reconnecting. If `true`, the connection has disconnected but is still being tracked. If `false`, the connection is actively serving traffic. | | ↳ `opened_at` | string | Timestamp of when the connection was established. | | ↳ `origin_ip` | string | The public IP address of the host running cloudflared. | | ↳ `uuid` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `conns_active_at` | string | Timestamp of when the tunnel established at least one connection to Cloudflare's edge. If `null`, the tunnel is inactive. | | ↳ `conns_inactive_at` | string | Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge). If `null`, the tunnel is active. | | ↳ `created_at` | string | Timestamp of when the resource was created. | | ↳ `deleted_at` | string | Timestamp of when the resource was deleted. If `null`, the resource has not been deleted. | | ↳ `id` | string | UUID of the tunnel. | | ↳ `metadata` | json | Metadata associated with the tunnel. | | ↳ `name` | string | A user-friendly name for a tunnel. | | ↳ `remote_config` | boolean | If `true`, the tunnel can be configured remotely from the Zero Trust dashboard. If `false`, the tunnel must be configured locally on the origin machine. | | ↳ `status` | string | The status of the tunnel. | | ↳ `tun_type` | string | The type of tunnel. Values: cfd\_tunnel, warp\_connector, warp, magic, ip\_sec, gre, cni. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Worker Routes [#cloudflare-list-worker-routes] Lists the Workers routes on a zone, showing which URL patterns are handled by which Worker script. Unlike the Workers script endpoints, routes are zone-scoped. Requires an API token with Zone Workers Routes Read. #### Input [#input-54] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to list Workers routes for. Routes are zone-scoped, not account-scoped | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-54] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `routes` | array | Routes | | ↳ `id` | string | Identifier. | | ↳ `pattern` | string | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | ↳ `script` | string | Name of the script to run if the route matches. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Worker Scripts [#cloudflare-list-worker-scripts] Lists the Workers scripts deployed in an account. Requires an API token with Account Workers Scripts Read. #### Input [#input-55] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Workers scripts are account-scoped | | `tags` | string | No | Filter scripts by tag. Cloudflare expects a comma-separated list of tag:allowed pairs where allowed is yes or no, e.g. team:core:yes,deprecated:no | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-55] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `scripts` | array | Scripts | | ↳ `cache_options` | json | Global CacheW configuration for the Worker. When caching is on, the platform provisions a `cloudflare.app` zone for the Worker. A `type: worker` entry in the `exports` map can override this value for a single entrypoint. | | ↳ `cross_version_cache` | boolean | Whether cached responses are shared across Worker version uploads. This is independent of `enabled`. It can stay true while caching is off, so the preference survives turning caching off and back on. | | ↳ `enabled` | boolean | Whether caching is enabled for this Worker. | | ↳ `compatibility_date` | string | Date indicating targeted support in the Workers runtime. Backwards incompatible fixes to the runtime following this date will not affect this Worker. | | ↳ `compatibility_flags` | array | Flags that enable or disable certain features in the Workers runtime. Used to enable upcoming features or opt in or out of specific changes not included in a `compatibility_date`. | | ↳ `created_on` | string | When the script was created. | | ↳ `etag` | string | Hashed script content, can be used in a If-None-Match header when updating. | | ↳ `exports` | json | Declarative exports for the Worker, keyed by export name. Worker entrypoint entries (`type: worker`) carry cache configuration for that entrypoint. Durable Object entries (`type: durable-object`) are also configured here and drive namespace reconciliation. At most 100 entries; class names are at most 128 characters. | | ↳ `handlers` | array | The names of handlers exported as part of the default export. | | ↳ `has_assets` | boolean | Whether a Worker contains assets. | | ↳ `has_modules` | boolean | Whether a Worker contains modules. | | ↳ `id` | string | The name used to identify the script. | | ↳ `last_deployed_from` | string | The client most recently used to deploy this Worker. | | ↳ `logpush` | boolean | Whether Logpush is turned on for the Worker. | | ↳ `migration_tag` | string | The tag of the Durable Object migration that was most recently applied for this Worker. | | ↳ `modified_on` | string | When the script was last modified. | | ↳ `named_handlers` | array | Named exports, such as Durable Object class implementations and named entrypoints. | | ↳ `handlers` | array | The names of handlers exported as part of the named export. | | ↳ `name` | string | The name of the export. | | ↳ `observability` | json | Observability settings for the Worker. | | ↳ `enabled` | boolean | Whether observability is enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for incoming requests. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `issues` | json | Real-time Issues settings for the Worker. | | ↳ `enabled` | boolean | Whether real-time Issues are enabled for the Worker. | | ↳ `logs` | json | Log settings for the Worker. | | ↳ `destinations` | array | A list of destinations where logs will be exported to. | | ↳ `enabled` | boolean | Whether logs are enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `invocation_logs` | boolean | Whether \[invocation logs]\([https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs)) are enabled for the Worker. | | ↳ `persist` | boolean | Whether log persistence is enabled for the Worker. | | ↳ `redact_query_string` | boolean | Whether query strings are removed from request URLs in logs and traces. | | ↳ `traces` | json | Trace settings for the Worker. | | ↳ `destinations` | array | A list of destinations where traces will be exported to. | | ↳ `enabled` | boolean | Whether traces are enabled for the Worker. | | ↳ `head_sampling_rate` | number | The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%). Default is 1. | | ↳ `persist` | boolean | Whether trace persistence is enabled for the Worker. | | ↳ `propagation_policy` | string | Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. | | ↳ `placement` | json | Configuration for \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). Specify mode='smart' for Smart Placement, or one of region/hostname/host. | | ↳ `mode` | string | Targeted placement mode. Values: smart, targeted. | | ↳ `region` | string | Cloud region for targeted placement in format 'provider:region'. | | ↳ `hostname` | string | HTTP hostname for targeted placement. | | ↳ `host` | string | TCP host and port for targeted placement. | | ↳ `target` | array | Array of placement targets (currently limited to single target). | | ↳ `region` | string | Cloud region in format 'provider:region'. | | ↳ `hostname` | string | HTTP hostname for targeted placement. | | ↳ `host` | string | TCP host:port for targeted placement. | | ↳ `last_analyzed_at` | string | The last time the script was analyzed for \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). | | ↳ `status` | string | Status of \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). Values: SUCCESS, UNSUPPORTED\_APPLICATION, INSUFFICIENT\_INVOCATIONS. | | ↳ `placement_mode` | string | Configuration for \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). Specify mode='smart' for Smart Placement, or one of region/hostname/host. Values: smart, targeted. | | ↳ `placement_status` | string | Status of \[Smart Placement]\([https://developers.cloudflare.com/workers/configuration/smart-placement](https://developers.cloudflare.com/workers/configuration/smart-placement)). Values: SUCCESS, UNSUPPORTED\_APPLICATION, INSUFFICIENT\_INVOCATIONS. | | ↳ `tag` | string | The immutable ID of the script. | | ↳ `tags` | array | Tags associated with the Worker. | | ↳ `tail_consumers` | array | List of Workers that will consume logs from the attached Worker. | | ↳ `environment` | string | Optional environment if the Worker utilizes one. | | ↳ `namespace` | string | Optional dispatch namespace the script belongs to. | | ↳ `service` | string | Name of Worker that is to be the consumer. | | ↳ `usage_model` | string | Usage model for the Worker invocations. Values: standard, bundled, unbound. | | ↳ `routes` | array | Routes associated with the Worker. | | ↳ `id` | string | Identifier. | | ↳ `pattern` | string | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | ↳ `script` | string | Name of the script to run if the route matches. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare List Zones [#cloudflare-list-zones] Lists one page of zones (domains) in the Cloudflare account. #### Input [#input-56] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `type` | string | No | Comma-separated zone types: full, partial, secondary, internal | | `account_name` | string | No | Account name; prefix the value with an operator, e.g. contains:Test. Supported operators: \* `equal` (default) \* `not_equal` \* `starts_with` \* `ends_with` \* `contains` \* `starts_with_case_sensitive` \* `ends_with_case_sensitive` \* `contains_case_sensitive` | | `name` | string | No | Filter zones by domain name (e.g., "example.com") | | `status` | string | No | Filter by zone status: "initializing", "pending", "active", or "moved" | | `page` | number | No | Page number for pagination (default: 1) | | `per_page` | number | No | Number of zones per page (default: 20, max: 50) | | `accountId` | string | No | Filter zones by account ID | | `order` | string | No | Sort field (name, status, account.id, account.name, plan.id) | | `direction` | string | No | Sort direction (asc, desc) | | `match` | string | No | Match logic for filters (any, all). Default: all | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-56] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zones` | array | Zones | | ↳ `account` | json | The account the zone belongs to. | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the account. | | ↳ `activated_on` | string | The last time proof of ownership was detected and the zone was made active. | | ↳ `cname_suffix` | string | Allows the customer to use a custom apex. *Tenants Only Configuration*. | | ↳ `created_on` | string | When the zone was created. | | ↳ `development_mode` | number | The interval (in seconds) from when development mode expires (positive integer) or last expired (negative integer) for the domain. If development mode has never been enabled, this value is 0. | | ↳ `id` | string | Identifier | | ↳ `meta` | json | Metadata about the zone. | | ↳ `cdn_only` | boolean | The zone is only configured for CDN. | | ↳ `custom_certificate_quota` | number | Number of Custom Certificates the zone can have. | | ↳ `dns_only` | boolean | The zone is only configured for DNS. | | ↳ `foundation_dns` | boolean | The zone is setup with Foundation DNS. | | ↳ `page_rule_quota` | number | Number of Page Rules a zone can have. | | ↳ `phishing_detected` | boolean | The zone has been flagged for phishing. | | ↳ `step` | number | step | | ↳ `modified_on` | string | When the zone was last modified. | | ↳ `name` | string | The domain name. Per \[RFC 1035]\([https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4)) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters. | | ↳ `name_servers` | array | The name servers Cloudflare assigns to a zone. | | ↳ `original_dnshost` | string | DNS host at the time of switching to Cloudflare. | | ↳ `original_name_servers` | array | Original name servers before moving to Cloudflare. | | ↳ `original_registrar` | string | Registrar for the domain at the time of switching to Cloudflare. | | ↳ `owner` | json | The owner of the zone. | | ↳ `id` | string | Identifier | | ↳ `name` | string | Name of the owner. | | ↳ `type` | string | The type of owner. | | ↳ `paused` | boolean | Indicates whether the zone is only using Cloudflare DNS services. A true value means the zone will not receive security or performance benefits. | | ↳ `permissions` | array | Legacy permissions based on legacy user membership information. | | ↳ `plan` | json | A Zones subscription information. | | ↳ `can_subscribe` | boolean | States if the subscription can be activated. | | ↳ `currency` | string | The denomination of the customer. | | ↳ `externally_managed` | boolean | If this Zone is managed by another company. | | ↳ `frequency` | string | How often the customer is billed. | | ↳ `id` | string | Identifier | | ↳ `is_subscribed` | boolean | States if the subscription active. | | ↳ `legacy_discount` | boolean | If the legacy discount applies to this Zone. | | ↳ `legacy_id` | string | The legacy name of the plan. | | ↳ `name` | string | Name of the owner. | | ↳ `price` | number | How much the customer is paying. | | ↳ `status` | string | The zone status on Cloudflare. Values: initializing, pending, active, moved. | | ↳ `tenant` | json | The root organizational unit that this zone belongs to (such as a tenant or organization). | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the Tenant account. | | ↳ `tenant_unit` | json | The immediate parent organizational unit that this zone belongs to (such as under a tenant or sub-organization). | | ↳ `id` | string | Identifier | | ↳ `type` | string | A full zone implies that DNS is hosted with Cloudflare. A partial zone is typically a partner-hosted zone or a CNAME setup. Values: full, partial, secondary, internal. | | ↳ `vanity_name_servers` | array | An array of domains used for custom name servers. This is only available for Business and Enterprise plans. | | ↳ `verification_key` | string | Verification key for partial zone setup. | | `total_count` | number | Total matching resources, or the number of resources returned on this page when the API omits a total | | `result_info` | json | Pagination metadata returned by Cloudflare | | ↳ `page` | number | Current page | | ↳ `per_page` | number | Page size | | ↳ `count` | number | Count on the current page | | ↳ `total_count` | number | Total matching resources | | ↳ `total_pages` | number | Total pages | | ↳ `cursor` | string | Pagination cursor | | ↳ `cursors` | json | Directional pagination cursors | | ↳ `before` | string | before output from the tool | | ↳ `after` | string | after output from the tool | ### Cloudflare Purge Cache [#cloudflare-purge-cache] Purges cached content for a zone. Can purge everything or specific files/tags/hosts/prefixes. #### Input [#input-57] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | The zone ID to purge cache for | | `purge_everything` | boolean | No | Set to true to purge all cached content. Mutually exclusive with files, tags, hosts, and prefixes | | `files` | string | No | Comma-separated URLs or a JSON array of URL strings and \{url, headers} objects. Use headers for custom cache keys, for example \[\{"url":"[https://example.com/a","headers":\\\{"CF-IPCountry":"US"\\}\\}](https://example.com/a","headers":\\\{"CF-IPCountry":"US"\\}\\})] | | `tags` | string | No | Comma-separated list of cache tags to purge | | `hosts` | string | No | Comma-separated list of hostnames to purge | | `prefixes` | string | No | Comma-separated list of URL prefixes to purge | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-57] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------- | | `id` | string | Purge request identifier returned by Cloudflare | ### Cloudflare Refresh Access Service Token [#cloudflare-refresh-access-service-token] Refreshes the expiration of a service token. #### Input [#input-58] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------- | | `accountId` | string | Yes | Account id | | `serviceTokenId` | string | Yes | Service token id | | `apiKey` | string | Yes | Cloudflare API token | #### Output [#output-58] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `expires_at` | string | expires at | | `id` | string | UUID. | | `last_seen_at` | string | last seen at | | `leak_report_url` | string | Where the leaked `client_secret` was found, if provided by the reporter. Omitted if the token has not been reported as leaked. | | `leak_reported_at` | string | When a secret scanning partner reported this service token's `client_secret` as leaked. A leaked service token is disabled and must be rotated before it can be re-enabled. Cleared once the secret is rotated. Omitted if the token has not been reported as leaked. | | `leak_reporter` | string | The secret scanning partner that reported the leak. Omitted if the token has not been reported as leaked. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | ### Cloudflare Revoke Access Service Token [#cloudflare-revoke-access-service-token] Permanently deletes a Cloudflare Access (Zero Trust) service token, revoking it. Every machine or integration still presenting that client ID and secret is locked out of the Access-protected applications immediately, and the secret cannot be recovered. This cannot be undone. Requires an API token with Account Access: Service Tokens Edit. #### Input [#input-59] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `accountId` | string | Yes | The Cloudflare account ID. Service tokens are account-scoped | | `serviceTokenId` | string | Yes | The service token ID to revoke permanently | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-59] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `expires_at` | string | expires at | | `id` | string | UUID. | | `last_seen_at` | string | last seen at | | `leak_report_url` | string | Where the leaked `client_secret` was found, if provided by the reporter. Omitted if the token has not been reported as leaked. | | `leak_reported_at` | string | When a secret scanning partner reported this service token's `client_secret` as leaked. A leaked service token is disabled and must be rotated before it can be re-enabled. Cleared once the secret is rotated. Omitted if the token has not been reported as leaked. | | `leak_reporter` | string | The secret scanning partner that reported the leak. Omitted if the token has not been reported as leaked. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | ### Cloudflare Rotate Access Service Token [#cloudflare-rotate-access-service-token] Generates a new Client Secret. The previous secret expires immediately unless previous\_client\_secret\_expires\_at schedules a later expiration. #### Input [#input-60] | Parameter | Type | Required | Description | | ----------------------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `serviceTokenId` | string | Yes | Service token id | | `apiKey` | string | Yes | Cloudflare API token | | `previous_client_secret_expires_at` | string | No | The expiration of the previous `client_secret`. If not provided, it defaults to the current timestamp in order to immediately expire the previous secret. If the service token was reported as leaked, this must not be in the future; the leaked secret is discarded immediately. | #### Output [#output-60] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `client_secret` | string | The Client Secret for the service token. Access will check for this value in the `CF-Access-Client-Secret` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `id` | string | The ID of the service token. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | | `expires_at` | string | Service token expires at when returned by Cloudflare; retained for existing workflows | | `last_seen_at` | string | Service token last seen at when returned by Cloudflare; retained for existing workflows | ### Cloudflare Update Access Application [#cloudflare-update-access-application] Updates a Cloudflare Access (Zero Trust) application. Cloudflare does not document merge behavior for this PUT, so treat it as a replace: send every field the application should keep, because an omitted field may revert to its default and widen or break access. Read the current configuration with "Get Access Application" first. Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input-61] | Parameter | Type | Required | Description | | ------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `destinations` | json | No | JSON array. List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. Fields: overrides, type, uri, cidr, hostname, l4\_protocol, port\_range, vnet\_id, mcp\_server\_id, worker\_id. | | `oauth_configuration` | json | No | JSON object. Required for end\_user applications. **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. When set, Access will act as the OAuth authorization server for this application. Only compatible with OAuth clients that support \[RFC 8707]\([https://datatracker.ietf.org/doc/html/rfc8707](https://datatracker.ietf.org/doc/html/rfc8707)) (Resource Indicators for OAuth 2.0). This feature is currently in beta. Fields: dynamic\_client\_registration, enabled, grant. | | `self_hosted_domains` | json | No | JSON array. List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | `user_populations` | json | No | JSON array. Required for end\_user applications. The single user population associated with this application. | | `allow_authenticate_via_warp` | boolean | No | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | `allow_iframe` | boolean | No | Enables loading application content in an iFrame. | | `cors_headers` | json | No | JSON object. cors headers Fields: allow\_all\_headers, allow\_all\_methods, allow\_all\_origins, allow\_credentials, allowed\_headers, allowed\_methods, allowed\_origins, max\_age. | | `custom_non_identity_deny_url` | string | No | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | `custom_pages` | json | No | JSON array. The custom pages that will be displayed when applicable for this application | | `eager_redirect_cookie_setting` | boolean | No | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | `enable_binding_cookie` | boolean | No | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | `http_only_cookie_attribute` | boolean | No | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | `mfa_config` | json | No | JSON object. Configures multi-factor authentication (MFA) settings. Fields: allowed\_authenticators, mfa\_disabled, session\_duration. | | `options_preflight_bypass` | boolean | No | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | `path_cookie_attribute` | boolean | No | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | `read_service_tokens_from_header` | string | No | Allows matching Access Service Tokens passed HTTP in a single header with this name. This works as an alternative to the (CF-Access-Client-Id, CF-Access-Client-Secret) pair of headers. The header value will be interpreted as a json object similar to: \{ "cf-access-client-id": "\", "cf-access-client-secret": "\" } | | `same_site_cookie_attribute` | string | No | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | `scim_config` | json | No | JSON object. Configuration for provisioning to this application via SCIM. This is currently in closed beta. Fields: authentication, deactivate\_on\_delete, enabled, idp\_uid, mappings, remote\_uri. | | `service_auth_401_redirect` | boolean | No | Returns a 401 status code when the request is blocked by a Service Auth policy. | | `skip_interstitial` | boolean | No | Enables automatic authentication through cloudflared. | | `use_clientless_isolation_app_launcher_url` | boolean | No | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | `app_launcher_logo_url` | string | No | The image URL of the logo shown in the App Launcher header. | | `bg_color` | string | No | The background color of the App Launcher page. | | `footer_links` | json | No | JSON array. The links in the App Launcher footer. Fields: name, url. | | `header_bg_color` | string | No | The background color of the App Launcher header. | | `landing_page_design` | json | No | JSON object. The design of the App Launcher landing page shown to users when they log in. Fields: button\_color, button\_text\_color, image\_url, message, title. | | `skip_app_launcher_login_page` | boolean | No | Determines when to skip the App Launcher landing page. | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID to update | | `type` | string | Yes | Application type: self\_hosted, end\_user, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, infrastructure, rdp, mcp, mcp\_portal, or proxy\_endpoint. dash\_sso has no request variant and cannot be written through the API | | `domain` | string | No | The primary hostname and path secured by Access. Required for the self\_hosted, ssh, vnc, and rdp types; optional for bookmark and mcp\_portal; read-only for app\_launcher, warp, biso, and proxy\_endpoint; and absent from the saas, infrastructure, and mcp variants | | `name` | string | No | Friendly name shown in the dashboard and App Launcher | | `sessionDuration` | string | No | How long an Access session stays valid, e.g. 24h or 30m | | `allowedIdps` | string | No | Comma-separated identity provider IDs users may authenticate with | | `appLauncherVisible` | boolean | No | Whether the application is shown in the App Launcher | | `autoRedirectToIdentity` | boolean | No | Whether users skip the identity provider picker | | `customDenyMessage` | string | No | Message shown to users who are denied access | | `customDenyUrl` | string | No | URL denied users are redirected to | | `logoUrl` | string | No | Logo image URL shown in the dashboard and App Launcher | | `tags` | string | No | Comma-separated tag names categorizing the application | | `saasApp` | string | No | JSON SaaS configuration, required for the saas type and rejected on every other type. SAML, e.g. \{ "auth\_type": "saml", "consumer\_service\_url": "[https://example.com/acs](https://example.com/acs)", "sp\_entity\_id": "[https://example.com](https://example.com)" }; OIDC, e.g. \{ "auth\_type": "oidc", "client\_id": "...", "redirect\_uris": \[ "[https://example.com/callback](https://example.com/callback)" ] } | | `targetCriteria` | string | No | JSON array of infrastructure target criteria, required for the infrastructure and rdp types and rejected on every other type, e.g. \[\{"port":22,"protocol":"SSH","target\_attributes":\{"hostname":\["production"]}}] | | `policies` | string | No | JSON array of policies to attach. Entries may be reusable policy IDs or inline policy objects | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-61] | Parameter | Type | Description | | --------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `aud` | string | Audience tag. | | `created_at` | string | created at | | `id` | string | UUID. | | `updated_at` | string | updated at | | `allowed_idps` | array | The identity providers your users can select when connecting to this application. Defaults to all IdPs configured in your account. | | `destinations` | array | List of destinations secured by Access. This supersedes `self_hosted_domains` to allow for more flexibility in defining different types of domains. If `destinations` are provided, then `self_hosted_domains` will be ignored. | | ↳ `overrides` | array | Rules that override how Access handles requests to this destination. Each rule can make a matching path public, bypassing Access authentication. Overrides are supported for public destinations and Worker destinations. | | ↳ `behavior` | string | The behavior to apply to matching requests. Values: public. | | ↳ `path_pattern` | string | The request path pattern to match. Wildcards (`*`) are supported, but each path segment may have at most one wildcard. Unlike the `uri` in public destinations, override path patterns do not implicitly cover subpaths; to do that, use a wildcard. | | ↳ `type` | string | type Values: public, private, via\_mcp\_server\_portal, worker, preview\_worker, all\_workers, all\_preview\_workers. | | ↳ `uri` | string | The URI of the destination. Public destinations' URIs can include a domain and path with \[wildcards]\([https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)). | | ↳ `cidr` | string | The CIDR range of the destination. Single IPs will be computed as /32. | | ↳ `hostname` | string | The hostname of the destination. Matches a valid SNI served by an HTTPS origin. | | ↳ `l4_protocol` | string | The L4 protocol of the destination. When omitted, both UDP and TCP traffic will match. Values: tcp, udp. | | ↳ `port_range` | string | The port range of the destination. Can be a single port or a range of ports. When omitted, all ports will match. | | ↳ `vnet_id` | string | The VNET ID to match the destination. When omitted, all VNETs will match. | | ↳ `mcp_server_id` | string | The MCP server id configured in ai-controls. | | ↳ `worker_id` | string | The ID of the Cloudflare Worker whose preview deployments to protect with Access. | | `domain` | string | The primary hostname and path secured by Access. This domain will be displayed if the app is visible in the App Launcher. | | `name` | string | The name of the application. | | `oauth_configuration` | json | **Beta:** Optional configuration for managing an OAuth authorization flow controlled by Access. | | ↳ `dynamic_client_registration` | json | Settings for OAuth dynamic client registration. | | ↳ `allow_any_on_localhost` | boolean | Allows any client with redirect URIs on localhost. | | ↳ `allow_any_on_loopback` | boolean | Allows any client with redirect URIs on 127.0.0.1. | | ↳ `allowed_uris` | array | The URIs that are allowed as redirect URIs for dynamically registered clients. HTTP and HTTPS paths may end in `/*` to match all sub-paths. Custom-scheme URIs must be explicitly configured and match exactly. | | ↳ `enabled` | boolean | Whether dynamic client registration is enabled. | | ↳ `enabled` | boolean | Whether the OAuth configuration is enabled for this application. When set to `false`, Access will not handle OAuth for this application. Defaults to `true` if omitted. Values: True. | | ↳ `grant` | json | Settings for OAuth grant behavior. | | ↳ `access_token_lifetime` | string | The lifetime of the access token. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | ↳ `session_duration` | string | The duration of the OAuth session. Must be in the format `300ms` or `2h45m`. Valid time units are ns, us (or µs), ms, s, m, h. | | `self_hosted_domains` | array | List of public domains that Access will secure. This field is deprecated in favor of `destinations` and will be supported until **November 21, 2025.** If `destinations` are provided, then `self_hosted_domains` will be ignored. | | `type` | string | The application type. Values: end\_user, self\_hosted, saas, ssh, vnc, app\_launcher, warp, biso, bookmark, dash\_sso, infrastructure, rdp, mcp, mcp\_portal, proxy\_endpoint. | | `user_populations` | array | The single user population associated with this application. | | `allow_authenticate_via_warp` | boolean | When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication. | | `allow_iframe` | boolean | Enables loading application content in an iFrame. | | `app_launcher_visible` | boolean | Displays the application in the App Launcher. | | `auto_redirect_to_identity` | boolean | When set to `true`, users skip the identity provider selection step during login. You must specify only one identity provider in allowed\_idps. | | `cors_headers` | json | cors headers | | ↳ `allow_all_headers` | boolean | Allows all HTTP request headers. | | ↳ `allow_all_methods` | boolean | Allows all HTTP request methods. | | ↳ `allow_all_origins` | boolean | Allows all origins. | | ↳ `allow_credentials` | boolean | When set to `true`, includes credentials (cookies, authorization headers, or TLS client certificates) with requests. | | ↳ `allowed_headers` | array | Allowed HTTP request headers. | | ↳ `allowed_methods` | array | Allowed HTTP request methods. | | ↳ `allowed_origins` | array | Allowed origins. | | ↳ `max_age` | number | The maximum number of seconds the results of a preflight request can be cached. | | `custom_deny_message` | string | The custom error message shown to a user when they are denied access to the application. | | `custom_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing identity-based rules. | | `custom_non_identity_deny_url` | string | The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules. | | `custom_pages` | array | The custom pages that will be displayed when applicable for this application | | `eager_redirect_cookie_setting` | boolean | Preemptively sets the Access session cookie on every hostname in a multi-hostname self-hosted application during the initial redirect chain, rather than setting it lazily on first visit. Defaults to true. Set to false to disable the eager redirect cookie behavior. | | `enable_binding_cookie` | boolean | Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks. | | `http_only_cookie_attribute` | boolean | Enables the HttpOnly cookie attribute, which increases security against XSS attacks. | | `logo_url` | string | The image URL for the logo shown in the App Launcher dashboard. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | `options_preflight_bypass` | boolean | Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors\_headers is set. | | `path_cookie_attribute` | boolean | Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default | | `read_service_tokens_from_header` | string | Allows matching Access Service Tokens passed HTTP in a single header with this name. | | `same_site_cookie_attribute` | string | Sets the SameSite cookie setting, which provides increased security against CSRF attacks. | | `scim_config` | json | Configuration for provisioning to this application via SCIM. This is currently in closed beta. | | ↳ `authentication` | json | Multiple authentication schemes | | ↳ `password` | string | Password used to authenticate with the remote SCIM service. | | ↳ `scheme` | string | The authentication scheme to use when making SCIM requests to this application. Values: httpbasic, oauthbearertoken, oauth2, access\_service\_token. | | ↳ `user` | string | User name used to authenticate with the remote SCIM service. | | ↳ `token` | string | Token used to authenticate with the remote SCIM service. | | ↳ `authorization_url` | string | URL used to generate the auth code used during token generation. | | ↳ `client_id` | string | Client ID of the Access service token used to authenticate with the remote service. | | ↳ `client_secret` | string | Client secret of the Access service token used to authenticate with the remote service. | | ↳ `scopes` | array | The authorization scopes to request when generating the token used to authenticate with the remove SCIM service. | | ↳ `token_url` | string | URL used to generate the token used to authenticate with the remote SCIM service. | | ↳ `deactivate_on_delete` | boolean | If false, propagates DELETE requests to the target application for SCIM resources. If true, sets 'active' to false on the SCIM resource. Note: Some targets do not support DELETE operations. | | ↳ `enabled` | boolean | Whether SCIM provisioning is turned on for this application. | | ↳ `idp_uid` | string | The UID of the IdP to use as the source for SCIM resources to provision to this application. | | ↳ `mappings` | array | A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned. | | ↳ `enabled` | boolean | Whether or not this mapping is enabled. | | ↳ `filter` | string | A \[SCIM filter expression]\([https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2)) that matches resources that should be provisioned to this application. | | ↳ `operations` | json | Whether or not this mapping applies to creates, updates, or deletes. | | ↳ `create` | boolean | Whether or not this mapping applies to create (POST) operations. | | ↳ `delete` | boolean | Whether or not this mapping applies to DELETE operations. | | ↳ `update` | boolean | Whether or not this mapping applies to update (PATCH/PUT) operations. | | ↳ `schema` | string | Which SCIM resource type this mapping applies to. | | ↳ `strictness` | string | The level of adherence to outbound resource schemas when provisioning to this mapping. ‘Strict’ removes unknown values, while ‘passthrough’ passes unknown values to the target. Values: strict, passthrough. | | ↳ `transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms the resource before provisioning it in the application. | | ↳ `remote_uri` | string | The base URI for the application's SCIM-compatible API. | | `service_auth_401_redirect` | boolean | Returns a 401 status code when the request is blocked by a Service Auth policy. | | `session_duration` | string | The amount of time that tokens issued for this application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `skip_interstitial` | boolean | Enables automatic authentication through cloudflared. | | `tags` | array | The tags you want assigned to an application. Tags are used to filter applications in the App Launcher dashboard. | | `use_clientless_isolation_app_launcher_url` | boolean | Determines if users can access this application via a clientless browser isolation URL. This allows users to access private domains without connecting to Gateway. The option requires Clientless Browser Isolation to be set up with policies that allow users of this application. | | `policies` | array | policies | | ↳ `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | ↳ `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | ↳ `connection_rules` | json | The rules that define how users may connect to targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | ↳ `mfa_config` | json | Configures multi-factor authentication (MFA) settings. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples:`5m` or `24h`. | | ↳ `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | ↳ `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | ↳ `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | ↳ `created_at` | string | created at | | ↳ `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | ↳ `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `id` | string | The UUID of the policy | | ↳ `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `name` | string | The name of the Access policy. | | ↳ `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | ↳ `updated_at` | string | updated at | | ↳ `account_id` | string | Identifier. | | ↳ `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | | `saas_app` | json | saas app | | ↳ `auth_type` | string | Identifier of the authentication protocol used for the saas app. Required for OIDC. Values: saml, oidc. | | ↳ `consumer_service_url` | string | The service provider's endpoint that is responsible for receiving and parsing a SAML assertion. | | ↳ `created_at` | string | created at | | ↳ `custom_attributes` | array | custom attributes | | ↳ `friendly_name` | string | The SAML FriendlyName of the attribute. | | ↳ `name` | string | The name of the attribute. | | ↳ `name_format` | string | A globally unique name for an identity or service provider. Values: urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified, urn:oasis:names:tc:SAML:2.0:attrname-format:basic, urn:oasis:names:tc:SAML:2.0:attrname-format:uri. | | ↳ `required` | boolean | If the attribute is required when building a SAML assertion. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP attribute. | | ↳ `name_by_idp` | array | A mapping from IdP ID to attribute name. | | ↳ `idp_id` | string | The UID of the IdP. | | ↳ `source_name` | string | The name of the IdP provided attribute. | | ↳ `default_relay_state` | string | The URL that the user will be redirected to after a successful login for IDP initiated logins. | | ↳ `idp_entity_id` | string | The unique identifier for your SaaS application. | | ↳ `name_id_format` | string | The format of the name identifier sent to the SaaS application. Values: id, email. | | ↳ `name_id_transform_jsonata` | string | A \[JSONata]\([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into a NameID value for its SAML assertion. This expression should evaluate to a singular string. The output of this expression can override the `name_id_format` setting. | | ↳ `public_key` | string | The Access public certificate that will be used to verify your identity. | | ↳ `saml_attribute_transform_jsonata` | string | A \[JSONata] ([https://jsonata.org/](https://jsonata.org/)) expression that transforms an application's user identities into attribute assertions in the SAML response. | | ↳ `sp_entity_id` | string | A globally unique name for an identity or service provider. | | ↳ `sso_endpoint` | string | The endpoint where your SaaS application will send login requests. | | ↳ `updated_at` | string | updated at | | ↳ `access_token_lifetime` | string | The lifetime of the OIDC Access Token after creation. Valid units are m,h. Must be greater than or equal to 1m and less than or equal to 24h. | | ↳ `allow_pkce_without_client_secret` | boolean | If client secret should be required on the token endpoint when authorization\_code\_with\_pkce grant is used. | | ↳ `app_launcher_url` | string | The URL where this applications tile redirects users | | ↳ `client_id` | string | The application client id | | ↳ `client_secret` | string | The application client secret, only returned on POST request. | | ↳ `custom_claims` | array | custom claims | | ↳ `name` | string | The name of the claim. | | ↳ `required` | boolean | If the claim is required when building an OIDC token. | | ↳ `scope` | string | The scope of the claim. Values: groups, profile, email, openid. | | ↳ `source` | json | source | | ↳ `name` | string | The name of the IdP claim. | | ↳ `name_by_idp` | json | A mapping from IdP ID to claim name. | | ↳ `grant_types` | array | The OIDC flows supported by this application | | ↳ `group_filter_regex` | string | A regex to filter Cloudflare groups returned in ID token and userinfo endpoint | | ↳ `hybrid_and_implicit_options` | json | hybrid and implicit options | | ↳ `return_access_token_from_authorization_endpoint` | boolean | If an Access Token should be returned from the OIDC Authorization endpoint | | ↳ `return_id_token_from_authorization_endpoint` | boolean | If an ID Token should be returned from the OIDC Authorization endpoint | | ↳ `redirect_uris` | array | The permitted URL's for Cloudflare to return Authorization codes and Access/ID tokens | | ↳ `refresh_token_options` | json | refresh token options | | ↳ `lifetime` | string | How long a refresh token will be valid for after creation. Valid units are m,h,d. Must be longer than 1m. | | ↳ `scopes` | array | Define the user information shared with access, "offline\_access" scope will be automatically enabled if refresh tokens are enabled | | `app_launcher_logo_url` | string | The image URL of the logo shown in the App Launcher header. | | `bg_color` | string | The background color of the App Launcher page. | | `footer_links` | array | The links in the App Launcher footer. | | ↳ `name` | string | The hypertext in the footer link. | | ↳ `url` | string | the hyperlink in the footer link. | | `header_bg_color` | string | The background color of the App Launcher header. | | `landing_page_design` | json | The design of the App Launcher landing page shown to users when they log in. | | ↳ `button_color` | string | The background color of the log in button on the landing page. | | ↳ `button_text_color` | string | The color of the text in the log in button on the landing page. | | ↳ `image_url` | string | The URL of the image shown on the landing page. | | ↳ `message` | string | The message shown on the landing page. | | ↳ `title` | string | The title shown on the landing page. | | `skip_app_launcher_login_page` | boolean | Determines when to skip the App Launcher landing page. | | `target_criteria` | array | target criteria | | ↳ `exclude` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `include` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `port` | number | The port that the targets use for the chosen communication protocol. A port cannot be assigned to multiple protocols. | | ↳ `require` | json | Selectors within an include, require, or exclude rule. At least one of target\_attributes or tags must be non-empty. | | ↳ `tags` | json | Map of target tag keys to values. Values within a key are OR'd. | | ↳ `target_attributes` | json | Hostname selector map for include, require, or exclude rules. This is distinct from the deprecated top-level target\_attributes field and only supports the hostname key. | | ↳ `hostname` | array | hostname | | ↳ `target_attributes` | json | Contains a map of target attribute keys to target attribute values. | | ↳ `protocol` | string | The communication protocol your application secures. Values: RDP. | ### Cloudflare Update Access Group [#cloudflare-update-access-group] Updates a configured Access group. Replaces the configuration; resend all values to retain. #### Input [#input-62] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `groupId` | string | Yes | Group id | | `apiKey` | string | Yes | Cloudflare API token | | `exclude` | json | No | JSON array. Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | | `include` | json | Yes | JSON array. Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | | `is_default` | boolean | No | Whether this is the default group | | `name` | string | Yes | The name of the Access group. | | `require` | json | No | JSON array. Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. Fields: group, any\_valid\_service\_token, auth\_context, auth\_method, azureAD, certificate, common\_name, geo, device\_posture, email\_domain, email\_list, email, everyone, external\_evaluation, github-organization, gsuite, login\_method, ip\_list, ip, okta, saml, oidc, service\_token, linked\_app\_token, user\_risk\_score, cloudflare\_account\_member. | #### Output [#output-62] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `created_at` | string | created at | | `exclude` | array | Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | UUID. | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `is_default` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access group. | | `require` | array | Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | ### Cloudflare Update Access Policy [#cloudflare-update-access-policy] Updates a Cloudflare Access (Zero Trust) policy on an application. Cloudflare does not document merge behavior for this PUT, so treat it as a replace: resend all settings to retain, including exclude, require, approval\_groups, connection\_rules, and mfa\_config; omitted rules or security settings may be dropped and widen access. The change applies to live traffic immediately. Read the current policy with "List Access Policies" first. Requires an API token with Account Access: Apps and Policies Edit. #### Input [#input-63] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `approval_groups` | json | No | JSON array. Administrators who can approve a temporary authentication request. Fields: approvals\_needed, email\_addresses, email\_list\_uuid. | | `connection_rules` | json | No | JSON object. The rules that define how users may connect to the targets secured by your application. Fields: rdp, ssh. | | `mfa_config` | json | No | JSON object. Configures multi-factor authentication (MFA) settings for infrastructure applications. Fields: allowed\_authenticators, mfa\_disabled, session\_duration. | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `appId` | string | Yes | The Access application ID that owns the policy | | `policyId` | string | Yes | The Access policy ID to update | | `name` | string | Yes | Name of the policy | | `decision` | string | Yes | What the policy does when it matches: allow, deny, non\_identity, or bypass (skip Access entirely) | | `include` | string | Yes | JSON array of Access rules evaluated with OR logic. Example: \[\{"email\_domain":\{"domain":"example.com"}}] | | `exclude` | string | No | JSON array of Access rules evaluated with NOT logic | | `require` | string | No | JSON array of Access rules evaluated with AND logic | | `precedence` | number | No | Evaluation order of the policy within the application | | `sessionDuration` | string | No | How long a session granted by this policy stays valid, e.g. 24h. Leave it unset on a policy attached to an infrastructure-typed application — Cloudflare rejects those with error 12130 | | `approvalRequired` | boolean | No | Whether an approver must grant each access request | | `isolationRequired` | boolean | No | Whether the session must run in a remote isolated browser | | `purposeJustificationRequired` | boolean | No | Whether users must state a reason for access | | `purposeJustificationPrompt` | string | No | Prompt shown when a justification is required | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-63] | Parameter | Type | Description | | --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `approval_groups` | array | Administrators who can approve a temporary authentication request. | | ↳ `approvals_needed` | number | The number of approvals needed to obtain access. | | ↳ `email_addresses` | array | A list of emails that can approve the access request. | | ↳ `email_list_uuid` | string | The UUID of an re-usable email list. | | `approval_required` | boolean | Requires the user to request access from an administrator at the start of each session. | | `connection_rules` | json | The rules that define how users may connect to the targets secured by your application. | | ↳ `rdp` | json | The RDP-specific rules that define clipboard behavior for RDP connections. | | ↳ `allowed_clipboard_local_to_remote_formats` | array | Clipboard formats allowed when copying from local machine to remote RDP session. | | ↳ `allowed_clipboard_remote_to_local_formats` | array | Clipboard formats allowed when copying from remote RDP session to local machine. | | ↳ `ssh` | json | The SSH-specific rules that define how users may connect to the targets secured by your application. | | ↳ `allow_email_alias` | boolean | Enables using Identity Provider email alias as SSH username. | | ↳ `usernames` | array | Contains the Unix usernames that may be used when connecting over SSH. | | `isolation_required` | boolean | Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature. | | `mfa_config` | json | Configures multi-factor authentication (MFA) settings for infrastructure applications. | | ↳ `allowed_authenticators` | array | Lists the MFA methods that users can authenticate with. For infrastructure applications, supported values are `piv_key` and `ssh_fido2_key`. | | ↳ `mfa_disabled` | boolean | Indicates whether to disable MFA for this resource. This option is available at the application and policy level. | | ↳ `session_duration` | string | Defines the duration of an MFA session. Must be in minutes (m) or hours (h). Minimum: 0m. Maximum: 720h (30 days). Examples: `5m` or `24h`. | | `purpose_justification_prompt` | string | A custom message that will appear on the purpose justification screen. | | `purpose_justification_required` | boolean | Require users to enter a justification when they log in to the application. | | `session_duration` | string | The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. | | `created_at` | string | created at | | `decision` | string | The action Access will take if a user matches this policy. Infrastructure application policies can only use the Allow action. Values: allow, deny, non\_identity, bypass. | | `exclude` | array | Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `id` | string | The UUID of the policy | | `include` | array | Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `name` | string | The name of the Access policy. | | `require` | array | Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules. | | ↳ `group` | json | group | | ↳ `id` | string | The ID of a previously created Access group. | | ↳ `any_valid_service_token` | json | An empty object which matches on all service tokens. | | ↳ `auth_context` | json | auth context | | ↳ `ac_id` | string | The ACID of an Authentication context. | | ↳ `id` | string | The ID of an Authentication context. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `auth_method` | json | auth method | | ↳ `auth_method` | string | The type of authentication method [https://datatracker.ietf.org/doc/html/rfc8176#section-2](https://datatracker.ietf.org/doc/html/rfc8176#section-2). | | ↳ `azureAD` | json | azureAD | | ↳ `id` | string | The ID of an Azure group. | | ↳ `identity_provider_id` | string | The ID of your Azure identity provider. | | ↳ `certificate` | json | certificate | | ↳ `common_name` | json | common name | | ↳ `common_name` | string | The common name to match. | | ↳ `geo` | json | geo | | ↳ `country_code` | string | The country code that should be matched. | | ↳ `device_posture` | json | device posture | | ↳ `account_id` | string | Identifier. | | ↳ `integration_uid` | string | The ID of a device posture integration. | | ↳ `email_domain` | json | email domain | | ↳ `domain` | string | The email domain to match. | | ↳ `email_list` | json | email list | | ↳ `id` | string | The ID of a previously created email list. | | ↳ `email` | json | email | | ↳ `email` | string | The email of the user. | | ↳ `everyone` | json | An empty object which matches on all users. | | ↳ `external_evaluation` | json | external evaluation | | ↳ `evaluate_url` | string | The API endpoint containing your business logic. | | ↳ `keys_url` | string | The API endpoint containing the key that Access uses to verify that the response came from your API. | | ↳ `github-organization` | json | github-organization | | ↳ `identity_provider_id` | string | The ID of your Github identity provider. | | ↳ `name` | string | The name of the organization. | | ↳ `team` | string | The name of the team | | ↳ `gsuite` | json | gsuite | | ↳ `email` | string | The email of the Google Workspace group. | | ↳ `identity_provider_id` | string | The ID of your Google Workspace identity provider. | | ↳ `login_method` | json | login method | | ↳ `id` | string | The ID of an identity provider. | | ↳ `ip_list` | json | ip list | | ↳ `id` | string | The ID of a previously created IP list. | | ↳ `ip` | json | ip | | ↳ `ip` | string | An IPv4 or IPv6 CIDR block. | | ↳ `okta` | json | okta | | ↳ `identity_provider_id` | string | The ID of your Okta identity provider. | | ↳ `name` | string | The name of the Okta group. | | ↳ `saml` | json | saml | | ↳ `attribute_name` | string | The name of the SAML attribute. | | ↳ `attribute_value` | string | The SAML attribute value to look for. | | ↳ `identity_provider_id` | string | The ID of your SAML identity provider. | | ↳ `oidc` | json | oidc | | ↳ `claim_name` | string | The name of the OIDC claim. | | ↳ `claim_value` | string | The OIDC claim value to look for. | | ↳ `identity_provider_id` | string | The ID of your OIDC identity provider. | | ↳ `service_token` | json | service token | | ↳ `token_id` | string | The ID of a Service Token. | | ↳ `linked_app_token` | json | linked app token | | ↳ `app_uid` | string | The ID of an Access OIDC SaaS application | | ↳ `user_risk_score` | json | user risk score | | ↳ `user_risk_score` | array | A list of risk score levels to match. Values can be low, medium, high, or unscored. | | ↳ `cloudflare_account_member` | json | cloudflare account member | | ↳ `account_id` | string | Identifier. | | `updated_at` | string | updated at | | `account_id` | string | Identifier. | | `precedence` | number | The order of execution for this policy. Must be unique for each policy within an app. | ### Cloudflare Update Access Service Token [#cloudflare-update-access-service-token] Updates a configured service token. Replaces the configuration; resend all values to retain. #### Input [#input-64] | Parameter | Type | Required | Description | | ----------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `accountId` | string | Yes | Account id | | `serviceTokenId` | string | Yes | Service token id | | `apiKey` | string | Yes | Cloudflare API token | | `client_secret_version` | number | No | A version number identifying the current `client_secret` associated with the service token. Incrementing it triggers a rotation; the previous secret will still be accepted until the time indicated by `previous_client_secret_expires_at`. If the service token was reported as leaked, `previous_client_secret_expires_at` is not required, may not be in the future, and the previous secret is discarded immediately. | | `duration` | string | No | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | No | Whether the service token is enabled. A disabled service token cannot be used to authenticate; both its current and previous `client_secret` stop being accepted, but the token itself is preserved and can be re-enabled. A service token reported as leaked is disabled automatically and cannot be re-enabled until its secret is rotated; attempting to do so returns a 409. Defaults to enabled when omitted on create. | | `name` | string | No | The name of the service token. | | `previous_client_secret_expires_at` | string | No | The expiration of the previous `client_secret`. This can be modified at any point after a rotation. For example, you may extend it further into the future if you need more time to update services with the new secret; or move it into the past to immediately invalidate the previous token in case of compromise. Rotating a service token that was reported as leaked discards the previous secret entirely, so no grace period can be set. | #### Output [#output-64] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_id` | string | The Client ID for the service token. Access will check for this value in the `CF-Access-Client-ID` request header. | | `created_at` | string | created at | | `duration` | string | The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`, or the special value `forever` for non-expiring tokens. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h). | | `enabled` | boolean | Whether the service token is enabled. | | `expires_at` | string | expires at | | `id` | string | UUID. | | `last_seen_at` | string | last seen at | | `leak_report_url` | string | Where the leaked `client_secret` was found, if provided by the reporter. Omitted if the token has not been reported as leaked. | | `leak_reported_at` | string | When a secret scanning partner reported this service token's `client_secret` as leaked. A leaked service token is disabled and must be rotated before it can be re-enabled. Cleared once the secret is rotated. Omitted if the token has not been reported as leaked. | | `leak_reporter` | string | The secret scanning partner that reported the leak. Omitted if the token has not been reported as leaked. | | `name` | string | The name of the service token. | | `updated_at` | string | updated at | ### Cloudflare Update DNS Record [#cloudflare-update-dns-record] Updates an existing DNS record for a zone. #### Input [#input-65] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clearComment` | boolean | No | Clear the stored DNS record comment | | `settings` | json | No | JSON object. Settings for the DNS record. Fields: ipv4\_only, ipv6\_only, flatten\_cname. | | `private_routing` | boolean | No | Enables private network routing to the origin. | | `data` | json | No | JSON object. Structured record data. The available fields depend on the DNS record type. Fields: flags, tag, value, algorithm, certificate, key\_tag, type, protocol, public\_key, digest, digest\_type, priority, target, altitude, lat\_degrees, lat\_direction, lat\_minutes, lat\_seconds, long\_degrees, long\_direction, long\_minutes, long\_seconds, precision\_horz, precision\_vert, size, order, preference, regex, replacement, service, matching\_type, selector, usage, port, weight, fingerprint. | | `include_shadow_metadata` | boolean | No | Whether to include shadow metadata in the `meta` field of each record in the response. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `zoneId` | string | Yes | The zone ID containing the DNS record | | `recordId` | string | Yes | The DNS record ID to update | | `type` | string | No | DNS record type (e.g., "A", "AAAA", "CNAME", "MX", "TXT") | | `name` | string | No | DNS record name | | `content` | string | No | DNS record content (e.g., IP address) | | `ttl` | number | No | Time to live in seconds (1 = automatic) | | `proxied` | boolean | No | Whether to enable Cloudflare proxy | | `priority` | number | No | Record priority. Cloudflare accepts this top-level field for MX and URI records only; use the data object for structured records such as SRV (priority, weight, port, target) | | `comment` | string | No | Comment for the DNS record | | `tags` | string | No | Comma-separated tags for the DNS record | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-65] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `comment` | string | Comments or notes about the DNS record. This field has no effect on DNS responses. | | `name` | string | Complete DNS record name, including the zone name, in Punycode. | | `proxied` | boolean | Whether the record is receiving the performance and security benefits of Cloudflare. | | `settings` | json | Settings for the DNS record. | | ↳ `ipv4_only` | boolean | When enabled, only A records will be generated, and AAAA records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `ipv6_only` | boolean | When enabled, only AAAA records will be generated, and A records will not be created. This setting is intended for exceptional cases. Note that this option only applies to proxied records and it has no effect on whether Cloudflare communicates with the origin using IPv4 or IPv6. | | ↳ `flatten_cname` | boolean | If enabled, causes the CNAME record to be resolved externally and the resulting address records (e.g., A and AAAA) to be returned instead of the CNAME record itself. This setting is unavailable for proxied records, since they are always flattened. | | `tags` | array | Custom tags for the DNS record. This field has no effect on DNS responses. | | `ttl` | number | Time To Live (TTL) of the DNS record in seconds. Setting to 1 means 'automatic'. Value must be between 60 and 86400, with the minimum reduced to 30 for Enterprise zones. Values: 1. | | `content` | string | Formatted URI content. See 'data' to set URI properties. | | `private_routing` | boolean | Enables private network routing to the origin. | | `type` | string | Record type. Values: A, AAAA, CNAME, MX, NS, OPENPGPKEY, PTR, TXT, CAA, CERT, DNSKEY, DS, HTTPS, LOC, NAPTR, SMIMEA, SRV, SSHFP, SVCB, TLSA, URI. | | `priority` | number | Required for MX and URI records; ignored for other record types (but may still be returned by the API). Records with lower priorities are preferred. This field is to be deprecated in favor of the priority field within the data map. | | `data` | json | Structured record data. The available fields depend on the DNS record type. | | ↳ `flags` | json | Flags. | | ↳ `tag` | string | Name of the property controlled by this record (e.g.: issue, issuewild, iodef). | | ↳ `value` | string | Value. | | ↳ `algorithm` | number | Algorithm. | | ↳ `certificate` | string | Certificate. | | ↳ `key_tag` | number | Key Tag. | | ↳ `type` | number | Type. | | ↳ `protocol` | number | Protocol. | | ↳ `public_key` | string | Public Key. | | ↳ `digest` | string | Digest. | | ↳ `digest_type` | number | Digest Type. | | ↳ `priority` | number | Priority. | | ↳ `target` | string | The record content. | | ↳ `altitude` | number | Altitude of location in meters. | | ↳ `lat_degrees` | number | Degrees of latitude. | | ↳ `lat_direction` | string | Latitude direction. Values: N, S. | | ↳ `lat_minutes` | number | Minutes of latitude. | | ↳ `lat_seconds` | number | Seconds of latitude. | | ↳ `long_degrees` | number | Degrees of longitude. | | ↳ `long_direction` | string | Longitude direction. Values: E, W. | | ↳ `long_minutes` | number | Minutes of longitude. | | ↳ `long_seconds` | number | Seconds of longitude. | | ↳ `precision_horz` | number | Horizontal precision of location. | | ↳ `precision_vert` | number | Vertical precision of location. | | ↳ `size` | number | Size of location in meters. | | ↳ `order` | number | Order. | | ↳ `preference` | number | Preference. | | ↳ `regex` | string | Regex. | | ↳ `replacement` | string | Replacement. | | ↳ `service` | string | Service. | | ↳ `matching_type` | number | Matching Type. | | ↳ `selector` | number | Selector. | | ↳ `usage` | number | Usage. | | ↳ `port` | number | The port of the service. | | ↳ `weight` | number | The record weight. | | ↳ `fingerprint` | string | Fingerprint. | | `comment_modified_on` | string | When the record comment was last modified. Omitted if there is no comment. | | `created_on` | string | When the record was created. | | `id` | string | Identifier. | | `meta` | json | Extra Cloudflare-specific metadata about the record. | | ↳ `dead_glue` | boolean | Whether this glue record is not served because a shallower NS delegation takes precedence over the deeper delegation that needs it. | | ↳ `is_glue` | boolean | Whether this A or AAAA record is glue for a subdomain NS delegation. See \[Glue records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records#glue-records)). | | ↳ `shadowed_by` | array | IDs of the NS records that shadow this record. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | ↳ `shadowed_records_count` | number | Number of records shadowed by this NS delegation. See \[Shadowed records]\([https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records](https://developers.cloudflare.com/dns/manage-dns-records/reference/shadowed-records)). | | `modified_on` | string | When the record was last modified. | | `proxiable` | boolean | Whether the record can be proxied by Cloudflare or not. | | `tags_modified_on` | string | When the record tags were last modified. Omitted if there are no tags. | | `zone_id` | string | Legacy DNS response zone ID when returned by Cloudflare | | `zone_name` | string | Legacy DNS response zone name when returned by Cloudflare | | `locked` | boolean | Legacy DNS response lock flag when returned by Cloudflare | ### Cloudflare Update R2 Bucket Cors [#cloudflare-update-r2-bucket-cors] Replaces the Cross-Origin Resource Sharing (CORS) rules for an R2 bucket. Rules specify which origins, methods, and headers are allowed for browser requests to objects in the bucket. Replaces the configuration; resend all values to retain. #### Input [#input-66] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `bucketName` | string | Yes | Bucket name | | `apiKey` | string | Yes | Cloudflare API token | | `rules` | json | No | JSON array. rules Fields: allowed, exposeHeaders, id, maxAgeSeconds. | | `jurisdiction` | string | No | Jurisdiction where objects in this bucket are guaranteed to be stored. | #### Output [#output-66] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether Cloudflare accepted the operation | ### Cloudflare Update R2 Bucket Lifecycle [#cloudflare-update-r2-bucket-lifecycle] Replaces the object lifecycle rules for an R2 bucket. Rules match object-key prefixes and can expire objects, abort incomplete multipart uploads, or transition objects to Infrequent Access storage. Replaces the configuration; resend all values to retain. #### Input [#input-67] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `bucketName` | string | Yes | Bucket name | | `apiKey` | string | Yes | Cloudflare API token | | `rules` | string | Yes | Complete JSON array of lifecycle rules. Read the current rules first and include every rule to retain. Use \[] only to remove all lifecycle rules. Fields: abortMultipartUploadsTransition, conditions, deleteObjectsTransition, enabled, id, storageClassTransitions. | | `jurisdiction` | string | No | Jurisdiction where objects in this bucket are guaranteed to be stored. | #### Output [#output-67] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether Cloudflare accepted the operation | ### Cloudflare Update Rate Limiting Rule [#cloudflare-update-rate-limiting-rule] Updates a rate limiting rule in the http\_ratelimit phase entry point ruleset of a zone, using the current Rulesets-based rate limiting API. Cloudflare replaces the rule definition rather than merging it, so send the complete rule — every field you omit is reset. Run "List Rate Limiting Rules" first to read the current definition and get the ruleset ID. Requires an API token with Zone WAF Edit. #### Input [#input-68] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `exposed_credential_check` | json | No | JSON object. Configuration for exposed credential checking. Fields: password\_expression, username\_expression. | | `position` | json | No | JSON object. An object configuring where the rule will be placed. Fields: before, after, index. | | `score_per_period` | number | No | The score threshold per period for which the action will be executed the first time. | | `score_response_header_name` | string | No | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID that owns the rule | | `rulesetId` | string | Yes | The http\_ratelimit entry point ruleset ID, as returned by "List Rate Limiting Rules" | | `ruleId` | string | Yes | The rate limiting rule ID to update | | `expression` | string | Yes | Cloudflare filter expression selecting the requests the rule applies to | | `characteristics` | string | Yes | Comma-separated counting characteristics. cf.colo.id is mandatory. ip.src and cf.unique\_visitor\_id are mutually exclusive — include at most one. | | `period` | number | Yes | Counting window in seconds. Cloudflare accepts only 10, 60, 120, 300, 600, or 3600 | | `requestsPerPeriod` | number | Yes | Number of requests allowed within the counting period before the action fires | | `action` | string | Yes | Action applied once the limit is exceeded: block, managed\_challenge, js\_challenge, challenge, or log. Required because this endpoint replaces the rule rather than merging into it — a defaulted action would silently convert an existing log or challenge rule into a hard block | | `mitigationTimeout` | number | No | Seconds the action stays applied. Cloudflare accepts only 0, 10, 60, 120, 300, 600, 3600, or 86400 | | `counting_expression` | string | No | Optional expression defining which requests are counted | | `requestsToOrigin` | boolean | No | When true, only requests that reach the origin are counted | | `description` | string | No | Human-readable description of the rule | | `enabled` | boolean | No | Whether the rule is enabled | | `ref` | string | No | Reference tag that stays stable across rule updates. Because the update replaces the rule, omitting it resets the tag to the rule ID and breaks anything matching on the old value | | `actionParameters` | string | No | JSON object of action-specific parameters for the mitigation action, e.g. \{"response":\{"status\_code":429,"content":"\{"error":"rate limited"}","content\_type":"application/json"}} for a custom block response. Because the update replaces the rule, omitting it resets action\_parameters to \{} and the rule falls back to Cloudflare's default block page | | `logging` | string | No | JSON logging configuration to preserve, e.g. \{"enabled":true}. Omitting it on a rule that had logging configured resets it to the default | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-68] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Update Ruleset [#cloudflare-update-ruleset] Updates the description and rules of a zone ruleset, creating a new version. Read the current rules with "Get Ruleset" before replacing the list. The rules array replaces the complete list: include every existing rule you want to keep; omitted rules are removed. Use "Create Ruleset Rule" to add a single rule without replacing the list. #### Input [#input-69] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `rulesetId` | string | Yes | Ruleset id | | `apiKey` | string | Yes | Cloudflare API token | | `description` | string | No | An informative description of the ruleset. | | `rules` | json | No | JSON array replacing the complete rule list. Read "Get Ruleset" first and include every rule to retain; omitted rules are removed, and \[] removes all rules. Fields: action, action\_parameters, categories, description, enabled, exposed\_credential\_check, expression, id, last\_updated, logging, ratelimit, ref, version. | | `dry_run` | boolean | No | Validates the request without persisting changes when set to `true`. Responses that normally return 200 return `result: null`; endpoints that normally return 204 continue to return 204. | #### Output [#output-69] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Update Ruleset Rule [#cloudflare-update-ruleset-rule] Updates a rule in a zone ruleset. Cloudflare replaces the rule definition rather than merging it, so you must send every field you want the rule to keep — any field you omit is reset to its default. Read the current rule with "Get Ruleset" first. Requires an API token with Zone WAF Edit (or another matching ruleset Write permission). #### Input [#input-70] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `exposed_credential_check` | json | No | JSON object. Configuration for exposed credential checking. Fields: password\_expression, username\_expression. | | `position` | json | No | JSON object. An object configuring where the rule will be placed. Fields: before, after, index. | | `dry_run` | boolean | No | dry run | | `zoneId` | string | Yes | The zone ID that owns the ruleset | | `rulesetId` | string | Yes | The ruleset ID containing the rule | | `ruleId` | string | Yes | The rule ID to update | | `action` | string | Yes | The action the rule performs, e.g. block, challenge, js\_challenge, managed\_challenge, log, skip, or execute. Required because this endpoint replaces the rule definition — omitting it resets the stored action | | `expression` | string | Yes | Cloudflare filter expression selecting matching requests. Required because this endpoint replaces the rule definition — omitting it resets the stored expression | | `description` | string | No | Human-readable description of the rule | | `enabled` | boolean | No | Whether the rule is enabled | | `ref` | string | No | Reference tag that stays stable across rule updates. Because the update replaces the rule, omitting it resets the tag to the rule ID and breaks anything matching on the old value | | `actionParameters` | string | No | JSON object of action-specific parameters, e.g. \{"id":"\","overrides":\{"rules":\[\{"id":"\","action":"log","enabled":true,"score\_threshold":40}]}}. Required on an execute rule and must be sent on every update: the endpoint replaces the rule, so omitting it resets action\_parameters to \{} — which unbinds the managed ruleset the rule deploys and every override under it | | `ratelimit` | string | No | JSON rate limiting configuration to preserve on a rule in the http\_ratelimit phase, e.g. \{"characteristics":\["cf.colo.id","ip.src"],"period":60,"requests\_per\_period":100}. Because the update replaces the rule, omitting this on a rate limiting rule stops it rate limiting | | `logging` | string | No | JSON logging configuration to preserve, e.g. \{"enabled":true}. Omitting it on a rule that had logging configured resets it to the default | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-70] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `description` | string | An informative description of the ruleset. | | `id` | string | The unique ID of the ruleset. | | `last_updated` | string | The timestamp of when the ruleset was last modified. | | `name` | string | The human-readable name of the ruleset. | | `version` | string | The version of the ruleset. | | `kind` | string | The kind of the ruleset. Values: managed, custom, root, zone. | | `phase` | string | The phase of the ruleset. | | `rules` | array | The list of rules in the ruleset. | | ↳ `action` | string | The action to perform when the rule matches. | | ↳ `action_parameters` | json | The parameters configuring the rule's action. | | ↳ `response` | json | The response to show when the block is applied. | | ↳ `content` | string | The content to return. | | ↳ `content_type` | string | The type of the content to return. | | ↳ `status_code` | number | The status code to return. | | ↳ `algorithms` | array | Custom order for compression algorithms. | | ↳ `name` | string | Name of the compression algorithm to enable. Values: none, auto, default, gzip, brotli, zstd. | | ↳ `id` | string | The ID of the ruleset to execute. | | ↳ `matched_data` | json | The configuration to use for matched data logging. | | ↳ `public_key` | string | The public key to encrypt matched data logs with. | | ↳ `overrides` | json | A set of overrides to apply to the target ruleset. | | ↳ `action` | string | An action to override all rules with. This option has lower precedence than rule and category overrides. | | ↳ `categories` | array | A list of category-level overrides. This option has the second-highest precedence after rule-level overrides. | | ↳ `action` | string | The action to override rules in the category with. | | ↳ `category` | string | The name of the category to override. | | ↳ `enabled` | boolean | Whether to enable execution of rules in the category. | | ↳ `sensitivity_level` | string | The sensitivity level to use for rules in the category. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `enabled` | boolean | Whether to enable execution of all rules. This option has lower precedence than rule and category overrides. | | ↳ `rules` | array | A list of rule-level overrides. This option has the highest precedence. | | ↳ `action` | string | The action to override the rule with. | | ↳ `enabled` | boolean | Whether to enable execution of the rule. | | ↳ `id` | string | The ID of the rule to override. | | ↳ `score_threshold` | number | The score threshold to use for the rule. | | ↳ `sensitivity_level` | string | The sensitivity level to use for the rule. This option is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `sensitivity_level` | string | A sensitivity level to set for all rules. This option has lower precedence than rule and category overrides and is only applicable for DDoS phases. Values: default, medium, low, eoff. | | ↳ `cookie_fields` | array | The cookie fields to log. | | ↳ `name` | string | The name of the cookie. | | ↳ `raw_response_fields` | array | The raw response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `request_fields` | array | The raw request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `response_fields` | array | The transformed response fields to log. | | ↳ `name` | string | The name of the response header. | | ↳ `preserve_duplicates` | boolean | Whether to log duplicate values of the same header. | | ↳ `transformed_request_fields` | array | The transformed request fields to log. | | ↳ `name` | string | The name of the header. | | ↳ `from_list` | json | A redirect based on a bulk list lookup. | | ↳ `key` | string | An expression that evaluates to the list lookup key. | | ↳ `name` | string | The name of the list to match against. | | ↳ `from_value` | json | A redirect based on the request properties. | | ↳ `preserve_query_string` | boolean | Whether to keep the query string of the original request. | | ↳ `status_code` | number | The status code to use for the redirect. Values: 301, 302, 303, 307, 308. | | ↳ `target_url` | json | A URL to redirect the request to. | | ↳ `expression` | string | An expression that evaluates to a URL to redirect the request to. | | ↳ `value` | string | A URL to redirect the request to. | | ↳ `headers` | json | A map of headers to rewrite. | | ↳ `uri` | json | A URI query rewrite. | | ↳ `path` | json | A URI path rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI path to. | | ↳ `value` | string | A value to rewrite the URI path to. | | ↳ `query` | json | A URI query rewrite. | | ↳ `expression` | string | An expression that evaluates to a value to rewrite the URI query to. | | ↳ `value` | string | A value to rewrite the URI query to. | | ↳ `origin` | boolean | Whether to propagate the rewritten URI to origin. | | ↳ `host_header` | string | A value to rewrite the HTTP host header to. | | ↳ `origin` | json | An origin to route to. | | ↳ `host` | string | A resolved host to route to. | | ↳ `port` | number | A destination port to route to. | | ↳ `sni` | json | A Server Name Indication (SNI) override. | | ↳ `value` | string | A value to override the SNI to. | | ↳ `increment` | number | A delta to change the score by, which can be either positive or negative. | | ↳ `content_type` | string | The content type header to set with the error response. Values: application/json, text/html, text/plain, text/xml. | | ↳ `status_code` | number | The status code to use for the error. | | ↳ `content` | string | The response content. | | ↳ `asset_name` | string | The name of a custom asset to serve as the error response. | | ↳ `immutable` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `max-age` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `must-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `must-understand` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-cache` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `no-store` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `no-transform` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `private` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `qualifiers` | array | Optional list of header names to qualify the directive (e.g., for "private" or "no-cache" directives). | | ↳ `proxy-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `public` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `s-maxage` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-if-error` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `stale-while-revalidate` | json | Remove the directive. | | ↳ `cloudflare_only` | boolean | Whether the directive should only be applied to the Cloudflare CDN cache. | | ↳ `operation` | string | The operation to perform on the cache-control directive. Values: set, remove. | | ↳ `value` | number | The duration value in seconds for the directive. | | ↳ `additional_cacheable_ports` | array | A list of additional ports that caching should be enabled on. | | ↳ `browser_ttl` | json | How long client browsers should cache the response. Cloudflare cache purge will not purge content cached on client browsers, so high browser TTLs may lead to stale content. | | ↳ `default` | number | The browser TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The browser TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin, bypass. | | ↳ `cache` | boolean | Whether the request's response from the origin is eligible for caching. Caching itself will still depend on the cache control header and your other caching configurations. | | ↳ `cache_key` | json | Which components of the request are included in or excluded from the cache key Cloudflare uses to store the response in cache. | | ↳ `cache_by_device_type` | boolean | Whether to separate cached content based on the visitor's device type. | | ↳ `cache_deception_armor` | boolean | Whether to protect from web cache deception attacks, while allowing static assets to be cached. | | ↳ `custom_key` | json | Which components of the request are included or excluded from the cache key. | | ↳ `cookie` | json | Which cookies to include in the cache key. | | ↳ `check_presence` | array | A list of cookies to check for the presence of. The presence of these cookies is included in the cache key. | | ↳ `include` | array | A list of cookies to include in the cache key. | | ↳ `header` | json | Which headers to include in the cache key. | | ↳ `check_presence` | array | A list of headers to check for the presence of. The presence of these headers is included in the cache key. | | ↳ `contains` | json | A mapping of header names to a list of values. If a header is present in the request and contains any of the values provided, its value is included in the cache key. | | ↳ `exclude_origin` | boolean | Whether to exclude the origin header in the cache key. | | ↳ `include` | array | A list of headers to include in the cache key. | | ↳ `host` | json | How to use the host in the cache key. | | ↳ `resolved` | boolean | Whether to use the resolved host in the cache key. | | ↳ `query_string` | json | Which query string parameters to include in or exclude from the cache key. | | ↳ `exclude` | json | Which query string parameters to exclude from the cache key. | | ↳ `all` | boolean | Whether to exclude all query string parameters from the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to exclude from the cache key. | | ↳ `include` | json | Which query string parameters to include in the cache key. | | ↳ `all` | boolean | Whether to include all query string parameters in the cache key. Values: True. | | ↳ `list` | array | A list of query string parameters to include in the cache key. | | ↳ `user` | json | How to use characteristics of the request user agent in the cache key. | | ↳ `device_type` | boolean | Whether to use the user agent's device type in the cache key. | | ↳ `geo` | boolean | Whether to use the user agents's country in the cache key. | | ↳ `lang` | boolean | Whether to use the user agent's language in the cache key. | | ↳ `ignore_query_strings_order` | boolean | Whether to treat requests with the same query parameters the same, regardless of the order those query parameters are in. | | ↳ `cache_reserve` | json | Settings to determine whether the request's response from origin is eligible for Cache Reserve (requires a Cache Reserve add-on plan). | | ↳ `eligible` | boolean | Whether Cache Reserve is enabled. If this is true and a request meets eligibility criteria, Cloudflare will write the resource to Cache Reserve. | | ↳ `minimum_file_size` | number | The minimum file size eligible for storage in Cache Reserve. | | ↳ `edge_ttl` | json | How long the Cloudflare edge network should cache the response. | | ↳ `default` | number | The edge TTL (in seconds) if you choose the "override\_origin" mode. | | ↳ `mode` | string | The edge TTL mode. Values: respect\_origin, bypass\_by\_default, override\_origin. | | ↳ `status_code_ttl` | array | A list of TTLs to apply to specific status codes or status code ranges. | | ↳ `status_code` | number | A single status code to apply the TTL to. | | ↳ `status_code_range` | json | A range of status codes to apply the TTL to. | | ↳ `from` | number | The lower bound of the range. | | ↳ `to` | number | The upper bound of the range. | | ↳ `value` | number | The time to cache the response for (in seconds). A value of 0 is equivalent to setting the cache control header with the value "no-cache". A value of -1 is equivalent to setting the cache control header with the value of "no-store". | | ↳ `origin_cache_control` | boolean | Whether Cloudflare will aim to strictly adhere to RFC 7234. | | ↳ `origin_error_page_passthru` | boolean | Whether to generate Cloudflare error pages for issues from the origin server. | | ↳ `origin_range_requests` | json | Controls whether Cloudflare fetches a large asset from the origin as a series of range requests instead of one whole-body request. | | ↳ `mode` | string | Whether to use range requests. `default` is the behaviour the zone gets without this rule. Values: on, off, default. | | ↳ `read_timeout` | number | A timeout value between two successive read operations to use for your origin server. Historically, the timeout value between two read options from Cloudflare to an origin server is 100 seconds. If you are attempting to reduce HTTP 524 errors because of timeouts from an origin server, try increasing this timeout value. | | ↳ `respect_strong_etags` | boolean | Whether Cloudflare should respect strong ETag (entity tag) headers. If false, Cloudflare converts strong ETag headers to weak ETag headers. | | ↳ `serve_stale` | json | When to serve stale content from cache. | | ↳ `disable_stale_while_updating` | boolean | Whether Cloudflare should disable serving stale content while getting the latest content from the origin. | | ↳ `shared_dictionary` | json | Configuration for shared dictionary compression. When set, Cloudflare injects Use-As-Dictionary headers on matching cacheable responses. | | ↳ `match_pattern` | string | URL pattern for the Use-As-Dictionary match field. This pattern specifies which URLs can use this response as a dictionary. | | ↳ `strip_etags` | boolean | Whether to strip ETag headers from the origin response before caching. | | ↳ `strip_last_modified` | boolean | Whether to strip Last-Modified headers from the origin response before caching. | | ↳ `strip_set_cookie` | boolean | Whether to strip Set-Cookie headers from the origin response before caching. | | ↳ `vary` | json | Controls how cached responses vary based on request headers. `default` is required by the API and applies to any Vary response header that does not have a per-header override. | | ↳ `default` | json | Controls how response Vary headers without a per-header override contribute to the cache key. | | ↳ `action` | string | How the header value is treated when building the cache key. Values: bypass, passthrough, normalize. | | ↳ `headers` | json | A mapping of lowercase request header names to their vary configuration. | | ↳ `operation` | string | The operation to perform on the cache tags. Values: add, remove, set. | | ↳ `values` | array | A list of cache tag values. | | ↳ `expression` | string | An expression that evaluates to an array of cache tag values. | | ↳ `automatic_https_rewrites` | boolean | Whether to enable Automatic HTTPS Rewrites. | | ↳ `autominify` | json | Which file extensions to minify automatically. | | ↳ `css` | boolean | Whether to minify CSS files. | | ↳ `html` | boolean | Whether to minify HTML files. | | ↳ `js` | boolean | Whether to minify JavaScript files. | | ↳ `bic` | boolean | Whether to enable Browser Integrity Check (BIC). | | ↳ `content_converter` | boolean | Whether to enable content conversion (e.g., HTML to Markdown). | | ↳ `disable_apps` | boolean | Whether to disable Cloudflare Apps. Values: True. | | ↳ `disable_pay_per_crawl` | boolean | Whether to disable Pay Per Crawl. Values: True. | | ↳ `disable_rum` | boolean | Whether to disable Real User Monitoring (RUM). Values: True. | | ↳ `disable_zaraz` | boolean | Whether to disable Zaraz. Values: True. | | ↳ `email_obfuscation` | boolean | Whether to enable Email Obfuscation. | | ↳ `fonts` | boolean | Whether to enable Cloudflare Fonts. | | ↳ `hotlink_protection` | boolean | Whether to enable Hotlink Protection. | | ↳ `mirage` | boolean | Whether to enable Mirage. | | ↳ `opportunistic_encryption` | boolean | Whether to enable Opportunistic Encryption. | | ↳ `polish` | string | The Polish level to configure. Values: off, lossless, lossy, webp. | | ↳ `redirects_for_ai_training` | boolean | Whether to redirect verified AI training crawlers to canonical URLs found in the HTML response. | | ↳ `request_body_buffering` | string | The request body buffering mode. Values: none, standard, full. | | ↳ `response_body_buffering` | string | The response body buffering mode. Values: none, standard. | | ↳ `rocket_loader` | boolean | Whether to enable Rocket Loader. | | ↳ `security_level` | string | The Security Level to configure. Values: off, essentially\_off, low, medium, high, under\_attack. | | ↳ `server_side_excludes` | boolean | Whether to enable Server-Side Excludes. | | ↳ `ssl` | string | The SSL level to configure. Values: off, flexible, full, strict, origin\_pull. | | ↳ `sxg` | boolean | Whether to enable Signed Exchanges (SXG). | | ↳ `webmcp_enabled` | boolean | Whether to serve the WebMCP bridge script, which exposes the page's tools to browser AI agents. | | ↳ `webmcp_packs` | array | Bundled WebMCP tool packs to activate for matching requests. An empty array disables all packs. Omitting this parameter leaves the pack selection unchanged. Does not enable the WebMCP bridge itself. | | ↳ `phase` | string | A phase to skip the execution of. This option is only compatible with the products option. Values: current. | | ↳ `phases` | array | A list of phases to skip the execution of. This option is incompatible with the rulesets option. | | ↳ `products` | array | A list of legacy security products to skip the execution of. | | ↳ `rules` | json | A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the execution of. This option is incompatible with the ruleset option. | | ↳ `ruleset` | string | A ruleset to skip the execution of. This option is incompatible with the rulesets option. Values: current. | | ↳ `rulesets` | array | A list of ruleset IDs to skip the execution of. This option is incompatible with the ruleset and phases options. | | ↳ `link_maze` | json | Enables the link maze transformation on the response. | | ↳ `categories` | array | The categories of the rule. | | ↳ `description` | string | An informative description of the rule. | | ↳ `enabled` | boolean | Whether the rule should be executed. | | ↳ `exposed_credential_check` | json | Configuration for exposed credential checking. | | ↳ `password_expression` | string | An expression that selects the password used in the credentials check. | | ↳ `username_expression` | string | An expression that selects the user ID used in the credentials check. | | ↳ `expression` | string | The expression defining which traffic will match the rule. | | ↳ `id` | string | The unique ID of the rule. | | ↳ `last_updated` | string | The timestamp of when the rule was last modified. | | ↳ `logging` | json | An object configuring the rule's logging behavior. | | ↳ `enabled` | boolean | Whether to generate a log when the rule matches. | | ↳ `ratelimit` | json | An object configuring the rule's rate limit behavior. | | ↳ `characteristics` | array | Characteristics of the request on which the rate limit counter will be incremented. | | ↳ `counting_expression` | string | An expression that defines when the rate limit counter should be incremented. It defaults to the same as the rule's expression. | | ↳ `mitigation_timeout` | number | Period of time in seconds after which the action will be disabled following its first execution. | | ↳ `period` | number | Period in seconds over which the counter is being incremented. | | ↳ `requests_per_period` | number | The threshold of requests per period after which the action will be executed for the first time. | | ↳ `requests_to_origin` | boolean | Whether counting is only performed when an origin is reached. | | ↳ `score_per_period` | number | The score threshold per period for which the action will be executed the first time. | | ↳ `score_response_header_name` | string | A response header name provided by the origin, which contains the score to increment rate limit counter with. | | ↳ `ref` | string | The reference of the rule (the rule's ID by default). | | ↳ `version` | string | The version of the rule. | ### Cloudflare Update Tunnel [#cloudflare-update-tunnel] Updates the name or secret of an existing Cloudflare Tunnel. #### Input [#input-71] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | Account id | | `tunnelId` | string | Yes | Tunnel id | | `apiKey` | string | Yes | Cloudflare API token | | `name` | string | No | A user-friendly name for a tunnel. | | `tunnel_secret` | string | No | Sets the password required to run a locally-managed tunnel. Must be at least 32 bytes and encoded as a base64 string. | #### Output [#output-71] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_tag` | string | Cloudflare account ID | | `config_src` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel on the Zero Trust dashboard. Values: local, cloudflare. | | `connections` | array | The Cloudflare Tunnel connections between your origin and Cloudflare's edge. | | ↳ `client_id` | string | UUID of the Cloudflare Tunnel connector. | | ↳ `client_version` | string | The cloudflared version used to establish this connection. | | ↳ `colo_name` | string | The Cloudflare data center used for this connection. | | ↳ `id` | string | UUID of the Cloudflare Tunnel connection. | | ↳ `is_pending_reconnect` | boolean | Cloudflare continues to track connections for several minutes after they disconnect. This is an optimization to improve latency and reliability of reconnecting. If `true`, the connection has disconnected but is still being tracked. If `false`, the connection is actively serving traffic. | | ↳ `opened_at` | string | Timestamp of when the connection was established. | | ↳ `origin_ip` | string | The public IP address of the host running cloudflared. | | ↳ `uuid` | string | UUID of the Cloudflare Tunnel connection. | | `conns_active_at` | string | Timestamp of when the tunnel established at least one connection to Cloudflare's edge. If `null`, the tunnel is inactive. | | `conns_inactive_at` | string | Timestamp of when the tunnel became inactive (no connections to Cloudflare's edge). If `null`, the tunnel is active. | | `created_at` | string | Timestamp of when the resource was created. | | `deleted_at` | string | Timestamp of when the resource was deleted. If `null`, the resource has not been deleted. | | `id` | string | UUID of the tunnel. | | `metadata` | json | Metadata associated with the tunnel. | | `name` | string | A user-friendly name for a tunnel. | | `remote_config` | boolean | If `true`, the tunnel can be configured remotely from the Zero Trust dashboard. If `false`, the tunnel must be configured locally on the origin machine. | | `status` | string | The status of the tunnel. | | `tun_type` | string | The type of tunnel. Values: cfd\_tunnel, warp\_connector, warp, magic, ip\_sec, gre, cni. | ### Cloudflare Update Tunnel Configuration [#cloudflare-update-tunnel-configuration] Replaces the configuration for a remotely managed Cloudflare Tunnel, including its ingress rules and origin request settings. Replaces the configuration; resend all values to retain. #### Input [#input-72] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `accountId` | string | Yes | Account id | | `tunnelId` | string | Yes | Tunnel id | | `apiKey` | string | Yes | Cloudflare API token | | `config` | json | No | JSON object. The tunnel configuration and ingress rules. Fields: ingress, originRequest, warp-routing. | #### Output [#output-72] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account_id` | string | Identifier. | | `config` | json | The tunnel configuration and ingress rules. | | ↳ `ingress` | array | List of public hostname definitions. At least one ingress rule needs to be defined for the tunnel. | | ↳ `hostname` | string | Public hostname for this service. | | ↳ `originRequest` | json | Configuration parameters for the public hostname specific connection settings between cloudflared and origin server. | | ↳ `access` | json | For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header. | | ↳ `audTag` | array | Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API. | | ↳ `required` | boolean | Deny traffic that has not fulfilled Access authorization. | | ↳ `teamName` | string | teamName | | ↳ `caPool` | string | Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare. | | ↳ `connectTimeout` | number | Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout. | | ↳ `disableChunkedEncoding` | boolean | Disables chunked transfer encoding. Useful if you are running a WSGI server. | | ↳ `http2Origin` | boolean | Attempt to connect to origin using HTTP2. Origin must be configured as https. | | ↳ `httpHostHeader` | string | Sets the HTTP Host header on requests sent to the local service. | | ↳ `keepAliveConnections` | number | Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections. | | ↳ `keepAliveTimeout` | number | Timeout after which an idle keepalive connection can be discarded. | | ↳ `matchSNItoHost` | boolean | Auto configure the Hostname on the origin server certificate. | | ↳ `noHappyEyeballs` | boolean | Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols. | | ↳ `noTLSVerify` | boolean | Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted. | | ↳ `originServerName` | string | Hostname that cloudflared should expect from your origin server certificate. | | ↳ `proxyType` | string | cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: "" for the regular proxy and "socks" for a SOCKS5 proxy. | | ↳ `tcpKeepAlive` | number | The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server. | | ↳ `tlsTimeout` | number | Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server. | | ↳ `path` | string | Requests with this path route to this public hostname. | | ↳ `service` | string | Protocol and address of destination server. Supported protocols: http\://, https\://, unix://, tcp\://, ssh://, rdp\://, unix+tls\://, smb://. Alternatively can return a HTTP status code http\_status:\[code] e.g. 'http\_status:404'. | | ↳ `originRequest` | json | Configuration parameters for the public hostname specific connection settings between cloudflared and origin server. | | ↳ `access` | json | For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header. | | ↳ `audTag` | array | Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API. | | ↳ `required` | boolean | Deny traffic that has not fulfilled Access authorization. | | ↳ `teamName` | string | teamName | | ↳ `caPool` | string | Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare. | | ↳ `connectTimeout` | number | Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout. | | ↳ `disableChunkedEncoding` | boolean | Disables chunked transfer encoding. Useful if you are running a WSGI server. | | ↳ `http2Origin` | boolean | Attempt to connect to origin using HTTP2. Origin must be configured as https. | | ↳ `httpHostHeader` | string | Sets the HTTP Host header on requests sent to the local service. | | ↳ `keepAliveConnections` | number | Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections. | | ↳ `keepAliveTimeout` | number | Timeout after which an idle keepalive connection can be discarded. | | ↳ `matchSNItoHost` | boolean | Auto configure the Hostname on the origin server certificate. | | ↳ `noHappyEyeballs` | boolean | Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols. | | ↳ `noTLSVerify` | boolean | Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted. | | ↳ `originServerName` | string | Hostname that cloudflared should expect from your origin server certificate. | | ↳ `proxyType` | string | cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: "" for the regular proxy and "socks" for a SOCKS5 proxy. | | ↳ `tcpKeepAlive` | number | The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server. | | ↳ `tlsTimeout` | number | Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server. | | ↳ `warp-routing` | json | Enable private network access from WARP users to private network routes. This is enabled if the tunnel has an assigned route. | | ↳ `enabled` | boolean | enabled | | `created_at` | string | created at | | `source` | string | Indicates if this is a locally or remotely configured tunnel. If `local`, manage the tunnel using a YAML file on the origin machine. If `cloudflare`, manage the tunnel's configuration on the Zero Trust dashboard. Values: local, cloudflare. | | `tunnel_id` | string | UUID of the tunnel. | | `version` | number | The version of the Tunnel Configuration. | ### Cloudflare Update Worker Route [#cloudflare-update-worker-route] Replaces the URL pattern or Worker associated with a Worker route. Replaces the configuration; resend all values to retain. #### Input [#input-73] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `routeId` | string | Yes | Route id | | `apiKey` | string | Yes | Cloudflare API token | | `pattern` | string | Yes | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | `script` | string | No | Name of the script to run if the route matches. | #### Output [#output-73] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Identifier. | | `pattern` | string | Pattern to match incoming requests against. \[Learn more]\([https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior](https://developers.cloudflare.com/workers/configuration/routing/routes/#matching-behavior)). | | `script` | string | Name of the script to run if the route matches. | ### Cloudflare Update Zone [#cloudflare-update-zone] Edits a zone. Only one zone property can be changed at a time. #### Input [#input-74] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `zoneId` | string | Yes | Zone id | | `apiKey` | string | Yes | Cloudflare API token | | `paused` | boolean | No | Indicates whether the zone is only using Cloudflare DNS services. A true value means the zone will not receive security or performance benefits. | | `plan` | json | No | JSON object. (Deprecated) Please use the `/zones/\{zone_id\}/subscription` API to update a zone's plan. Changing this value will create/cancel associated subscriptions. To view available plans for this zone, see Zone Plans. Fields: id. | | `type` | string | No | A full zone implies that DNS is hosted with Cloudflare. A partial zone is typically a partner-hosted zone or a CNAME setup. This parameter is only available to Enterprise customers or if it has been explicitly enabled on a zone. Allowed values: full, partial, secondary, internal. | | `vanity_name_servers` | json | No | JSON array. An array of domains used for custom name servers. This is only available for Business and Enterprise plans. | #### Output [#output-74] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `account` | json | The account the zone belongs to. | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the account. | | `activated_on` | string | The last time proof of ownership was detected and the zone was made active. | | `cname_suffix` | string | Allows the customer to use a custom apex. *Tenants Only Configuration*. | | `created_on` | string | When the zone was created. | | `development_mode` | number | The interval (in seconds) from when development mode expires (positive integer) or last expired (negative integer) for the domain. If development mode has never been enabled, this value is 0. | | `id` | string | Identifier | | `meta` | json | Metadata about the zone. | | ↳ `cdn_only` | boolean | The zone is only configured for CDN. | | ↳ `custom_certificate_quota` | number | Number of Custom Certificates the zone can have. | | ↳ `dns_only` | boolean | The zone is only configured for DNS. | | ↳ `foundation_dns` | boolean | The zone is setup with Foundation DNS. | | ↳ `page_rule_quota` | number | Number of Page Rules a zone can have. | | ↳ `phishing_detected` | boolean | The zone has been flagged for phishing. | | ↳ `step` | number | step | | `modified_on` | string | When the zone was last modified. | | `name` | string | The domain name. Per \[RFC 1035]\([https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4)) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters. | | `name_servers` | array | The name servers Cloudflare assigns to a zone. | | `original_dnshost` | string | DNS host at the time of switching to Cloudflare. | | `original_name_servers` | array | Original name servers before moving to Cloudflare. | | `original_registrar` | string | Registrar for the domain at the time of switching to Cloudflare. | | `owner` | json | The owner of the zone. | | ↳ `id` | string | Identifier | | ↳ `name` | string | Name of the owner. | | ↳ `type` | string | The type of owner. | | `paused` | boolean | Indicates whether the zone is only using Cloudflare DNS services. A true value means the zone will not receive security or performance benefits. | | `permissions` | array | Legacy permissions based on legacy user membership information. | | `plan` | json | A Zones subscription information. | | ↳ `can_subscribe` | boolean | States if the subscription can be activated. | | ↳ `currency` | string | The denomination of the customer. | | ↳ `externally_managed` | boolean | If this Zone is managed by another company. | | ↳ `frequency` | string | How often the customer is billed. | | ↳ `id` | string | Identifier | | ↳ `is_subscribed` | boolean | States if the subscription active. | | ↳ `legacy_discount` | boolean | If the legacy discount applies to this Zone. | | ↳ `legacy_id` | string | The legacy name of the plan. | | ↳ `name` | string | Name of the owner. | | ↳ `price` | number | How much the customer is paying. | | `status` | string | The zone status on Cloudflare. Values: initializing, pending, active, moved. | | `tenant` | json | The root organizational unit that this zone belongs to (such as a tenant or organization). | | ↳ `id` | string | Identifier | | ↳ `name` | string | The name of the Tenant account. | | `tenant_unit` | json | The immediate parent organizational unit that this zone belongs to (such as under a tenant or sub-organization). | | ↳ `id` | string | Identifier | | `type` | string | A full zone implies that DNS is hosted with Cloudflare. A partial zone is typically a partner-hosted zone or a CNAME setup. Values: full, partial, secondary, internal. | | `vanity_name_servers` | array | An array of domains used for custom name servers. This is only available for Business and Enterprise plans. | | `verification_key` | string | Verification key for partial zone setup. | ### Cloudflare Update Zone Setting [#cloudflare-update-zone-setting] Updates a specific zone setting such as SSL mode, security level, cache level, or other configuration. #### Input [#input-75] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `enabled` | boolean | No | Enrollment value for ssl\_recommender; this setting uses enabled instead of value | | `zoneId` | string | Yes | The zone ID to update settings for | | `settingId` | string | Yes | Setting to update (e.g., "ssl", "security\_level", "cache\_level", "always\_use\_https", "browser\_cache\_ttl", "http3", "min\_tls\_version", "ciphers") | | `value` | string | No | Required except for ssl\_recommender. New value as a string, or a JSON string for complex values (e.g., "full" for SSL, "medium" for security\_level, "aggressive" for cache\_level, \["ECDHE-RSA-AES128-GCM-SHA256"] for ciphers) | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-75] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Setting identifier (e.g., ssl, cache\_level, security\_level) | | `value` | string | Updated setting value as a string. Simple values returned as-is (e.g., "full", "on"). SSL Recommender returns its enabled flag. Complex values are JSON-stringified. | | `editable` | boolean | Whether the setting can be modified for the current zone plan | | `modified_on` | string | ISO 8601 timestamp when the setting was last modified | | `time_remaining` | number | Development mode countdown, in seconds. Cloudflare documents this only on the zones\_development\_mode setting, where it is the interval from when development mode expires (positive) or last expired (negative) | --- # CloudFormation (/integrations/cloudformation) {/* MANUAL-CONTENT-START:intro */} Use [AWS CloudFormation](https://aws.amazon.com/cloudformation/) to manage template-defined resource stacks. Create or update stacks, preview changes with change sets, inspect resources and events, and check drift or template validity from a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS CloudFormation into workflows. Create, update, and delete stacks, preview changes with change sets, describe stacks, list resources, detect drift, view stack events, and retrieve or validate templates. Requires AWS access key and secret access key. ## Actions [#actions] ### CloudFormation Describe Stacks [#cloudformation-describe-stacks] List and describe CloudFormation stacks #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | No | Stack name or ID to describe (omit to list all stacks) | #### Output [#output] | Parameter | Type | Description | | --------- | ----- | ------------------------------------------------------------ | | `stacks` | array | List of CloudFormation stacks with status, outputs, and tags | ### CloudFormation Create Stack [#cloudformation-create-stack] Create a new CloudFormation stack from a template #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Name for the new stack (must be unique in the Region) | | `templateBody` | string | Yes | The CloudFormation template body (JSON or YAML) | | `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) | | `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) required when the template creates IAM resources or uses macros | | `tags` | json | No | Tags to apply to the stack and its resources (e.g., \[\{"key": "env", "value": "prod"}]) | | `onFailure` | string | No | Action to take on creation failure: ROLLBACK (default), DELETE, or DO\_NOTHING | | `timeoutInMinutes` | number | No | Amount of time before the stack creation times out and rolls back | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `stackId` | string | The unique ID of the created stack | ### CloudFormation Update Stack [#cloudformation-update-stack] Update an existing CloudFormation stack with a new or previous template #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Name or ID of the stack to update | | `templateBody` | string | No | The new CloudFormation template body (JSON or YAML). Required unless usePreviousTemplate is true | | `usePreviousTemplate` | boolean | No | Reuse the template currently associated with the stack instead of providing templateBody | | `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) | | `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) | | `tags` | json | No | Tags to apply to the stack and its resources (e.g., \[\{"key": "env", "value": "prod"}]) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `stackId` | string | The unique ID of the updated stack | ### CloudFormation Delete Stack [#cloudformation-delete-stack] Delete a CloudFormation stack and its resources #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Name or ID of the stack to delete | | `retainResources` | string | No | Comma-separated logical resource IDs to retain instead of deleting (only applies to stacks in DELETE\_FAILED state) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### CloudFormation Cancel Update Stack [#cloudformation-cancel-update-stack] Cancel an in-progress stack update and roll back to the last known stable state #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Name or ID of the stack whose update should be cancelled | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### CloudFormation Create Change Set [#cloudformation-create-change-set] Preview the changes a stack create or update would make before applying them #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Name of the stack to create or update (new name for CREATE type, existing name for UPDATE) | | `changeSetName` | string | Yes | Name for the new change set | | `templateBody` | string | No | The CloudFormation template body (JSON or YAML). Required unless usePreviousTemplate is true | | `usePreviousTemplate` | boolean | No | Reuse the template currently associated with the stack (UPDATE change sets only) | | `parameters` | json | No | Template input parameters (e.g., \[\{"parameterKey": "InstanceType", "parameterValue": "t3.micro"}]) | | `capabilities` | string | No | Comma-separated capabilities to acknowledge (CAPABILITY\_IAM, CAPABILITY\_NAMED\_IAM, CAPABILITY\_AUTO\_EXPAND) | | `changeSetType` | string | No | CREATE (default, new stack), UPDATE (existing stack), or IMPORT (import existing resources) | | `description` | string | No | Description of the change set for reference | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------- | | `changeSetId` | string | The unique ID of the created change set | | `stackId` | string | The unique ID of the target stack | ### CloudFormation Describe Change Set [#cloudformation-describe-change-set] View the resource changes a change set would make and its execution status #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `changeSetName` | string | Yes | Name or ARN of the change set to describe | | `stackName` | string | No | Name or ID of the stack the change set belongs to (required if changeSetName is not an ARN) | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | | `changeSetName` | string | Name of the change set | | `changeSetId` | string | The unique ID of the change set | | `stackId` | string | The unique ID of the target stack | | `stackName` | string | Name of the target stack | | `description` | string | Description of the change set | | `executionStatus` | string | Whether the change set can be executed (AVAILABLE, UNAVAILABLE, EXECUTE\_IN\_PROGRESS, EXECUTE\_COMPLETE, EXECUTE\_FAILED, OBSOLETE) | | `status` | string | Current status of the change set (CREATE\_PENDING, CREATE\_IN\_PROGRESS, CREATE\_COMPLETE, DELETE\_COMPLETE, FAILED) | | `statusReason` | string | Reason for the current status, particularly if failed | | `creationTime` | number | Timestamp the change set was created | | `capabilities` | array | Capabilities required to execute the change set | | `changes` | array | List of resource changes (action, logical/physical resource ID, resource type, replacement) | ### CloudFormation Execute Change Set [#cloudformation-execute-change-set] Apply a previously created and reviewed change set to its stack #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `changeSetName` | string | Yes | Name or ARN of the change set to execute | | `stackName` | string | No | Name or ID of the stack the change set belongs to (required if changeSetName is not an ARN) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### CloudFormation List Stack Resources [#cloudformation-list-stack-resources] List all resources in a CloudFormation stack #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Stack name or ID | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ----- | ---------------------------------------------------------------- | | `resources` | array | List of stack resources with type, status, and drift information | ### CloudFormation Detect Stack Drift [#cloudformation-detect-stack-drift] Initiate drift detection on a CloudFormation stack #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Stack name or ID to detect drift on | #### Output [#output-9] | Parameter | Type | Description | | ----------------------- | ------ | --------------------------------------------------------------------- | | `stackDriftDetectionId` | string | ID to use with Describe Stack Drift Detection Status to check results | ### CloudFormation Describe Stack Drift Detection Status [#cloudformation-describe-stack-drift-detection-status] Check the status of a stack drift detection operation #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ----------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackDriftDetectionId` | string | Yes | The drift detection ID returned by Detect Stack Drift | #### Output [#output-10] | Parameter | Type | Description | | --------------------------- | ------ | ---------------------------------------------------------------------------------- | | `stackId` | string | The stack ID | | `stackDriftDetectionId` | string | The drift detection ID | | `stackDriftStatus` | string | Drift status (DRIFTED, IN\_SYNC, NOT\_CHECKED) | | `detectionStatus` | string | Detection status (DETECTION\_IN\_PROGRESS, DETECTION\_COMPLETE, DETECTION\_FAILED) | | `detectionStatusReason` | string | Reason if detection failed | | `driftedStackResourceCount` | number | Number of resources that have drifted | | `timestamp` | number | Timestamp of the detection | ### CloudFormation Describe Stack Events [#cloudformation-describe-stack-events] Get the event history for a CloudFormation stack #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Stack name or ID | | `limit` | number | No | Maximum number of events to return (default: 50) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ----- | -------------------------------------------------------- | | `events` | array | List of stack events with resource status and timestamps | ### CloudFormation Get Template [#cloudformation-get-template] Retrieve the template body for a CloudFormation stack #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `stackName` | string | Yes | Stack name or ID | | `templateStage` | string | No | Which template version to retrieve: Processed (default, with transforms applied) or Original (as submitted) | #### Output [#output-12] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------ | | `templateBody` | string | The template body as a JSON or YAML string | | `stagesAvailable` | array | Available template stages | ### CloudFormation Get Template Summary [#cloudformation-get-template-summary] Get a summary of a template or deployed stack: resource types, required capabilities, and parameters, without full validation #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `templateBody` | string | No | The CloudFormation template body (JSON or YAML). Required if stackName is not provided | | `stackName` | string | No | Name or ID of a deployed stack to summarize instead of a template body | #### Output [#output-13] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------- | | `description` | string | Template description | | `parameters` | array | Template parameters with types, defaults, and descriptions | | `capabilities` | array | Required capabilities (e.g., CAPABILITY\_IAM) | | `capabilitiesReason` | string | Reason capabilities are required | | `resourceTypes` | array | AWS resource types declared in the template (e.g., AWS::S3::Bucket) | | `version` | string | Template format version | | `declaredTransforms` | array | Transforms used in the template (e.g., AWS::Serverless-2016-10-31) | ### CloudFormation Validate Template [#cloudformation-validate-template] Validate a CloudFormation template for syntax and structural correctness #### Input [#input-14] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `templateBody` | string | Yes | The CloudFormation template body (JSON or YAML) | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------ | | `description` | string | Template description | | `parameters` | array | Template parameters with defaults and descriptions | | `capabilities` | array | Required capabilities (e.g., CAPABILITY\_IAM) | | `capabilitiesReason` | string | Reason capabilities are required | | `declaredTransforms` | array | Transforms used in the template (e.g., AWS::Serverless-2016-10-31) | --- # CloudTrail (/integrations/cloudtrail) {/* MANUAL-CONTENT-START:intro */} [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) records who did what in your AWS accounts. An API call — from the console, the CLI, an SDK, or another AWS service — is captured as an event with the calling identity, source IP, parameters, and result. It is the system of record for security investigation, compliance evidence, and answering "what changed?" What lands in that record is set by configuration, not assumed. Trails and event data stores log management events by default; data events, network activity events, and Insights events are captured only where you configure selectors for them. Read a trail's selectors before you treat its history as complete. With AWS CloudTrail, you can: * **Look up recent activity**: Search the last 90 days of management events by user, event name, resource, or event source * **Inspect trail configuration**: Describe trails, check logging status, and read the event and Insights selectors that decide what gets captured * **Query history with SQL**: Run CloudTrail Lake queries across event data stores for analysis that reaches further back than event lookup * **Confirm coverage**: Verify that logging is actually enabled and that multi-region and organization trails are delivering The block reads event history and trail configuration. `Start Query` runs a billable CloudTrail Lake query; `Cancel Query` stops one. The block does not alter trails or logging configuration. The following policy covers the listed operations: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors", "cloudtrail:GetInsightSelectors", "cloudtrail:GetEventDataStore", "cloudtrail:ListTrails", "cloudtrail:ListEventDataStores", "cloudtrail:ListTags", "cloudtrail:LookupEvents", "cloudtrail:StartQuery", "cloudtrail:DescribeQuery", "cloudtrail:GetQueryResults", "cloudtrail:CancelQuery" ], "Resource": "*" } ] } ``` `cloudtrail:CancelQuery` is the action `Cancel Query` needs, and it is not implied by `Describe*`, `Get*`, or `List*` — omit it and that one operation fails with an access-denied error. Note that `Start Query` is billed per GB scanned and consumes your account's concurrent-query quota of 10. `Lookup Events` is limited by AWS to two requests per second per account per Region. Each call uses AWS adaptive retry mode and allows up to six attempts, so a throttled request backs off exponentially with jitter and usually succeeds instead of surfacing an error. That is a retry budget, not a guarantee: sustained throttling past six attempts fails the call with a `ThrottlingException`, and because a fresh SDK client is built per invocation, adaptive mode's client-side rate limiter carries no pacing state between calls. `Lookup Events` also returns one page per call — feed `nextToken` back in to walk a broad search, and expect to handle a throttling error on a long paging loop. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS CloudTrail into workflows. Look up the last 90 days of management and Insights events by user, event name, resource, or access key; inspect trail configuration, logging status, and event selectors; and run SQL queries against CloudTrail Lake event data stores. This block never changes trail or event data store configuration, and never starts or stops logging. Starting and cancelling a Lake query are the only actions that are not reads, and AWS bills Lake queries on the data they scan. Requires AWS access key and secret access key. ## Actions [#actions] ### CloudTrail Look Up Events [#cloudtrail-look-up-events] Look up AWS CloudTrail management or Insights events from the last 90 days in a Region #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `attributeKey` | string | No | Lookup attribute to filter on: AccessKeyId, EventId, EventName, EventSource, ReadOnly, ResourceName, ResourceType, or Username. Must be paired with attributeValue | | `attributeValue` | string | No | Value the lookup attribute must equal. Must be paired with attributeKey | | `startTime` | string | No | Only return events at or after this ISO 8601 timestamp | | `endTime` | string | No | Only return events at or before this ISO 8601 timestamp | | `eventCategory` | string | No | Set to the value insight to return CloudTrail Insights events instead of management events | | `maxResults` | number | No | Number of events to return, 1 to 50 (default 50) | | `nextToken` | string | No | Pagination token from a previous lookup, which must repeat the same filters | #### Output [#output] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `events` | array | Matching events, most recent first | | ↳ `eventId` | string | CloudTrail event ID | | ↳ `eventName` | string | API action that was called | | ↳ `readOnly` | string | Whether the action was read-only, as the string 'true' or 'false' | | ↳ `accessKeyId` | string | Access key ID used to make the call, when applicable | | ↳ `eventTime` | string | When the event occurred (ISO 8601) | | ↳ `eventSource` | string | AWS service endpoint that recorded the event | | ↳ `username` | string | Name of the principal that made the call | | ↳ `resources` | array | Resources referenced by the event, as resourceType and resourceName | | ↳ `cloudTrailEvent` | object | Full CloudTrail event record parsed from JSON, including userIdentity, sourceIPAddress, userAgent, requestParameters, responseElements, and errorCode | | ↳ `cloudTrailEventRaw` | string | Raw CloudTrail event JSON string, populated only when it could not be parsed | | `nextToken` | string | Pagination token for the next page of events | ### CloudTrail Describe Trails [#cloudtrail-describe-trails] Retrieve the full configuration of one or more CloudTrail trails in the current Region #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `trailNameList` | string | No | Comma-separated trail names or ARNs. Leave empty to describe every trail in the Region. Trails in another Region must be given as ARNs | | `includeShadowTrails` | boolean | No | Include shadow trails (replications of trails created in another Region, and organization trails in member accounts). Defaults to true | #### Output [#output-1] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------- | | `trails` | array | Full configuration of each matching trail | | ↳ `name` | string | Trail name | | ↳ `s3BucketName` | string | S3 bucket that receives log files | | ↳ `s3KeyPrefix` | string | S3 key prefix for delivered log files | | ↳ `snsTopicName` | string | SNS topic notified on log delivery | | ↳ `snsTopicArn` | string | ARN of that SNS topic | | ↳ `includeGlobalServiceEvents` | boolean | Whether global service events are recorded | | ↳ `isMultiRegionTrail` | boolean | Whether the trail records events in all Regions | | ↳ `homeRegion` | string | Region in which the trail was created | | ↳ `trailArn` | string | ARN of the trail | | ↳ `logFileValidationEnabled` | boolean | Whether log file integrity validation is enabled | | ↳ `cloudWatchLogsLogGroupArn` | string | CloudWatch Logs log group receiving events | | ↳ `cloudWatchLogsRoleArn` | string | Role CloudTrail assumes to write to CloudWatch Logs | | ↳ `kmsKeyId` | string | KMS key used to encrypt log files | | ↳ `hasCustomEventSelectors` | boolean | Whether the trail has custom event selectors | | ↳ `hasInsightSelectors` | boolean | Whether the trail has Insights event selectors | | ↳ `isOrganizationTrail` | boolean | Whether the trail is an organization trail | ### CloudTrail Get Trail [#cloudtrail-get-trail] Retrieve the settings of a single CloudTrail trail by name or ARN #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `name` | string | Yes | Trail name, or the trail ARN for a trail in another Region | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------------------- | | `name` | string | Trail name | | `s3BucketName` | string | Name of the S3 bucket that receives log files | | `s3KeyPrefix` | string | S3 key prefix prepended to delivered log files | | `snsTopicName` | string | Name of the SNS topic notified on log delivery | | `snsTopicArn` | string | ARN of the SNS topic notified on log delivery | | `includeGlobalServiceEvents` | boolean | Whether the trail records global service events | | `isMultiRegionTrail` | boolean | Whether the trail records events in all Regions | | `homeRegion` | string | Region in which the trail was created | | `trailArn` | string | ARN of the trail | | `logFileValidationEnabled` | boolean | Whether log file integrity validation is enabled | | `cloudWatchLogsLogGroupArn` | string | ARN of the CloudWatch Logs log group receiving events | | `cloudWatchLogsRoleArn` | string | ARN of the role CloudTrail assumes to write to CloudWatch Logs | | `kmsKeyId` | string | KMS key used to encrypt log files | | `hasCustomEventSelectors` | boolean | Whether the trail has custom event selectors | | `hasInsightSelectors` | boolean | Whether the trail has Insights event selectors | | `isOrganizationTrail` | boolean | Whether the trail is an organization trail | ### CloudTrail Get Trail Status [#cloudtrail-get-trail-status] Check whether a CloudTrail trail is logging and surface its most recent delivery errors #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `name` | string | Yes | Trail name, or the trail ARN. An organization trail read from a member account must be given as an ARN | #### Output [#output-3] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------------------- | | `isLogging` | boolean | Whether the trail is currently recording API calls | | `latestDeliveryError` | string | Most recent S3 error encountered delivering log files | | `latestDeliveryTime` | string | When log files were last delivered to S3 (ISO 8601) | | `latestNotificationError` | string | Most recent SNS error encountered sending a notification | | `latestNotificationTime` | string | When the last SNS notification was sent (ISO 8601) | | `latestCloudWatchLogsDeliveryError` | string | Most recent CloudWatch Logs delivery error | | `latestCloudWatchLogsDeliveryTime` | string | When events were last delivered to CloudWatch Logs (ISO 8601) | | `latestDigestDeliveryError` | string | Most recent S3 error encountered delivering a digest file | | `latestDigestDeliveryTime` | string | When a digest file was last delivered to S3 (ISO 8601) | | `startLoggingTime` | string | When logging was most recently started (ISO 8601) | | `stopLoggingTime` | string | When logging was most recently stopped (ISO 8601) | ### CloudTrail List Trails [#cloudtrail-list-trails] List the ARN, name, and home Region of every CloudTrail trail visible to the account #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `nextToken` | string | No | Pagination token from a previous list request | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------------------------- | | `trails` | array | Trail summaries | | ↳ `trailArn` | string | ARN of the trail | | ↳ `name` | string | Trail name | | ↳ `homeRegion` | string | Region in which the trail was created | | `nextToken` | string | Pagination token for the next page of trails, or null on the last page | ### CloudTrail Get Event Selectors [#cloudtrail-get-event-selectors] Read which management, data, and network activity events a CloudTrail trail is configured to log #### Input [#input-5] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `trailName` | string | Yes | Trail name or trail ARN | #### Output [#output-5] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------ | | `trailArn` | string | ARN of the trail that owns these selectors | | `eventSelectors` | array | Basic event selectors configured on the trail | | ↳ `readWriteType` | string | All, ReadOnly, or WriteOnly | | ↳ `includeManagementEvents` | boolean | Whether management events are recorded | | ↳ `dataResources` | array | Data resources logged by the selector, as type and values | | ↳ `excludeManagementEventSources` | array | Event sources excluded from management event logging | | `advancedEventSelectors` | array | Advanced event selectors configured on the trail | | ↳ `name` | string | Name of the advanced event selector | | ↳ `fieldSelectors` | array | Field selectors, each with field plus its equals, startsWith, endsWith, notEquals, notStartsWith, and notEndsWith values | ### CloudTrail Get Insight Selectors [#cloudtrail-get-insight-selectors] Read which CloudTrail Insights types are enabled on a trail or event data store #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `trailName` | string | No | Trail name or trail ARN. Cannot be combined with eventDataStore | | `eventDataStore` | string | No | Event data store ARN, or the ID suffix of that ARN. Cannot be combined with trailName | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------ | | `trailArn` | string | ARN of the trail whose Insights selectors were read | | `eventDataStoreArn` | string | ARN of the source event data store that enabled Insights events | | `insightsDestination` | string | ARN of the destination event data store that logs Insights events | | `insightSelectors` | array | Enabled Insights types and their event categories | | ↳ `insightType` | string | ApiCallRateInsight or ApiErrorRateInsight | | ↳ `eventCategories` | array | Event categories the Insights type applies to: Management, Data, or both | ### CloudTrail Start Query [#cloudtrail-start-query] Start a CloudTrail Lake SQL query over an event data store #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `queryStatement` | string | No | SQL query to run, up to 10,000 characters. The event data store ID is named in the FROM clause. Supply this or queryAlias, not both | | `queryAlias` | string | No | Alias of a query template used by CloudTrail Lake dashboards. Supply this or queryStatement, not both | | `queryParameters` | string | No | Comma-separated parameter values for the query alias, up to 10 values | | `deliveryS3Uri` | string | No | S3 URI where CloudTrail delivers the query results (e.g., s3://my-bucket/results) | | `eventDataStoreOwnerAccountId` | string | No | Account ID of the event data store owner, for a shared event data store | #### Output [#output-7] | Parameter | Type | Description | | ------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------- | | `queryId` | string | ID of the started query. Pass it to Describe Query to poll status, or to Get Query Results to page through rows | | `eventDataStoreOwnerAccountId` | string | Account ID of the event data store owner | ### CloudTrail Describe Query [#cloudtrail-describe-query] Check the status, run time, and scan statistics of a CloudTrail Lake query #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `queryId` | string | No | ID of the query returned by Start Query. Supply this or queryAlias, not both | | `queryAlias` | string | No | Query template alias; returns the last run for that alias. Supply this or queryId, not both | | `refreshId` | string | No | Dashboard refresh ID, used together with queryAlias | | `eventDataStoreOwnerAccountId` | string | No | Account ID of the event data store owner, for a shared event data store | #### Output [#output-8] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------------------------------------- | | `queryId` | string | ID of the query | | `queryString` | string | SQL body of the query | | `queryStatus` | string | QUEUED, RUNNING, FINISHED, FAILED, CANCELLED, or TIMED\_OUT | | `errorMessage` | string | Error message returned if the query failed | | `deliveryS3Uri` | string | S3 URI the results were delivered to, if configured | | `deliveryStatus` | string | Delivery status of the S3 results (SUCCESS, FAILED, PENDING, and similar) | | `prompt` | string | Natural-language prompt used to generate the query, if it was generated | | `eventDataStoreOwnerAccountId` | string | Account ID of the event data store owner | | `eventsMatched` | number | Number of events that matched the query | | `eventsScanned` | number | Number of events scanned by the query | | `bytesScanned` | number | Bytes scanned by the query | | `executionTimeInMillis` | number | Query run time in milliseconds | | `creationTime` | string | When the query was created (ISO 8601) | ### CloudTrail Get Query Results [#cloudtrail-get-query-results] Fetch a page of result rows from a finished CloudTrail Lake query #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ----------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `queryId` | string | Yes | ID of the query returned by Start Query | | `maxQueryResults` | number | No | Maximum rows to return on a single page, 1 to 1000 | | `nextToken` | string | No | Pagination token from a previous results request | | `eventDataStoreOwnerAccountId` | string | No | Account ID of the event data store owner, for a shared event data store | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------- | | `queryStatus` | string | QUEUED, RUNNING, FINISHED, FAILED, CANCELLED, or TIMED\_OUT | | `rows` | array | Result rows, each flattened into a single object keyed by the query column names | | `resultsCount` | number | Number of rows on this page | | `totalResultsCount` | number | Total number of rows the query produced | | `bytesScanned` | number | Bytes scanned by the query | | `errorMessage` | string | Error message returned if the query failed | | `nextToken` | string | Pagination token for the next page of rows | ### CloudTrail Cancel Query [#cloudtrail-cancel-query] Cancel a running CloudTrail Lake query #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ----------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `queryId` | string | Yes | ID of the query returned by Start Query | | `eventDataStoreOwnerAccountId` | string | No | Account ID of the event data store owner, for a shared event data store | #### Output [#output-10] | Parameter | Type | Description | | ------------------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `queryId` | string | ID of the cancelled query | | `queryStatus` | string | Status AWS reported for the query after the cancellation request. Cancellation is asynchronous, so this is typically RUNNING or CANCELLED — poll Describe Lake Query for the terminal status | | `eventDataStoreOwnerAccountId` | string | Account ID of the event data store owner, when the query was cross-account | ### CloudTrail List Event Data Stores [#cloudtrail-list-event-data-stores] List the CloudTrail Lake event data stores in the account for the current Region #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum event data stores to return on a single page, 1 to 1000 | | `nextToken` | string | No | Pagination token from a previous list request | #### Output [#output-11] | Parameter | Type | Description | | -------------------------------- | ------- | ----------------------------------------------------------- | | `eventDataStores` | array | Event data stores in the account for the current Region | | ↳ `eventDataStoreArn` | string | ARN of the event data store | | ↳ `name` | string | Name of the event data store | | ↳ `status` | string | CREATED, ENABLED, PENDING\_DELETION, or an ingestion state | | ↳ `advancedEventSelectors` | array | Advanced event selectors that define what the store ingests | | ↳ `multiRegionEnabled` | boolean | Whether the store collects events from all Regions | | ↳ `organizationEnabled` | boolean | Whether the store collects events for the organization | | ↳ `retentionPeriod` | number | Retention period in days | | ↳ `terminationProtectionEnabled` | boolean | Whether termination protection is enabled | | ↳ `createdTimestamp` | string | When the store was created (ISO 8601) | | ↳ `updatedTimestamp` | string | When the store was last updated (ISO 8601) | | `nextToken` | string | Pagination token for the next page of event data stores | ### CloudTrail Get Event Data Store [#cloudtrail-get-event-data-store] Retrieve the configuration of a single CloudTrail Lake event data store #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `eventDataStore` | string | Yes | Event data store ARN, or the ID suffix of that ARN | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------ | | `eventDataStoreArn` | string | ARN of the event data store | | `name` | string | Name of the event data store | | `status` | string | CREATED, ENABLED, PENDING\_DELETION, or an ingestion state | | `advancedEventSelectors` | array | Advanced event selectors that define what the store ingests | | ↳ `name` | string | Name of the advanced event selector | | ↳ `fieldSelectors` | array | Field selectors, each with field plus its equals, startsWith, endsWith, notEquals, notStartsWith, and notEndsWith values | | `multiRegionEnabled` | boolean | Whether the store collects events from all Regions | | `organizationEnabled` | boolean | Whether the store collects events for the organization | | `retentionPeriod` | number | Retention period in days | | `terminationProtectionEnabled` | boolean | Whether termination protection is enabled | | `createdTimestamp` | string | When the store was created (ISO 8601) | | `updatedTimestamp` | string | When the store was last updated (ISO 8601) | | `kmsKeyId` | string | KMS key used to encrypt the store | | `billingMode` | string | EXTENDABLE\_RETENTION\_PRICING or FIXED\_RETENTION\_PRICING | | `federationStatus` | string | Lake Formation federation status | | `federationRoleArn` | string | ARN of the role used for Lake Formation federation | | `partitionKeys` | array | Partition keys of the event data store | | ↳ `name` | string | Partition key name | | ↳ `type` | string | Partition key data type | ### CloudTrail List Tags [#cloudtrail-list-tags] List the tags on CloudTrail trails, event data stores, dashboards, or channels #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `resourceIdList` | string | Yes | Comma-separated CloudTrail resource ARNs, up to 20 | | `nextToken` | string | No | Reserved for future use by AWS | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------- | | `resourceTags` | array | Tags for each requested resource | | ↳ `resourceId` | string | ARN of the tagged resource | | ↳ `tags` | array | Tags on the resource, as key and value | | `nextToken` | string | Reserved for future use by AWS | --- # CloudWatch (/integrations/cloudwatch) {/* MANUAL-CONTENT-START:intro */} [AWS CloudWatch](https://aws.amazon.com/cloudwatch/) is a monitoring and observability service that provides data and actionable insights for AWS resources, applications, and services. CloudWatch collects monitoring and operational data in the form of logs, metrics, and events, giving you a unified view of your AWS environment. With the CloudWatch integration, you can: * **Query Logs (Insights)**: Run CloudWatch Log Insights queries against one or more log groups to analyze log data with a powerful query language * **Describe Log Groups**: List available CloudWatch log groups in your account, optionally filtered by name prefix * **Get Log Events**: Retrieve log events from a specific log stream within a log group * **Describe Log Streams**: List log streams within a log group, ordered by last event time or filtered by name prefix * **List Metrics**: Browse available CloudWatch metrics, optionally filtered by namespace, metric name, or recent activity * **Get Metric Statistics**: Retrieve statistical data for a metric over a specified time range with configurable granularity * **Publish Metric**: Publish custom metric data points to CloudWatch for your own application monitoring * **Describe Alarms**: List and filter CloudWatch alarms by name prefix, state, or alarm type In Agent Serve, the CloudWatch integration enables your agents to monitor AWS infrastructure, analyze application logs, track custom metrics, and respond to alarm states as part of automated DevOps and SRE workflows. This is especially powerful when combined with other AWS integrations like CloudFormation and SNS for end-to-end infrastructure management. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS CloudWatch into workflows. Run Log Insights queries, list log groups, retrieve log events, list and get metrics, and monitor alarms. Requires AWS access key and secret access key. ## Actions [#actions] ### CloudWatch Query Logs [#cloudwatch-query-logs] Run a CloudWatch Log Insights query against one or more log groups #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `logGroupNames` | array | Yes | Log group names to query | | `queryString` | string | Yes | CloudWatch Log Insights query string | | `startTime` | number | Yes | Start time as Unix epoch seconds | | `endTime` | number | Yes | End time as Unix epoch seconds | | `limit` | number | No | Maximum number of results to return | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------------------- | | `results` | array | Query result rows (each row is a key/value map of field name to value) | | `statistics` | object | Query statistics | | ↳ `bytesScanned` | number | Total bytes of log data scanned | | ↳ `recordsMatched` | number | Number of log records that matched the query | | ↳ `recordsScanned` | number | Total log records scanned | | `status` | string | Query completion status (Complete, Failed, Cancelled, or Timeout) | ### CloudWatch Filter Log Events [#cloudwatch-filter-log-events] Search log events across all streams in a log group by filter pattern and time range, without writing a Log Insights query #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `logGroupName` | string | Yes | CloudWatch log group name to search | | `filterPattern` | string | No | CloudWatch Logs filter pattern (e.g., "ERROR", "?ERROR ?Exception"). Matches all events if omitted. | | `logStreamNamePrefix` | string | No | Only search log streams whose name starts with this prefix | | `startTime` | number | No | Start time as Unix epoch seconds | | `endTime` | number | No | End time as Unix epoch seconds | | `startFromHead` | boolean | No | Return the earliest matching events first instead of the latest | | `limit` | number | No | Maximum number of events to return | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------- | | `events` | array | Matching log events across all searched streams, sorted by timestamp | | ↳ `logStreamName` | string | Log stream the event belongs to | | ↳ `timestamp` | number | Event timestamp in epoch milliseconds | | ↳ `message` | string | Log event message | | ↳ `ingestionTime` | number | Ingestion time in epoch milliseconds | ### CloudWatch Describe Log Groups [#cloudwatch-describe-log-groups] List available CloudWatch log groups #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `prefix` | string | No | Filter log groups by name prefix | | `limit` | number | No | Maximum number of log groups to return | #### Output [#output-2] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `logGroups` | array | List of CloudWatch log groups with metadata | | ↳ `logGroupName` | string | Log group name | | ↳ `arn` | string | Log group ARN | | ↳ `storedBytes` | number | Total stored bytes | | ↳ `retentionInDays` | number | Retention period in days (if set) | | ↳ `creationTime` | number | Creation time in epoch milliseconds | ### CloudWatch Get Log Events [#cloudwatch-get-log-events] Retrieve log events from a specific CloudWatch log stream #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `logGroupName` | string | Yes | CloudWatch log group name | | `logStreamName` | string | Yes | CloudWatch log stream name | | `startTime` | number | No | Start time as Unix epoch seconds | | `endTime` | number | No | End time as Unix epoch seconds | | `limit` | number | No | Maximum number of events to return | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------ | | `events` | array | Log events with timestamp, message, and ingestion time | | ↳ `timestamp` | number | Event timestamp in epoch milliseconds | | ↳ `message` | string | Log event message | | ↳ `ingestionTime` | number | Ingestion time in epoch milliseconds | ### CloudWatch Describe Log Streams [#cloudwatch-describe-log-streams] List log streams within a CloudWatch log group #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `logGroupName` | string | Yes | CloudWatch log group name | | `prefix` | string | No | Filter log streams by name prefix | | `limit` | number | No | Maximum number of log streams to return | #### Output [#output-4] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------ | | `logStreams` | array | List of log streams with metadata, sorted by last event time (most recent first) unless a prefix filter is applied | | ↳ `logStreamName` | string | Log stream name | | ↳ `lastEventTimestamp` | number | Timestamp of the last log event in epoch milliseconds | | ↳ `firstEventTimestamp` | number | Timestamp of the first log event in epoch milliseconds | | ↳ `creationTime` | number | Stream creation time in epoch milliseconds | | ↳ `storedBytes` | number | Total stored bytes | ### CloudWatch Set Log Group Retention [#cloudwatch-set-log-group-retention] Set (or clear, for never-expire) the retention period for a CloudWatch log group #### Input [#input-5] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `logGroupName` | string | Yes | CloudWatch log group name | | `retentionInDays` | number | No | Days to retain log events (one of 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653). Omit to make events never expire. | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `success` | boolean | Whether the retention policy was updated | | `logGroupName` | string | Log group the policy applies to | | `retentionInDays` | number | Retention period in days, or null if events never expire | ### CloudWatch List Metrics [#cloudwatch-list-metrics] List available CloudWatch metrics #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `namespace` | string | No | Filter by namespace (e.g., AWS/EC2, AWS/Lambda) | | `metricName` | string | No | Filter by metric name | | `recentlyActive` | boolean | No | Only show metrics active in the last 3 hours | | `limit` | number | No | Maximum number of metrics to return | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------- | | `metrics` | array | List of metrics with namespace, name, and dimensions | | ↳ `namespace` | string | Metric namespace (e.g., AWS/EC2) | | ↳ `metricName` | string | Metric name (e.g., CPUUtilization) | | ↳ `dimensions` | array | Array of name/value dimension pairs | ### CloudWatch Get Metric Statistics [#cloudwatch-get-metric-statistics] Get statistics for a CloudWatch metric over a time range #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `namespace` | string | Yes | Metric namespace (e.g., AWS/EC2, AWS/Lambda) | | `metricName` | string | Yes | Metric name (e.g., CPUUtilization, Invocations) | | `startTime` | number | Yes | Start time as Unix epoch seconds | | `endTime` | number | Yes | End time as Unix epoch seconds | | `period` | number | Yes | Granularity in seconds (e.g., 60, 300, 3600) | | `statistics` | array | Yes | Statistics to retrieve (Average, Sum, Minimum, Maximum, SampleCount) | | `dimensions` | string | No | Dimensions as JSON (e.g., \{"InstanceId": "i-1234"}) | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------- | | `label` | string | Metric label returned by CloudWatch | | `datapoints` | array | Datapoints sorted by timestamp with statistics values | | ↳ `timestamp` | number | Datapoint timestamp in epoch milliseconds | | ↳ `average` | number | Average statistic value | | ↳ `sum` | number | Sum statistic value | | ↳ `minimum` | number | Minimum statistic value | | ↳ `maximum` | number | Maximum statistic value | | ↳ `sampleCount` | number | Sample count statistic value | | ↳ `unit` | string | Unit of the metric | ### CloudWatch Publish Metric [#cloudwatch-publish-metric] Publish a custom metric data point to CloudWatch #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `namespace` | string | Yes | Metric namespace (e.g., Custom/MyApp) | | `metricName` | string | Yes | Name of the metric | | `value` | number | Yes | Metric value to publish | | `unit` | string | No | Unit of the metric (e.g., Count, Seconds, Bytes) | | `dimensions` | string | No | JSON string of dimension name/value pairs | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `success` | boolean | Whether the metric was published successfully | | `namespace` | string | Metric namespace | | `metricName` | string | Metric name | | `value` | number | Published metric value | | `unit` | string | Metric unit | | `timestamp` | string | Timestamp when the metric was published | ### CloudWatch Describe Alarms [#cloudwatch-describe-alarms] List and filter CloudWatch alarms #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `alarmNamePrefix` | string | No | Filter alarms by name prefix | | `stateValue` | string | No | Filter by alarm state (OK, ALARM, INSUFFICIENT\_DATA) | | `alarmType` | string | No | Filter by alarm type (MetricAlarm, CompositeAlarm) | | `limit` | number | No | Maximum number of alarms to return | #### Output [#output-9] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------ | | `alarms` | array | List of CloudWatch alarms with state and configuration | | ↳ `alarmName` | string | Alarm name | | ↳ `alarmArn` | string | Alarm ARN | | ↳ `stateValue` | string | Current state (OK, ALARM, INSUFFICIENT\_DATA) | | ↳ `stateReason` | string | Human-readable reason for the state | | ↳ `metricName` | string | Metric name (MetricAlarm only) | | ↳ `namespace` | string | Metric namespace (MetricAlarm only) | | ↳ `threshold` | number | Threshold value (MetricAlarm only) | | ↳ `stateUpdatedTimestamp` | number | Epoch ms when state last changed | ### CloudWatch Describe Alarm History [#cloudwatch-describe-alarm-history] Retrieve state-change and configuration history for CloudWatch alarms #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `alarmName` | string | No | Name of a specific alarm to retrieve history for. Omit for all alarms. | | `historyItemType` | string | No | Filter by history item type (ConfigurationUpdate, StateUpdate, Action, AlarmContributorStateUpdate, AlarmContributorAction) | | `startDate` | number | No | Start of the history window as Unix epoch seconds | | `endDate` | number | No | End of the history window as Unix epoch seconds | | `scanBy` | string | No | Sort order: TimestampDescending (newest first) or TimestampAscending | | `limit` | number | No | Maximum number of history records to return | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------------------------- | | `alarmHistoryItems` | array | Alarm history items sorted per scanBy, newest first by default | | ↳ `alarmName` | string | Name of the alarm this history item belongs to | | ↳ `alarmType` | string | MetricAlarm or CompositeAlarm | | ↳ `timestamp` | number | Epoch ms when the history item occurred | | ↳ `historyItemType` | string | ConfigurationUpdate, StateUpdate, Action, or contributor variants | | ↳ `historySummary` | string | Human-readable summary of the event | ### CloudWatch Mute Alarm [#cloudwatch-mute-alarm] Create a CloudWatch alarm mute rule that suppresses alarms for a fixed duration #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `muteRuleName` | string | Yes | Unique name for the mute rule (used later to unmute) | | `alarmNames` | array | Yes | Names of the CloudWatch alarms this mute rule targets | | `durationValue` | number | Yes | How long the mute lasts (paired with durationUnit) | | `durationUnit` | string | Yes | Unit for durationValue: minutes, hours, or days | | `description` | string | No | Optional description of why the alarms are being muted | | `startDate` | number | No | When the mute window begins as Unix epoch seconds. Defaults to now (mute starts immediately). | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the mute rule was created successfully | | `muteRuleName` | string | Name of the mute rule that was created | | `alarmNames` | array | Names of the alarms this rule mutes | | `expression` | string | Schedule expression used by the mute rule | | `duration` | string | ISO 8601 duration of the mute window | ### CloudWatch Unmute Alarm [#cloudwatch-unmute-alarm] Delete a CloudWatch alarm mute rule, restoring alarm notifications #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `muteRuleName` | string | Yes | Name of the mute rule to delete | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the mute rule was deleted successfully | | `muteRuleName` | string | Name of the mute rule that was deleted | --- # Coda (/integrations/coda) ## Usage Instructions [#usage-instructions] Integrate Coda (Superhuman Docs) into your workflow with a reusable API-token credential. Create, copy, publish, and share docs; create, update, read, export, and clear pages; read table schemas; list, insert, upsert, update, and delete rows and push row buttons; read formulas and controls; trigger webhook automations; manage folders, custom domains, and workspace roles; and read doc and page analytics. Pick docs, pages, tables, rows, and more from dropdowns populated by your account. ## Actions [#actions] ### Coda Add Custom Domain [#coda-add-custom-domain] Connect a custom domain to a published Coda doc. Requires a Coda plan with custom domains. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `customDocDomain` | string | Yes | The custom domain (e.g., "docs.example.com") | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `docId` | string | ID of the doc | | `customDocDomain` | string | The custom domain that was added | ### Coda Share Doc [#coda-share-doc] Share a Coda doc with a user, group, domain, workspace, or anyone with the link. Sharing with an email sends a notification unless suppressed. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `access` | string | Yes | Access level to grant: "readonly", "comment", or "write" | | `principalType` | string | Yes | Who to share with: "email", "group", "domain", "workspace", or "anyone" | | `principal` | string | No | Email address, group ID, domain, or workspace ID matching principalType. Not used for "anyone". | | `suppressEmail` | boolean | No | Do not send a sharing notification email | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------- | | `docId` | string | ID of the shared doc | | `access` | string | Access level granted | | `principalType` | string | Type of principal the doc was shared with | ### Coda Change User Role [#coda-change-user-role] Change the workspace role of a Coda user. Requires Admin access in a workspace that belongs to an organization. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------ | | `workspaceId` | string | Yes | ID of the workspace (e.g., "ws-1Ab234") | | `email` | string | Yes | Email address of the workspace member | | `newRole` | string | Yes | New role: "Admin", "DocMaker", or "Editor" | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `email` | string | Email address of the member | | `newRole` | string | Role assigned | | `roleChangedAt` | string | When the role change took effect | ### Coda Create Doc [#coda-create-doc] Create a Coda doc, optionally copying an existing doc and setting up its first page with Markdown, HTML, an embed, or a sync page. Requires Doc Maker access in the workspace. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------- | | `title` | string | No | Title of the new doc (defaults to "Untitled") | | `sourceDoc` | string | No | ID of an existing doc to copy | | `timezone` | string | No | Timezone for the new doc (e.g., "America/Los\_Angeles") | | `folderId` | string | No | ID of the folder to create the doc in (defaults to "My docs") | | `pageName` | string | No | Name of the initial page | | `pageSubtitle` | string | No | Subtitle of the initial page | | `iconName` | string | No | Icon name for the initial page (e.g., "rocket") | | `imageUrl` | string | No | Cover image URL for the initial page | | `pageType` | string | No | Initial page content type: "canvas" (default), "embed", or "syncPage" | | `contentFormat` | string | No | Canvas content format: "markdown" (default) or "html" | | `content` | string | No | Canvas content for the initial page in the chosen format | | `embedUrl` | string | No | URL to embed as a full page (pageType "embed") | | `renderMethod` | string | No | Embed render method: "standard" or "compatibility" | | `sourceDocId` | string | No | Doc to sync from (pageType "syncPage") | | `sourcePageId` | string | No | Page to sync (pageType "syncPage" with syncMode "page") | | `syncMode` | string | No | Sync page mode: "page" (default) or "document" | | `includeSubpages` | boolean | No | Include subpages in a single-page sync page | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------ | | `doc` | object | The created doc | | `requestId` | string | Coda request ID for the doc creation | ### Coda Create Folder [#coda-create-folder] Create a folder in a Coda workspace #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `name` | string | Yes | Name of the folder | | `workspaceId` | string | Yes | ID of the workspace (e.g., "ws-1Ab234") | | `description` | string | No | Description of the folder | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `folder` | object | The created folder | ### Coda Create Page [#coda-create-page] Create a page in a Coda doc, optionally as a subpage, with Markdown or HTML content, a full-page embed, or a sync page from another doc. The page is created asynchronously. Requires Doc Maker access. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `name` | string | No | Name of the page | | `subtitle` | string | No | Subtitle of the page | | `iconName` | string | No | Name of the page icon (e.g., "rocket") | | `imageUrl` | string | No | URL of a cover image for the page | | `parentPageId` | string | No | ID of the parent page, to create this page as a subpage | | `pageType` | string | No | Page content type: "canvas" (default), "embed", or "syncPage" | | `contentFormat` | string | No | Canvas content format: "markdown" (default) or "html" | | `content` | string | No | Canvas page content in the chosen format | | `embedUrl` | string | No | URL to embed as a full page (pageType "embed") | | `renderMethod` | string | No | Embed render method: "standard" or "compatibility" | | `sourceDocId` | string | No | Doc to sync from (pageType "syncPage") | | `sourcePageId` | string | No | Page to sync (pageType "syncPage" with syncMode "page") | | `syncMode` | string | No | Sync page mode: "page" (default) or "document" | | `includeSubpages` | boolean | No | Include subpages in a single-page sync page | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `pageId` | string | ID of the created page | ### Coda Delete Custom Domain [#coda-delete-custom-domain] Remove a custom domain from a published Coda doc #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `customDocDomain` | string | Yes | The custom domain (e.g., "docs.example.com") | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `docId` | string | ID of the doc | | `customDocDomain` | string | The custom domain that was removed | ### Coda Delete Doc [#coda-delete-doc] Delete a Coda doc #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `docId` | string | ID of the deleted doc | ### Coda Delete Folder [#coda-delete-folder] Delete an empty Coda folder (it must contain no docs) #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------ | | `folderId` | string | Yes | ID of the folder (e.g., "fl-1Ab234") | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `folderId` | string | ID of the deleted folder | ### Coda Delete Page [#coda-delete-page] Delete a page from a Coda doc. Applied asynchronously. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `pageId` | string | ID of the deleted page | ### Coda Delete Page Content [#coda-delete-page-content] Delete specific content elements from a Coda page, or all of its content when no element IDs are given. Applied asynchronously. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | | `elementIds` | json | No | Element IDs to delete (from Get Page Content), as an array or comma-separated list | | `deleteAll` | boolean | No | Set to true, with no element IDs, to delete all content from the page | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------- | | `pageId` | string | ID of the page whose content was deleted | ### Coda Remove Permission [#coda-remove-permission] Revoke a sharing permission on a Coda doc #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `permissionId` | string | Yes | ID of the permission to remove (from List Permissions) | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------ | ---------------------------- | | `docId` | string | ID of the doc | | `permissionId` | string | ID of the removed permission | ### Coda Delete Row [#coda-delete-row] Delete a row from a Coda table or view. Applied asynchronously. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rowId` | string | Yes | ID or name of the row (IDs are recommended, e.g., "i-tuVwxYz"; names containing "/" are not supported) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `rowId` | string | ID of the deleted row | ### Coda Delete Rows [#coda-delete-rows] Delete multiple rows from a Coda table or view by ID. Applied asynchronously. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rowIds` | json | Yes | Row IDs to delete, as an array or comma-separated list (e.g., \["i-bCdeFgh", "i-CdEfgHi"]) | #### Output [#output-13] | Parameter | Type | Description | | --------- | ----- | ----------------------------------- | | `rowIds` | array | IDs of the rows queued for deletion | ### Coda Export Page [#coda-export-page] Start exporting a Coda page as HTML or Markdown. Poll Get Page Export Status with the returned export ID for the download link. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | | `outputFormat` | string | Yes | Export format: "markdown" or "html" | #### Output [#output-14] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `exportId` | string | ID of the export request | | `status` | string | Export status (inProgress, failed, complete) | | `href` | string | API link that reports the export status | ### Coda Get Sharing Settings [#coda-get-sharing-settings] Get the sharing settings of a Coda doc #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-15] | Parameter | Type | Description | | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `docs` | json | Docs (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace, folder, sourceDoc, docSize, published) | | `doc` | json | Doc (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace \{id, name, organizationId}, folder \{id, name}, sourceDoc, docSize \{totalRowCount, tableAndViewCount, baseTableCount, pageCount, overApiSizeLimit}, published \{description, browserLink, discoverable, mode, categories}) | | `docId` | string | ID of the affected doc | | `categories` | json | Doc category names | | `requestId` | string | Request ID of a queued change, for Get Mutation Status | | `customDomains` | json | Custom domains (customDocDomain, hasCertificate, hasDnsDocId, setupStatus, domainStatus, lastVerifiedTimestamp) | | `customDocDomain` | string | Custom domain | | `provider` | string | DNS provider of a custom domain | | `permissions` | json | Permissions (id, access, principal \{type, email, groupId, groupName, domain, workspaceId}) | | `access` | string | Access level granted | | `principalType` | string | Type of principal the doc was shared with | | `permissionId` | string | ID of the removed permission | | `users` | json | Matching users (name, loginId, pictureLink) | | `groups` | json | Matching groups (groupId, groupName) | | `canShare` | boolean | Whether the user can share the doc | | `canShareWithWorkspace` | boolean | Whether the user can share with the workspace | | `canShareWithOrg` | boolean | Whether the user can share with the org | | `canCopy` | boolean | Whether the user can copy the doc | | `allowEditorsToChangePermissions` | boolean | Whether editors can change permissions | | `allowCopying` | boolean | Whether viewers can copy the doc | | `allowViewersToRequestEditing` | boolean | Whether viewers can request editing | | `pages` | json | Pages (id, name, subtitle, browserLink, contentType, isHidden, icon, image, parent, children, authors, createdAt, updatedAt) | | `page` | json | Page (id, name, subtitle, href, browserLink, contentType, isHidden, isEffectivelyHidden, icon, image, parent, children, authors, createdAt, createdBy, updatedAt, updatedBy) | | `pageId` | string | ID of the created, updated, or deleted page | | `items` | json | Page content lines (id, type, style, format, content, lineLevel), or analytics items (doc or page plus daily metrics) | | `exportId` | string | Page export ID | | `status` | string | Page export status (inProgress, failed, complete) | | `href` | string | API link reporting the page export status | | `downloadLink` | string | Download link of a completed page export | | `exportError` | string | Error message of a failed page export | | `tables` | json | Tables and views (id, name, tableType, href, browserLink, parent) | | `table` | json | Table (id, name, tableType, browserLink, parent, parentTable, displayColumnId, rowCount, sorts, layout, filter, createdAt, updatedAt) | | `columns` | json | Columns (id, name, display, calculated, formula, defaultValue, format) | | `column` | json | Column (id, name, display, calculated, formula, defaultValue, format, parentTable) | | `rows` | json | Rows (id, name, index, browserLink, createdAt, updatedAt, values) | | `row` | json | Row (id, name, index, browserLink, createdAt, updatedAt, values, parentTable) | | `nextSyncToken` | string | Token for reading only rows changed later | | `addedRowIds` | json | IDs of rows that will be added | | `rowId` | string | ID of the affected row | | `rowIds` | json | IDs of rows queued for deletion | | `columnId` | string | ID of the pushed button column | | `formulas` | json | Named formulas (id, name, href, parent) | | `formula` | json | Formula (id, name, href, parent, value) | | `controls` | json | Controls (id, name, href, parent) | | `control` | json | Control (id, name, href, parent, controlType, value) | | `folders` | json | Folders (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folder` | json | Folder (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folderId` | string | ID of the deleted folder | | `children` | json | Subfolders (id, name, browserLink, visibility, workspace, ...) | | `members` | json | Workspace members (email, name, role, registeredAt, roleChangedAt, lastActiveAt, ownedDocs, totalDocs, ...) | | `email` | string | Email of the member whose role changed | | `newRole` | string | Role assigned | | `roleChangedAt` | string | When the role change took effect | | `roleActivity` | json | Monthly role counts (month, activeAdminCount, activeDocMakerCount, activeEditorCount, inactive counts) | | `totalSessions` | number | Total sessions across matching docs | | `docAnalyticsLastUpdated` | string | Date doc analytics last updated | | `packAnalyticsLastUpdated` | string | Date Pack analytics last updated | | `packFormulaAnalyticsLastUpdated` | string | Date Pack formula analytics last updated | | `browserLink` | string | Canonical browser link of a resolved resource | | `resource` | json | Resolved resource (type, id, name, href) | | `completed` | boolean | Whether a queued change was applied | | `warning` | string | Warning for a change that completed with caveats | | `name` | string | Name of the token owner | | `loginId` | string | Email of the token owner | | `pictureLink` | string | Avatar link of the token owner | | `scoped` | boolean | Whether the token is restricted | | `tokenName` | string | Name of the API token | | `workspace` | json | Default workspace of the token owner (id, name, organizationId, browserLink) | | `nextPageToken` | string | Token for fetching the next page of results | ### Coda Get Analytics Last Updated [#coda-get-analytics-last-updated] Get the dates (Pacific time) Coda analytics were last refreshed, to know how current analytics data is #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-16] | Parameter | Type | Description | | --------------------------------- | ------ | ---------------------------------------- | | `docAnalyticsLastUpdated` | string | Date doc analytics last updated | | `packAnalyticsLastUpdated` | string | Date Pack analytics last updated | | `packFormulaAnalyticsLastUpdated` | string | Date Pack formula analytics last updated | ### Coda Get Column [#coda-get-column] Get details about a column in a Coda table, including its full format settings #### Input [#input-17] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `columnId` | string | Yes | ID or name of the column (IDs are recommended, e.g., "c-tuVwxYz") | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | -------------- | | `column` | object | Column details | ### Coda Get Control [#coda-get-control] Get the type and current value of a control in a Coda doc #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `controlId` | string | Yes | ID or name of the control (IDs are recommended, e.g., "ctrl-cDefGhij") | #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `control` | object | Control details | | ↳ `controlType` | string | Control type (aiBlock, button, checkbox, datePicker, dateRangePicker, dateTimePicker, lookup, multiselect, select, scale, slider, reaction, textbox, timePicker) | | ↳ `value` | json | Current value (string, number, boolean, or array of these) | ### Coda Get Custom Domain Provider [#coda-get-custom-domain-provider] Look up the DNS provider (GoDaddy, Namecheap, Hover, Network Solutions, Google Domains, or Other) of a custom domain #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `customDocDomain` | string | Yes | The custom domain (e.g., "docs.example.com") | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------ | -------------------------- | | `customDocDomain` | string | The custom domain | | `provider` | string | DNS provider of the domain | ### Coda Get Doc [#coda-get-doc] Get metadata for a Coda doc, including its owner, workspace, folder, size, and publishing settings #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------ | ------------ | | `doc` | object | Doc metadata | ### Coda Get Doc Analytics Summary [#coda-get-doc-analytics-summary] Get the total number of sessions across the Coda docs the user can access #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------------------------- | | `isPublished` | boolean | No | Only include published docs | | `sinceDate` | string | No | Only include activity on or after this date (YYYY-MM-DD) | | `untilDate` | string | No | Only include activity on or before this date (YYYY-MM-DD) | | `workspaceId` | string | No | Only include docs in this workspace | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `totalSessions` | number | Total sessions across all matching docs | ### Coda Get Folder [#coda-get-folder] Get details about a Coda folder #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------ | | `folderId` | string | Yes | ID of the folder (e.g., "fl-1Ab234") | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | -------------- | | `folder` | object | Folder details | ### Coda Get Formula [#coda-get-formula] Get the current computed value of a named formula in a Coda doc #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `formulaId` | string | Yes | ID or name of the formula (IDs are recommended, e.g., "f-fgHijkLm") | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------- | | `formula` | object | Formula details | | ↳ `value` | json | Computed value (string, number, boolean, or array of these) | ### Coda Get Mutation Status [#coda-get-mutation-status] Check whether a queued Coda change (row, page, publish, or automation request) has been applied. Status is kept for about a day. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------- | | `requestId` | string | Yes | Request ID returned by a Coda write operation | #### Output [#output-24] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `completed` | boolean | Whether the change has been applied | | `warning` | string | Warning if the change completed with caveats | ### Coda Get Page [#coda-get-page] Get metadata for a page in a Coda doc #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ------------- | | `page` | object | Page metadata | ### Coda Get Page Content [#coda-get-page-content] Read the content of a Coda canvas page as plain-text lines with their styles (headings, paragraphs, lists, quotes, code) and element IDs #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | | `limit` | number | No | Maximum number of content items to return (1-500, default 50) | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-26] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------------------------------------------------- | | `items` | array | Content elements on the page, in order | | ↳ `id` | string | Element ID, usable with Update Page and Delete Page Content | | ↳ `type` | string | Element type (line) | | ↳ `style` | string | Line style (paragraph, h1, h2, h3, bulletedList, numberedList, checkboxList, collapsibleList, blockQuote, pullQuote, code) | | ↳ `format` | string | Content format (plainText) | | ↳ `content` | string | Element text | | ↳ `lineLevel` | number | Indentation level for paragraphs, quotes, and list items | ### Coda Get Page Export Status [#coda-get-page-export-status] Check a Coda page export and get its download link once complete. Download links expire shortly after they are issued. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | | `exportId` | string | Yes | Export ID returned by Export Page | #### Output [#output-27] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------------- | | `exportId` | string | ID of the export request | | `status` | string | Export status (inProgress, failed, complete) | | `href` | string | API link that reports the export status | | `downloadLink` | string | Short-lived download link for the exported file, once complete | | `exportError` | string | Error message if the export failed | ### Coda Get Row [#coda-get-row] Get a single row from a Coda table, including all of its cell values #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rowId` | string | Yes | ID or name of the row (IDs are recommended, e.g., "i-tuVwxYz"; names containing "/" are not supported) | | `useColumnNames` | boolean | No | Key cell values by column name instead of column ID | | `valueFormat` | string | No | Cell value format: "simple" (default), "simpleWithArrays", or "rich" | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `row` | object | Row details and values | ### Coda Get Sharing Metadata [#coda-get-sharing-metadata] Check whether the connected user can share or copy a Coda doc, and whether they can share it with the workspace or organization #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-29] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------- | | `canShare` | boolean | Whether the user can share the doc | | `canShareWithWorkspace` | boolean | Whether the user can share the doc with the workspace | | `canShareWithOrg` | boolean | Whether the user can share the doc with the organization | | `canCopy` | boolean | Whether the user can copy the doc | ### Coda Get Table [#coda-get-table] Get details about a table or view in a Coda doc, including its row count, sorts, layout, and filter #### Input [#input-30] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `useUpdatedTableLayouts` | boolean | No | Report detail and form layouts as "detail" and "form" instead of "masterDetail" for both | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------ | ------------- | | `table` | object | Table details | ### Coda List Doc Categories [#coda-list-doc-categories] List the categories that can be applied to a published Coda doc #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-31] | Parameter | Type | Description | | ------------ | ----- | ------------------------------------------- | | `categories` | array | Category names usable when publishing a doc | ### Coda List Columns [#coda-list-columns] List the columns of a Coda table with their IDs, formats, and formulas. Use column IDs when reading and writing rows. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `visibleOnly` | boolean | No | Only return visible columns (applies to base tables, not views) | | `limit` | number | No | Maximum number of columns to return (1-100, default 25) | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-32] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `columns` | array | Columns in the table | ### Coda List Controls [#coda-list-controls] List the controls (sliders, selects, checkboxes, date pickers, buttons, etc.) in a Coda doc #### Input [#input-33] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `sortBy` | string | No | Sort order; "name" sorts alphabetically | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-33] | Parameter | Type | Description | | ---------- | ----- | ------------------- | | `controls` | array | Controls in the doc | ### Coda List Custom Domains [#coda-list-custom-domains] List the custom domains connected to a published Coda doc and their setup status #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-34] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------- | | `customDomains` | array | Custom domains for the published doc | | ↳ `customDocDomain` | string | The custom domain | | ↳ `hasCertificate` | boolean | Whether the domain has a certificate | | ↳ `hasDnsDocId` | boolean | Whether the domain DNS points back to this doc | | ↳ `setupStatus` | string | Setup status (pending, succeeded, failed) | | ↳ `domainStatus` | string | connected or notConnected | | ↳ `lastVerifiedTimestamp` | string | When the DNS settings were last checked | ### Coda List Doc Analytics [#coda-list-doc-analytics] Get per-day or cumulative analytics (views, copies, likes, sessions by device, AI credits) for Coda docs #### Input [#input-35] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `docIds` | json | No | Doc IDs to fetch analytics for, as an array or comma-separated list | | `workspaceId` | string | No | Only include docs in this workspace | | `query` | string | No | Search term used to filter docs | | `isPublished` | boolean | No | Only include published docs | | `sinceDate` | string | No | Only include activity on or after this date (YYYY-MM-DD) | | `untilDate` | string | No | Only include activity on or before this date (YYYY-MM-DD) | | `scale` | string | No | Aggregation: "daily" (default) or "cumulative" | | `orderBy` | string | No | Sort field: date, docId, title, createdAt, publishedAt, likes, copies, views, sessionsDesktop, sessionsMobile, sessionsOther, totalSessions, or an aiCredits field | | `direction` | string | No | Sort direction: "ascending" or "descending" | | `limit` | number | No | Maximum number of results to return (1-5000, default 1000) | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-35] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------- | | `items` | array | Analytics per doc | | ↳ `doc` | object | Doc the metrics belong to | | ↳ `metrics` | array | Metrics per date | | ↳ `date` | string | Date of the data (YYYY-MM-DD) | | ↳ `views` | number | Doc views | | ↳ `copies` | number | Doc copies | | ↳ `likes` | number | Doc likes | | ↳ `sessionsMobile` | number | Unique mobile visitors | | ↳ `sessionsDesktop` | number | Unique desktop visitors | | ↳ `sessionsOther` | number | Unique visitors on other devices | | ↳ `totalSessions` | number | Sessions across all devices | | ↳ `aiCreditsChat` | number | AI credits used by chat | | ↳ `aiCreditsBlock` | number | AI credits used by AI blocks | | ↳ `aiCreditsColumn` | number | AI credits used by AI columns | | ↳ `aiCreditsAssistant` | number | AI credits used by the assistant | | ↳ `aiCreditsReviewer` | number | AI credits used by the reviewer | | ↳ `aiCredits` | number | Total AI credits used | ### Coda List Docs [#coda-list-docs] List Coda docs the user has opened, most recently used first, filtered by search, owner, publishing, stars, workspace, folder, or source doc #### Input [#input-36] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------------------------------------- | | `query` | string | No | Search term used to filter docs | | `isOwner` | boolean | No | Only return docs owned by the user | | `isPublished` | boolean | No | Only return published docs | | `isStarred` | boolean | No | true returns only starred docs; false returns only unstarred docs | | `inGallery` | boolean | No | Only return docs visible in the gallery | | `sourceDoc` | string | No | Only return docs copied from this doc ID | | `workspaceId` | string | No | Only return docs in this workspace (e.g., "ws-1Ab234") | | `folderId` | string | No | Only return docs in this folder (e.g., "fl-1Ab234") | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-36] | Parameter | Type | Description | | --------- | ----- | ------------------------- | | `docs` | array | Docs matching the filters | ### Coda List Subfolders [#coda-list-subfolders] List the direct subfolders of a Coda folder. Subfolders you cannot access but manage the parent of are returned with only an ID and restricted visibility. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `folderId` | string | Yes | ID of the folder (e.g., "fl-1Ab234") | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------- | | `children` | array | Direct subfolders | | ↳ `visibility` | string | visible, or restricted when only the ID is returned because you cannot access the subfolder | ### Coda List Folders [#coda-list-folders] List the Coda folders the user can access, optionally within one workspace #### Input [#input-38] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------------------------------------------- | | `workspaceId` | string | No | Only return folders in this workspace (e.g., "ws-1Ab234") | | `isStarred` | boolean | No | true returns only starred folders; false returns only unstarred folders | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-38] | Parameter | Type | Description | | --------- | ----- | --------------------------- | | `folders` | array | Folders the user can access | ### Coda List Formulas [#coda-list-formulas] List the named formulas in a Coda doc #### Input [#input-39] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `sortBy` | string | No | Sort order; "name" sorts alphabetically | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-39] | Parameter | Type | Description | | ---------- | ----- | ------------------------- | | `formulas` | array | Named formulas in the doc | ### Coda List Page Analytics [#coda-list-page-analytics] Get daily analytics (views, sessions, users, time viewed) for each page of a Coda doc. Only available for docs in Enterprise workspaces. #### Input [#input-40] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `sinceDate` | string | No | Only include activity on or after this date (YYYY-MM-DD) | | `untilDate` | string | No | Only include activity on or before this date (YYYY-MM-DD) | | `limit` | number | No | Maximum number of results to return (1-5000, default 1000) | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-40] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------- | | `items` | array | Analytics per page | | ↳ `page` | object | Page the metrics belong to | | ↳ `metrics` | array | Metrics per date | | ↳ `date` | string | Date of the data (YYYY-MM-DD) | | ↳ `views` | number | Page views that day | | ↳ `sessions` | number | Unique browsers that viewed the page | | ↳ `users` | number | Unique Coda users that viewed the page | | ↳ `averageSecondsViewed` | number | Average seconds the page was viewed | | ↳ `medianSecondsViewed` | number | Median seconds the page was viewed | | ↳ `tabs` | number | Unique tabs that opened the doc | ### Coda List Pages [#coda-list-pages] List the pages in a Coda doc, including their hierarchy #### Input [#input-41] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-41] | Parameter | Type | Description | | --------- | ----- | ---------------- | | `pages` | array | Pages in the doc | ### Coda List Permissions [#coda-list-permissions] List who a Coda doc is shared with and their access levels #### Input [#input-42] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-42] | Parameter | Type | Description | | ------------- | ----- | ------------------------------ | | `permissions` | array | Permissions granted on the doc | ### Coda List Rows [#coda-list-rows] List rows in a Coda table or view, optionally filtered by a column value, sorted, or limited to rows changed since a sync token #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `query` | string | No | Filter as \:\. Quote column names and string values, e.g., c-tuVwxYz:"Apple" or "Status":"Done" | | `sortBy` | string | No | Sort order: "createdAt" (default), "updatedAt", or "natural" (view order; implies visibleOnly) | | `useColumnNames` | boolean | No | Key cell values by column name instead of column ID | | `valueFormat` | string | No | Cell value format: "simple" (default), "simpleWithArrays", or "rich" | | `visibleOnly` | boolean | No | Only return visible rows and columns | | `syncToken` | string | No | nextSyncToken from a previous call, to return only rows changed since then | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-43] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------- | | `rows` | array | Rows in the table | | `nextSyncToken` | string | Token to pass as syncToken later to fetch only rows changed after this call | ### Coda List Tables [#coda-list-tables] List the tables and views in a Coda doc #### Input [#input-44] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableTypes` | json | No | Table types to include, as an array or comma-separated list of "table", "view", "database" (defaults to all) | | `sortBy` | string | No | Sort order; "name" sorts alphabetically | | `limit` | number | No | Maximum number of results to return per page | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-44] | Parameter | Type | Description | | --------- | ----- | --------------------------- | | `tables` | array | Tables and views in the doc | ### Coda List Workspace Members [#coda-list-workspace-members] List the members of a Coda workspace with their roles and doc activity, requesting user first. The workspace must belong to an organization. #### Input [#input-45] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (e.g., "ws-1Ab234") | | `includedRoles` | json | No | Only return members with these roles, as an array or comma-separated list of "Admin", "DocMaker", "Editor" | | `pageToken` | string | No | Page token from a previous response to fetch the next page | #### Output [#output-45] | Parameter | Type | Description | | ----------------------------------- | ------ | ------------------------------------------------------------------ | | `members` | array | Workspace members | | ↳ `email` | string | Email address | | ↳ `name` | string | Name | | ↳ `role` | string | Workspace role (Admin, DocMaker, Editor) | | ↳ `pictureUrl` | string | Avatar link | | ↳ `registeredAt` | string | When the user joined the workspace | | ↳ `roleChangedAt` | string | When the role last changed | | ↳ `lastActiveAt` | string | Date the user last acted in any workspace | | ↳ `ownedDocs` | number | Docs the user owns in this workspace | | ↳ `docsLastActiveAt` | string | Date anyone last accessed a doc the user owns | | ↳ `docCollaboratorCount` | number | Collaborators on docs the user owns in the last 90 days | | ↳ `totalDocs` | number | Docs the user owns, manages, or added pages to in the last 90 days | | ↳ `totalDocsLastActiveAt` | string | Date anyone last accessed a doc the user owns or contributed to | | ↳ `totalDocCollaboratorsLast90Days` | number | Unique viewers of docs the user owns, manages, or added pages to | ### Coda List Workspace Role Activity [#coda-list-workspace-role-activity] Get monthly counts of active and inactive Admins, Doc Makers, and Editors in a workspace. The workspace must belong to an organization. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `workspaceId` | string | Yes | ID of the workspace (e.g., "ws-1Ab234") | #### Output [#output-46] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------ | | `roleActivity` | array | Role counts per month | | ↳ `month` | string | Month of the data (YYYY-MM-DD) | | ↳ `activeAdminCount` | number | Active Admins | | ↳ `activeDocMakerCount` | number | Active Doc Makers | | ↳ `activeEditorCount` | number | Active Editors | | ↳ `inactiveAdminCount` | number | Inactive Admins | | ↳ `inactiveDocMakerCount` | number | Inactive Doc Makers | | ↳ `inactiveEditorCount` | number | Inactive Editors | ### Coda Publish Doc [#coda-publish-doc] Publish a Coda doc or update its publishing settings: URL slug, discoverability, categories, and interaction mode. The doc owner needs a Coda maker profile. #### Input [#input-47] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `slug` | string | No | URL slug for the published doc (e.g., "my-doc") | | `discoverable` | boolean | No | Whether the published doc is discoverable in the gallery | | `categoryNames` | json | No | Category names to apply, as an array or comma-separated list (see List Doc Categories) | | `mode` | string | No | Interaction mode for viewers: "view", "play", or "edit" | #### Output [#output-47] | Parameter | Type | Description | | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `docs` | json | Docs (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace, folder, sourceDoc, docSize, published) | | `doc` | json | Doc (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace \{id, name, organizationId}, folder \{id, name}, sourceDoc, docSize \{totalRowCount, tableAndViewCount, baseTableCount, pageCount, overApiSizeLimit}, published \{description, browserLink, discoverable, mode, categories}) | | `docId` | string | ID of the affected doc | | `categories` | json | Doc category names | | `requestId` | string | Request ID of a queued change, for Get Mutation Status | | `customDomains` | json | Custom domains (customDocDomain, hasCertificate, hasDnsDocId, setupStatus, domainStatus, lastVerifiedTimestamp) | | `customDocDomain` | string | Custom domain | | `provider` | string | DNS provider of a custom domain | | `permissions` | json | Permissions (id, access, principal \{type, email, groupId, groupName, domain, workspaceId}) | | `access` | string | Access level granted | | `principalType` | string | Type of principal the doc was shared with | | `permissionId` | string | ID of the removed permission | | `users` | json | Matching users (name, loginId, pictureLink) | | `groups` | json | Matching groups (groupId, groupName) | | `canShare` | boolean | Whether the user can share the doc | | `canShareWithWorkspace` | boolean | Whether the user can share with the workspace | | `canShareWithOrg` | boolean | Whether the user can share with the org | | `canCopy` | boolean | Whether the user can copy the doc | | `allowEditorsToChangePermissions` | boolean | Whether editors can change permissions | | `allowCopying` | boolean | Whether viewers can copy the doc | | `allowViewersToRequestEditing` | boolean | Whether viewers can request editing | | `pages` | json | Pages (id, name, subtitle, browserLink, contentType, isHidden, icon, image, parent, children, authors, createdAt, updatedAt) | | `page` | json | Page (id, name, subtitle, href, browserLink, contentType, isHidden, isEffectivelyHidden, icon, image, parent, children, authors, createdAt, createdBy, updatedAt, updatedBy) | | `pageId` | string | ID of the created, updated, or deleted page | | `items` | json | Page content lines (id, type, style, format, content, lineLevel), or analytics items (doc or page plus daily metrics) | | `exportId` | string | Page export ID | | `status` | string | Page export status (inProgress, failed, complete) | | `href` | string | API link reporting the page export status | | `downloadLink` | string | Download link of a completed page export | | `exportError` | string | Error message of a failed page export | | `tables` | json | Tables and views (id, name, tableType, href, browserLink, parent) | | `table` | json | Table (id, name, tableType, browserLink, parent, parentTable, displayColumnId, rowCount, sorts, layout, filter, createdAt, updatedAt) | | `columns` | json | Columns (id, name, display, calculated, formula, defaultValue, format) | | `column` | json | Column (id, name, display, calculated, formula, defaultValue, format, parentTable) | | `rows` | json | Rows (id, name, index, browserLink, createdAt, updatedAt, values) | | `row` | json | Row (id, name, index, browserLink, createdAt, updatedAt, values, parentTable) | | `nextSyncToken` | string | Token for reading only rows changed later | | `addedRowIds` | json | IDs of rows that will be added | | `rowId` | string | ID of the affected row | | `rowIds` | json | IDs of rows queued for deletion | | `columnId` | string | ID of the pushed button column | | `formulas` | json | Named formulas (id, name, href, parent) | | `formula` | json | Formula (id, name, href, parent, value) | | `controls` | json | Controls (id, name, href, parent) | | `control` | json | Control (id, name, href, parent, controlType, value) | | `folders` | json | Folders (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folder` | json | Folder (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folderId` | string | ID of the deleted folder | | `children` | json | Subfolders (id, name, browserLink, visibility, workspace, ...) | | `members` | json | Workspace members (email, name, role, registeredAt, roleChangedAt, lastActiveAt, ownedDocs, totalDocs, ...) | | `email` | string | Email of the member whose role changed | | `newRole` | string | Role assigned | | `roleChangedAt` | string | When the role change took effect | | `roleActivity` | json | Monthly role counts (month, activeAdminCount, activeDocMakerCount, activeEditorCount, inactive counts) | | `totalSessions` | number | Total sessions across matching docs | | `docAnalyticsLastUpdated` | string | Date doc analytics last updated | | `packAnalyticsLastUpdated` | string | Date Pack analytics last updated | | `packFormulaAnalyticsLastUpdated` | string | Date Pack formula analytics last updated | | `browserLink` | string | Canonical browser link of a resolved resource | | `resource` | json | Resolved resource (type, id, name, href) | | `completed` | boolean | Whether a queued change was applied | | `warning` | string | Warning for a change that completed with caveats | | `name` | string | Name of the token owner | | `loginId` | string | Email of the token owner | | `pictureLink` | string | Avatar link of the token owner | | `scoped` | boolean | Whether the token is restricted | | `tokenName` | string | Name of the API token | | `workspace` | json | Default workspace of the token owner (id, name, organizationId, browserLink) | | `nextPageToken` | string | Token for fetching the next page of results | ### Coda Push Button [#coda-push-button] Push a button column on a row of a Coda table, running its action. The button can perform any action in the doc. #### Input [#input-48] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rowId` | string | Yes | ID or name of the row (IDs are recommended, e.g., "i-tuVwxYz"; names containing "/" are not supported) | | `columnId` | string | Yes | ID or name of the button column (e.g., "c-tuVwxYz") | #### Output [#output-48] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------- | | `rowId` | string | ID of the row containing the button | | `columnId` | string | ID of the button column | ### Coda Resolve Browser Link [#coda-resolve-browser-link] Resolve a Coda browser URL (doc, page, table, row, etc.) into its resource type and ID for use in other Coda operations #### Input [#input-49] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `url` | string | Yes | Coda browser link, e.g., [https://coda.io/d/\_dAbCDeFGH/Launch-Status\_sumnO](https://coda.io/d/_dAbCDeFGH/Launch-Status_sumnO) | | `degradeGracefully` | boolean | No | If the linked object was deleted, resolve the nearest existing parent (up to the doc) instead of failing | #### Output [#output-49] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------------------- | | `browserLink` | string | Canonical browser link to the resource | | `resource` | object | The resolved resource | | ↳ `type` | string | Resource type (doc, page, table, row, column, formula, control, etc.) | | ↳ `id` | string | Resource ID | | ↳ `name` | string | Resource name | | ↳ `href` | string | API link to the resource | ### Coda Search Principals [#coda-search-principals] Search for users and groups a Coda doc can be shared with (up to 20 of each). Returns nothing without a query. #### Input [#input-50] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `query` | string | No | Name or email to search for | #### Output [#output-50] | Parameter | Type | Description | | --------------- | ------ | ------------------ | | `users` | array | Matching users | | ↳ `name` | string | User name | | ↳ `loginId` | string | User email address | | ↳ `pictureLink` | string | Avatar link | | `groups` | array | Matching groups | | ↳ `groupId` | string | Group ID | | ↳ `groupName` | string | Group name | ### Coda Trigger Automation [#coda-trigger-automation] Trigger a webhook-invoked automation in a Coda doc, optionally passing a JSON payload the automation can read #### Input [#input-51] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `ruleId` | string | Yes | ID of the automation rule (e.g., "grid-auto-b3Jmey6jBS") | | `payload` | json | No | JSON object passed to the automation | #### Output [#output-51] | Parameter | Type | Description | | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `docs` | json | Docs (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace, folder, sourceDoc, docSize, published) | | `doc` | json | Doc (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace \{id, name, organizationId}, folder \{id, name}, sourceDoc, docSize \{totalRowCount, tableAndViewCount, baseTableCount, pageCount, overApiSizeLimit}, published \{description, browserLink, discoverable, mode, categories}) | | `docId` | string | ID of the affected doc | | `categories` | json | Doc category names | | `requestId` | string | Request ID of a queued change, for Get Mutation Status | | `customDomains` | json | Custom domains (customDocDomain, hasCertificate, hasDnsDocId, setupStatus, domainStatus, lastVerifiedTimestamp) | | `customDocDomain` | string | Custom domain | | `provider` | string | DNS provider of a custom domain | | `permissions` | json | Permissions (id, access, principal \{type, email, groupId, groupName, domain, workspaceId}) | | `access` | string | Access level granted | | `principalType` | string | Type of principal the doc was shared with | | `permissionId` | string | ID of the removed permission | | `users` | json | Matching users (name, loginId, pictureLink) | | `groups` | json | Matching groups (groupId, groupName) | | `canShare` | boolean | Whether the user can share the doc | | `canShareWithWorkspace` | boolean | Whether the user can share with the workspace | | `canShareWithOrg` | boolean | Whether the user can share with the org | | `canCopy` | boolean | Whether the user can copy the doc | | `allowEditorsToChangePermissions` | boolean | Whether editors can change permissions | | `allowCopying` | boolean | Whether viewers can copy the doc | | `allowViewersToRequestEditing` | boolean | Whether viewers can request editing | | `pages` | json | Pages (id, name, subtitle, browserLink, contentType, isHidden, icon, image, parent, children, authors, createdAt, updatedAt) | | `page` | json | Page (id, name, subtitle, href, browserLink, contentType, isHidden, isEffectivelyHidden, icon, image, parent, children, authors, createdAt, createdBy, updatedAt, updatedBy) | | `pageId` | string | ID of the created, updated, or deleted page | | `items` | json | Page content lines (id, type, style, format, content, lineLevel), or analytics items (doc or page plus daily metrics) | | `exportId` | string | Page export ID | | `status` | string | Page export status (inProgress, failed, complete) | | `href` | string | API link reporting the page export status | | `downloadLink` | string | Download link of a completed page export | | `exportError` | string | Error message of a failed page export | | `tables` | json | Tables and views (id, name, tableType, href, browserLink, parent) | | `table` | json | Table (id, name, tableType, browserLink, parent, parentTable, displayColumnId, rowCount, sorts, layout, filter, createdAt, updatedAt) | | `columns` | json | Columns (id, name, display, calculated, formula, defaultValue, format) | | `column` | json | Column (id, name, display, calculated, formula, defaultValue, format, parentTable) | | `rows` | json | Rows (id, name, index, browserLink, createdAt, updatedAt, values) | | `row` | json | Row (id, name, index, browserLink, createdAt, updatedAt, values, parentTable) | | `nextSyncToken` | string | Token for reading only rows changed later | | `addedRowIds` | json | IDs of rows that will be added | | `rowId` | string | ID of the affected row | | `rowIds` | json | IDs of rows queued for deletion | | `columnId` | string | ID of the pushed button column | | `formulas` | json | Named formulas (id, name, href, parent) | | `formula` | json | Formula (id, name, href, parent, value) | | `controls` | json | Controls (id, name, href, parent) | | `control` | json | Control (id, name, href, parent, controlType, value) | | `folders` | json | Folders (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folder` | json | Folder (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folderId` | string | ID of the deleted folder | | `children` | json | Subfolders (id, name, browserLink, visibility, workspace, ...) | | `members` | json | Workspace members (email, name, role, registeredAt, roleChangedAt, lastActiveAt, ownedDocs, totalDocs, ...) | | `email` | string | Email of the member whose role changed | | `newRole` | string | Role assigned | | `roleChangedAt` | string | When the role change took effect | | `roleActivity` | json | Monthly role counts (month, activeAdminCount, activeDocMakerCount, activeEditorCount, inactive counts) | | `totalSessions` | number | Total sessions across matching docs | | `docAnalyticsLastUpdated` | string | Date doc analytics last updated | | `packAnalyticsLastUpdated` | string | Date Pack analytics last updated | | `packFormulaAnalyticsLastUpdated` | string | Date Pack formula analytics last updated | | `browserLink` | string | Canonical browser link of a resolved resource | | `resource` | json | Resolved resource (type, id, name, href) | | `completed` | boolean | Whether a queued change was applied | | `warning` | string | Warning for a change that completed with caveats | | `name` | string | Name of the token owner | | `loginId` | string | Email of the token owner | | `pictureLink` | string | Avatar link of the token owner | | `scoped` | boolean | Whether the token is restricted | | `tokenName` | string | Name of the API token | | `workspace` | json | Default workspace of the token owner (id, name, organizationId, browserLink) | | `nextPageToken` | string | Token for fetching the next page of results | ### Coda Unpublish Doc [#coda-unpublish-doc] Unpublish a Coda doc #### Input [#input-52] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | #### Output [#output-52] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `docId` | string | ID of the unpublished doc | ### Coda Update Sharing Settings [#coda-update-sharing-settings] Update who can change permissions, copy, or request edit access on a Coda doc; unset settings are left unchanged #### Input [#input-53] | Parameter | Type | Required | Description | | --------------------------------- | ------- | -------- | --------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `allowEditorsToChangePermissions` | boolean | No | Allow editors to change doc permissions | | `allowCopying` | boolean | No | Allow viewers to copy the doc | | `allowViewersToRequestEditing` | boolean | No | Allow viewers to request edit access | #### Output [#output-53] | Parameter | Type | Description | | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `docs` | json | Docs (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace, folder, sourceDoc, docSize, published) | | `doc` | json | Doc (id, name, href, browserLink, icon, owner, ownerName, createdAt, updatedAt, workspace \{id, name, organizationId}, folder \{id, name}, sourceDoc, docSize \{totalRowCount, tableAndViewCount, baseTableCount, pageCount, overApiSizeLimit}, published \{description, browserLink, discoverable, mode, categories}) | | `docId` | string | ID of the affected doc | | `categories` | json | Doc category names | | `requestId` | string | Request ID of a queued change, for Get Mutation Status | | `customDomains` | json | Custom domains (customDocDomain, hasCertificate, hasDnsDocId, setupStatus, domainStatus, lastVerifiedTimestamp) | | `customDocDomain` | string | Custom domain | | `provider` | string | DNS provider of a custom domain | | `permissions` | json | Permissions (id, access, principal \{type, email, groupId, groupName, domain, workspaceId}) | | `access` | string | Access level granted | | `principalType` | string | Type of principal the doc was shared with | | `permissionId` | string | ID of the removed permission | | `users` | json | Matching users (name, loginId, pictureLink) | | `groups` | json | Matching groups (groupId, groupName) | | `canShare` | boolean | Whether the user can share the doc | | `canShareWithWorkspace` | boolean | Whether the user can share with the workspace | | `canShareWithOrg` | boolean | Whether the user can share with the org | | `canCopy` | boolean | Whether the user can copy the doc | | `allowEditorsToChangePermissions` | boolean | Whether editors can change permissions | | `allowCopying` | boolean | Whether viewers can copy the doc | | `allowViewersToRequestEditing` | boolean | Whether viewers can request editing | | `pages` | json | Pages (id, name, subtitle, browserLink, contentType, isHidden, icon, image, parent, children, authors, createdAt, updatedAt) | | `page` | json | Page (id, name, subtitle, href, browserLink, contentType, isHidden, isEffectivelyHidden, icon, image, parent, children, authors, createdAt, createdBy, updatedAt, updatedBy) | | `pageId` | string | ID of the created, updated, or deleted page | | `items` | json | Page content lines (id, type, style, format, content, lineLevel), or analytics items (doc or page plus daily metrics) | | `exportId` | string | Page export ID | | `status` | string | Page export status (inProgress, failed, complete) | | `href` | string | API link reporting the page export status | | `downloadLink` | string | Download link of a completed page export | | `exportError` | string | Error message of a failed page export | | `tables` | json | Tables and views (id, name, tableType, href, browserLink, parent) | | `table` | json | Table (id, name, tableType, browserLink, parent, parentTable, displayColumnId, rowCount, sorts, layout, filter, createdAt, updatedAt) | | `columns` | json | Columns (id, name, display, calculated, formula, defaultValue, format) | | `column` | json | Column (id, name, display, calculated, formula, defaultValue, format, parentTable) | | `rows` | json | Rows (id, name, index, browserLink, createdAt, updatedAt, values) | | `row` | json | Row (id, name, index, browserLink, createdAt, updatedAt, values, parentTable) | | `nextSyncToken` | string | Token for reading only rows changed later | | `addedRowIds` | json | IDs of rows that will be added | | `rowId` | string | ID of the affected row | | `rowIds` | json | IDs of rows queued for deletion | | `columnId` | string | ID of the pushed button column | | `formulas` | json | Named formulas (id, name, href, parent) | | `formula` | json | Formula (id, name, href, parent, value) | | `controls` | json | Controls (id, name, href, parent) | | `control` | json | Control (id, name, href, parent, controlType, value) | | `folders` | json | Folders (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folder` | json | Folder (id, name, browserLink, description, icon, iconColor, createdAt, canEdit, workspace) | | `folderId` | string | ID of the deleted folder | | `children` | json | Subfolders (id, name, browserLink, visibility, workspace, ...) | | `members` | json | Workspace members (email, name, role, registeredAt, roleChangedAt, lastActiveAt, ownedDocs, totalDocs, ...) | | `email` | string | Email of the member whose role changed | | `newRole` | string | Role assigned | | `roleChangedAt` | string | When the role change took effect | | `roleActivity` | json | Monthly role counts (month, activeAdminCount, activeDocMakerCount, activeEditorCount, inactive counts) | | `totalSessions` | number | Total sessions across matching docs | | `docAnalyticsLastUpdated` | string | Date doc analytics last updated | | `packAnalyticsLastUpdated` | string | Date Pack analytics last updated | | `packFormulaAnalyticsLastUpdated` | string | Date Pack formula analytics last updated | | `browserLink` | string | Canonical browser link of a resolved resource | | `resource` | json | Resolved resource (type, id, name, href) | | `completed` | boolean | Whether a queued change was applied | | `warning` | string | Warning for a change that completed with caveats | | `name` | string | Name of the token owner | | `loginId` | string | Email of the token owner | | `pictureLink` | string | Avatar link of the token owner | | `scoped` | boolean | Whether the token is restricted | | `tokenName` | string | Name of the API token | | `workspace` | json | Default workspace of the token owner (id, name, organizationId, browserLink) | | `nextPageToken` | string | Token for fetching the next page of results | ### Coda Update Doc [#coda-update-doc] Rename a Coda doc or change its icon. Renaming requires Doc Maker access in the workspace. #### Input [#input-54] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `title` | string | No | New title of the doc | | `iconName` | string | No | Name of the icon to use (e.g., "rocket") | #### Output [#output-54] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `docId` | string | ID of the updated doc | ### Coda Update Folder [#coda-update-folder] Rename a Coda folder or change its description. Coda can return the folder as it was before the change; read it again to confirm. #### Input [#input-55] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------ | | `folderId` | string | Yes | ID of the folder (e.g., "fl-1Ab234") | | `name` | string | No | New name of the folder | | `description` | string | No | New description of the folder | #### Output [#output-55] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `folder` | object | The updated folder | ### Coda Update Page [#coda-update-page] Update a Coda page: rename it, change its subtitle, icon, cover, or visibility, and append, prepend, or replace content with Markdown or HTML. Applied asynchronously. #### Input [#input-56] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `pageId` | string | Yes | ID or name of the page (IDs are recommended, e.g., "canvas-IjkLmnO"; names containing "/" are not supported) | | `name` | string | No | New name of the page | | `subtitle` | string | No | New subtitle of the page (an empty value leaves the subtitle unchanged) | | `iconName` | string | No | Name of the page icon (e.g., "rocket") | | `imageUrl` | string | No | URL of a cover image for the page | | `isHidden` | boolean | No | Whether the page is hidden (requires a paid Coda plan; ignored for pages that cannot be hidden) | | `insertionMode` | string | No | How to apply content: "append", "prepend", or "replace". Required when content is provided. | | `elementId` | string | No | Page element to insert relative to or replace (e.g., "cl-lzqh0Q0poT"); omit to apply to the whole page | | `contentFormat` | string | No | Content format: "markdown" (default) or "html" | | `content` | string | No | Content to add to the page in the chosen format | #### Output [#output-56] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `pageId` | string | ID of the updated page | ### Coda Update Row [#coda-update-row] Update cell values in a row of a Coda table. Applied asynchronously. #### Input [#input-57] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rowId` | string | Yes | ID or name of the row (IDs are recommended, e.g., "i-tuVwxYz"; names containing "/" are not supported) | | `cells` | json | Yes | Object mapping column IDs (or names) to new values, e.g., \{"c-tuVwxYz": "Done"}, or Coda cells \[\{"column": "c-tuVwxYz", "value": "Done"}] | | `disableParsing` | boolean | No | Store values exactly as given without parsing them | #### Output [#output-57] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `rowId` | string | ID of the updated row | ### Coda Insert or Upsert Rows [#coda-insert-or-upsert-rows] Insert rows into a Coda base table, or update matching rows when key columns are given. Only works on base tables, not views. Applied asynchronously. #### Input [#input-58] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `docId` | string | Yes | ID of the doc (e.g., "AbCDeFGH") | | `tableId` | string | Yes | ID or name of the table or view (IDs are recommended, e.g., "grid-pqRst-U"; names containing "/" are not supported) | | `rows` | json | Yes | Array of rows. Each row maps column IDs (or names) to values, e.g., \[\{"c-tuVwxYz": "Apple", "c-bCdeFgh": 12}], or uses Coda cells \[\{"cells": \[\{"column": "c-tuVwxYz", "value": "Apple"}]}] | | `keyColumns` | json | No | Column IDs (or names) to match existing rows on, as an array or comma-separated list. Matching rows are updated instead of inserted. | | `disableParsing` | boolean | No | Store values exactly as given without parsing them | #### Output [#output-58] | Parameter | Type | Description | | ------------- | ----- | -------------------------------------------------------------------------- | | `addedRowIds` | array | IDs of rows that will be added (only returned when no key columns are set) | ### Coda Get Current User [#coda-get-current-user] Get the user and default workspace behind the connected Coda API token #### Input [#input-59] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-59] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------------- | | `name` | string | Name of the user | | `loginId` | string | Email address of the user | | `pictureLink` | string | Link to the user avatar | | `scoped` | boolean | Whether the token is restricted to specific docs or tables | | `tokenName` | string | Name of the API token | | `workspace` | object | Default workspace of the user | --- # CodePipeline (/integrations/codepipeline) {/* MANUAL-CONTENT-START:intro */} Use [AWS CodePipeline](https://aws.amazon.com/codepipeline/) to inspect release pipelines and execution history, start or stop runs, retry stages, and approve or reject manual approval actions. Stage transitions can be disabled or re-enabled to control pipeline flow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS CodePipeline into workflows. Start, stop, and monitor pipeline executions, retry failed stages, and approve or reject manual approval actions. Requires AWS access key and secret access key. ## Actions [#actions] ### CodePipeline List Pipelines [#codepipeline-list-pipelines] List all CodePipeline pipelines in an AWS account and region #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum number of pipelines to return (1-1000) | | `nextToken` | string | No | Pagination token from a previous call | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `pipelines` | array | List of pipelines with name, version, type, and timestamps | | ↳ `name` | string | Pipeline name | | ↳ `version` | number | Pipeline version number | | ↳ `pipelineType` | string | Pipeline type (V1 or V2) | | ↳ `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) | | ↳ `created` | number | Epoch ms when the pipeline was created | | ↳ `updated` | number | Epoch ms when the pipeline was last updated | | `nextToken` | string | Pagination token for the next page of results | ### CodePipeline Get Pipeline [#codepipeline-get-pipeline] Get the structure of a CodePipeline pipeline, including its stages, actions, and variables #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `version` | number | No | Pipeline version to retrieve (defaults to the current version) | #### Output [#output-1] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------------------------------------- | | `pipelineName` | string | Pipeline name | | `pipelineArn` | string | Pipeline ARN | | `roleArn` | string | IAM role ARN the pipeline assumes | | `version` | number | Pipeline version number | | `pipelineType` | string | Pipeline type (V1 or V2) | | `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) | | `artifactStoreType` | string | Artifact store type (S3) | | `artifactStoreLocation` | string | Artifact store bucket location | | `stages` | array | Pipeline stages with their actions (name, category, provider, configuration) | | ↳ `stageName` | string | Stage name | | ↳ `actions` | array | Actions in the stage, in run order | | `variables` | array | Pipeline variable declarations with default values | | ↳ `name` | string | Variable name | | ↳ `defaultValue` | string | Default value | | ↳ `description` | string | Variable description | | `created` | number | Epoch ms when the pipeline was created | | `updated` | number | Epoch ms when the pipeline was last updated | ### CodePipeline Get Pipeline State [#codepipeline-get-pipeline-state] Get the current state of a CodePipeline pipeline, including stage and action status and pending approval tokens #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------- | | `pipelineName` | string | Pipeline name | | `pipelineVersion` | number | Pipeline version number | | `created` | number | Epoch ms when the pipeline was created | | `updated` | number | Epoch ms when the pipeline was last updated | | `stageStates` | array | Per-stage state including latest execution status and action details | | ↳ `stageName` | string | Stage name | | ↳ `status` | string | Latest stage execution status (InProgress, Succeeded, Failed, Stopped, Cancelled) | | ↳ `pipelineExecutionId` | string | Pipeline execution ID currently in the stage | | ↳ `inboundTransitionEnabled` | boolean | Whether the inbound transition into the stage is enabled | | ↳ `actionStates` | array | Per-action state with status, summary, error details, and approval token (for pending manual approvals) | ### CodePipeline Get Pipeline Execution [#codepipeline-get-pipeline-execution] Get details of a CodePipeline execution, including status, trigger, source revisions, and resolved variables #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `pipelineExecutionId` | string | Yes | ID of the pipeline execution | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------------------ | | `pipelineExecutionId` | string | Pipeline execution ID | | `pipelineName` | string | Pipeline name | | `pipelineVersion` | number | Pipeline version number | | `status` | string | Execution status (Cancelled, InProgress, Stopped, Stopping, Succeeded, Superseded, Failed) | | `statusSummary` | string | Status summary for the execution | | `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) | | `executionType` | string | Execution type (STANDARD or ROLLBACK) | | `triggerType` | string | What triggered the execution (e.g., Webhook, StartPipelineExecution) | | `triggerDetail` | string | Detail about the trigger (e.g., user ARN) | | `artifactRevisions` | array | Source artifact revisions for the execution | | ↳ `name` | string | Artifact name | | ↳ `revisionId` | string | Revision ID (e.g., commit SHA) | | ↳ `revisionSummary` | string | Revision summary (e.g., commit message) | | ↳ `revisionUrl` | string | URL of the revision | | ↳ `created` | number | Epoch ms when the revision was created | | `variables` | array | Resolved pipeline variables for the execution | | ↳ `name` | string | Variable name | | ↳ `resolvedValue` | string | Resolved variable value | ### CodePipeline List Pipeline Executions [#codepipeline-list-pipeline-executions] List recent executions of a CodePipeline pipeline with status and source revisions #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `maxResults` | number | No | Maximum number of executions to return (1-100, default 100) | | `nextToken` | string | No | Pagination token from a previous call | | `succeededInStage` | string | No | Only return executions that succeeded in this stage | #### Output [#output-4] | Parameter | Type | Description | | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------ | | `executions` | array | Pipeline execution summaries, most recent first | | ↳ `pipelineExecutionId` | string | Pipeline execution ID | | ↳ `status` | string | Execution status (Cancelled, InProgress, Stopped, Stopping, Succeeded, Superseded, Failed) | | ↳ `statusSummary` | string | Status summary for the execution | | ↳ `startTime` | number | Epoch ms when the execution started | | ↳ `lastUpdateTime` | number | Epoch ms when the execution was last updated | | ↳ `executionMode` | string | Execution mode (QUEUED, SUPERSEDED, PARALLEL) | | ↳ `executionType` | string | Execution type (STANDARD or ROLLBACK) | | ↳ `stopTriggerReason` | string | Reason the execution was stopped, if applicable | | ↳ `triggerType` | string | What triggered the execution | | ↳ `triggerDetail` | string | Detail about the trigger | | ↳ `rollbackTargetPipelineExecutionId` | string | Execution ID this run rolled back to, if it was a rollback | | ↳ `sourceRevisions` | array | Source revisions (commit IDs, summaries, URLs) for the execution | | `nextToken` | string | Pagination token for the next page of results | ### CodePipeline List Action Executions [#codepipeline-list-action-executions] List action-level execution history for a CodePipeline pipeline, including per-action status, timing, and error details #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------ | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `pipelineExecutionId` | string | No | Only return action executions for this pipeline execution | | `maxResults` | number | No | Maximum number of action executions to return (1-100, default 100) | | `nextToken` | string | No | Pagination token from a previous call | #### Output [#output-5] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------------------------------------------------------- | | `actionExecutionDetails` | array | Action execution history, most recent first | | ↳ `pipelineExecutionId` | string | Pipeline execution ID | | ↳ `actionExecutionId` | string | Action execution ID (use as the approval token for PARALLEL execution-mode pipelines) | | ↳ `pipelineVersion` | number | Pipeline version number | | ↳ `stageName` | string | Stage the action belongs to | | ↳ `actionName` | string | Action name | | ↳ `startTime` | number | Epoch ms when the action started | | ↳ `lastUpdateTime` | number | Epoch ms when the action was last updated | | ↳ `updatedBy` | string | Who or what last updated the action | | ↳ `status` | string | Action execution status (InProgress, Abandoned, Succeeded, Failed) | | ↳ `externalExecutionId` | string | ID of the external system execution (e.g., CodeBuild build ID) | | ↳ `externalExecutionSummary` | string | Summary from the external system execution | | ↳ `externalExecutionUrl` | string | URL of the external system execution | | ↳ `errorCode` | string | Error code if the action failed | | ↳ `errorMessage` | string | Error message if the action failed | | `nextToken` | string | Pagination token for the next page of results | ### CodePipeline Start Execution [#codepipeline-start-execution] Start a CodePipeline pipeline execution, optionally overriding pipeline variables #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline to start | | `clientRequestToken` | string | No | Idempotency token to identify a unique execution request | | `variables` | json | No | Pipeline variable overrides as an array of \{ name, value } objects | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------- | | `pipelineExecutionId` | string | ID of the pipeline execution that was started | ### CodePipeline Stop Execution [#codepipeline-stop-execution] Stop a CodePipeline pipeline execution, either finishing in-progress actions or abandoning them #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `pipelineExecutionId` | string | Yes | ID of the pipeline execution to stop | | `abandon` | boolean | No | Abandon in-progress actions instead of letting them finish (default false) | | `reason` | string | No | Reason for stopping the execution (max 200 characters) | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------- | | `pipelineExecutionId` | string | ID of the pipeline execution that was stopped | ### CodePipeline Retry Stage Execution [#codepipeline-retry-stage-execution] Retry the failed actions (or all actions) of a failed CodePipeline stage #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `stageName` | string | Yes | Name of the failed stage to retry | | `pipelineExecutionId` | string | Yes | ID of the pipeline execution in the failed stage | | `retryMode` | string | Yes | Scope of the retry: FAILED\_ACTIONS or ALL\_ACTIONS | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------- | | `pipelineExecutionId` | string | ID of the pipeline execution with the retried stage | ### CodePipeline Put Approval Result [#codepipeline-put-approval-result] Approve or reject a pending CodePipeline manual approval action. The approval token is available from Get Pipeline State on the pending approval action #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `stageName` | string | Yes | Name of the stage containing the approval action | | `actionName` | string | Yes | Name of the manual approval action | | `token` | string | Yes | Approval token from Get Pipeline State for the pending approval | | `status` | string | Yes | Approval decision: Approved or Rejected | | `summary` | string | Yes | Summary explaining the approval decision (max 512 characters) | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------ | | `approvedAt` | number | Epoch ms when the approval or rejection was submitted | | `status` | string | The submitted approval decision (Approved or Rejected) | ### CodePipeline Disable Stage Transition [#codepipeline-disable-stage-transition] Prevent artifacts from transitioning into or out of a CodePipeline stage, freezing the pipeline at that point #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `stageName` | string | Yes | Name of the stage to disable the transition for | | `transitionType` | string | Yes | Inbound to block artifacts entering the stage, Outbound to block artifacts leaving it | | `reason` | string | Yes | Reason the transition is disabled, shown in the pipeline console (max 300 characters) | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------- | | `pipelineName` | string | Pipeline name | | `stageName` | string | Stage whose transition was disabled | | `transitionType` | string | Transition type that was disabled (Inbound or Outbound) | ### CodePipeline Enable Stage Transition [#codepipeline-enable-stage-transition] Re-enable artifacts transitioning into or out of a CodePipeline stage after it was disabled #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `pipelineName` | string | Yes | Name of the pipeline | | `stageName` | string | Yes | Name of the stage to enable the transition for | | `transitionType` | string | Yes | Inbound to allow artifacts entering the stage, Outbound to allow artifacts leaving it | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------ | | `pipelineName` | string | Pipeline name | | `stageName` | string | Stage whose transition was enabled | | `transitionType` | string | Transition type that was enabled (Inbound or Outbound) | --- # Confluence (/integrations/confluence) {/* MANUAL-CONTENT-START:intro */} [Confluence](https://www.atlassian.com/software/confluence) organizes documentation in spaces and pages. Use this integration to search content and manage pages, blog posts, comments, attachments, and labels. Configure its triggers when a workflow should respond to Confluence events. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Confluence into the workflow. Can read, create, update, delete pages, manage comments, attachments, labels, and search content. ## Actions [#actions] ### Confluence Retrieve [#confluence-retrieve] Retrieve content from Confluence pages using the Confluence API. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to retrieve (numeric ID from page URL or API) | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | Confluence page ID | | `title` | string | Page title | | `content` | string | Page content with HTML tags stripped | | `status` | string | Page status (current, archived, trashed, draft) | | `spaceId` | string | ID of the space containing the page | | `parentId` | string | ID of the parent page | | `authorId` | string | Account ID of the page author | | `createdAt` | string | ISO 8601 timestamp when the page was created | | `url` | string | URL to view the page in Confluence | | `body` | object | Raw page body content in storage format | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | `version` | object | Page version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | ### Confluence Update [#confluence-update] Update a Confluence page using the Confluence API. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to update (numeric ID from page URL or API) | | `title` | string | No | New title for the page | | `content` | string | No | New content for the page in Confluence storage format | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `ts` | string | Timestamp of update | | `pageId` | string | Confluence page ID | | `title` | string | Updated page title | | `status` | string | Page status | | `spaceId` | string | Space ID | | `body` | object | Page body content in storage format | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | `version` | object | Page version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `url` | string | URL to view the page in Confluence | | `success` | boolean | Update operation success status | ### Confluence Create Page [#confluence-create-page] Create a new page in a Confluence space. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Confluence space ID where the page will be created | | `title` | string | Yes | Title of the new page | | `content` | string | Yes | Page content in Confluence storage format (HTML) | | `parentId` | string | No | Parent page ID if creating a child page | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `ts` | string | Timestamp of creation | | `pageId` | string | Created page ID | | `title` | string | Page title | | `status` | string | Page status | | `spaceId` | string | Space ID | | `parentId` | string | Parent page ID | | `body` | object | Page body content | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | `version` | object | Page version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `url` | string | Page URL | ### Confluence Delete Page [#confluence-delete-page] Delete a Confluence page. By default moves to trash; use purge=true to permanently delete. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------- | -------- | --------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to delete | | `purge` | boolean | No | If true, permanently deletes the page instead of moving to trash (default: false) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | --------------------- | | `ts` | string | Timestamp of deletion | | `pageId` | string | Deleted page ID | | `deleted` | boolean | Deletion status | ### Confluence List Pages in Space [#confluence-list-pages-in-space] List all pages within a specific Confluence space. Supports pagination and filtering by status. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | The ID of the Confluence space to list pages from | | `limit` | number | No | Maximum number of pages to return (default: 50, max: 250) | | `status` | string | No | Filter pages by status: current, archived, trashed, or draft | | `bodyFormat` | string | No | Format for page body content: storage, atlas\_doc\_format, or view. If not specified, body is not included. | | `cursor` | string | No | Pagination cursor from previous response to get the next page of results | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pages` | array | Array of pages in the space | | ↳ `id` | string | Unique page identifier | | ↳ `title` | string | Page title | | ↳ `status` | string | Page status (e.g., current, archived, trashed, draft) | | ↳ `spaceId` | string | ID of the space containing the page | | ↳ `parentId` | string | ID of the parent page (null if top-level) | | ↳ `authorId` | string | Account ID of the page author | | ↳ `createdAt` | string | ISO 8601 timestamp when the page was created | | ↳ `version` | object | Page version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | ↳ `body` | object | Page body content (if bodyFormat was specified) | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `webUrl` | string | URL to view the page in Confluence | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Page Children [#confluence-get-page-children] Get all child pages of a specific Confluence page. Useful for navigating page hierarchies. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the parent page to get children from | | `limit` | number | No | Maximum number of child pages to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response to get the next page of results | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `parentId` | string | ID of the parent page | | `children` | array | Array of child pages | | ↳ `id` | string | Child page ID | | ↳ `title` | string | Child page title | | ↳ `status` | string | Page status | | ↳ `spaceId` | string | Space ID | | ↳ `childPosition` | number | Position among siblings | | ↳ `webUrl` | string | URL to view the page | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Page Ancestors [#confluence-get-page-ancestors] Get the ancestor (parent) pages of a specific Confluence page. Returns the full hierarchy from the page up to the root. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page to get ancestors for | | `limit` | number | No | Maximum number of ancestors to return (default: 25, max: 250) | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page whose ancestors were retrieved | | `ancestors` | array | Array of ancestor pages, ordered from direct parent to root | | ↳ `id` | string | Ancestor page ID | | ↳ `title` | string | Ancestor page title | | ↳ `status` | string | Page status | | ↳ `spaceId` | string | Space ID | | ↳ `webUrl` | string | URL to view the page | ### Confluence List Page Versions [#confluence-list-page-versions] List all versions (revision history) of a Confluence page. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------ | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page to get versions for | | `limit` | number | No | Maximum number of versions to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page | | `versions` | array | Array of page versions | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Page Version [#confluence-get-page-version] Get details about a specific version of a Confluence page. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page | | `versionNumber` | number | Yes | The version number to retrieve (e.g., 1, 2, 3) | #### Output [#output-8] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page | | `title` | string | Page title at this version | | `content` | string | Page content with HTML tags stripped at this version | | `version` | object | Detailed version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | ↳ `contentTypeModified` | boolean | Whether the content type was modified in this version | | ↳ `collaborators` | array | List of collaborator account IDs for this version | | ↳ `prevVersion` | number | Previous version number | | ↳ `nextVersion` | number | Next version number | | `body` | object | Raw page body content in storage format at this version | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | ### Confluence List Page Properties [#confluence-list-page-properties] List all custom properties (metadata) attached to a Confluence page. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page to list properties from | | `limit` | number | No | Maximum number of properties to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page | | `properties` | array | Array of content properties | | ↳ `id` | string | Property ID | | ↳ `key` | string | Property key | | ↳ `value` | json | Property value (can be any JSON) | | ↳ `version` | object | Version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Create Page Property [#confluence-create-page-property] Create a new custom property (metadata) on a Confluence page. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page to add the property to | | `key` | string | Yes | The key/name for the property | | `value` | json | Yes | The value for the property (can be any JSON value) | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page | | `propertyId` | string | ID of the created property | | `key` | string | Property key | | `value` | json | Property value | | `version` | object | Version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | ### Confluence Delete Page Property [#confluence-delete-page-property] Delete a content property from a Confluence page by its property ID. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | The ID of the page containing the property | | `propertyId` | string | Yes | The ID of the property to delete | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | ID of the page | | `propertyId` | string | ID of the deleted property | | `deleted` | boolean | Deletion status | ### Confluence Search [#confluence-search] Search for content across Confluence pages, blog posts, and other content. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `query` | string | Yes | Search query string | | `limit` | number | No | Maximum number of results to return (default: 25) | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `ts` | string | Timestamp of search | | `results` | array | Array of search results | | ↳ `id` | string | Unique content identifier | | ↳ `title` | string | Content title | | ↳ `type` | string | Content type (e.g., page, blogpost, attachment, comment) | | ↳ `status` | string | Content status (e.g., current) | | ↳ `url` | string | URL to view the content in Confluence | | ↳ `excerpt` | string | Text excerpt matching the search query | | ↳ `spaceKey` | string | Key of the space containing the content | | ↳ `space` | object | Space information for the content | | ↳ `id` | string | Space identifier | | ↳ `key` | string | Space key | | ↳ `name` | string | Space name | | ↳ `lastModified` | string | ISO 8601 timestamp of last modification | | ↳ `entityType` | string | Entity type identifier (e.g., content, space) | ### Confluence Search in Space [#confluence-search-in-space] Search for content within a specific Confluence space. Optionally filter by text query and content type. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceKey` | string | Yes | The key of the Confluence space to search in (e.g., "ENG", "HR") | | `query` | string | No | Text search query. If not provided, returns all content in the space. | | `contentType` | string | No | Filter by content type: page, blogpost, attachment, or comment | | `limit` | number | No | Maximum number of results to return (default: 25, max: 250) | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceKey` | string | The space key that was searched | | `totalSize` | number | Total number of matching results | | `results` | array | Array of search results | | ↳ `id` | string | Unique content identifier | | ↳ `title` | string | Content title | | ↳ `type` | string | Content type (e.g., page, blogpost, attachment, comment) | | ↳ `status` | string | Content status (e.g., current) | | ↳ `url` | string | URL to view the content in Confluence | | ↳ `excerpt` | string | Text excerpt matching the search query | | ↳ `spaceKey` | string | Key of the space containing the content | | ↳ `space` | object | Space information for the content | | ↳ `id` | string | Space identifier | | ↳ `key` | string | Space key | | ↳ `name` | string | Space name | | ↳ `lastModified` | string | ISO 8601 timestamp of last modification | | ↳ `entityType` | string | Entity type identifier (e.g., content, space) | ### Confluence List Blog Posts [#confluence-list-blog-posts] List all blog posts across all accessible Confluence spaces. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `limit` | number | No | Maximum number of blog posts to return (default: 25, max: 250) | | `status` | string | No | Filter by status: current, archived, trashed, or draft | | `sort` | string | No | Sort order: created-date, -created-date, modified-date, -modified-date, title, -title | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `blogPosts` | array | Array of blog posts | | ↳ `id` | string | Blog post ID | | ↳ `title` | string | Blog post title | | ↳ `status` | string | Blog post status | | ↳ `spaceId` | string | Space ID | | ↳ `authorId` | string | Author account ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `version` | object | Version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | ↳ `webUrl` | string | URL to view the blog post | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Blog Post [#confluence-get-blog-post] Get a specific Confluence blog post by ID, including its content. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `blogPostId` | string | Yes | The ID of the blog post to retrieve | | `bodyFormat` | string | No | Format for blog post body: storage, atlas\_doc\_format, or view | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Blog post ID | | `title` | string | Blog post title | | `status` | string | Blog post status | | `spaceId` | string | Space ID | | `authorId` | string | Author account ID | | `createdAt` | string | Creation timestamp | | `version` | object | Version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `body` | object | Blog post body content in requested format(s) | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | `webUrl` | string | URL to view the blog post | ### Confluence Create Blog Post [#confluence-create-blog-post] Create a new blog post in a Confluence space. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | The ID of the space to create the blog post in | | `title` | string | Yes | Title of the blog post | | `content` | string | Yes | Blog post content in Confluence storage format (HTML) | | `status` | string | No | Blog post status: current (default) or draft | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Created blog post ID | | `title` | string | Blog post title | | `status` | string | Blog post status | | `spaceId` | string | Space ID | | `authorId` | string | Author account ID | | `body` | object | Blog post body content | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | `version` | object | Blog post version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `webUrl` | string | URL to view the blog post | ### Confluence List Blog Posts in Space [#confluence-list-blog-posts-in-space] List all blog posts within a specific Confluence space. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | The ID of the Confluence space to list blog posts from | | `limit` | number | No | Maximum number of blog posts to return (default: 25, max: 250) | | `status` | string | No | Filter by status: current, archived, trashed, or draft | | `bodyFormat` | string | No | Format for blog post body: storage, atlas\_doc\_format, or view | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `blogPosts` | array | Array of blog posts in the space | | ↳ `id` | string | Blog post ID | | ↳ `title` | string | Blog post title | | ↳ `status` | string | Blog post status | | ↳ `spaceId` | string | Space ID | | ↳ `authorId` | string | Author account ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `version` | object | Version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | ↳ `body` | object | Blog post body content | | ↳ `storage` | object | Body in storage format (Confluence markup) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `view` | object | Body in view format (rendered HTML) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `atlas_doc_format` | object | Body in Atlassian Document Format (ADF) | | ↳ `value` | string | The content value in the specified format | | ↳ `representation` | string | Content representation type | | ↳ `webUrl` | string | URL to view the blog post | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Create Comment [#confluence-create-comment] Add a comment to a Confluence page. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to comment on | | `comment` | string | Yes | Comment text in Confluence storage format | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ------ | --------------------- | | `ts` | string | Timestamp of creation | | `commentId` | string | Created comment ID | | `pageId` | string | Page ID | ### Confluence List Comments [#confluence-list-comments] List all comments on a Confluence page. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to list comments from | | `limit` | number | No | Maximum number of comments to return (default: 25) | | `bodyFormat` | string | No | Format for the comment body: storage, atlas\_doc\_format, view, or export\_view (default: storage) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-19] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `comments` | array | Array of Confluence comments | | ↳ `id` | string | Unique comment identifier | | ↳ `status` | string | Comment status (e.g., current) | | ↳ `title` | string | Comment title | | ↳ `pageId` | string | ID of the page the comment belongs to | | ↳ `blogPostId` | string | ID of the blog post the comment belongs to | | ↳ `parentCommentId` | string | ID of the parent comment | | ↳ `body` | object | Comment body content | | ↳ `value` | string | Comment body content | | ↳ `representation` | string | Content representation format (e.g., storage, view) | | ↳ `createdAt` | string | ISO 8601 timestamp when the comment was created | | ↳ `authorId` | string | Account ID of the comment author | | ↳ `version` | object | Comment version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Update Comment [#confluence-update-comment] Update an existing comment on a Confluence page. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `commentId` | string | Yes | Confluence comment ID to update | | `comment` | string | Yes | Updated comment text in Confluence storage format | #### Output [#output-20] | Parameter | Type | Description | | ----------- | ------- | ------------------- | | `ts` | string | Timestamp of update | | `commentId` | string | Updated comment ID | | `updated` | boolean | Update status | ### Confluence Delete Comment [#confluence-delete-comment] Delete a comment from a Confluence page. #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `commentId` | string | Yes | Confluence comment ID to delete | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------- | --------------------- | | `ts` | string | Timestamp of deletion | | `commentId` | string | Deleted comment ID | | `deleted` | boolean | Deletion status | ### Confluence Upload Attachment [#confluence-upload-attachment] Upload a file as an attachment to a Confluence page. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to attach the file to | | `file` | file | Yes | The file to upload as an attachment | | `fileName` | string | No | Optional custom file name for the attachment | | `comment` | string | No | Optional comment to add to the attachment | #### Output [#output-22] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `ts` | string | Timestamp of upload | | `attachmentId` | string | Uploaded attachment ID | | `title` | string | Attachment file name | | `fileSize` | number | File size in bytes | | `mediaType` | string | MIME type of the attachment | | `downloadUrl` | string | Download URL for the attachment | | `pageId` | string | Page ID the attachment was added to | ### Confluence List Attachments [#confluence-list-attachments] List all attachments on a Confluence page. #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to list attachments from | | `limit` | number | No | Maximum number of attachments to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `attachments` | array | Array of Confluence attachments | | ↳ `id` | string | Unique attachment identifier (prefixed with "att") | | ↳ `title` | string | Attachment file name | | ↳ `status` | string | Attachment status (e.g., current, archived, trashed) | | ↳ `mediaType` | string | MIME type of the attachment | | ↳ `fileSize` | number | File size in bytes | | ↳ `downloadUrl` | string | URL to download the attachment | | ↳ `webuiUrl` | string | URL to view the attachment in Confluence UI | | ↳ `pageId` | string | ID of the page the attachment belongs to | | ↳ `blogPostId` | string | ID of the blog post the attachment belongs to | | ↳ `comment` | string | Comment/description of the attachment | | ↳ `version` | object | Attachment version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Delete Attachment [#confluence-delete-attachment] Delete an attachment from a Confluence page (moves to trash). #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `attachmentId` | string | Yes | Confluence attachment ID to delete | #### Output [#output-24] | Parameter | Type | Description | | -------------- | ------- | --------------------- | | `ts` | string | Timestamp of deletion | | `attachmentId` | string | Deleted attachment ID | | `deleted` | boolean | Deletion status | ### Confluence List Labels [#confluence-list-labels] List all labels on a Confluence page. #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to list labels from | | `limit` | number | No | Maximum number of labels to return (default: 25, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-25] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------- | | `ts` | string | Timestamp of retrieval | | `labels` | array | Array of labels on the page | | ↳ `id` | string | Unique label identifier | | ↳ `name` | string | Label name | | ↳ `prefix` | string | Label prefix/type (e.g., global, my, team) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Add Label [#confluence-add-label] Add a label to a Confluence page for organization and categorization. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to add the label to | | `labelName` | string | Yes | Name of the label to add | | `prefix` | string | No | Label prefix: global (default), my, team, or system | #### Output [#output-26] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | Page ID that the label was added to | | `labelName` | string | Name of the added label | | `labelId` | string | ID of the added label | ### Confluence Delete Label [#confluence-delete-label] Remove a label from a Confluence page. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Confluence page ID to remove the label from | | `labelName` | string | Yes | Name of the label to remove | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `pageId` | string | Page ID the label was removed from | | `labelName` | string | Name of the removed label | | `deleted` | boolean | Deletion status | ### Confluence Get Pages by Label [#confluence-get-pages-by-label] Retrieve all pages that have a specific label applied. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `labelId` | string | Yes | The ID of the label to get pages for | | `limit` | number | No | Maximum number of pages to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-28] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `labelId` | string | ID of the label | | `pages` | array | Array of pages with this label | | ↳ `id` | string | Unique page identifier | | ↳ `title` | string | Page title | | ↳ `status` | string | Page status (e.g., current, archived, trashed, draft) | | ↳ `spaceId` | string | ID of the space containing the page | | ↳ `parentId` | string | ID of the parent page (null if top-level) | | ↳ `authorId` | string | Account ID of the page author | | ↳ `createdAt` | string | ISO 8601 timestamp when the page was created | | ↳ `version` | object | Page version information | | ↳ `number` | number | Version number | | ↳ `message` | string | Version message | | ↳ `minorEdit` | boolean | Whether this is a minor edit | | ↳ `authorId` | string | Account ID of the version author | | ↳ `createdAt` | string | ISO 8601 timestamp of version creation | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence List Space Labels [#confluence-list-space-labels] List all labels associated with a Confluence space. #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | The ID of the Confluence space to list labels from | | `limit` | number | No | Maximum number of labels to return (default: 25, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-29] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | ID of the space | | `labels` | array | Array of labels on the space | | ↳ `id` | string | Unique label identifier | | ↳ `name` | string | Label name | | ↳ `prefix` | string | Label prefix/type (e.g., global, my, team) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Space [#confluence-get-space] Get details about a specific Confluence space. #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Confluence space ID to retrieve | #### Output [#output-30] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | Space ID | | `name` | string | Space name | | `key` | string | Space key | | `type` | string | Space type (global, personal) | | `status` | string | Space status (current, archived) | | `url` | string | URL to view the space in Confluence | | `authorId` | string | Account ID of the space creator | | `createdAt` | string | ISO 8601 timestamp when the space was created | | `homepageId` | string | ID of the space homepage | | `description` | object | Space description content | | ↳ `value` | string | Description text content | | ↳ `representation` | string | Content representation format (e.g., plain, view, storage) | ### Confluence Create Space [#confluence-create-space] Create a new Confluence space. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `name` | string | Yes | Name for the new space | | `key` | string | Yes | Unique key for the space (uppercase, no spaces) | | `description` | string | No | Description for the new space | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | Created space ID | | `name` | string | Space name | | `key` | string | Space key | | `type` | string | Space type | | `status` | string | Space status | | `url` | string | URL to view the space | | `homepageId` | string | Homepage ID | | `description` | object | Space description | | ↳ `value` | string | Description text content | | ↳ `representation` | string | Content representation format (e.g., plain, view, storage) | ### Confluence Update Space [#confluence-update-space] Update a Confluence space name or description. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | ID of the space to update | | `name` | string | No | New name for the space | | `description` | string | No | New description for the space | #### Output [#output-32] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | Updated space ID | | `name` | string | Space name | | `key` | string | Space key | | `type` | string | Space type | | `status` | string | Space status | | `url` | string | URL to view the space | | `description` | object | Space description | | ↳ `value` | string | Description text content | | ↳ `representation` | string | Content representation format (e.g., plain, view, storage) | ### Confluence Delete Space [#confluence-delete-space] Delete a Confluence space. #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | ID of the space to delete | #### Output [#output-33] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | Deleted space ID | | `deleted` | boolean | Deletion status | | `longTaskId` | string | ID of the long-running deletion task; poll Confluence long-task API to track completion | | `longTaskStatusLink` | string | Relative link to the long-task status endpoint | ### Confluence List Spaces [#confluence-list-spaces] List all Confluence spaces accessible to the user. #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `limit` | number | No | Maximum number of spaces to return (default: 25, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-34] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaces` | array | Array of Confluence spaces | | ↳ `id` | string | Unique space identifier | | ↳ `key` | string | Space key (short identifier used in URLs) | | ↳ `name` | string | Space name | | ↳ `type` | string | Space type (e.g., global, personal) | | ↳ `status` | string | Space status (e.g., current, archived) | | ↳ `authorId` | string | Account ID of the space creator | | ↳ `createdAt` | string | ISO 8601 timestamp when the space was created | | ↳ `homepageId` | string | ID of the space homepage | | ↳ `description` | object | Space description | | ↳ `value` | string | Description text content | | ↳ `representation` | string | Content representation format (e.g., plain, view, storage) | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence List Space Properties [#confluence-list-space-properties] List properties on a Confluence space. #### Input [#input-35] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Space ID to list properties for | | `limit` | number | No | Maximum number of properties to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-35] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `properties` | array | Array of space properties | | ↳ `id` | string | Property ID | | ↳ `key` | string | Property key | | ↳ `value` | json | Property value | | `spaceId` | string | Space ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Create Space Property [#confluence-create-space-property] Create a property on a Confluence space. #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Space ID to create the property on | | `key` | string | Yes | Property key/name | | `value` | json | No | Property value (JSON) | #### Output [#output-36] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `propertyId` | string | Created property ID | | `key` | string | Property key | | `value` | json | Property value | | `spaceId` | string | Space ID | ### Confluence Delete Space Property [#confluence-delete-space-property] Delete a property from a Confluence space. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Space ID the property belongs to | | `propertyId` | string | Yes | Property ID to delete | #### Output [#output-37] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `spaceId` | string | Space ID | | `propertyId` | string | Deleted property ID | | `deleted` | boolean | Deletion status | ### Confluence List Space Permissions [#confluence-list-space-permissions] List permissions for a Confluence space. #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `spaceId` | string | Yes | Space ID to list permissions for | | `limit` | number | No | Maximum number of permissions to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-38] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `permissions` | array | Array of space permissions | | ↳ `id` | string | Permission ID | | ↳ `principalType` | string | Principal type (user, group, role) | | ↳ `principalId` | string | Principal ID | | ↳ `operationKey` | string | Operation key (read, create, delete, etc.) | | ↳ `operationTargetType` | string | Target type (page, blogpost, space, etc.) | | ↳ `anonymousAccess` | boolean | Whether anonymous access is allowed | | ↳ `unlicensedAccess` | boolean | Whether unlicensed access is allowed | | `spaceId` | string | Space ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Page Descendants [#confluence-get-page-descendants] Get all descendants of a Confluence page recursively. #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | Yes | Page ID to get descendants for | | `limit` | number | No | Maximum number of descendants to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-39] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `descendants` | array | Array of descendant pages | | ↳ `id` | string | Page ID | | ↳ `title` | string | Page title | | ↳ `type` | string | Content type (page, whiteboard, database, etc.) | | ↳ `status` | string | Page status | | ↳ `spaceId` | string | Space ID | | ↳ `parentId` | string | Parent page ID | | ↳ `childPosition` | number | Position among siblings | | ↳ `depth` | number | Depth in the hierarchy | | `pageId` | string | Parent page ID | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence List Tasks [#confluence-list-tasks] List inline tasks from Confluence. Optionally filter by page, space, assignee, or status. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `pageId` | string | No | Filter tasks by page ID | | `spaceId` | string | No | Filter tasks by space ID | | `assignedTo` | string | No | Filter tasks by assignee account ID | | `status` | string | No | Filter tasks by status (complete or incomplete) | | `limit` | number | No | Maximum number of tasks to return (default: 50, max: 250) | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-40] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `tasks` | array | Array of Confluence tasks | | ↳ `id` | string | Task ID | | ↳ `localId` | string | Local task ID | | ↳ `spaceId` | string | Space ID | | ↳ `pageId` | string | Page ID | | ↳ `blogPostId` | string | Blog post ID | | ↳ `status` | string | Task status (complete or incomplete) | | ↳ `body` | string | Task body content in storage format | | ↳ `createdBy` | string | Creator account ID | | ↳ `assignedTo` | string | Assignee account ID | | ↳ `completedBy` | string | Completer account ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `dueAt` | string | Due date | | ↳ `completedAt` | string | Completion timestamp | | `nextCursor` | string | Cursor for fetching the next page of results | ### Confluence Get Task [#confluence-get-task] Get a specific Confluence inline task by ID. #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `taskId` | string | Yes | The ID of the task to retrieve | #### Output [#output-41] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------ | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Task ID | | `localId` | string | Local task ID | | `spaceId` | string | Space ID | | `pageId` | string | Page ID | | `blogPostId` | string | Blog post ID | | `status` | string | Task status (complete or incomplete) | | `body` | string | Task body content in storage format | | `createdBy` | string | Creator account ID | | `assignedTo` | string | Assignee account ID | | `completedBy` | string | Completer account ID | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `dueAt` | string | Due date | | `completedAt` | string | Completion timestamp | ### Confluence Update Task [#confluence-update-task] Update the status of a Confluence inline task (complete or incomplete). #### Input [#input-42] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `taskId` | string | Yes | The ID of the task to update | | `status` | string | Yes | New status for the task (complete or incomplete) | #### Output [#output-42] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Task ID | | `localId` | string | Local task ID | | `spaceId` | string | Space ID | | `pageId` | string | Page ID | | `blogPostId` | string | Blog post ID | | `status` | string | Updated task status | | `body` | string | Task body content in storage format | | `createdBy` | string | Creator account ID | | `assignedTo` | string | Assignee account ID | | `completedBy` | string | Completer account ID | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `dueAt` | string | Due date | | `completedAt` | string | Completion timestamp | ### Confluence Update Blog Post [#confluence-update-blog-post] Update an existing Confluence blog post title and/or content. #### Input [#input-43] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `blogPostId` | string | Yes | The ID of the blog post to update | | `title` | string | No | New title for the blog post | | `content` | string | No | New content for the blog post in storage format | #### Output [#output-43] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `blogPostId` | string | Updated blog post ID | | `title` | string | Blog post title | | `status` | string | Blog post status | | `spaceId` | string | Space ID | | `version` | json | Version information | | `url` | string | URL to view the blog post | ### Confluence Delete Blog Post [#confluence-delete-blog-post] Delete a Confluence blog post. #### Input [#input-44] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `blogPostId` | string | Yes | The ID of the blog post to delete | #### Output [#output-44] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `blogPostId` | string | Deleted blog post ID | | `deleted` | boolean | Deletion status | ### Confluence Get User [#confluence-get-user] Get display name and profile info for a Confluence user by account ID. #### Input [#input-45] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Confluence domain (e.g., yourcompany.atlassian.net) | | `accountId` | string | Yes | The Atlassian account ID of the user to look up | #### Output [#output-45] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `accountId` | string | Atlassian account ID of the user | | `displayName` | string | Display name of the user | | `email` | string | Email address of the user | | `accountType` | string | Account type (e.g., atlassian, app, customer) | | `profilePicture` | string | Path to the user profile picture | | `publicName` | string | Public name of the user | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Confluence Attachment Created [#confluence-attachment-created] Trigger workflow when an attachment is uploaded in Confluence #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | | `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. | | `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. | | `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. | #### Output [#output-46] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `attachment` | object | attachment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `mediaType` | string | MIME type of the attachment | | ↳ `fileSize` | number | File size in bytes | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Container page/blog ID | | ↳ `title` | string | Container page/blog title | | ↳ `contentType` | string | Container content type | | `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) | *** ### Confluence Attachment Removed [#confluence-attachment-removed] Trigger workflow when an attachment is removed in Confluence #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | | `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. | | `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. | | `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. | #### Output [#output-47] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `attachment` | object | attachment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `mediaType` | string | MIME type of the attachment | | ↳ `fileSize` | number | File size in bytes | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Container page/blog ID | | ↳ `title` | string | Container page/blog title | | ↳ `contentType` | string | Container content type | | `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) | *** ### Confluence Attachment Updated [#confluence-attachment-updated] Trigger workflow when an attachment is updated in Confluence #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | | `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. | | `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. | | `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. | #### Output [#output-48] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `attachment` | object | attachment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `mediaType` | string | MIME type of the attachment | | ↳ `fileSize` | number | File size in bytes | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Container page/blog ID | | ↳ `title` | string | Container page/blog title | | ↳ `contentType` | string | Container content type | | `files` | file\[] | Attachment file content downloaded from Confluence (if includeFileContent is enabled with credentials) | *** ### Confluence Blog Post Created [#confluence-blog-post-created] Trigger workflow when a blog post is created in Confluence #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-49] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `blog` | object | blog output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Blog Post Removed [#confluence-blog-post-removed] Trigger workflow when a blog post is removed in Confluence #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-50] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `blog` | object | blog output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Blog Post Restored [#confluence-blog-post-restored] Trigger workflow when a blog post is restored from trash in Confluence #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-51] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `blog` | object | blog output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Blog Post Updated [#confluence-blog-post-updated] Trigger workflow when a blog post is updated in Confluence #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-52] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `blog` | object | blog output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Comment Created [#confluence-comment-created] Trigger workflow when a comment is created in Confluence #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-53] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `comment` | object | comment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Parent page/blog ID | | ↳ `title` | string | Parent page/blog title | | ↳ `contentType` | string | Parent content type (page or blogpost) | | ↳ `spaceKey` | string | Space key of the parent | | ↳ `self` | string | URL link to the parent content | *** ### Confluence Comment Removed [#confluence-comment-removed] Trigger workflow when a comment is removed in Confluence #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-54] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `comment` | object | comment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Parent page/blog ID | | ↳ `title` | string | Parent page/blog title | | ↳ `contentType` | string | Parent content type (page or blogpost) | | ↳ `spaceKey` | string | Space key of the parent | | ↳ `self` | string | URL link to the parent content | *** ### Confluence Comment Updated [#confluence-comment-updated] Trigger workflow when a comment is updated in Confluence #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-55] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `comment` | object | comment output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | number | Parent page/blog ID | | ↳ `title` | string | Parent page/blog title | | ↳ `contentType` | string | Parent content type (page or blogpost) | | ↳ `spaceKey` | string | Space key of the parent | | ↳ `self` | string | URL link to the parent content | *** ### Confluence Label Added [#confluence-label-added] Trigger workflow when a label is added to content in Confluence #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-56] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `label` | object | label output from the tool | | ↳ `name` | string | Label name | | ↳ `id` | string | Label ID | | ↳ `prefix` | string | Label prefix (global, my, team) | | `content` | object | content output from the tool | | ↳ `id` | number | Content ID the label was added to or removed from | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost) | *** ### Confluence Label Removed [#confluence-label-removed] Trigger workflow when a label is removed from content in Confluence #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-57] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `label` | object | label output from the tool | | ↳ `name` | string | Label name | | ↳ `id` | string | Label ID | | ↳ `prefix` | string | Label prefix (global, my, team) | | `content` | object | content output from the tool | | ↳ `id` | number | Content ID the label was added to or removed from | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost) | *** ### Confluence Page Created [#confluence-page-created] Trigger workflow when a new page is created in Confluence #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-58] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Page Moved [#confluence-page-moved] Trigger workflow when a page is moved in Confluence #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-59] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Page Permissions Updated [#confluence-page-permissions-updated] Trigger workflow when page permissions are changed in Confluence #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-60] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | | ↳ `permissions` | json | Updated permissions object for the page | *** ### Confluence Page Removed [#confluence-page-removed] Trigger workflow when a page is removed or trashed in Confluence #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-61] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Page Restored [#confluence-page-restored] Trigger workflow when a page is restored from trash in Confluence #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-62] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Page Updated [#confluence-page-updated] Trigger workflow when a page is updated in Confluence #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-63] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | object | page output from the tool | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `contentType` | string | Content type (page, blogpost, comment, attachment) | | ↳ `version` | number | Version number | | ↳ `spaceKey` | string | Space key the content belongs to | | ↳ `creatorAccountId` | string | Account ID of the creator | | ↳ `lastModifierAccountId` | string | Account ID of the last modifier | | ↳ `self` | string | URL link to the content | | ↳ `creationDate` | number | Creation timestamp (Unix epoch milliseconds) | | ↳ `modificationDate` | number | Last modification timestamp (Unix epoch milliseconds) | *** ### Confluence Space Created [#confluence-space-created] Trigger workflow when a new space is created in Confluence #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-64] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `space` | object | space output from the tool | | ↳ `key` | string | Space key | | ↳ `name` | string | Space name | | ↳ `self` | string | URL link to the space | *** ### Confluence Space Removed [#confluence-space-removed] Trigger workflow when a space is removed in Confluence #### Configuration [#configuration-19] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-65] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `space` | object | space output from the tool | | ↳ `key` | string | Space key | | ↳ `name` | string | Space name | | ↳ `self` | string | URL link to the space | *** ### Confluence Space Updated [#confluence-space-updated] Trigger workflow when a space is updated in Confluence #### Configuration [#configuration-20] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-66] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `space` | object | space output from the tool | | ↳ `key` | string | Space key | | ↳ `name` | string | Space name | | ↳ `self` | string | URL link to the space | *** ### Confluence User Created [#confluence-user-created] Trigger workflow when a new user is added to Confluence #### Configuration [#configuration-21] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | #### Output [#output-67] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `user` | object | user output from the tool | | ↳ `accountId` | string | Account ID of the new user | | ↳ `accountType` | string | Account type (e.g., atlassian, app) | | ↳ `displayName` | string | Display name of the user | | ↳ `emailAddress` | string | Email address of the user (may not be available due to GDPR/privacy settings) | | ↳ `publicName` | string | Public name of the user | | ↳ `self` | string | URL link to the user profile | *** ### Confluence Webhook (All Events) [#confluence-webhook-all-events] Trigger workflow on any Confluence webhook event #### Configuration [#configuration-22] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Confluence using HMAC signature | | `confluenceDomain` | string | No | Your Confluence Cloud domain | | `confluenceEmail` | string | No | Your Atlassian account email. Required together with API token to download attachment files. | | `confluenceApiToken` | string | No | API token from [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens). Required to download attachment file content. | | `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. | #### Output [#output-68] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------- | | `timestamp` | number | Timestamp of the webhook event (Unix epoch milliseconds) | | `userAccountId` | string | Account ID of the user who triggered the event | | `accountType` | string | Account type (e.g., customer) | | `page` | json | Page object (present in page events) | | `comment` | json | Comment object (present in comment events) | | `blog` | json | Blog post object (present in blog events) | | `attachment` | json | Attachment object (present in attachment events) | | `space` | json | Space object (present in space events) | | `label` | json | Label object (present in label events) | | `content` | json | Content object (present in label events) | | `user` | json | User object (present in user events) | | `files` | file\[] | Attachment file content (present in attachment events when includeFileContent is enabled) | --- # Context.dev (/integrations/context_dev) {/* MANUAL-CONTENT-START:intro */} [Context.dev](https://context.dev/) is a web data API that scrapes, crawls, searches, and extracts data from the web, and resolves brand and company data from a domain, name, email, ticker, or transaction descriptor. With Context.dev, you can: * **Scrape and crawl pages**: Convert URLs to clean markdown or HTML, capture screenshots, discover images, crawl entire sites, and map sitemaps * **Search the web**: Run natural language searches with domain filters and optional markdown scraping of results * **Extract structured data**: Pull data matching a JSON schema, or detect and extract product details and catalogs from a page or domain * **Analyze brand and design data**: Extract a domain's fonts and design system, classify a brand into NAICS/SIC industry codes, and resolve brand data (logos, colors, socials, address) from a domain, company name, email, ticker, or transaction descriptor In Agent Serve, the Context.dev integration allows your agents to scrape and crawl web pages into markdown or HTML, capture screenshots, search the web, extract structured data and product information, pull a site's fonts and style guide, classify a brand's industry, and look up brand assets and company details by domain, name, email, ticker, or transaction — all through a single set of API calls in your workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Context.dev into the workflow. Scrape pages to markdown or HTML, capture screenshots, list images, crawl entire sites, map sitemaps, search the web, extract structured data and products, pull design systems, classify industries, and retrieve brand assets by domain, name, email, ticker, or transaction — all from one API. ## Actions [#actions] ### Context.dev Scrape Markdown [#contextdev-scrape-markdown] Scrape any URL and return clean, LLM-ready markdown content. #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------- | | `url` | string | Yes | The full URL to scrape (must include http\:// or https\://) | | `useMainContentOnly` | boolean | No | Return only main content, excluding headers, footers, and navigation | | `includeLinks` | boolean | No | Preserve hyperlinks in the markdown output (default: true) | | `includeImages` | boolean | No | Include image references in the markdown output (default: false) | | `includeFrames` | boolean | No | Render iframe contents inline (default: false) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) | | `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------ | | `markdown` | string | Page content as clean markdown | | `url` | string | The scraped URL | ### Context.dev Scrape HTML [#contextdev-scrape-html] Scrape any URL and return the raw HTML content of the page. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------- | | `url` | string | Yes | The full URL to scrape (must include http\:// or https\://) | | `useMainContentOnly` | boolean | No | Return only main content, excluding headers, footers, and navigation | | `includeFrames` | boolean | No | Render iframe contents inline into the returned HTML (default: false) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) | | `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------- | | `html` | string | Raw HTML content of the page | | `url` | string | The scraped URL | | `type` | string | Detected content type (html, xml, json, text, csv, markdown, svg, pdf, doc, docx) | ### Context.dev Scrape Images [#contextdev-scrape-images] Discover every image asset on a page, with optional dimension and type enrichment. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `url` | string | Yes | The full URL to scrape images from (must include http\:// or https\://) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) | | `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `enrichResolution` | boolean | No | Measure image dimensions (enables 5-credit enrichment) | | `enrichHostedUrl` | boolean | No | Host images on a CDN and return their URL and MIME type (enables enrichment) | | `enrichClassification` | boolean | No | Classify each image by visual asset type (enables enrichment) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------------- | | `success` | boolean | Whether the scrape succeeded | | `images` | array | Discovered image assets with source, element, type, and optional enrichment | | ↳ `src` | string | Image source URL or data | | ↳ `element` | string | Source element (img, svg, link, source, video, css, object, meta, background) | | ↳ `type` | string | Image representation (url, html, base64) | | ↳ `alt` | string | Alt text | | ↳ `enrichment` | json | Optional enrichment (width, height, mimetype, url, type) when requested | | `url` | string | The scraped URL | ### Context.dev Screenshot [#contextdev-screenshot] Capture a screenshot of any web page and store it as a downloadable image file. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `url` | string | Yes | The full URL to capture (must include http\:// or https\://) | | `fullScreenshot` | boolean | No | Capture the full scrollable page instead of just the viewport (default: false) | | `handleCookiePopup` | boolean | No | Attempt to dismiss cookie banners before capturing (default: false) | | `viewportWidth` | number | No | Viewport width in pixels (240-7680, default: 1920) | | `viewportHeight` | number | No | Viewport height in pixels (240-4320, default: 1080) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) | | `waitForMs` | number | No | Post-load delay before capturing in milliseconds (0-30000, default: 3000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------- | | `file` | file | Stored screenshot image file | | `screenshotUrl` | string | Public URL of the captured screenshot | | `screenshotType` | string | Screenshot type (viewport or fullPage) | | `domain` | string | Domain that was captured | | `width` | number | Screenshot width in pixels | | `height` | number | Screenshot height in pixels | ### Context.dev Crawl [#contextdev-crawl] Crawl an entire website and return each discovered page as clean markdown. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------- | | `url` | string | Yes | The starting URL to crawl (must include http\:// or https\://) | | `maxPages` | number | No | Maximum number of pages to crawl (1-500, default: 100) | | `maxDepth` | number | No | Maximum link depth from the starting URL (0 = start page only) | | `urlRegex` | string | No | Regex pattern to filter which URLs are crawled | | `includeLinks` | boolean | No | Preserve hyperlinks in the markdown output (default: true) | | `includeImages` | boolean | No | Include image references in the markdown output (default: false) | | `useMainContentOnly` | boolean | No | Strip headers, footers, and sidebars from each page (default: false) | | `followSubdomains` | boolean | No | Follow links to subdomains of the starting domain (default: false) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 86400000) | | `waitForMs` | number | No | Browser wait time after page load in milliseconds (0-30000) | | `stopAfterMs` | number | No | Soft crawl time budget in milliseconds (10000-110000, default: 80000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------------- | | `results` | array | Crawled pages with markdown content and per-page metadata | | ↳ `markdown` | string | Page content as markdown | | ↳ `metadata` | json | Page metadata (url, title, crawlDepth, statusCode) | | `metadata` | object | Crawl summary (numUrls, maxCrawlDepth, numSucceeded, numFailed, numSkipped) | ### Context.dev Map [#contextdev-map] Build a sitemap of a domain and return every discovered page URL. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `domain` | string | Yes | The domain to build a sitemap for (e.g., "example.com") | | `maxLinks` | number | No | Maximum number of URLs to return (1-100000, default: 10000) | | `urlRegex` | string | No | RE2-compatible regex to filter URLs (max 256 chars) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------------------------------------- | | `domain` | string | The domain that was mapped | | `urls` | array | All page URLs discovered from the sitemap | | `meta` | object | Sitemap discovery stats (sitemapsDiscovered, sitemapsFetched, sitemapsSkipped, errors) | ### Context.dev Search [#contextdev-search] Search the web with natural language and optionally scrape results to markdown. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------- | | `query` | string | Yes | The natural language search query (1-500 characters) | | `includeDomains` | array | No | Only return results from these domains | | `excludeDomains` | array | No | Exclude results from these domains | | `freshness` | string | No | Recency filter (last\_24\_hours, last\_week, last\_month, last\_year) | | `numResults` | number | No | Number of results to return (10-100, default 10) | | `country` | string | No | Restrict results to a country (ISO 3166-1 alpha-2 code, e.g. US) | | `queryFanout` | boolean | No | Expand the query into parallel variants for broader coverage | | `markdownEnabled` | boolean | No | Scrape each result page to markdown (default: false) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------------- | | `results` | array | Search results with url, title, description, relevance, and optional markdown | | ↳ `url` | string | Result page URL | | ↳ `title` | string | Result page title | | ↳ `description` | string | Result snippet/description | | ↳ `relevance` | string | Relevance rating (high, medium, low) | | ↳ `markdown` | json | Scraped markdown for the result (when markdown scraping is enabled) | | `query` | string | The query that was searched | ### Context.dev Extract [#contextdev-extract] Crawl a website and extract structured data matching a provided JSON schema. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------- | | `url` | string | Yes | The starting website URL (must include http\:// or https\://) | | `schema` | json | Yes | JSON Schema describing the structure of the data to extract | | `instructions` | string | No | Optional extraction guidance for link prioritization (max 2000 chars) | | `factCheck` | boolean | No | Require extracted values to be grounded in page facts (default: false) | | `followSubdomains` | boolean | No | Follow links on subdomains of the starting domain (default: false) | | `maxPages` | number | No | Maximum number of pages to analyze (1-50, default: 5) | | `maxDepth` | number | No | Maximum link depth from the starting URL | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) | | `stopAfterMs` | number | No | Soft crawl time budget in milliseconds (10000-110000, default: 80000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------------------- | | `status` | string | Extraction status | | `url` | string | The starting URL that was crawled | | `urlsAnalyzed` | array | URLs that were analyzed during extraction | | `data` | json | Structured data matching the requested schema | | `metadata` | object | Crawl summary (numUrls, maxCrawlDepth, numSucceeded, numFailed, numSkipped) | ### Context.dev Extract Product [#contextdev-extract-product] Detect and extract structured product details from a single product page URL. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `url` | string | Yes | The product page URL (must include http\:// or https\://) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------ | | `isProductPage` | boolean | Whether the URL is a product page | | `platform` | string | Detected platform (amazon, tiktok\_shop, etsy, generic) | | `product` | object | Extracted product details | | ↳ `name` | string | Product name | | ↳ `description` | string | Product description | | ↳ `price` | number | Product price | | ↳ `currency` | string | Price currency | | ↳ `billing_frequency` | string | Billing frequency (monthly, yearly, one\_time, usage\_based) | | ↳ `pricing_model` | string | Pricing model (per\_seat, flat, tiered, freemium, custom) | | ↳ `url` | string | Product URL | | ↳ `category` | string | Product category | | ↳ `features` | json | Product features | | ↳ `target_audience` | json | Target audience | | ↳ `tags` | json | Product tags | | ↳ `image_url` | string | Primary product image URL | | ↳ `images` | json | Product image URLs | | ↳ `sku` | string | Product SKU | ### Context.dev Extract Products [#contextdev-extract-products] Extract the product catalog from a brand's website by domain (beta). #### Input [#input-9] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | The domain to extract products from (e.g., "example.com") | | `maxProducts` | number | No | Maximum number of products to extract (1-12) | | `maxAgeMs` | number | No | Cache duration in milliseconds (0-2592000000, default: 604800000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------ | | `products` | array | Extracted products with pricing, features, and metadata | | ↳ `name` | string | Product name | | ↳ `description` | string | Product description | | ↳ `price` | number | Product price | | ↳ `currency` | string | Price currency | | ↳ `billing_frequency` | string | Billing frequency (monthly, yearly, one\_time, usage\_based) | | ↳ `pricing_model` | string | Pricing model (per\_seat, flat, tiered, freemium, custom) | | ↳ `url` | string | Product URL | | ↳ `category` | string | Product category | | ↳ `features` | json | Product features | | ↳ `target_audience` | json | Target audience | | ↳ `tags` | json | Product tags | | ↳ `image_url` | string | Primary product image URL | | ↳ `images` | json | Product image URLs | | ↳ `sku` | string | Product SKU | ### Context.dev Scrape Fonts [#contextdev-scrape-fonts] Extract the font families, usage stats, and font files used by a domain. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | The domain to extract fonts from (e.g., "example.com") | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-10] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------------------------- | | `status` | string | Extraction status | | `domain` | string | The domain that was analyzed | | `fonts` | array | Fonts with usage statistics and fallbacks | | ↳ `font` | string | Font family name | | ↳ `uses` | json | Where the font is used | | ↳ `fallbacks` | json | Fallback font families | | ↳ `num_elements` | number | Number of elements using the font | | ↳ `num_words` | number | Number of words rendered in the font | | ↳ `percent_words` | number | Percent of words using the font | | ↳ `percent_elements` | number | Percent of elements using the font | | `fontLinks` | json | Font family download links keyed by font name (type, files, category) | ### Context.dev Scrape Styleguide [#contextdev-scrape-styleguide] Extract a domain's design system: colors, typography, spacing, shadows, and UI components. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | The domain to extract the styleguide from (e.g., "example.com") | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------------------------- | | `status` | string | Extraction status | | `domain` | string | The domain that was analyzed | | `styleguide` | json | Design system: mode, colors, typography, elementSpacing, shadows, fontLinks, components | ### Context.dev Classify NAICS [#contextdev-classify-naics] Classify a brand into NAICS industry codes from its domain or company name. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | `input` | string | Yes | Brand domain or company name to classify (e.g., "stripe.com" or "Stripe") | | `minResults` | number | No | Minimum number of codes to return (1-10, default: 1) | | `maxResults` | number | No | Maximum number of codes to return (1-10, default: 5) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------- | | `status` | string | Classification status | | `domain` | string | Resolved domain | | `type` | string | Input type that was resolved | | `codes` | array | Matched NAICS codes with name and confidence | | ↳ `code` | string | Industry code | | ↳ `name` | string | Industry name | | ↳ `confidence` | string | Match confidence (high, medium, low) | ### Context.dev Classify SIC [#contextdev-classify-sic] Classify a brand into SIC industry codes from its domain or company name. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | `input` | string | Yes | Brand domain or company name to classify (e.g., "stripe.com" or "Stripe") | | `type` | string | No | SIC taxonomy version: "original\_sic" (default) or "latest\_sec" | | `minResults` | number | No | Minimum number of codes to return (1-10, default: 1) | | `maxResults` | number | No | Maximum number of codes to return (1-10, default: 5) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------- | | `status` | string | Classification status | | `domain` | string | Resolved domain | | `type` | string | Input type that was resolved | | `classification` | string | SIC taxonomy version used (original\_sic or latest\_sec) | | `codes` | array | Matched SIC codes with name, confidence, and group metadata | | ↳ `code` | string | Industry code | | ↳ `name` | string | Industry name | | ↳ `confidence` | string | Match confidence (high, medium, low) | | ↳ `majorGroup` | string | Major group code (original\_sic only) | | ↳ `majorGroupName` | string | Major group name (original\_sic only) | | ↳ `office` | string | SEC office (latest\_sec only) | ### Context.dev Get Brand [#contextdev-get-brand] Retrieve brand data for a domain: logos, colors, backdrops, socials, address, and industry. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | The domain to retrieve brand data for (e.g., "airbnb.com") | | `forceLanguage` | string | No | Override the detected language with a supported language code | | `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Retrieval status | | `brand` | object | Brand data object | | ↳ `domain` | string | Brand domain | | ↳ `title` | string | Brand title | | ↳ `description` | string | Brand description | | ↳ `slogan` | string | Brand slogan | | ↳ `colors` | json | Brand colors (hex and name) | | ↳ `logos` | json | Brand logos with mode, colors, resolution, and type | | ↳ `backdrops` | json | Brand backdrop images | | ↳ `socials` | json | Social media profiles (type and url) | | ↳ `address` | json | Brand address | | ↳ `stock` | json | Stock info (ticker and exchange) | | ↳ `is_nsfw` | boolean | Whether the brand contains adult content | | ↳ `email` | string | Brand contact email | | ↳ `phone` | string | Brand contact phone | | ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) | | ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) | | ↳ `primary_language` | string | Primary language of the brand site | ### Context.dev Get Brand by Name [#contextdev-get-brand-by-name] Retrieve brand data by company name: logos, colors, socials, address, and industry. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------- | | `name` | string | Yes | Company name to retrieve brand data for (3-30 chars, e.g., "Apple Inc") | | `countryGl` | string | No | ISO 2-letter country code to prioritize (e.g., "us") | | `forceLanguage` | string | No | Override the detected language with a supported language code | | `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Retrieval status | | `brand` | object | Brand data object | | ↳ `domain` | string | Brand domain | | ↳ `title` | string | Brand title | | ↳ `description` | string | Brand description | | ↳ `slogan` | string | Brand slogan | | ↳ `colors` | json | Brand colors (hex and name) | | ↳ `logos` | json | Brand logos with mode, colors, resolution, and type | | ↳ `backdrops` | json | Brand backdrop images | | ↳ `socials` | json | Social media profiles (type and url) | | ↳ `address` | json | Brand address | | ↳ `stock` | json | Stock info (ticker and exchange) | | ↳ `is_nsfw` | boolean | Whether the brand contains adult content | | ↳ `email` | string | Brand contact email | | ↳ `phone` | string | Brand contact phone | | ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) | | ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) | | ↳ `primary_language` | string | Primary language of the brand site | ### Context.dev Get Brand by Email [#contextdev-get-brand-by-email] Retrieve brand data from a work email address. Free/disposable emails are rejected (422). #### Input [#input-16] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------- | | `email` | string | Yes | Work email address; the domain is extracted (free providers are rejected) | | `forceLanguage` | string | No | Override the detected language with a supported language code | | `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Retrieval status | | `brand` | object | Brand data object | | ↳ `domain` | string | Brand domain | | ↳ `title` | string | Brand title | | ↳ `description` | string | Brand description | | ↳ `slogan` | string | Brand slogan | | ↳ `colors` | json | Brand colors (hex and name) | | ↳ `logos` | json | Brand logos with mode, colors, resolution, and type | | ↳ `backdrops` | json | Brand backdrop images | | ↳ `socials` | json | Social media profiles (type and url) | | ↳ `address` | json | Brand address | | ↳ `stock` | json | Stock info (ticker and exchange) | | ↳ `is_nsfw` | boolean | Whether the brand contains adult content | | ↳ `email` | string | Brand contact email | | ↳ `phone` | string | Brand contact phone | | ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) | | ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) | | ↳ `primary_language` | string | Primary language of the brand site | ### Context.dev Get Brand by Ticker [#contextdev-get-brand-by-ticker] Retrieve brand data for a public company by its stock ticker symbol. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `ticker` | string | Yes | Stock ticker symbol (e.g., "AAPL", "GOOGL", "BRK.A") | | `tickerExchange` | string | No | Exchange code for the ticker (e.g., "NASDAQ", "NYSE", "LSE"). Default: NASDAQ | | `forceLanguage` | string | No | Override the detected language with a supported language code | | `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) | | `maxAgeMs` | number | No | Cache max age in milliseconds (86400000-31536000000, default: 7776000000) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Retrieval status | | `brand` | object | Brand data object | | ↳ `domain` | string | Brand domain | | ↳ `title` | string | Brand title | | ↳ `description` | string | Brand description | | ↳ `slogan` | string | Brand slogan | | ↳ `colors` | json | Brand colors (hex and name) | | ↳ `logos` | json | Brand logos with mode, colors, resolution, and type | | ↳ `backdrops` | json | Brand backdrop images | | ↳ `socials` | json | Social media profiles (type and url) | | ↳ `address` | json | Brand address | | ↳ `stock` | json | Stock info (ticker and exchange) | | ↳ `is_nsfw` | boolean | Whether the brand contains adult content | | ↳ `email` | string | Brand contact email | | ↳ `phone` | string | Brand contact phone | | ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) | | ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) | | ↳ `primary_language` | string | Primary language of the brand site | ### Context.dev Identify Transaction [#contextdev-identify-transaction] Identify the brand behind a raw bank/card transaction descriptor and return its brand data. #### Input [#input-18] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `transactionInfo` | string | Yes | The raw transaction descriptor or identifier to resolve to a brand | | `countryGl` | string | No | ISO 2-letter country code from the transaction (e.g., "us", "gb") | | `city` | string | No | City name to prioritize in the search | | `mcc` | string | No | Merchant Category Code for the business category | | `phone` | number | No | Phone number from the transaction for verification | | `highConfidenceOnly` | boolean | No | Enforce additional verification steps for higher confidence (default: false) | | `forceLanguage` | string | No | Override the detected language with a supported language code | | `maxSpeed` | boolean | No | Skip time-consuming operations for a faster response (default: false) | | `timeoutMS` | number | No | Request timeout in milliseconds (1000-300000) | | `apiKey` | string | Yes | Context.dev API key | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------- | | `status` | string | Identification status | | `brand` | object | Brand data for the identified merchant | | ↳ `domain` | string | Brand domain | | ↳ `title` | string | Brand title | | ↳ `description` | string | Brand description | | ↳ `slogan` | string | Brand slogan | | ↳ `colors` | json | Brand colors (hex and name) | | ↳ `logos` | json | Brand logos with mode, colors, resolution, and type | | ↳ `backdrops` | json | Brand backdrop images | | ↳ `socials` | json | Social media profiles (type and url) | | ↳ `address` | json | Brand address | | ↳ `stock` | json | Stock info (ticker and exchange) | | ↳ `is_nsfw` | boolean | Whether the brand contains adult content | | ↳ `email` | string | Brand contact email | | ↳ `phone` | string | Brand contact phone | | ↳ `industries` | json | Industry taxonomy (eic industry/subindustry pairs) | | ↳ `links` | json | Key brand links (careers, privacy, terms, blog, pricing, contact) | | ↳ `primary_language` | string | Primary language of the brand site | --- # Convex (/integrations/convex) {/* MANUAL-CONTENT-START:intro */} Agent Serve's Convex integration connects your workflows to any Convex deployment with two fields: the deployment URL and a deploy key from the dashboard Settings page. From there you can: * **Run functions:** Call query, mutation, and action functions with named JSON arguments — or use Run Function when you don't want to specify the function type. * **Inspect your data model:** List Tables returns every table in the deployment with the JSON schema of its documents. * **Export and sync data:** List Documents pages through a consistent snapshot of a table, and Document Deltas returns only the documents that changed since a snapshot — including deletions — making incremental syncs to warehouses, search indexes, or other tools straightforward. The Run Query, Run Mutation, Run Action, and Run Function operations work on every Convex plan. List Tables, List Documents, and Document Deltas use Convex's streaming export API, which is available on Convex paid plans. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Convex into the workflow. Run query, mutation, and action functions on your deployment, list tables with their schemas, and export documents with snapshot pagination and change deltas. ## Actions [#actions] ### Convex Run Query [#convex-run-query] Run a Convex query function and return its result #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `functionPath` | string | Yes | Path to the query function (e.g., messages:list or folder/file:myQuery) | | `args` | json | No | Named arguments to pass to the function as a JSON object | #### Output [#output] | Parameter | Type | Description | | ---------- | ----- | ----------------------------------------------- | | `value` | json | Result returned by the query function | | `logLines` | array | Log lines printed during the function execution | ### Convex Run Mutation [#convex-run-mutation] Run a Convex mutation function to write data and return its result #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `functionPath` | string | Yes | Path to the mutation function (e.g., messages:send or folder/file:myMutation) | | `args` | json | No | Named arguments to pass to the function as a JSON object | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ----- | ----------------------------------------------- | | `value` | json | Result returned by the mutation function | | `logLines` | array | Log lines printed during the function execution | ### Convex Run Action [#convex-run-action] Run a Convex action function and return its result #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `functionPath` | string | Yes | Path to the action function (e.g., emails:send or folder/file:myAction) | | `args` | json | No | Named arguments to pass to the function as a JSON object | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ----- | ----------------------------------------------- | | `value` | json | Result returned by the action function | | `logLines` | array | Log lines printed during the function execution | ### Convex Run Function [#convex-run-function] Run any Convex function (query, mutation, or action) by path without specifying its type #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `functionPath` | string | Yes | Path to the function (e.g., messages:list or folder/file:myFunction) | | `args` | json | No | Named arguments to pass to the function as a JSON object | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ----- | ----------------------------------------------- | | `value` | json | Result returned by the function | | `logLines` | array | Log lines printed during the function execution | ### Convex List Tables [#convex-list-tables] List all tables in a Convex deployment along with their JSON schemas. Requires streaming export, available on Convex paid plans. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | #### Output [#output-4] | Parameter | Type | Description | | --------- | ----- | ----------------------------------------------------- | | `tables` | array | Names of the tables in the deployment | | `schemas` | json | Map of table name to the JSON schema of its documents | ### Convex List Documents [#convex-list-documents] List documents from a Convex table via a paginated snapshot. Pass the returned snapshot and page cursor back in to fetch the next page. Requires streaming export, available on Convex paid plans. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `tableName` | string | No | Table to list documents from. Omit to list documents from all tables. | | `snapshot` | string | No | Snapshot timestamp from a previous page. Omit on the first request to start a new snapshot. | | `pageCursor` | string | No | Page cursor from a previous page of the same snapshot. Omit on the first request. | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------- | | `documents` | array | Documents in this page of the snapshot | | `hasMore` | boolean | Whether more pages remain in the snapshot | | `snapshot` | string | Snapshot timestamp to pass back in when fetching the next page | | `pageCursor` | string | Page cursor to pass back in when fetching the next page | ### Convex Document Deltas [#convex-document-deltas] List documents that changed after a snapshot or previous delta cursor. Deleted documents are returned with a \_deleted flag. Requires streaming export, available on Convex paid plans. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `deploymentUrl` | string | Yes | Convex deployment URL (e.g., [https://your-deployment.convex.cloud](https://your-deployment.convex.cloud)) | | `deployKey` | string | Yes | Convex deploy key from the dashboard Settings page | | `cursor` | string | Yes | Timestamp cursor to read deltas after. Use the snapshot value from List Documents or the cursor from a previous Document Deltas page. | | `tableName` | string | No | Table to read deltas from. Omit to read deltas from all tables. | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------------ | | `documents` | array | Changed documents, each including \_table and \_ts fields | | `hasMore` | boolean | Whether more delta pages remain | | `cursor` | string | Cursor to pass back in when fetching the next page of deltas | --- # CrowdStrike (/integrations/crowdstrike) {/* MANUAL-CONTENT-START:intro */} [CrowdStrike](https://www.crowdstrike.com/) is a cybersecurity platform providing endpoint protection, threat intelligence, and identity security through its Falcon suite. This integration authenticates with a Falcon API client ID and secret against a chosen cloud region and covers the Alerts, Hosts, Host Groups, IOC Management, Spotlight, Real Time Response, Case Management, and Identity Protection APIs. With this integration, you can: * **Triage alerts**: Search Falcon alerts with Falcon Query Language, pull full alert records by composite ID, and update status, assignment, tags, comments, and console visibility * **Respond on hosts**: Contain or lift containment on a host, and hide or unhide it from the Falcon console * **Manage host groups**: Search groups, read group details, and add or remove hosts from static groups * **Manage custom indicators**: Search, read, create, update, and delete indicators of compromise * **Review vulnerabilities**: Query Spotlight vulnerabilities and read CVE, host, application, and remediation details * **Run read-only Real Time Response**: Open a session, run a documented read-only command, poll for output, and close the session * **Read cases**: Search Case Management cases and read case details * **Query identity sensors**: Search Identity Protection sensors, fetch sensor details, and run aggregate queries Each operation maps to a specific Falcon API scope — for example `Alerts: Read` and `Alerts: Write`, `Hosts: Write` for containment, `Host groups: Read`/`Write`, `IOC Management: Read`/`Write`, `Vulnerabilities: Read`, `Real time response: Read`, and `Cases: Read`. Containment and indicator deletion change live protection behavior, so scope the credential to only the operations your workflows need. Note that CrowdStrike decommissioned the legacy Detects API (September 30, 2025) and the CrowdScore Incidents API (March 9, 2026). This integration uses the current Alerts API and Case Management API in their place. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate CrowdStrike Falcon into workflows to triage alerts, contain hosts, manage host groups and custom indicators of compromise, review Spotlight vulnerabilities, run read-only Real Time Response commands, read Case Management cases, and query Identity Protection sensors. ## Actions [#actions] ### CrowdStrike Create Indicators [#crowdstrike-create-indicators] Create custom CrowdStrike Falcon indicators of compromise (POST /iocs/entities/indicators/v1). Each indicator can allow, detect, or block activity across the fleet, so a wrong value can suppress detections or break legitimate software. Requires the "IOC Management: Write" API scope. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `indicators` | json | Yes | JSON array of indicators to create. Each entry requires type, value, and applied\_globally (boolean). type is one of sha256, md5, domain, ipv4, ipv6; action is one of no\_action, allow, prevent, detect (prevent\_no\_ui is widely reported and appears in the Falcon console, but CrowdStrike does not enumerate it in the IOC API docs - call GET /iocs/queries/actions/v1 to read the actions your tenant actually accepts); severity is one of informational, low, medium, high, critical; platforms entries are windows, mac, or linux. Other documented fields: host\_groups (array), description, source, tags (array), expiration (ISO 8601), mobile\_action, metadata (\{ filename }). Either applied\_globally must be true or host\_groups must be supplied. Tenants can extend these value sets, so treat them as the documented defaults rather than a closed list. | | `comment` | string | No | Audit comment explaining why these indicators were created | | `retrodetects` | boolean | No | Whether to generate retroactive detections for the new indicators | | `ignoreWarnings` | boolean | No | Whether to create the indicators even when CrowdStrike returns warnings | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------- | | `indicators` | array | Created CrowdStrike indicator records | | ↳ `id` | string | Indicator identifier | | ↳ `type` | string | Indicator type | | ↳ `value` | string | Indicator value | | ↳ `action` | string | Action taken when the indicator matches | | ↳ `mobileAction` | string | Action taken on mobile platforms when the indicator matches | | ↳ `severity` | string | Indicator severity | | ↳ `description` | string | Indicator description | | ↳ `source` | string | Indicator source | | ↳ `appliedGlobally` | boolean | Whether the indicator applies to all hosts | | ↳ `platforms` | array | Platforms the indicator applies to | | ↳ `hostGroups` | array | Host group IDs the indicator is scoped to | | ↳ `tags` | array | Tags applied to the indicator | | ↳ `expiration` | string | Indicator expiration timestamp | | ↳ `expired` | boolean | Whether the indicator has expired | | ↳ `deleted` | boolean | Whether the indicator is deleted | | ↳ `fromParent` | boolean | Whether the indicator was inherited from a parent CID | | ↳ `parentCidName` | string | Parent CID name | | ↳ `createdBy` | string | User who created the indicator | | ↳ `createdOn` | string | Indicator creation timestamp | | ↳ `modifiedBy` | string | User who last modified the indicator | | ↳ `modifiedOn` | string | Indicator modification timestamp | | ↳ `metadata` | json | File metadata CrowdStrike resolved for the indicator | | ↳ `avHits` | number | Antivirus hit count | | ↳ `companyName` | string | Company name | | ↳ `fileDescription` | string | File description | | ↳ `fileVersion` | string | File version | | ↳ `filename` | string | File name | | ↳ `originalFilename` | string | Original file name | | ↳ `productName` | string | Product name | | ↳ `productVersion` | string | Product version | | ↳ `signed` | boolean | Whether the file is signed | | `count` | number | Number of indicators created | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Delete Indicators [#crowdstrike-delete-indicators] Permanently delete custom CrowdStrike Falcon indicators of compromise (DELETE /iocs/entities/indicators/v1). Cannot be undone; deleting a blocking indicator removes that protection from every host, and a broad filter can delete far more than intended. Supply an ID list or a filter, never both -- CrowdStrike lets a filter silently override the IDs, so this tool rejects that instead. Requires the "IOC Management: Write" API scope. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `indicatorIds` | json | No | JSON array of CrowdStrike IOC IDs to delete. Cannot be combined with a filter. | | `filter` | string | No | Falcon Query Language filter selecting indicators to delete in bulk. Cannot be combined with an ID list. | | `comment` | string | No | Audit comment explaining why these indicators were deleted | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------- | | `deletedIds` | array | IOC IDs CrowdStrike deleted | | `count` | number | Number of indicators deleted | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Delete RTR Session [#crowdstrike-delete-rtr-session] Close an open CrowdStrike Falcon Real Time Response session (DELETE /real-time-response/entities/sessions/v1). Requires the "Real time response: Read" API scope. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `sessionId` | string | Yes | RTR session ID to close | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------------------------------- | | `sessionId` | string | RTR session ID that was closed | | `deleted` | boolean | Whether CrowdStrike accepted the session deletion | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Execute RTR Command [#crowdstrike-execute-rtr-command] Run a read-only Real Time Response command in an open CrowdStrike Falcon session (POST /real-time-response/entities/command/v1). baseCommand names the family only (cat, cd, clear, csrutil, env, eventlog, filehash, getsid, help, history, ifconfig, ipconfig, ls, mount, netstat, ps, reg, users); subcommands go in commandString. Host-modifying commands need the Active Responder or Admin endpoints. Requires the "Real time response: Read" API scope. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `sessionId` | string | Yes | RTR session ID returned by Init RTR Session | | `baseCommand` | string | Yes | Read-only RTR base command family, one of: cat, cd, clear, csrutil, env, eventlog, filehash, getsid, help, history, ifconfig, ipconfig, ls, mount, netstat, ps, reg, users. Subcommands belong in commandString, not here — and only reg query is read-tier, since reg set and reg delete are Active Responder commands. | | `commandString` | string | Yes | Full command line to run, such as "ls C:\Windows" or "reg query HKLM\Software" | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------------------- | | `cloudRequestId` | string | Cloud request ID to poll for command output | | `sessionId` | string | RTR session the command ran in | | `queuedCommandOffline` | boolean | Whether the command was queued for an offline host | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Alert Details [#crowdstrike-get-alert-details] Get full CrowdStrike Falcon alert records for one or more composite alert IDs (POST /alerts/entities/alerts/v2). Requires the "Alerts: Read" API scope. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `compositeIds` | json | Yes | JSON array of CrowdStrike composite alert IDs | | `includeHidden` | boolean | No | Include previously hidden alerts (CrowdStrike defaults this to true) | #### Output [#output-4] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------------- | | `alerts` | array | CrowdStrike alert records | | ↳ `compositeId` | string | Composite alert ID | | ↳ `id` | string | Alert ID | | ↳ `cid` | string | CrowdStrike customer identifier | | ↳ `aggregateId` | string | Aggregate identifier | | ↳ `agentId` | string | Agent (sensor) identifier | | ↳ `deviceId` | string | Device identifier from the alert device | | ↳ `hostname` | string | Hostname from the alert device | | ↳ `name` | string | Alert name | | ↳ `displayName` | string | Alert display name | | ↳ `description` | string | Alert description | | ↳ `type` | string | Alert type | | ↳ `product` | string | Falcon product that raised the alert | | ↳ `platform` | string | Platform the alert was raised on | | ↳ `severity` | number | Numeric severity | | ↳ `severityName` | string | Severity name | | ↳ `confidence` | number | Confidence score | | ↳ `status` | string | Alert status | | ↳ `assignedToName` | string | Assignee display name | | ↳ `assignedToUid` | string | Assignee user ID | | ↳ `assignedToUuid` | string | Assignee user UUID | | ↳ `tactic` | string | MITRE ATT\&CK tactic | | ↳ `tacticId` | string | MITRE ATT\&CK tactic ID | | ↳ `technique` | string | MITRE ATT\&CK technique | | ↳ `techniqueId` | string | MITRE ATT\&CK technique ID | | ↳ `scenario` | string | Alert scenario | | ↳ `objective` | string | Adversary objective | | ↳ `resolution` | string | Alert resolution | | ↳ `showInUi` | boolean | Whether the alert is shown in Falcon | | ↳ `tags` | array | Tags applied to the alert | | ↳ `filename` | string | Triggering file name | | ↳ `filepath` | string | Triggering file path | | ↳ `cmdline` | string | Triggering command line | | ↳ `sha256` | string | SHA256 of the triggering file | | ↳ `sha1` | string | SHA1 of the triggering file | | ↳ `md5` | string | MD5 of the triggering file | | ↳ `userName` | string | User name associated with the alert | | ↳ `userId` | string | User ID associated with the alert | | ↳ `patternId` | number | Detection pattern ID | | ↳ `falconHostLink` | string | Deep link into the Falcon console | | ↳ `controlGraphId` | string | Control graph identifier | | ↳ `external` | boolean | Whether the alert is external | | ↳ `emailSent` | boolean | Whether a notification email was sent | | ↳ `isAggregated` | boolean | Whether the alert is aggregated | | ↳ `isFalconPlatformIoa` | boolean | Whether the alert is a Falcon platform IOA | | ↳ `dataDomains` | array | Data domains the alert belongs to | | ↳ `iocValues` | array | Indicator values associated with the alert | | ↳ `linkedCaseIds` | array | Case IDs linked to the alert | | ↳ `linkedBehavioralDetections` | array | Behavioral detection IDs linked to the alert | | ↳ `timestamp` | string | Alert timestamp | | ↳ `createdTimestamp` | string | Alert creation timestamp | | ↳ `updatedTimestamp` | string | Alert update timestamp | | ↳ `crawledTimestamp` | string | Alert crawl timestamp | | ↳ `contextTimestamp` | string | Alert context timestamp | | `count` | number | Number of alerts returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Case Details [#crowdstrike-get-case-details] Get CrowdStrike Falcon Case Management case records for one or more case IDs (POST /cases/entities/cases/v2). Requires the "Cases: Read" API scope. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `caseIds` | json | Yes | JSON array of CrowdStrike case IDs | #### Output [#output-5] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `cases` | array | CrowdStrike Case Management case records | | ↳ `id` | string | Case identifier | | ↳ `cid` | string | CrowdStrike customer identifier | | ↳ `name` | string | Case name | | ↳ `description` | string | Case description | | ↳ `descriptionFormat` | string | Format of the case description | | ↳ `status` | string | Case status | | ↳ `severity` | number | Numeric case severity | | ↳ `severityLevel` | string | Case severity level name | | ↳ `referenceId` | string | Human-readable case reference ID | | ↳ `version` | number | Case version for optimistic concurrency | | ↳ `tags` | array | Tags applied to the case | | ↳ `assignedTo` | json | Falcon user the case is assigned to | | ↳ `uuid` | string | Falcon user UUID | | ↳ `email` | string | Falcon user email | | ↳ `fullName` | string | Falcon user full name | | ↳ `createdBy` | json | Falcon user who created the case | | ↳ `uuid` | string | Falcon user UUID | | ↳ `email` | string | Falcon user email | | ↳ `fullName` | string | Falcon user full name | | ↳ `lastUpdatedBy` | json | Falcon user who last updated the case | | ↳ `uuid` | string | Falcon user UUID | | ↳ `email` | string | Falcon user email | | ↳ `fullName` | string | Falcon user full name | | ↳ `createdTimestamp` | string | Case creation timestamp | | ↳ `updatedTimestamp` | string | Case update timestamp | | ↳ `startTimestamp` | string | Case start timestamp | | ↳ `endTimestamp` | string | Case end timestamp | | ↳ `templateId` | string | Case template identifier | | ↳ `templateName` | string | Case template name | | ↳ `slaId` | string | SLA identifier applied to the case | | ↳ `slaName` | string | SLA name applied to the case | | ↳ `isReadOnly` | boolean | Whether the case is read only | | `count` | number | Number of cases returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Host Group Details [#crowdstrike-get-host-group-details] Get CrowdStrike Falcon host group records for one or more group IDs (GET /devices/entities/host-groups/v1). Requires the "Host groups: Read" API scope. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `hostGroupIds` | json | Yes | JSON array of CrowdStrike host group IDs | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------- | | `hostGroups` | array | CrowdStrike host group records | | ↳ `id` | string | Host group identifier | | ↳ `name` | string | Host group name | | ↳ `description` | string | Host group description | | ↳ `groupType` | string | Group type (static, dynamic, staticByID) | | ↳ `assignmentRule` | string | FQL assignment rule for dynamic groups | | ↳ `createdBy` | string | User who created the group | | ↳ `createdTimestamp` | string | Group creation timestamp | | ↳ `modifiedBy` | string | User who last modified the group | | ↳ `modifiedTimestamp` | string | Group modification timestamp | | `count` | number | Number of host groups returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Indicator Details [#crowdstrike-get-indicator-details] Get custom CrowdStrike Falcon indicator of compromise (IOC) records for one or more IOC IDs (GET /iocs/entities/indicators/v1). Requires the "IOC Management: Read" API scope. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `indicatorIds` | json | Yes | JSON array of CrowdStrike IOC IDs | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------- | | `indicators` | array | CrowdStrike indicator of compromise records | | ↳ `id` | string | Indicator identifier | | ↳ `type` | string | Indicator type | | ↳ `value` | string | Indicator value | | ↳ `action` | string | Action taken when the indicator matches | | ↳ `mobileAction` | string | Action taken on mobile platforms when the indicator matches | | ↳ `severity` | string | Indicator severity | | ↳ `description` | string | Indicator description | | ↳ `source` | string | Indicator source | | ↳ `appliedGlobally` | boolean | Whether the indicator applies to all hosts | | ↳ `platforms` | array | Platforms the indicator applies to | | ↳ `hostGroups` | array | Host group IDs the indicator is scoped to | | ↳ `tags` | array | Tags applied to the indicator | | ↳ `expiration` | string | Indicator expiration timestamp | | ↳ `expired` | boolean | Whether the indicator has expired | | ↳ `deleted` | boolean | Whether the indicator is deleted | | ↳ `fromParent` | boolean | Whether the indicator was inherited from a parent CID | | ↳ `parentCidName` | string | Parent CID name | | ↳ `createdBy` | string | User who created the indicator | | ↳ `createdOn` | string | Indicator creation timestamp | | ↳ `modifiedBy` | string | User who last modified the indicator | | ↳ `modifiedOn` | string | Indicator modification timestamp | | ↳ `metadata` | json | File metadata CrowdStrike resolved for the indicator | | ↳ `avHits` | number | Antivirus hit count | | ↳ `companyName` | string | Company name | | ↳ `fileDescription` | string | File description | | ↳ `fileVersion` | string | File version | | ↳ `filename` | string | File name | | ↳ `originalFilename` | string | Original file name | | ↳ `productName` | string | Product name | | ↳ `productVersion` | string | Product version | | ↳ `signed` | boolean | Whether the file is signed | | `count` | number | Number of indicators returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get RTR Command Status [#crowdstrike-get-rtr-command-status] Get the status and output of a Real Time Response command by cloud request ID (GET /real-time-response/entities/command/v1). Long output is chunked across sequences, so increment the sequence ID to read the next chunk. Requires the "Real time response: Read" API scope. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `cloudRequestId` | string | Yes | Cloud request ID returned by Execute RTR Command | | `sequenceId` | number | No | Output chunk to retrieve, starting at 0 | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `complete` | boolean | Whether the command has finished running | | `stdout` | string | Standard output from the command | | `stderr` | string | Standard error from the command | | `baseCommand` | string | Base command that was run | | `sessionId` | string | RTR session the command ran in | | `taskId` | string | Task identifier for the command | | `sequenceId` | number | Output chunk sequence this response covers | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Sensor Aggregates [#crowdstrike-get-sensor-aggregates] Aggregate CrowdStrike Identity Protection sensors from a JSON aggregate query body (POST /identity-protection/aggregates/devices/GET/v1). These are the domain controllers Falcon Identity Protection monitors, not Falcon endpoint sensors. Requires the "Identity Protection Entities: Read" API scope. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `aggregateQuery` | json | Yes | JSON aggregate query body documented by CrowdStrike for sensor aggregates | #### Output [#output-9] | Parameter | Type | Description | | --------------------------- | ------ | --------------------------------------------------------------------- | | `aggregates` | array | Aggregate result groups returned by CrowdStrike | | ↳ `buckets` | array | Buckets within the aggregate result | | ↳ `count` | number | Bucket document count | | ↳ `from` | number | Bucket lower bound | | ↳ `keyAsString` | string | String representation of the bucket key | | ↳ `label` | json | Bucket label object | | ↳ `stringFrom` | string | String lower bound | | ↳ `stringTo` | string | String upper bound | | ↳ `subAggregates` | array | Nested aggregate results for this bucket | | ↳ `to` | number | Bucket upper bound | | ↳ `value` | number | Bucket metric value | | ↳ `valueAsString` | string | String representation of the bucket value | | ↳ `docCountErrorUpperBound` | number | Upper bound for bucket count error | | ↳ `name` | string | Aggregate result name | | ↳ `sumOtherDocCount` | number | Document count not included in the returned buckets | | `count` | number | Number of aggregate result groups returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Sensor Details [#crowdstrike-get-sensor-details] Get CrowdStrike Identity Protection sensor details for one or more device IDs (POST /identity-protection/entities/devices/GET/v1). These are the domain controllers Falcon Identity Protection monitors, not Falcon endpoint sensors. Requires the "Identity Protection Entities: Read" API scope. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `ids` | json | Yes | JSON array of CrowdStrike sensor device IDs | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------- | | `sensors` | array | CrowdStrike identity sensor detail records | | ↳ `agentVersion` | string | Sensor agent version | | ↳ `cid` | string | CrowdStrike customer identifier | | ↳ `deviceId` | string | Sensor device identifier | | ↳ `heartbeatTime` | number | Last heartbeat timestamp | | ↳ `hostname` | string | Sensor hostname | | ↳ `idpPolicyId` | string | Assigned Identity Protection policy ID | | ↳ `idpPolicyName` | string | Assigned Identity Protection policy name | | ↳ `ipAddress` | string | Sensor local IP address | | ↳ `kerberosConfig` | string | Kerberos configuration status | | ↳ `ldapConfig` | string | LDAP configuration status | | ↳ `ldapsConfig` | string | LDAPS configuration status | | ↳ `machineDomain` | string | Machine domain | | ↳ `ntlmConfig` | string | NTLM configuration status | | ↳ `osVersion` | string | Operating system version | | ↳ `rdpToDcConfig` | string | RDP to domain controller configuration status | | ↳ `smbToDcConfig` | string | SMB to domain controller configuration status | | ↳ `status` | string | Sensor protection status | | ↳ `statusCauses` | array | Documented causes behind the current status | | ↳ `tiEnabled` | string | Threat intelligence enablement status | | `count` | number | Number of sensors returned | | `pagination` | json | Pagination metadata (limit, offset, total) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Get Vulnerability Details [#crowdstrike-get-vulnerability-details] Get CrowdStrike Falcon Spotlight vulnerability records for one or more vulnerability IDs, including CVE, affected host, application, and remediation details (GET /spotlight/entities/vulnerabilities/v2). Requires the spotlight-vulnerabilities:read API scope, shown as "Vulnerabilities: Read" in the Falcon API client UI. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `vulnerabilityIds` | json | Yes | JSON array of Spotlight vulnerability IDs (maximum 400 per request) | #### Output [#output-11] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------------------------------- | | `vulnerabilities` | array | CrowdStrike Spotlight vulnerability records | | ↳ `id` | string | Vulnerability identifier | | ↳ `aid` | string | Agent identifier of the affected host | | ↳ `cid` | string | CrowdStrike customer identifier | | ↳ `status` | string | Vulnerability status (open, closed, reopen) | | ↳ `confidence` | string | Detection confidence | | ↳ `vulnerabilityId` | string | Underlying vulnerability ID | | ↳ `createdTimestamp` | string | Creation timestamp | | ↳ `updatedTimestamp` | string | Last update timestamp | | ↳ `closedTimestamp` | string | Closure timestamp | | ↳ `cve` | json | CVE details for the vulnerability | | ↳ `id` | string | CVE identifier | | ↳ `baseScore` | number | CVSS base score | | ↳ `severity` | string | CVE severity | | ↳ `exprtRating` | string | CrowdStrike ExPRT rating | | ↳ `exploitStatus` | number | Exploit status code | | ↳ `exploitabilityScore` | number | CVSS exploitability score | | ↳ `impactScore` | number | CVSS impact score | | ↳ `remediationLevel` | string | CVSS remediation level | | ↳ `description` | string | CVE description | | ↳ `publishedDate` | string | CVE publication date | | ↳ `vector` | string | CVSS vector string | | ↳ `types` | array | CVE types | | ↳ `isCisaKev` | boolean | Whether the CVE is in the CISA Known Exploited Vulnerabilities catalog | | ↳ `cisaDueDate` | string | CISA remediation due date | | ↳ `app` | json | Affected application | | ↳ `productNameNormalized` | string | Normalized product name | | ↳ `productNameVersion` | string | Product name and version | | ↳ `vendorNormalized` | string | Normalized vendor name | | ↳ `hostInfo` | json | Affected host details | | ↳ `hostname` | string | Host name | | ↳ `localIp` | string | Local IP address | | ↳ `machineDomain` | string | Machine domain | | ↳ `osVersion` | string | Operating system version | | ↳ `platform` | string | Platform name | | ↳ `productTypeDesc` | string | Product type description | | ↳ `assetCriticality` | string | Asset criticality | | ↳ `internetExposure` | string | Internet exposure | | ↳ `tags` | array | Host tags | | ↳ `groups` | array | Host group names the host belongs to | | ↳ `remediationIds` | array | Remediation IDs for the vulnerability | | ↳ `remediations` | array | Remediation entities for the vulnerability | | ↳ `id` | string | Remediation identifier | | ↳ `title` | string | Remediation title | | ↳ `action` | string | Remediation action | | ↳ `type` | string | Remediation type | | ↳ `link` | string | Remediation link | | ↳ `reference` | string | Remediation reference | | ↳ `vendorUrl` | string | Vendor advisory URL | | ↳ `suppressionInfo` | json | Suppression state for the vulnerability | | ↳ `isSuppressed` | boolean | Whether the finding is suppressed | | ↳ `reason` | string | Suppression reason | | `count` | number | Number of vulnerabilities returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Init RTR Session [#crowdstrike-init-rtr-session] Open a CrowdStrike Falcon Real Time Response session against a host so read-only commands can be run on it (POST /real-time-response/entities/sessions/v1). This connects a live remote shell to the endpoint. Requires the "Real time response: Read" API scope. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `deviceId` | string | Yes | CrowdStrike host agent ID (AID) to open the session against | | `queueOffline` | boolean | No | Queue the session so it runs when an offline host comes back online | | `origin` | string | No | Optional session origin string recorded by CrowdStrike | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `sessionId` | string | RTR session ID to use for subsequent commands | | `deviceId` | string | Host agent ID for the session | | `platform` | string | Platform of the connected host | | `pwd` | string | Working directory the session started in | | `offlineQueued` | boolean | Whether the session was queued for an offline host | | `existingAidSessions` | number | Number of sessions already open against this host | | `createdAt` | string | Session creation timestamp | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Perform Host Action [#crowdstrike-perform-host-action] Act on CrowdStrike Falcon hosts (POST /devices/entities/devices-actions/v2). Actions: contain, lift\_containment, hide\_host, unhide\_host, detection\_suppress, detection\_unsuppress. contain network-isolates the host so it can only reach the Falcon cloud; hide\_host removes the host record from the console. Both are immediately disruptive. Up to 100 host IDs per call. Requires the "Hosts: Write" API scope. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `actionName` | string | Yes | Action to take: contain, lift\_containment, hide\_host, unhide\_host, detection\_suppress, or detection\_unsuppress. "contain" network-isolates the host; "hide\_host" removes it from the Falcon console. | | `deviceIds` | json | Yes | JSON array of up to 100 CrowdStrike host agent IDs (AIDs) to act on | #### Output [#output-13] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------- | | `affected` | array | Entities affected by the action | | ↳ `id` | string | Affected entity identifier | | ↳ `path` | string | API path of the affected entity | | `count` | number | Number of hosts the action was applied to | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Perform Host Group Action [#crowdstrike-perform-host-group-action] Add hosts to or remove hosts from a CrowdStrike Falcon static host group (POST /devices/entities/host-group-actions/v1). Group membership drives policy assignment, so changing it changes which policies apply to those hosts. Requires the "Host groups: Write" API scope. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `actionName` | string | Yes | Action to take: add-hosts or remove-hosts | | `hostGroupId` | string | Yes | CrowdStrike host group ID to modify (static groups only) | | `deviceIds` | json | Yes | JSON array of CrowdStrike host agent IDs (AIDs) to add to or remove from the group | #### Output [#output-14] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------- | | `hostGroups` | array | Host group records returned after the action | | ↳ `id` | string | Host group identifier | | ↳ `name` | string | Host group name | | ↳ `description` | string | Host group description | | ↳ `groupType` | string | Group type (static, dynamic, staticByID) | | ↳ `assignmentRule` | string | FQL assignment rule for dynamic groups | | ↳ `createdBy` | string | User who created the group | | ↳ `createdTimestamp` | string | Group creation timestamp | | ↳ `modifiedBy` | string | User who last modified the group | | ↳ `modifiedTimestamp` | string | Group modification timestamp | | `count` | number | Number of host group records returned | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Query Alerts [#crowdstrike-query-alerts] Search CrowdStrike Falcon alerts with a Falcon Query Language filter and return their composite IDs. Uses the current Alerts API (GET /alerts/queries/alerts/v2), which replaced the Detects API decommissioned on September 30, 2025. Requires the "Alerts: Read" API scope. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | No | Falcon Query Language filter over alert fields | | `q` | string | No | Free-text search across all alert metadata | | `limit` | number | No | Maximum number of alert IDs to return (max 10000) | | `offset` | number | No | Pagination offset for the alert query | | `sort` | string | No | Sort expression such as "created\_timestamp\|desc" | | `includeHidden` | boolean | No | Include previously hidden alerts (CrowdStrike defaults this to true) | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------- | | `alertIds` | array | Composite alert IDs matching the query, ready for Get Alert Details | | `count` | number | Number of alert IDs returned | | `pagination` | json | Pagination metadata (limit, offset, total) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | ### CrowdStrike Query Cases [#crowdstrike-query-cases] Search CrowdStrike Falcon Case Management cases with a Falcon Query Language filter and return their IDs (GET /cases/queries/cases/v1). Case Management supersedes the CrowdScore Incidents API, which CrowdStrike has removed from its published API spec. Requires the "Cases: Read" API scope. #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | No | Falcon Query Language filter. Exact-match fields include cid and id; wildcard fields include assigned\_to\_name and assigned\_to\_uuid; range fields include created\_timestamp and updated\_timestamp. | | `q` | string | No | Free-text search across all case metadata | | `limit` | number | No | Maximum number of case IDs to return (max 10000, default 100) | | `offset` | number | No | Pagination offset for the case query | | `sort` | string | No | Sort expression such as "created\_timestamp\|desc" or "status\|asc" | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------ | | `caseIds` | array | Case IDs matching the query | | `count` | number | Number of case IDs returned | | `pagination` | json | Pagination metadata (limit, offset, total) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | ### CrowdStrike Query Host Groups [#crowdstrike-query-host-groups] Search CrowdStrike Falcon host groups with a Falcon Query Language filter and return their IDs (GET /devices/queries/host-groups/v1). Requires the "Host groups: Read" API scope. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | No | Falcon Query Language filter over host group fields | | `limit` | number | No | Maximum number of host group IDs to return (1-5000) | | `offset` | number | No | Pagination offset for the host group query | | `sort` | string | No | Sort expression such as "name.asc" or "modified\_timestamp.desc" | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------ | | `hostGroupIds` | array | Host group IDs matching the query | | `count` | number | Number of host group IDs returned | | `pagination` | json | Pagination metadata (limit, offset, total) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | ### CrowdStrike Query Indicators [#crowdstrike-query-indicators] Search custom CrowdStrike Falcon indicators of compromise (IOCs) with a Falcon Query Language filter and return their IDs (GET /iocs/queries/indicators/v1). Requires the "IOC Management: Read" API scope. #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | No | Falcon Query Language filter over IOC fields | | `limit` | number | No | Maximum number of IOC IDs to return (default 100). CrowdStrike publishes no maximum for this endpoint; Agent Serve caps it at 500 to keep a single request bounded | | `offset` | number | No | Pagination offset. Mutually exclusive with the after cursor; use after beyond 10,000 IOCs. | | `after` | string | No | Pagination cursor from a previous response. Mutually exclusive with offset. | | `sort` | string | No | Sort expression. Supported fields include action, applied\_globally, created\_by, created\_on, expiration, expired, modified\_by, modified\_on, severity\_number, source, type, and value. | #### Output [#output-18] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------- | | `indicatorIds` | array | IOC IDs matching the query | | `count` | number | Number of IOC IDs returned | | `pagination` | json | Pagination metadata (limit, offset, total, after) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | | ↳ `after` | string | Cursor for the next page | ### CrowdStrike Query Sensors [#crowdstrike-query-sensors] Search CrowdStrike Identity Protection sensors -- the domain controllers Falcon Identity Protection monitors, not Falcon endpoint sensors -- and return their device IDs (GET /identity-protection/queries/devices/v1). Sort uses the dot form, for example status.desc. Requires the "Identity Protection Entities: Read" API scope, a separate entitlement from Hosts and Alerts. #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | No | Falcon Query Language filter for identity sensor search | | `limit` | number | No | Maximum number of sensor records to return | | `offset` | number | No | Pagination offset for the identity sensor query | | `sort` | string | No | Sort expression for identity sensor results | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------- | | `sensors` | array | Matching CrowdStrike identity sensor records | | ↳ `agentVersion` | string | Sensor agent version | | ↳ `cid` | string | CrowdStrike customer identifier | | ↳ `deviceId` | string | Sensor device identifier | | ↳ `heartbeatTime` | number | Last heartbeat timestamp | | ↳ `hostname` | string | Sensor hostname | | ↳ `idpPolicyId` | string | Assigned Identity Protection policy ID | | ↳ `idpPolicyName` | string | Assigned Identity Protection policy name | | ↳ `ipAddress` | string | Sensor local IP address | | ↳ `kerberosConfig` | string | Kerberos configuration status | | ↳ `ldapConfig` | string | LDAP configuration status | | ↳ `ldapsConfig` | string | LDAPS configuration status | | ↳ `machineDomain` | string | Machine domain | | ↳ `ntlmConfig` | string | NTLM configuration status | | ↳ `osVersion` | string | Operating system version | | ↳ `rdpToDcConfig` | string | RDP to domain controller configuration status | | ↳ `smbToDcConfig` | string | SMB to domain controller configuration status | | ↳ `status` | string | Sensor protection status | | ↳ `statusCauses` | array | Documented causes behind the current status | | ↳ `tiEnabled` | string | Threat intelligence enablement status | | `count` | number | Number of sensors returned | | `pagination` | json | Pagination metadata (limit, offset, total) | | ↳ `limit` | number | Page size used for the query | | ↳ `offset` | number | Offset returned by CrowdStrike | | ↳ `total` | number | Total records available | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Query Vulnerabilities [#crowdstrike-query-vulnerabilities] Search CrowdStrike Falcon Spotlight vulnerabilities with a required Falcon Query Language filter and return their IDs (GET /spotlight/queries/vulnerabilities/v1). Requires the spotlight-vulnerabilities:read API scope, shown as "Vulnerabilities: Read" in the Falcon API client UI. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `filter` | string | Yes | Falcon Query Language filter (required by Spotlight). Filterable fields include status, aid, cid, last\_seen\_within, cve.id, cve.severity, cve.exprt\_rating, cve.is\_cisa\_kev, cve.base\_score, host\_info.platform\_name, host\_info.groups, host\_info.tags, host\_info.internet\_exposure, and suppression\_info.is\_suppressed. | | `limit` | number | No | Maximum number of vulnerability IDs to return (1-400, default 100) | | `after` | string | No | Pagination cursor from a previous response. Spotlight does not support offset. | | `sort` | string | No | Sort expression such as "updated\_timestamp\|desc" or "closed\_timestamp\|asc" | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------ | | `vulnerabilityIds` | array | Spotlight vulnerability IDs matching the query | | `count` | number | Number of vulnerability IDs returned | | `pagination` | json | Cursor pagination metadata (limit, total, after) | | ↳ `limit` | number | Page size used for the query | | ↳ `total` | number | Total records available | | ↳ `after` | string | Cursor for the next page | ### CrowdStrike Update Alerts [#crowdstrike-update-alerts] Update CrowdStrike Falcon alerts by composite ID: change status, assign or unassign an analyst, add or remove tags, append a comment, or toggle visibility (PATCH /alerts/entities/alerts/v3). This modifies live alerts in the Falcon console. Requires the "Alerts: Write" API scope. #### Input [#input-21] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `compositeIds` | json | Yes | JSON array of CrowdStrike composite alert IDs to update | | `updateStatus` | string | No | New alert status: new, in\_progress, reopened, or closed | | `assignToUuid` | string | No | Assign the alert to this Falcon user UUID | | `assignToUserId` | string | No | Assign the alert to this Falcon user ID, such as [user@example.com](mailto:user@example.com) | | `assignToName` | string | No | Assign the alert to this Falcon username, such as John Doe | | `unassign` | boolean | No | Clear the assigned user UUID, user ID, and username from the alert | | `appendComment` | string | No | Comment to append to the alert in the Falcon console | | `addTag` | string | No | Tag to add to the alert | | `removeTag` | string | No | Tag to remove from the alert | | `removeTagsByPrefix` | string | No | Remove every tag on the alert that starts with this prefix | | `showInUi` | boolean | No | Whether the alert is displayed in the Falcon console | | `actionParameters` | json | No | Raw JSON array of additional CrowdStrike action parameters, each shaped \{ "name": string, "value": string } | | `includeHidden` | boolean | No | Include previously hidden alerts (CrowdStrike defaults this to true) | #### Output [#output-21] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------- | | `updatedIds` | array | Composite alert IDs the update was submitted for | | `count` | number | Number of alerts the update was submitted for | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | ### CrowdStrike Update Indicators [#crowdstrike-update-indicators] Update custom CrowdStrike Falcon indicators of compromise by ID (PATCH /iocs/entities/indicators/v1). DESTRUCTIVE: omitted fields may be cleared, so read each indicator with crowdstrike\_get\_indicator\_details first and resend its full field set with your edits applied. Changing action or scope changes prevention behavior fleet-wide. type and value are immutable. Requires the "IOC Management: Write" API scope. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | CrowdStrike Falcon API client ID | | `clientSecret` | string | Yes | CrowdStrike Falcon API client secret | | `cloud` | string | Yes | CrowdStrike Falcon cloud region | | `indicators` | json | Yes | JSON array of indicators to update. Each entry requires id, and should also repeat every field it wants to keep: an updatable field the entry omits may be cleared. Updatable fields: action, severity, description, source, tags (array), platforms (array), applied\_globally (boolean), host\_groups (array), expiration (ISO 8601), mobile\_action, metadata (\{ filename }). type and value cannot be changed. | | `comment` | string | No | Audit comment explaining why these indicators were updated | | `retrodetects` | boolean | No | Whether to generate retroactive detections for the updated indicators | | `ignoreWarnings` | boolean | No | Whether to apply the updates even when CrowdStrike returns warnings | #### Output [#output-22] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------- | | `indicators` | array | Updated CrowdStrike indicator records | | ↳ `id` | string | Indicator identifier | | ↳ `type` | string | Indicator type | | ↳ `value` | string | Indicator value | | ↳ `action` | string | Action taken when the indicator matches | | ↳ `mobileAction` | string | Action taken on mobile platforms when the indicator matches | | ↳ `severity` | string | Indicator severity | | ↳ `description` | string | Indicator description | | ↳ `source` | string | Indicator source | | ↳ `appliedGlobally` | boolean | Whether the indicator applies to all hosts | | ↳ `platforms` | array | Platforms the indicator applies to | | ↳ `hostGroups` | array | Host group IDs the indicator is scoped to | | ↳ `tags` | array | Tags applied to the indicator | | ↳ `expiration` | string | Indicator expiration timestamp | | ↳ `expired` | boolean | Whether the indicator has expired | | ↳ `deleted` | boolean | Whether the indicator is deleted | | ↳ `fromParent` | boolean | Whether the indicator was inherited from a parent CID | | ↳ `parentCidName` | string | Parent CID name | | ↳ `createdBy` | string | User who created the indicator | | ↳ `createdOn` | string | Indicator creation timestamp | | ↳ `modifiedBy` | string | User who last modified the indicator | | ↳ `modifiedOn` | string | Indicator modification timestamp | | ↳ `metadata` | json | File metadata CrowdStrike resolved for the indicator | | ↳ `avHits` | number | Antivirus hit count | | ↳ `companyName` | string | Company name | | ↳ `fileDescription` | string | File description | | ↳ `fileVersion` | string | File version | | ↳ `filename` | string | File name | | ↳ `originalFilename` | string | Original file name | | ↳ `productName` | string | Product name | | ↳ `productVersion` | string | Product version | | ↳ `signed` | boolean | Whether the file is signed | | `count` | number | Number of indicators updated | | `errors` | array | Errors CrowdStrike returned alongside a partially successful response | | ↳ `code` | number | CrowdStrike error code | | ↳ `id` | string | Identifier the error applies to | | ↳ `message` | string | Error message | --- # Crunchbase (/integrations/crunchbase) {/* MANUAL-CONTENT-START:intro */} [Crunchbase](https://www.crunchbase.com/) is the private-market data platform companies use to find, research, and track businesses. Its Data API exposes the same graph the site is built on — organizations, people, funding rounds, acquisitions, IPOs, investments, jobs, events, and the relationships between them — through a single, uniform REST interface. **Why Crunchbase?** * **One graph, not a scrape:** Companies, founders, investors, rounds, and deals are linked entities with stable UUIDs and permalinks, so a lookup resolves to the same record every time. * **Predicate search:** Every collection is queryable with the same filter grammar — twenty operators over any field the collection publishes — so an ideal-customer profile becomes a query rather than a script. * **Keyset pagination:** Results page forward by cursor instead of offset, so a full result set can be walked without the deep-page cost. * **Deletion feed:** A dedicated endpoint reports what Crunchbase removed, so a mirrored copy can be pruned in step with the source rather than drifting. **Using Crunchbase in Agent Serve** Agent Serve's Crunchbase integration covers the Data API end to end with an API key. Four collections most workflows reach for — organizations, people, funding rounds, and acquisitions — get dedicated search and lookup operations with sensible default field sets. The generic **Search Any Collection** and **Get Any Entity** operations reach the remaining 39 collections, including funds, investments, IPOs, jobs, press references, layoffs, insights, and predictions. **Key benefits of using Crunchbase in Agent Serve:** * **Account enrichment:** Resolve a company name to its permalink with Autocomplete, then pull headcount, headquarters, categories, and founding date onto the record. * **Target list building:** Turn an ICP into search predicates, page the full result set with the returned cursor, and write the companies to a table. * **Funding and deal monitoring:** Watch rounds and acquisitions announced in a window and route the summary to Slack, email, or a table. * **Deep relationship traversal:** **Get Entity Card** pages a single related-entity card — an investor's portfolio, a company's founders, a round's investors — past the 100-item cap an inline card request stops at. * **Field discovery:** **Get Fields Metadata** lists exactly which fields each collection publishes, which is how a query gets grounded before it runs. **Before you start** Requests authenticate with the `X-cb-user-key` header, and the API is rate limited to 200 calls per minute. Crunchbase sells the API in packages — Firmographic, Core Financials, Advanced Financials, Insights Only, and Predictions & Insights — and **which collections and fields answer depends on the package your key is licensed for**. The default field sets in this integration are drawn from the narrowest package that publishes each collection, so they resolve on the widest range of licenses; a request for a collection or field outside your license returns an error from Crunchbase rather than partial data. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates the Crunchbase Data API into the workflow. Search organizations, people, funding rounds, and acquisitions with filter predicates, reach the other 39 collections through the generic search and lookup operations, page a single related-entity card past its 100-item cap, autocomplete names into identifiers, follow the deleted-entity feed, and list the fields each collection publishes. Which collections and fields resolve depends on your Crunchbase license. ## Actions [#actions] ### Crunchbase Search Organizations [#crunchbase-search-organizations] Search Crunchbase companies, investors, and schools with filter predicates on funding, headcount, location, category, and rank. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `query` | json | Yes | Filter predicates, combined with AND. Array of \{type:"predicate", field\_id, operator\_id, values}. Operators: blank, eq, not\_eq, gt, gte, lt, lte, starts, contains, not\_contains, between, includes, not\_includes, includes\_all, not\_includes\_all, domain\_eq, not\_domain\_eq, domain\_blank, domain\_includes, not\_domain\_includes. Max 25 predicates. Example: \[\{"type":"predicate","field\_id":"categories","operator\_id":"includes","values":\["biotechnology"]}] | | `fieldIds` | json | No | Organization fields to return as columns, e.g. \["identifier","name","founded\_on","categories"]. Defaults to identifier, name, short\_description, website\_url, linkedin, location\_identifiers, categories, founded\_on, num\_employees\_enum, operating\_status, rank\_org, permalink. | | `order` | json | No | Sort clauses, e.g. \[\{"field\_id":"rank\_org","sort":"asc","nulls":"last"}]. Sort is "asc" or "desc". | | `limit` | number | No | Rows to return, 1-1000 (default 100) | | `afterId` | string | No | UUID of the last entity on the current page, to fetch the next page. Cannot be combined with beforeId. | | `beforeId` | string | No | UUID of the first entity on the current page, to fetch the previous page. Cannot be combined with afterId. | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------------------------- | | `count` | number | Total number of organizations matching the query | | `entities` | json | Matching organizations as \[\{uuid, properties}], where properties holds the requested field\_ids | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Organization [#crunchbase-get-organization] Look up a single Crunchbase organization by permalink or UUID, returning the requested fields and related cards. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `entityId` | string | Yes | Organization permalink (e.g. "tesla-motors") or UUID | | `fieldIds` | json | No | Organization fields to return, e.g. \["identifier","name","founded\_on","categories"]. Defaults to identifier, name, short\_description, website\_url, linkedin, location\_identifiers, categories, founded\_on, num\_employees\_enum, operating\_status, rank\_org, permalink. | | `cardIds` | json | No | Related-entity cards to include, e.g. \["founders","headquarters\_address"]. Available on every license tier: child\_organizations, child\_ownerships, event\_appearances, fields, founders, headquarters\_address, parent\_organization, parent\_ownership. Richer packages add acquiree\_acquisitions, acquirer\_acquisitions, investors, ipos, jobs, participated\_funding\_rounds, participated\_funds, participated\_investments, press\_references, raised\_funding\_rounds, raised\_funds, raised\_investments. A card returns at most 100 items. | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------- | | `uuid` | string | Crunchbase UUID of the organization | | `name` | string | Organization name | | `permalink` | string | Crunchbase permalink of the organization | | `properties` | json | Requested organization fields, keyed by field\_id | | `cards` | json | Requested related-entity cards, keyed by card\_id | ### Crunchbase Search People [#crunchbase-search-people] Search Crunchbase people — founders, executives, and investors — with filter predicates on job title, organization, location, and rank. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `query` | json | Yes | Filter predicates, combined with AND. Array of \{type:"predicate", field\_id, operator\_id, values}. Operators: blank, eq, not\_eq, gt, gte, lt, lte, starts, contains, not\_contains, between, includes, not\_includes, includes\_all, not\_includes\_all, domain\_eq, not\_domain\_eq, domain\_blank, domain\_includes, not\_domain\_includes. Max 25 predicates. Example: \[\{"type":"predicate","field\_id":"primary\_job\_title","operator\_id":"contains","values":\["Founder"]}] | | `fieldIds` | json | No | Person fields to return as columns, e.g. \["identifier","name","primary\_job\_title","primary\_organization"]. Defaults to identifier, name, first\_name, last\_name, primary\_job\_title, primary\_organization, short\_description, location\_identifiers, linkedin, rank\_person, permalink. | | `order` | json | No | Sort clauses, e.g. \[\{"field\_id":"rank\_person","sort":"asc","nulls":"last"}]. Sort is "asc" or "desc". | | `limit` | number | No | Rows to return, 1-1000 (default 100) | | `afterId` | string | No | UUID of the last entity on the current page, to fetch the next page. Cannot be combined with beforeId. | | `beforeId` | string | No | UUID of the first entity on the current page, to fetch the previous page. Cannot be combined with afterId. | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------------------ | | `count` | number | Total number of people matching the query | | `entities` | json | Matching people as \[\{uuid, properties}], where properties holds the requested field\_ids | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Person [#crunchbase-get-person] Look up a single Crunchbase person by permalink or UUID, returning the requested fields and related cards. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `entityId` | string | Yes | Person permalink (e.g. "elon-musk") or UUID | | `fieldIds` | json | No | Person fields to return, e.g. \["identifier","name","primary\_job\_title","primary\_organization"]. Defaults to identifier, name, first\_name, last\_name, primary\_job\_title, primary\_organization, short\_description, location\_identifiers, linkedin, rank\_person, permalink. | | `cardIds` | json | No | Related-entity cards to include, e.g. \["jobs","primary\_organization"]. Available on every license tier: degrees, event\_appearances, fields, founded\_organizations, jobs, primary\_job, primary\_organization. Advanced Financials adds participated\_funding\_rounds, participated\_funds, participated\_investments, partner\_funding\_rounds, partner\_investments, press\_references. A card returns at most 100 items. | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------- | | `uuid` | string | Crunchbase UUID of the person | | `name` | string | Full name of the person | | `permalink` | string | Crunchbase permalink of the person | | `properties` | json | Requested person fields, keyed by field\_id | | `cards` | json | Requested related-entity cards, keyed by card\_id | ### Crunchbase Search Funding Rounds [#crunchbase-search-funding-rounds] Search Crunchbase funding rounds with filter predicates on announced date, investment type, amount raised, and investors. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `query` | json | Yes | Filter predicates, combined with AND. Array of \{type:"predicate", field\_id, operator\_id, values}. Operators: blank, eq, not\_eq, gt, gte, lt, lte, starts, contains, not\_contains, between, includes, not\_includes, includes\_all, not\_includes\_all, domain\_eq, not\_domain\_eq, domain\_blank, domain\_includes, not\_domain\_includes. Max 25 predicates. Example: \[\{"type":"predicate","field\_id":"announced\_on","operator\_id":"gte","values":\["2026-01-01"]}] | | `fieldIds` | json | No | Funding round fields to return as columns, e.g. \["identifier","announced\_on","money\_raised","investor\_identifiers"]. Defaults to identifier, announced\_on, investment\_type, investment\_stage, money\_raised, funded\_organization\_identifier, investor\_identifiers, lead\_investor\_identifiers, num\_investors, short\_description, permalink. | | `order` | json | No | Sort clauses, e.g. \[\{"field\_id":"announced\_on","sort":"desc","nulls":"last"}]. Sort is "asc" or "desc". | | `limit` | number | No | Rows to return, 1-1000 (default 100) | | `afterId` | string | No | UUID of the last entity on the current page, to fetch the next page. Cannot be combined with beforeId. | | `beforeId` | string | No | UUID of the first entity on the current page, to fetch the previous page. Cannot be combined with afterId. | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------------------------- | | `count` | number | Total number of funding rounds matching the query | | `entities` | json | Matching funding rounds as \[\{uuid, properties}], where properties holds the requested field\_ids | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Funding Round [#crunchbase-get-funding-round] Look up a single Crunchbase funding round by permalink or UUID, returning the requested fields and related cards. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `entityId` | string | Yes | Funding round permalink (e.g. "tesla-motors-series-c--12345678") or UUID | | `fieldIds` | json | No | Funding round fields to return, e.g. \["identifier","announced\_on","money\_raised","investor\_identifiers"]. Defaults to identifier, announced\_on, investment\_type, investment\_stage, money\_raised, funded\_organization\_identifier, investor\_identifiers, lead\_investor\_identifiers, num\_investors, short\_description, permalink. | | `cardIds` | json | No | Related-entity cards to include, e.g. \["investors","organization"]. Available: fields, investments, investors, lead\_investors, organization, partners, press\_references. A card returns at most 100 items. | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------- | | `uuid` | string | Crunchbase UUID of the funding round | | `name` | string | Funding round name | | `permalink` | string | Crunchbase permalink of the funding round | | `properties` | json | Requested funding round fields, keyed by field\_id | | `cards` | json | Requested related-entity cards, keyed by card\_id | ### Crunchbase Search Acquisitions [#crunchbase-search-acquisitions] Search Crunchbase acquisitions with filter predicates on announced date, price, acquisition type, and the companies involved. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `query` | json | Yes | Filter predicates, combined with AND. Array of \{type:"predicate", field\_id, operator\_id, values}. Operators: blank, eq, not\_eq, gt, gte, lt, lte, starts, contains, not\_contains, between, includes, not\_includes, includes\_all, not\_includes\_all, domain\_eq, not\_domain\_eq, domain\_blank, domain\_includes, not\_domain\_includes. Max 25 predicates. Example: \[\{"type":"predicate","field\_id":"announced\_on","operator\_id":"gte","values":\["2026-01-01"]}] | | `fieldIds` | json | No | Acquisition fields to return as columns, e.g. \["identifier","acquiree\_identifier","acquirer\_identifier","price"]. Defaults to identifier, acquiree\_identifier, acquirer\_identifier, announced\_on, completed\_on, price, acquisition\_type, status, terms, short\_description, permalink. | | `order` | json | No | Sort clauses, e.g. \[\{"field\_id":"announced\_on","sort":"desc","nulls":"last"}]. Sort is "asc" or "desc". | | `limit` | number | No | Rows to return, 1-1000 (default 100) | | `afterId` | string | No | UUID of the last entity on the current page, to fetch the next page. Cannot be combined with beforeId. | | `beforeId` | string | No | UUID of the first entity on the current page, to fetch the previous page. Cannot be combined with afterId. | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------------------------ | | `count` | number | Total number of acquisitions matching the query | | `entities` | json | Matching acquisitions as \[\{uuid, properties}], where properties holds the requested field\_ids | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Acquisition [#crunchbase-get-acquisition] Look up a single Crunchbase acquisition by permalink or UUID, returning the requested fields and related cards. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `entityId` | string | Yes | Acquisition permalink or UUID | | `fieldIds` | json | No | Acquisition fields to return, e.g. \["identifier","acquiree\_identifier","acquirer\_identifier","price"]. Defaults to identifier, acquiree\_identifier, acquirer\_identifier, announced\_on, completed\_on, price, acquisition\_type, status, terms, short\_description, permalink. | | `cardIds` | json | No | Related-entity cards to include, e.g. \["acquiree\_organization","acquirer\_organization"]. Available: acquiree\_organization, acquirer\_organization, fields, press\_references. A card returns at most 100 items. | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------- | | `uuid` | string | Crunchbase UUID of the acquisition | | `name` | string | Acquisition name | | `permalink` | string | Crunchbase permalink of the acquisition | | `properties` | json | Requested acquisition fields, keyed by field\_id | | `cards` | json | Requested related-entity cards, keyed by card\_id | ### Crunchbase Search Entities [#crunchbase-search-entities] Search any Crunchbase collection — events, jobs, ipos, funds, investments, press references, layoffs, insights, predictions, and more — with filter predicates. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `collection` | string | Yes | Collection to search. One of: acquisition\_predictions, acquisitions, addresses, awards, categories, category\_groups, closure\_predictions, current\_valuation\_estimates, degrees, diversity\_spotlights, event\_appearances, events, funding\_predictions, funding\_rounds, funds, growth\_insights, growth\_predictions, investments, investor\_insights, investor\_matches, ipo\_predictions, ipos, jobs, key\_employee\_changes, layoff\_predictions, layoffs, legal\_proceedings, locations, market\_insight\_reasons, market\_insights, micro\_categories, org\_similarities, organizations, ownerships, partnership\_announcements, people, press\_references, principals, product\_launches, product\_similarities, products, remain\_private\_predictions, research\_insights. | | `query` | json | Yes | Filter predicates, combined with AND. Array of \{type:"predicate", field\_id, operator\_id, values}. Operators: blank, eq, not\_eq, gt, gte, lt, lte, starts, contains, not\_contains, between, includes, not\_includes, includes\_all, not\_includes\_all, domain\_eq, not\_domain\_eq, domain\_blank, domain\_includes, not\_domain\_includes. Max 25 predicates. | | `fieldIds` | json | Yes | Fields to return as columns for the chosen collection, e.g. \["identifier","short\_description"]. Required — the valid ids differ per collection; list them with the Get Fields Metadata operation. | | `order` | json | No | Sort clauses, e.g. \[\{"field\_id":"updated\_at","sort":"desc","nulls":"last"}]. Sort is "asc" or "desc". | | `limit` | number | No | Rows to return, 1-1000 (default 100) | | `afterId` | string | No | UUID of the last entity on the current page, to fetch the next page. Cannot be combined with beforeId. | | `beforeId` | string | No | UUID of the first entity on the current page, to fetch the previous page. Cannot be combined with afterId. | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------------------- | | `count` | number | Total number of entities matching the query | | `entities` | json | Matching entities as \[\{uuid, properties}], where properties holds the requested field\_ids | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Entity [#crunchbase-get-entity] Look up a single entity in any Crunchbase collection — events, jobs, ipos, funds, investments, press references, insights, predictions, and more — by permalink or UUID. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `collection` | string | Yes | Collection the entity belongs to. One of: acquisition\_predictions, acquisitions, addresses, awards, categories, category\_groups, closure\_predictions, current\_valuation\_estimates, degrees, diversity\_spotlights, event\_appearances, events, funding\_predictions, funding\_rounds, funds, growth\_insights, growth\_predictions, investments, investor\_insights, investor\_matches, ipo\_predictions, ipos, jobs, key\_employee\_changes, layoff\_predictions, layoffs, legal\_proceedings, locations, market\_insight\_reasons, market\_insights, micro\_categories, org\_similarities, organizations, ownerships, partnership\_announcements, people, press\_references, principals, product\_launches, product\_similarities, products, remain\_private\_predictions, research\_insights. | | `entityId` | string | Yes | Entity permalink or UUID | | `fieldIds` | json | No | Fields to return for the chosen collection, e.g. \["identifier","short\_description"]. Leave empty to accept the default projection the API returns; list the valid ids with the Get Fields Metadata operation. | | `cardIds` | json | No | Related-entity cards to include. The valid ids differ per collection, and a card returns at most 100 items — use the Get Entity Card operation to page past that. | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------- | | `uuid` | string | Crunchbase UUID of the entity | | `name` | string | Name of the entity | | `permalink` | string | Crunchbase permalink of the entity | | `properties` | json | Requested entity fields, keyed by field\_id | | `cards` | json | Requested related-entity cards, keyed by card\_id | ### Crunchbase Get Entity Card [#crunchbase-get-entity-card] Page through one related-entity card of a Crunchbase entity — an investor's investments, a company's founders, a round's investors — past the 100-item cap an inline card request returns. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `collection` | string | Yes | Collection the entity belongs to. One of: acquisitions, addresses, categories, category\_groups, degrees, event\_appearances, events, funding\_rounds, funds, investments, ipos, jobs, market\_insights, micro\_categories, organizations, ownerships, people. | | `entityId` | string | Yes | Entity permalink or UUID | | `cardId` | string | Yes | Card to page through, e.g. "participated\_investments" on a person, "founders" on an organization, or "investors" on a funding round. Valid ids differ per collection. | | `cardFieldIds` | json | No | Fields to return on each card item, e.g. \["identifier","announced\_on","money\_raised"]. The identifier is always requested alongside these, because the next-page cursor is read from it. | | `cardOrder` | string | No | Sort expression for the card, e.g. "funding\_round\_money\_raised desc" | | `limit` | number | No | Card items to return per page, 1-100 | | `afterId` | string | No | UUID of the last card item on the current page, to fetch the next page | | `beforeId` | string | No | UUID of the first card item on the current page, to fetch the previous page | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------------------- | | `items` | json | Card items for this page, each holding the requested card\_field\_ids | | `properties` | json | Properties of the parent entity returned alongside the card | | `nextAfterId` | string | UUID of the last card item, to pass as afterId for the next page | ### Crunchbase Autocomplete [#crunchbase-autocomplete] Suggest Crunchbase entities matching a typed query, returning the permalinks and UUIDs the lookup and search operations take. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `query` | string | Yes | Text to autocomplete against, e.g. "airbnb" | | `collectionIds` | json | No | Collections to search, e.g. \["organizations","people"]. One or more of: acquisition\_predictions, acquisitions, addresses, awards, categories, category\_groups, closure\_predictions, current\_valuation\_estimates, degrees, diversity\_spotlights, event\_appearances, events, funding\_predictions, funding\_rounds, funds, growth\_insights, growth\_predictions, investments, investor\_insights, investor\_matches, ipo\_predictions, ipos, jobs, key\_employee\_changes, layoff\_predictions, layoffs, legal\_proceedings, locations, market\_insight\_reasons, market\_insights, micro\_categories, org\_similarities, organizations, ownerships, partnership\_announcements, people, press\_references, principals, product\_launches, product\_similarities, products, remain\_private\_predictions, research\_insights. Which of them your key can read depends on your Crunchbase package. Defaults to every collection. | | `limit` | number | No | Suggestions to return, max 25 (default 10) | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ---- | ---------------------------------------------------------------------------------------------------------------------- | | `entities` | json | Suggestions as \[\{identifier: \{uuid, value, permalink, image\_id, entity\_def\_id}, facet\_ids, short\_description}] | ### Crunchbase List Deleted Entities [#crunchbase-list-deleted-entities] List entities Crunchbase has deleted, so a mirrored copy can be pruned in step with the source. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `collection` | string | No | Restrict the feed to a single collection: acquisitions, categories, event\_appearances, events, funding\_rounds, funds, investments, ipos, jobs, locations, organizations, ownerships, people, or press\_references. Which of them your key can read depends on your Crunchbase package. Leave empty to read the feed across collections. | | `collectionIds` | json | No | Collections to include when reading the cross-collection feed, e.g. \["organizations","people"]. One or more of: acquisitions, categories, event\_appearances, events, funding\_rounds, funds, investments, ipos, jobs, locations, organizations, ownerships, people, press\_references. Ignored when a single collection is set. | | `deletedAtOrder` | string | No | Order by deletion time: "asc" (default) or "desc" | | `limit` | number | No | Rows to return per page, 1-25 (default 10) | | `afterId` | string | No | UUID of the last row on the current page, to fetch the next page | | `beforeId` | string | No | UUID of the first row on the current page, to fetch the previous page | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------------------------------------------- | | `entities` | json | Deleted entities as \[\{deleted\_at, identifier: \{uuid, value, permalink, entity\_def\_id}}] | | `nextAfterId` | string | UUID of the last row, to pass as afterId for the next page | ### Crunchbase Get Fields Metadata [#crunchbase-get-fields-metadata] List the field ids, types, and descriptions each Crunchbase collection publishes, which is how the field\_ids and query predicates of the other operations are discovered. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Crunchbase API key, sent as the X-cb-user-key header | | `collectionIds` | json | No | Collections to describe, e.g. \["organizations","people"]. One or more of: acquisition\_predictions, acquisitions, addresses, awards, categories, category\_groups, closure\_predictions, current\_valuation\_estimates, degrees, diversity\_spotlights, event\_appearances, events, funding\_predictions, funding\_rounds, funds, growth\_insights, growth\_predictions, investments, investor\_insights, investor\_matches, ipo\_predictions, ipos, jobs, key\_employee\_changes, layoff\_predictions, layoffs, legal\_proceedings, locations, market\_insight\_reasons, market\_insights, micro\_categories, org\_similarities, organizations, ownerships, partnership\_announcements, people, press\_references, principals, product\_launches, product\_similarities, products, remain\_private\_predictions, research\_insights. Which of them your key can read depends on your Crunchbase package. Defaults to every collection. | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------------- | | `csv` | string | Field metadata as CSV, one row per field with its collection, id, type, and description | --- # Cursor (/integrations/cursor) {/* MANUAL-CONTENT-START:intro */} Use [Cursor](https://www.cursor.so) to launch Cloud Agents on GitHub repositories, send follow-up instructions, and inspect their status, conversations, and artifacts. The actions below also cover stopping and deleting agents and listing available models and repositories. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle. ## Actions [#actions] ### Cursor List Agents [#cursor-list-agents] List all cloud agents for the authenticated user with optional pagination. Returns API-aligned fields only. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `limit` | number | No | Number of agents to return (default: 20, max: 100) | | `cursor` | string | No | Pagination cursor from previous response | | `prUrl` | string | No | Filter agents by pull request URL | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ------------------------------- | | `agents` | array | Array of agent objects | | `nextCursor` | string | Pagination cursor for next page | ### Cursor Get Agent [#cursor-get-agent] Retrieve the current status and results of a cloud agent. Returns API-aligned fields only. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `id` | string | Agent ID | | `name` | string | Agent name | | `status` | string | Agent status | | `source` | json | Source repository info | | `target` | json | Target branch/PR info | | `summary` | string | Agent summary | | `createdAt` | string | Creation timestamp | ### Cursor Get Conversation [#cursor-get-conversation] Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses. Returns API-aligned fields only. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------------ | | `id` | string | Agent ID | | `messages` | array | Array of conversation messages | ### Cursor Launch Agent [#cursor-launch-agent] Start a new cloud agent to work on a GitHub repository with the given instructions. Returns API-aligned fields only. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Cursor API key | | `repository` | string | Yes | GitHub repository URL (e.g., [https://github.com/your-org/your-repo](https://github.com/your-org/your-repo)) | | `ref` | string | No | Branch, tag, or commit to work from (defaults to default branch) | | `promptText` | string | Yes | The instruction text for the agent | | `promptImages` | string | No | JSON array of image objects with base64 data and dimensions | | `model` | string | No | Model to use (leave empty for auto-selection) | | `branchName` | string | No | Custom branch name for the agent to use | | `autoCreatePr` | boolean | No | Automatically create a PR when the agent finishes | | `openAsCursorGithubApp` | boolean | No | Open the PR as the Cursor GitHub App | | `skipReviewerRequest` | boolean | No | Skip requesting reviewers on the PR | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | Agent ID | | `url` | string | Agent URL | ### Cursor Add Follow-up [#cursor-add-follow-up] Add a follow-up instruction to an existing cloud agent. Returns API-aligned fields only. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | | `followupPromptText` | string | Yes | The follow-up instruction text for the agent | | `promptImages` | string | No | JSON array of image objects with base64 data and dimensions (max 5) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | Agent ID | ### Cursor Stop Agent [#cursor-stop-agent] Stop a running cloud agent. Returns API-aligned fields only. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | Agent ID | ### Cursor Delete Agent [#cursor-delete-agent] Permanently delete a cloud agent. Returns API-aligned fields only. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------- | | `id` | string | Agent ID | ### Cursor List Artifacts [#cursor-list-artifacts] List generated artifact files for a cloud agent. Returns API-aligned fields only. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `artifacts` | array | List of artifact files | | ↳ `path` | string | Artifact file path | | ↳ `size` | number | File size in bytes | ### Cursor Download Artifact [#cursor-download-artifact] Download a generated artifact file from a cloud agent. Returns the file for execution storage. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Cursor API key | | `agentId` | string | Yes | Unique identifier for the cloud agent (e.g., bc\_abc123) | | `path` | string | Yes | Absolute path of the artifact to download (e.g., /src/index.ts) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ---- | -------------------------------------------------- | | `file` | file | Downloaded artifact file stored in execution files | ### Cursor List Models [#cursor-list-models] List the models available for launching cloud agents. Returns API-aligned fields only. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------- | | `apiKey` | string | Yes | Cursor API key | #### Output [#output-9] | Parameter | Type | Description | | --------- | ----- | ------------------------------ | | `models` | array | Array of available model names | ### Cursor List Repositories [#cursor-list-repositories] List the GitHub repositories accessible to the authenticated user. Returns API-aligned fields only. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------- | | `apiKey` | string | Yes | Cursor API key | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------ | -------------------------------- | | `repositories` | array | Array of accessible repositories | | ↳ `owner` | string | Repository owner | | ↳ `name` | string | Repository name | | ↳ `repository` | string | Repository URL | ### Cursor Get API Key Info [#cursor-get-api-key-info] Retrieve details about the API key currently in use. Returns API-aligned fields only. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------- | | `apiKey` | string | Yes | Cursor API key | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `apiKeyName` | string | Name of the API key | | `createdAt` | string | API key creation timestamp | | `userEmail` | string | Email of the key owner | --- # Dagster (/integrations/dagster) {/* MANUAL-CONTENT-START:intro */} [Dagster](https://dagster.io/) is an open-source data orchestration platform designed for building, testing, and monitoring data pipelines. It provides a unified model for defining data assets, scheduling jobs, and observing pipeline execution — whether running locally or deployed to Dagster+. With Dagster, you can: * **Orchestrate data pipelines**: Define and run jobs composed of ops and assets with full dependency tracking * **Monitor executions**: Track run status, inspect logs, and debug failures step by step * **Manage schedules and sensors**: Automate pipeline triggers on a cron schedule or in response to external events * **Reexecute selectively**: Resume failed pipelines from the point of failure without rerunning successful steps In Agent Serve, the Dagster integration enables your agents to interact with a Dagster instance programmatically. Agents can launch and monitor job runs, retrieve execution logs, reexecute failed runs, and manage schedules and sensors — all as part of a larger automated workflow. Use Dagster as an orchestration layer your agents can control and observe, enabling data-driven automation that responds dynamically to pipeline outcomes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to a Dagster instance to launch job runs, monitor run status, list available jobs across repositories, terminate or delete runs, reexecute failed runs, fetch run logs, and manage schedules and sensors. API token only required for Dagster+. ## Actions [#actions] ### Dagster Launch Run [#dagster-launch-run] Launch a job run on a Dagster instance. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3000](http://localhost:3000)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `jobName` | string | Yes | Name of the job to launch | | `runConfigJson` | string | No | Run configuration as a JSON object (optional) | | `tags` | string | No | Tags as a JSON array of \{key, value} objects (optional) | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `runId` | string | The globally unique ID of the launched run | ### Dagster Get Run [#dagster-get-run] Get the status and details of a Dagster run by its ID. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3000](http://localhost:3000)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `runId` | string | Yes | The ID of the run to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `runId` | string | Run ID | | `jobName` | string | Name of the job this run belongs to | | `status` | string | Run status (QUEUED, NOT\_STARTED, STARTING, MANAGED, STARTED, SUCCESS, FAILURE, CANCELING, CANCELED) | | `mode` | string | Execution mode of the run | | `startTime` | number | Run start time as Unix timestamp | | `endTime` | number | Run end time as Unix timestamp | | `creationTime` | number | Time the run was created as Unix timestamp | | `updateTime` | number | Time the run was last updated as Unix timestamp | | `parentRunId` | string | ID of the immediate parent run (for re-executions) | | `rootRunId` | string | ID of the root run in the re-execution group | | `canTerminate` | boolean | Whether the run can currently be terminated | | `assetSelection` | json | Asset keys targeted by the run, as slash-joined strings | | `runConfigYaml` | string | Run configuration as YAML | | `tags` | json | Run tags as array of \{key, value} objects | ### Dagster Get Run Logs [#dagster-get-run-logs] Fetch execution event logs for a Dagster run. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `runId` | string | Yes | The ID of the run to fetch logs for | | `afterCursor` | string | No | Cursor for paginating through log events (from a previous response) | | `limit` | number | No | Maximum number of log events to return | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------------------- | | `events` | json | Array of log events (type, message, timestamp, level, stepKey, eventType) | | ↳ `type` | string | GraphQL typename of the event | | ↳ `message` | string | Human-readable log message | | ↳ `timestamp` | string | Event timestamp as a Unix epoch string | | ↳ `level` | string | Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) | | ↳ `stepKey` | string | Step key, if the event is step-scoped | | ↳ `eventType` | string | Dagster event type enum value | | `cursor` | string | Cursor for fetching the next page of log events | | `hasMore` | boolean | Whether more log events are available beyond this page | ### Dagster List Runs [#dagster-list-runs] List Dagster runs with optional filters by job name, status, and creation-time range, plus cursor pagination. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `jobName` | string | No | Filter runs by job name (optional) | | `statuses` | string | No | Comma-separated run statuses to filter by, e.g. "SUCCESS,FAILURE" (optional) | | `createdAfter` | number | No | Only return runs created at or after this Unix timestamp in seconds (optional) | | `createdBefore` | number | No | Only return runs created at or before this Unix timestamp in seconds (optional) | | `cursor` | string | No | Run ID to page after, from a previous response cursor (optional) | | `limit` | number | No | Maximum number of runs to return (default 20) | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------------------------------------------- | | `runs` | json | Array of runs | | ↳ `runId` | string | Run ID | | ↳ `jobName` | string | Job name | | ↳ `status` | string | Run status | | ↳ `tags` | json | Run tags as array of \{key, value} objects | | ↳ `startTime` | number | Start time as Unix timestamp | | ↳ `endTime` | number | End time as Unix timestamp | | `cursor` | string | Run ID of the last returned run — pass as cursor to fetch the next page | | `hasMore` | boolean | Whether more runs are likely available beyond this page | ### Dagster List Jobs [#dagster-list-jobs] List all jobs across repositories in a Dagster instance. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------ | | `jobs` | json | Array of jobs with name and repositoryName | | ↳ `name` | string | Job name | | ↳ `repositoryName` | string | Repository name | ### Dagster Reexecute Run [#dagster-reexecute-run] Reexecute an existing Dagster run, optionally resuming only from failed steps. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `parentRunId` | string | Yes | The ID of the run to reexecute | | `strategy` | string | Yes | Reexecution strategy: ALL\_STEPS reruns everything, FROM\_FAILURE resumes from failed steps, FROM\_ASSET\_FAILURE resumes from failed assets | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `runId` | string | The ID of the newly launched reexecution run | ### Dagster Terminate Run [#dagster-terminate-run] Terminate an in-progress Dagster run. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `runId` | string | Yes | The ID of the run to terminate | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the run was successfully terminated | | `runId` | string | The ID of the terminated run | | `message` | string | Error or status message if termination failed | ### Dagster Delete Run [#dagster-delete-run] Permanently delete a Dagster run record. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `runId` | string | Yes | The ID of the run to delete | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `runId` | string | The ID of the deleted run | ### Dagster List Schedules [#dagster-list-schedules] List all schedules in a Dagster repository, optionally filtered by status. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `scheduleStatus` | string | No | Filter schedules by status: RUNNING or STOPPED (omit to return all) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------------------------- | | `schedules` | json | Array of schedules (name, cronSchedule, jobName, status, id, description, executionTimezone) | | ↳ `name` | string | Schedule name | | ↳ `cronSchedule` | string | Cron expression for the schedule | | ↳ `jobName` | string | Job the schedule targets | | ↳ `status` | string | Schedule status: RUNNING or STOPPED | | ↳ `id` | string | Instigator state ID — use this to start or stop the schedule | | ↳ `description` | string | Human-readable schedule description | | ↳ `executionTimezone` | string | Timezone for cron evaluation | ### Dagster Start Schedule [#dagster-start-schedule] Enable (start) a schedule in a Dagster repository. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `scheduleName` | string | Yes | Name of the schedule to start | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `id` | string | Instigator state ID of the schedule | | `status` | string | Updated schedule status (RUNNING or STOPPED) | ### Dagster Stop Schedule [#dagster-stop-schedule] Disable (stop) a running schedule in Dagster. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `instigationStateId` | string | Yes | InstigationState ID of the schedule to stop — available from dagster\_list\_schedules output | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `id` | string | Instigator state ID of the schedule | | `status` | string | Updated schedule status (RUNNING or STOPPED) | ### Dagster List Sensors [#dagster-list-sensors] List all sensors in a Dagster repository, optionally filtered by status. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `sensorStatus` | string | No | Filter sensors by status: RUNNING or STOPPED (omit to return all) | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------------------- | | `sensors` | json | Array of sensors (name, sensorType, status, id, description) | | ↳ `name` | string | Sensor name | | ↳ `sensorType` | string | Sensor type (ASSET, AUTO\_MATERIALIZE, FRESHNESS\_POLICY, MULTI\_ASSET, RUN\_STATUS, STANDARD, UNKNOWN) | | ↳ `status` | string | Sensor status: RUNNING or STOPPED | | ↳ `id` | string | Instigator state ID — use this to start or stop the sensor | | ↳ `description` | string | Human-readable sensor description | ### Dagster Start Sensor [#dagster-start-sensor] Enable (start) a sensor in a Dagster repository. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `sensorName` | string | Yes | Name of the sensor to start | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `id` | string | Instigator state ID of the sensor | | `status` | string | Updated sensor status (RUNNING or STOPPED) | ### Dagster Stop Sensor [#dagster-stop-sensor] Disable (stop) a running sensor in Dagster. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `instigationStateId` | string | Yes | InstigationState ID of the sensor to stop — available from dagster\_list\_sensors output | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `id` | string | Instigator state ID of the sensor | | `status` | string | Updated sensor status (RUNNING or STOPPED) | ### Dagster List Assets [#dagster-list-assets] List assets tracked by a Dagster instance, optionally filtered by key prefix. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `prefix` | string | No | Slash-delimited asset key prefix to filter by, e.g. "raw" or "raw/events" (optional) | | `cursor` | string | No | Asset key cursor from a previous response, for pagination (optional) | | `limit` | number | No | Maximum number of assets to return per page (default 100) | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------------------- | | `assets` | json | Array of assets (assetKey, path) | | ↳ `assetKey` | string | Slash-joined asset key | | ↳ `path` | json | Asset key path segments | | `cursor` | string | Cursor to pass on the next call to fetch more assets | | `hasMore` | boolean | Whether more assets are likely available beyond this page | ### Dagster Get Asset [#dagster-get-asset] Get an asset definition and its latest materialization by asset key. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `assetKey` | string | Yes | Slash-delimited asset key, e.g. "my\_asset" or "raw/events" | #### Output [#output-15] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------ | | `assetKey` | string | Slash-joined asset key | | `path` | json | Asset key path segments | | `groupName` | string | Asset group the definition belongs to | | `description` | string | Asset description | | `jobNames` | json | Names of jobs that can materialize this asset | | `computeKind` | string | Compute kind tag (e.g., python, dbt, spark) | | `isPartitioned` | boolean | Whether the asset is partitioned | | `latestMaterialization` | json | Most recent materialization (runId, timestamp, partition, stepKey) | | ↳ `runId` | string | Run that produced the materialization | | ↳ `timestamp` | string | Materialization timestamp (epoch ms string) | | ↳ `partition` | string | Partition key, if partitioned | | ↳ `stepKey` | string | Step key that emitted it | ### Dagster Materialize Assets [#dagster-materialize-assets] Materialize selected assets by launching their asset job with an asset selection. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `repositoryLocationName` | string | Yes | Repository location (code location) name | | `repositoryName` | string | Yes | Repository name within the code location | | `jobName` | string | Yes | Asset job that contains the assets, e.g. "\_\_ASSET\_JOB" or a named asset job | | `assetSelection` | string | Yes | Comma- or newline-separated asset keys to materialize, each slash-delimited (e.g. "raw/events, summary") | | `tags` | string | No | Tags as a JSON array of \{key, value} objects (optional) | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------- | | `runId` | string | The globally unique ID of the launched materialization run | ### Dagster Report Asset Materialization [#dagster-report-asset-materialization] Report an external (runless) materialization or observation for an asset. #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `assetKey` | string | Yes | Slash-delimited asset key to report against, e.g. "my\_asset" or "raw/events" | | `eventType` | string | No | Event type to report: ASSET\_MATERIALIZATION (default) or ASSET\_OBSERVATION | | `partitionKeys` | string | No | Comma-separated partition keys to report against (optional) | | `description` | string | No | Human-readable description for the reported event (optional) | #### Output [#output-17] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the event was reported successfully | | `assetKey` | string | Slash-joined asset key the event was reported against | ### Dagster Wipe Asset [#dagster-wipe-asset] DESTRUCTIVE: permanently wipes ALL materialization history (every partition) for an asset. This cannot be undone. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Dagster host URL (e.g., [https://myorg.dagster.cloud/prod](https://myorg.dagster.cloud/prod) or [http://localhost:3001](http://localhost:3001)) | | `apiKey` | string | No | Dagster+ API token (leave blank for OSS / self-hosted) | | `assetKey` | string | Yes | Slash-delimited asset key to wipe, e.g. "my\_asset" or "raw/events" | #### Output [#output-18] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the asset was wiped successfully | | `assetKey` | string | Slash-joined asset key that was wiped | --- # Databricks (/integrations/databricks) {/* MANUAL-CONTENT-START:intro */} [Databricks](https://www.databricks.com/) is a unified data analytics platform built on Apache Spark, providing a collaborative environment for data engineering, data science, and machine learning. Databricks combines data warehousing, ETL, and AI workloads into a single lakehouse architecture, with support for SQL analytics, job orchestration, and cluster management across major cloud providers. With the Databricks integration in Agent Serve, you can: * **Execute SQL queries**: Run SQL statements against Databricks SQL warehouses with support for parameterized queries and Unity Catalog * **Manage jobs**: List, trigger, and monitor Databricks job runs programmatically * **Track run status**: Get detailed run information including timing, state, and output results * **Control clusters**: List and inspect cluster configurations, states, and resource details * **Retrieve run outputs**: Access notebook results, error messages, and logs from completed job runs In Agent Serve, the Databricks integration enables your agents to interact with your data lakehouse as part of automated workflows. Agents can query large-scale datasets, orchestrate ETL pipelines by triggering jobs, monitor job execution, and retrieve results—all without leaving the workflow canvas. This is ideal for automated reporting, data pipeline management, scheduled analytics, and building AI-driven data workflows that react to query results or job outcomes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Execute parameterized SQL and retrieve result chunks, create and manage jobs, submit and repair runs, manage compute clusters and SQL warehouses, and create or update Genie spaces. Ask Genie questions or run agent research, inspect conversations, and retrieve query results and charts. Connect with a personal access token and workspace host URL. ## Actions [#actions] ### Databricks Execute SQL [#databricks-execute-sql] Execute a SQL statement against a Databricks SQL warehouse and return results inline. Supports parameterized queries and Unity Catalog. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | The ID of the SQL warehouse to execute against | | `statement` | string | Yes | The SQL statement to execute (max 16 MiB) | | `catalog` | string | No | Unity Catalog name (equivalent to USE CATALOG) | | `schema` | string | No | Schema name (equivalent to USE SCHEMA) | | `rowLimit` | number | No | Maximum number of rows to return | | `sqlParameters` | json | No | Named parameters as \[\{name, value, type}]; null or omitted value represents SQL NULL | | `byteLimit` | number | No | Maximum result size in bytes; truncation is reported in the output | | `onWaitTimeout` | string | No | CONTINUE (default) or CANCEL execution when the wait timeout expires | | `waitTimeout` | string | No | How long the warehouse waits before answering (e.g., "50s"). Range: "0s" or "5s" to "50s". Default: "50s". A statement still PENDING/RUNNING after that is polled for up to 4 more minutes before the result is returned. | #### Output [#output] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------ | | `totalChunks` | number | Number of result chunks | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `rowCount` | number | Number of rows in this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `columns` | array | Column schema of the query result | | ↳ `name` | string | Column name | | ↳ `position` | number | Column position (0-based) | | ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | | `totalRows` | number | Total number of rows in the result | | `truncated` | boolean | Whether the result set was truncated | | `statementId` | string | SQL statement ID of the query | | `status` | string | Statement status (PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, CLOSED) | ### Databricks Get Statement [#databricks-get-statement] Poll a SQL statement by its ID to retrieve status and results. Use this after Execute SQL when a query runs longer than the wait timeout. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | No | SQL warehouse identifier, when required by the statement endpoint | | `statementId` | string | Yes | The ID of the statement to fetch (returned by Execute SQL) | #### Output [#output-1] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------ | | `totalChunks` | number | Number of result chunks | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `rowCount` | number | Number of rows in this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `columns` | array | Column schema of the query result | | ↳ `name` | string | Column name | | ↳ `position` | number | Column position (0-based) | | ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | | `totalRows` | number | Total number of rows in the result | | `truncated` | boolean | Whether the result set was truncated | | `statementId` | string | SQL statement ID of the query | | `status` | string | Statement status (PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, CLOSED) | ### Databricks Get Statement Chunk [#databricks-get-statement-chunk] Retrieve one chunk of an INLINE SQL result using nextChunkIndex from Execute SQL or Get Statement. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `statementId` | string | Yes | SQL statement identifier | | `chunkIndex` | number | Yes | Zero-based result chunk index | | `warehouseId` | string | No | SQL warehouse identifier, when required by the statement endpoint | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------ | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `rowCount` | number | Number of rows in this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | ### Databricks Cancel Statement [#databricks-cancel-statement] Request cancellation of an executing SQL statement; poll Get Statement to confirm its final status. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `statementId` | string | Yes | SQL statement identifier | | `warehouseId` | string | No | SQL warehouse identifier, when required by the statement endpoint | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the cancellation request was accepted | ### Databricks List Jobs [#databricks-list-jobs] List all jobs in a Databricks workspace with optional filtering by name. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `limit` | number | No | Maximum number of jobs to return (range 1-100, default 20) | | `pageToken` | string | No | Token for the next or previous page; takes precedence over legacy offset | | `offset` | number | No | Legacy Jobs 2.1 offset; prefer pageToken | | `name` | string | No | Filter jobs by exact name (case-insensitive) | | `expandTasks` | boolean | No | Include task and cluster details in the response (max 100 elements) | #### Output [#output-4] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------- | | `prevPageToken` | string | Token for the previous page | | `jobs` | array | List of jobs in the workspace | | ↳ `tasks` | array | Task definitions and task run IDs; nested keys use Databricks API names | | ↳ `task_key` | string | Task key | | ↳ `run_id` | number | Task run ID for Get Run Output | | ↳ `description` | string | Task description | | ↳ `depends_on` | array | depends\_on output from the tool | | ↳ `task_key` | string | Upstream task key | | ↳ `outcome` | string | Required outcome of a condition task | | ↳ `existing_cluster_id` | string | Existing compute cluster | | ↳ `job_cluster_key` | string | Shared job cluster key | | ↳ `notebook_task` | object | notebook\_task output from the tool | | ↳ `notebook_path` | string | Notebook path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `base_parameters` | object | Notebook parameter map | | ↳ `spark_python_task` | object | spark\_python\_task output from the tool | | ↳ `python_file` | string | Python file path or cloud URI | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `parameters` | array | parameters output from the tool | | ↳ `spark_jar_task` | object | spark\_jar\_task output from the tool | | ↳ `main_class_name` | string | JAR entry point class | | ↳ `parameters` | array | parameters output from the tool | | ↳ `jar_uri` | string | Legacy JAR URI | | ↳ `spark_submit_task` | object | Legacy spark-submit task | | ↳ `parameters` | array | parameters output from the tool | | ↳ `python_wheel_task` | object | python\_wheel\_task output from the tool | | ↳ `package_name` | string | Python package name | | ↳ `entry_point` | string | Package entry point | | ↳ `parameters` | array | parameters output from the tool | | ↳ `named_parameters` | object | Named wheel parameters | | ↳ `sql_task` | object | sql\_task output from the tool | | ↳ `warehouse_id` | string | SQL warehouse identifier | | ↳ `parameters` | object | SQL parameters | | ↳ `query` | object | query output from the tool | | ↳ `query_id` | string | Saved query identifier | | ↳ `file` | object | file output from the tool | | ↳ `path` | string | SQL file path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `alert` | object | alert output from the tool | | ↳ `alert_id` | string | SQL alert identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `dashboard` | object | dashboard output from the tool | | ↳ `dashboard_id` | string | Legacy SQL dashboard identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `custom_subject` | string | custom\_subject output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `run_job_task` | object | run\_job\_task output from the tool | | ↳ `job_id` | number | Nested job identifier | | ↳ `job_parameters` | object | Nested job parameters | | ↳ `pipeline_params` | object | Pipeline refresh settings | | ↳ `pipeline_task` | object | pipeline\_task output from the tool | | ↳ `pipeline_id` | string | Pipeline identifier | | ↳ `parameters` | object | parameters output from the tool | | ↳ `full_refresh` | boolean | full\_refresh output from the tool | | ↳ `refresh_selection` | array | refresh\_selection output from the tool | | ↳ `full_refresh_selection` | array | full\_refresh\_selection output from the tool | | ↳ `reset_checkpoint_selection` | array | reset\_checkpoint\_selection output from the tool | | ↳ `refresh_flow_selection` | array | refresh\_flow\_selection output from the tool | | ↳ `dbt_task` | object | dbt\_task output from the tool | | ↳ `commands` | array | dbt commands | | ↳ `project_directory` | string | project\_directory output from the tool | | ↳ `profiles_directory` | string | profiles\_directory output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `catalog` | string | catalog output from the tool | | ↳ `schema` | string | schema output from the tool | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `condition_task` | object | condition\_task output from the tool | | ↳ `op` | string | Comparison operator | | ↳ `left` | string | Left operand | | ↳ `right` | string | Right operand | | ↳ `outcome` | string | Evaluation result: true or false | | ↳ `for_each_task` | object | for\_each\_task output from the tool | | ↳ `inputs` | string | JSON array or parameter reference to iterate over | | ↳ `concurrency` | number | concurrency output from the tool | | ↳ `task` | object | Nested task definition | | ↳ `clean_rooms_notebook_task` | object | clean\_rooms\_notebook\_task output from the tool | | ↳ `clean_room_name` | string | clean\_room\_name output from the tool | | ↳ `notebook_name` | string | notebook\_name output from the tool | | ↳ `etag` | string | etag output from the tool | | ↳ `notebook_base_parameters` | object | notebook\_base\_parameters output from the tool | | ↳ `dashboard_task` | object | dashboard\_task output from the tool | | ↳ `dashboard_id` | string | dashboard\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `subscription` | object | subscription output from the tool | | ↳ `filters` | object | filters output from the tool | | ↳ `alert_task` | object | alert\_task output from the tool | | ↳ `alert_id` | string | alert\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `workspace_path` | string | workspace\_path output from the tool | | ↳ `subscribers` | array | subscribers output from the tool | | ↳ `power_bi_task` | object | power\_bi\_task output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `connection_resource_name` | string | connection\_resource\_name output from the tool | | ↳ `refresh_after_update` | boolean | refresh\_after\_update output from the tool | | ↳ `power_bi_model` | object | power\_bi\_model output from the tool | | ↳ `tables` | array | tables output from the tool | | ↳ `state` | object | state output from the tool | | ↳ `life_cycle_state` | string | life\_cycle\_state output from the tool | | ↳ `result_state` | string | result\_state output from the tool | | ↳ `state_message` | string | state\_message output from the tool | | ↳ `resolved_values` | object | Resolved task parameters keyed by task type (notebook\_task, spark\_python\_task, sql\_task, and other task variants) | | ↳ `start_time` | number | Task start in epoch milliseconds | | ↳ `end_time` | number | Task end in epoch milliseconds | | ↳ `run_page_url` | string | Task run URL | | ↳ `jobClusters` | array | Shared job compute definitions | | ↳ `job_cluster_key` | string | Cluster reference key | | ↳ `new_cluster` | object | Cloud-dependent compute configuration | | ↳ `spark_version` | string | spark\_version output from the tool | | ↳ `node_type_id` | string | node\_type\_id output from the tool | | ↳ `num_workers` | number | num\_workers output from the tool | | ↳ `autoscale` | object | autoscale output from the tool | | ↳ `min_workers` | number | min\_workers output from the tool | | ↳ `max_workers` | number | max\_workers output from the tool | | ↳ `hasMore` | boolean | Whether tasks or job clusters have additional pages | | ↳ `jobId` | number | Unique job identifier | | ↳ `name` | string | Job name | | ↳ `createdTime` | number | Job creation timestamp (epoch ms) | | ↳ `creatorUserName` | string | Email of the job creator | | ↳ `maxConcurrentRuns` | number | Maximum number of concurrent runs | | ↳ `format` | string | Job format (SINGLE\_TASK or MULTI\_TASK) | | `hasMore` | boolean | Whether more jobs are available for pagination | | `nextPageToken` | string | Token for fetching the next page of results | ### Databricks Get Job [#databricks-get-job] Get the full definition and settings of a single Databricks job by its job ID. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------- | | `includeTriggerState` | boolean | No | Include current job trigger state | | `pageToken` | string | No | Token for the next page of tasks and job clusters | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | Yes | The canonical identifier of the job to retrieve | #### Output [#output-5] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------- | | `tasks` | array | Task definitions and task run IDs; nested keys use Databricks API names | | ↳ `task_key` | string | Task key | | ↳ `run_id` | number | Task run ID for Get Run Output | | ↳ `description` | string | Task description | | ↳ `depends_on` | array | depends\_on output from the tool | | ↳ `task_key` | string | Upstream task key | | ↳ `outcome` | string | Required outcome of a condition task | | ↳ `existing_cluster_id` | string | Existing compute cluster | | ↳ `job_cluster_key` | string | Shared job cluster key | | ↳ `notebook_task` | object | notebook\_task output from the tool | | ↳ `notebook_path` | string | Notebook path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `base_parameters` | object | Notebook parameter map | | ↳ `spark_python_task` | object | spark\_python\_task output from the tool | | ↳ `python_file` | string | Python file path or cloud URI | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `parameters` | array | parameters output from the tool | | ↳ `spark_jar_task` | object | spark\_jar\_task output from the tool | | ↳ `main_class_name` | string | JAR entry point class | | ↳ `parameters` | array | parameters output from the tool | | ↳ `jar_uri` | string | Legacy JAR URI | | ↳ `spark_submit_task` | object | Legacy spark-submit task | | ↳ `parameters` | array | parameters output from the tool | | ↳ `python_wheel_task` | object | python\_wheel\_task output from the tool | | ↳ `package_name` | string | Python package name | | ↳ `entry_point` | string | Package entry point | | ↳ `parameters` | array | parameters output from the tool | | ↳ `named_parameters` | object | Named wheel parameters | | ↳ `sql_task` | object | sql\_task output from the tool | | ↳ `warehouse_id` | string | SQL warehouse identifier | | ↳ `parameters` | object | SQL parameters | | ↳ `query` | object | query output from the tool | | ↳ `query_id` | string | Saved query identifier | | ↳ `file` | object | file output from the tool | | ↳ `path` | string | SQL file path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `alert` | object | alert output from the tool | | ↳ `alert_id` | string | SQL alert identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `dashboard` | object | dashboard output from the tool | | ↳ `dashboard_id` | string | Legacy SQL dashboard identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `custom_subject` | string | custom\_subject output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `run_job_task` | object | run\_job\_task output from the tool | | ↳ `job_id` | number | Nested job identifier | | ↳ `job_parameters` | object | Nested job parameters | | ↳ `pipeline_params` | object | Pipeline refresh settings | | ↳ `pipeline_task` | object | pipeline\_task output from the tool | | ↳ `pipeline_id` | string | Pipeline identifier | | ↳ `parameters` | object | parameters output from the tool | | ↳ `full_refresh` | boolean | full\_refresh output from the tool | | ↳ `refresh_selection` | array | refresh\_selection output from the tool | | ↳ `full_refresh_selection` | array | full\_refresh\_selection output from the tool | | ↳ `reset_checkpoint_selection` | array | reset\_checkpoint\_selection output from the tool | | ↳ `refresh_flow_selection` | array | refresh\_flow\_selection output from the tool | | ↳ `dbt_task` | object | dbt\_task output from the tool | | ↳ `commands` | array | dbt commands | | ↳ `project_directory` | string | project\_directory output from the tool | | ↳ `profiles_directory` | string | profiles\_directory output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `catalog` | string | catalog output from the tool | | ↳ `schema` | string | schema output from the tool | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `condition_task` | object | condition\_task output from the tool | | ↳ `op` | string | Comparison operator | | ↳ `left` | string | Left operand | | ↳ `right` | string | Right operand | | ↳ `outcome` | string | Evaluation result: true or false | | ↳ `for_each_task` | object | for\_each\_task output from the tool | | ↳ `inputs` | string | JSON array or parameter reference to iterate over | | ↳ `concurrency` | number | concurrency output from the tool | | ↳ `task` | object | Nested task definition | | ↳ `clean_rooms_notebook_task` | object | clean\_rooms\_notebook\_task output from the tool | | ↳ `clean_room_name` | string | clean\_room\_name output from the tool | | ↳ `notebook_name` | string | notebook\_name output from the tool | | ↳ `etag` | string | etag output from the tool | | ↳ `notebook_base_parameters` | object | notebook\_base\_parameters output from the tool | | ↳ `dashboard_task` | object | dashboard\_task output from the tool | | ↳ `dashboard_id` | string | dashboard\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `subscription` | object | subscription output from the tool | | ↳ `filters` | object | filters output from the tool | | ↳ `alert_task` | object | alert\_task output from the tool | | ↳ `alert_id` | string | alert\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `workspace_path` | string | workspace\_path output from the tool | | ↳ `subscribers` | array | subscribers output from the tool | | ↳ `power_bi_task` | object | power\_bi\_task output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `connection_resource_name` | string | connection\_resource\_name output from the tool | | ↳ `refresh_after_update` | boolean | refresh\_after\_update output from the tool | | ↳ `power_bi_model` | object | power\_bi\_model output from the tool | | ↳ `tables` | array | tables output from the tool | | ↳ `state` | object | state output from the tool | | ↳ `life_cycle_state` | string | life\_cycle\_state output from the tool | | ↳ `result_state` | string | result\_state output from the tool | | ↳ `state_message` | string | state\_message output from the tool | | ↳ `resolved_values` | object | Resolved task parameters keyed by task type (notebook\_task, spark\_python\_task, sql\_task, and other task variants) | | ↳ `start_time` | number | Task start in epoch milliseconds | | ↳ `end_time` | number | Task end in epoch milliseconds | | ↳ `run_page_url` | string | Task run URL | | `jobClusters` | array | Shared job compute definitions | | ↳ `job_cluster_key` | string | Cluster reference key | | ↳ `new_cluster` | object | Cloud-dependent compute configuration | | ↳ `spark_version` | string | spark\_version output from the tool | | ↳ `node_type_id` | string | node\_type\_id output from the tool | | ↳ `num_workers` | number | num\_workers output from the tool | | ↳ `autoscale` | object | autoscale output from the tool | | ↳ `min_workers` | number | min\_workers output from the tool | | ↳ `max_workers` | number | max\_workers output from the tool | | `description` | string | Job description | | `parameters` | array | Job parameter definitions | | `queue` | object | Job queue settings | | `triggerState` | object | Current file-arrival, table-update, or periodic trigger state | | ↳ `file_arrival` | object | file\_arrival output from the tool | | ↳ `table` | object | table output from the tool | | ↳ `last_seen_table_states` | array | last\_seen\_table\_states output from the tool | | `nextPageToken` | string | Token for the next page of tasks or job clusters | | `jobId` | number | The job ID | | `name` | string | Job name | | `creatorUserName` | string | Email of the job creator | | `runAsUserName` | string | User the job runs as | | `createdTime` | number | Job creation timestamp (epoch ms) | | `format` | string | Job format (SINGLE\_TASK or MULTI\_TASK) | | `maxConcurrentRuns` | number | Maximum number of concurrent runs | | `timeoutSeconds` | number | Job-level timeout in seconds (0 or null means no timeout) | | `schedule` | object | Cron schedule configuration (quartz\_cron\_expression, timezone\_id, pause\_status) | | `tags` | object | Key-value tags applied to the job | ### Databricks Create Job [#databricks-create-job] Create a Databricks job with tasks, scheduling, execution identity, and notifications. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `accessControlList` | json | No | Initial permissions as \[\{user\_name, group\_name, service\_principal\_name, permission\_level}] | | `name` | string | No | Display name of the job | | `description` | string | No | Description of the job | | `emailNotifications` | json | No | Email recipients by event, such as \{on\_failure: \["[ops@example.com](mailto:ops@example.com)"]} | | `webhookNotifications` | json | No | Notification destination IDs grouped by event | | `notificationSettings` | json | No | Notification preferences for skipped runs, canceled runs, and retries | | `timeoutSeconds` | number | No | Maximum run duration in seconds; 0 disables the timeout | | `health` | json | No | Health rules as \{rules: \[\{metric, op, value}]} | | `schedule` | json | No | Quartz schedule as \{quartz\_cron\_expression, timezone\_id, pause\_status} | | `jobTrigger` | json | No | Job trigger settings in Databricks API format | | `continuous` | json | No | Continuous execution settings; mutually exclusive with schedule | | `maxConcurrentRuns` | number | No | Maximum simultaneous runs allowed for this job | | `tasks` | json | No | Task definitions using Databricks API fields, including task\_key, depends\_on, and notebook\_task or other task types | | `jobClusters` | json | No | Shared job clusters as \[\{job\_cluster\_key, new\_cluster}] | | `gitSource` | json | No | Git repository URL, provider, and branch, tag, or commit | | `tags` | json | No | Job tags as a JSON object of string keys and values | | `queue` | json | No | Queue behavior as \{enabled: true} or \{enabled: false} | | `parameters` | json | No | Job parameter definitions as \[\{name, default}] | | `runAs` | json | No | Execution identity as \{user\_name} or \{service\_principal\_name} | | `editMode` | string | No | Whether the job can be edited in the Databricks UI | | `deployment` | json | No | External deployment metadata including kind and metadata\_file\_path | | `environments` | json | No | Task environments as \[\{environment\_key, spec}] | | `budgetPolicyId` | string | No | Serverless budget policy identifier | | `performanceTarget` | string | No | Serverless performance mode: STANDARD or PERFORMANCE\_OPTIMIZED | | `triggers` | json | No | Job trigger definitions; cannot be combined with the singular trigger setting | | `environmentVariables` | json | No | Named environment variable definitions in Databricks API format | | `maxRetries` | number | No | Maximum retry count; -1 retries indefinitely and 0 disables retries | | `minRetryIntervalMillis` | number | No | Minimum time in milliseconds between attempts | | `retryOnTimeout` | boolean | No | Whether a timed-out run should be retried | | `disableAutoOptimization` | boolean | No | Disable serverless automatic optimization | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | -------------- | | `jobId` | number | Job identifier | ### Databricks Update Job [#databricks-update-job] Merge selected settings into a Databricks job and optionally remove settings or tasks. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | Yes | Job identifier | | `newSettings` | json | No | Job settings in Databricks API format; Update merges top-level fields and task keys, Reset replaces all settings | | `fieldsToRemove` | json | No | Settings to remove, such as \["schedule", "tasks/task\_key"] | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Reset Job [#databricks-reset-job] Replace all settings of a Databricks job. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | Yes | Job identifier | | `newSettings` | json | Yes | Job settings in Databricks API format; Update merges top-level fields and task keys, Reset replaces all settings | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Delete Job [#databricks-delete-job] Delete a Databricks job and cancel its active runs. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | Yes | Job identifier | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Run Job [#databricks-run-job] Trigger an existing Databricks job to run immediately with optional job-level or notebook parameters. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `only` | json | No | Task keys to run; omit to run every task | | `queue` | json | No | Run queue settings as \{enabled: true} or \{enabled: false} | | `performanceTarget` | string | No | Serverless performance: STANDARD or PERFORMANCE\_OPTIMIZED | | `pipelineParams` | json | No | Pipeline full\_refresh and selective table or flow settings | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | Yes | The ID of the job to trigger | | `jobParameters` | json | No | Job-level parameter overrides as a JSON object (e.g., \{"key": "value"}) | | `notebookParams` | json | No | Notebook task parameters as a JSON object (e.g., \{"param1": "value1"}) | | `idempotencyToken` | string | No | Idempotency token to prevent duplicate runs (max 64 characters) | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------- | | `runId` | number | The globally unique ID of the triggered run | | `numberInJob` | number | The sequence number of this run among all runs of the job | ### Databricks Submit Run [#databricks-submit-run] Submit a one-time task run without creating a saved job. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `accessControlList` | json | No | Initial permissions as \[\{user\_name, group\_name, service\_principal\_name, permission\_level}] | | `queue` | json | No | Queue behavior as \{enabled: true} or \{enabled: false} | | `runAs` | json | No | Execution identity as \{user\_name} or \{service\_principal\_name} | | `runName` | string | No | Display name of the one-time run | | `timeoutSeconds` | number | No | Maximum run duration in seconds; 0 disables the timeout | | `health` | json | No | Health rules as \{rules: \[\{metric, op, value}]} | | `idempotencyToken` | string | No | Retry token that prevents duplicate runs; at most 64 characters | | `tasks` | json | No | Task definitions using Databricks API fields, including task\_key, depends\_on, and notebook\_task or other task types | | `gitSource` | json | No | Git repository URL, provider, and branch, tag, or commit | | `webhookNotifications` | json | No | Notification destination IDs grouped by event | | `emailNotifications` | json | No | Email recipients by event, such as \{on\_failure: \["[ops@example.com](mailto:ops@example.com)"]} | | `notificationSettings` | json | No | Notification preferences for skipped runs, canceled runs, and retries | | `environments` | json | No | Task environments as \[\{environment\_key, spec}] | | `budgetPolicyId` | string | No | Serverless budget policy identifier | | `environmentVariables` | json | No | Named environment variable definitions in Databricks API format | | `performanceTarget` | string | No | Serverless performance mode: STANDARD or PERFORMANCE\_OPTIMIZED | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | -------------- | | `runId` | number | Run identifier | ### Databricks List Runs [#databricks-list-runs] List job runs in a Databricks workspace with optional filtering by job, status, and time range. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | No | Filter runs by job ID. Omit to list runs across all jobs | | `activeOnly` | boolean | No | Only include active runs (PENDING, RUNNING, or TERMINATING) | | `completedOnly` | boolean | No | Only include completed runs | | `limit` | number | No | Maximum number of runs to return (range 1-24, default 20) | | `pageToken` | string | No | Token for the next or previous page; takes precedence over legacy offset | | `offset` | number | No | Legacy Jobs 2.1 offset; prefer pageToken | | `expandTasks` | boolean | No | Include the first 100 tasks and job clusters for each run | | `runType` | string | No | Filter by run type (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) | | `startTimeFrom` | number | No | Filter runs started at or after this timestamp (epoch ms) | | `startTimeTo` | number | No | Filter runs started at or before this timestamp (epoch ms) | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------- | | `prevPageToken` | string | Token for the previous page | | `runs` | array | List of job runs | | ↳ `tasks` | array | Task definitions and task run IDs; nested keys use Databricks API names | | ↳ `task_key` | string | Task key | | ↳ `run_id` | number | Task run ID for Get Run Output | | ↳ `description` | string | Task description | | ↳ `depends_on` | array | depends\_on output from the tool | | ↳ `task_key` | string | Upstream task key | | ↳ `outcome` | string | Required outcome of a condition task | | ↳ `existing_cluster_id` | string | Existing compute cluster | | ↳ `job_cluster_key` | string | Shared job cluster key | | ↳ `notebook_task` | object | notebook\_task output from the tool | | ↳ `notebook_path` | string | Notebook path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `base_parameters` | object | Notebook parameter map | | ↳ `spark_python_task` | object | spark\_python\_task output from the tool | | ↳ `python_file` | string | Python file path or cloud URI | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `parameters` | array | parameters output from the tool | | ↳ `spark_jar_task` | object | spark\_jar\_task output from the tool | | ↳ `main_class_name` | string | JAR entry point class | | ↳ `parameters` | array | parameters output from the tool | | ↳ `jar_uri` | string | Legacy JAR URI | | ↳ `spark_submit_task` | object | Legacy spark-submit task | | ↳ `parameters` | array | parameters output from the tool | | ↳ `python_wheel_task` | object | python\_wheel\_task output from the tool | | ↳ `package_name` | string | Python package name | | ↳ `entry_point` | string | Package entry point | | ↳ `parameters` | array | parameters output from the tool | | ↳ `named_parameters` | object | Named wheel parameters | | ↳ `sql_task` | object | sql\_task output from the tool | | ↳ `warehouse_id` | string | SQL warehouse identifier | | ↳ `parameters` | object | SQL parameters | | ↳ `query` | object | query output from the tool | | ↳ `query_id` | string | Saved query identifier | | ↳ `file` | object | file output from the tool | | ↳ `path` | string | SQL file path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `alert` | object | alert output from the tool | | ↳ `alert_id` | string | SQL alert identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `dashboard` | object | dashboard output from the tool | | ↳ `dashboard_id` | string | Legacy SQL dashboard identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `custom_subject` | string | custom\_subject output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `run_job_task` | object | run\_job\_task output from the tool | | ↳ `job_id` | number | Nested job identifier | | ↳ `job_parameters` | object | Nested job parameters | | ↳ `pipeline_params` | object | Pipeline refresh settings | | ↳ `pipeline_task` | object | pipeline\_task output from the tool | | ↳ `pipeline_id` | string | Pipeline identifier | | ↳ `parameters` | object | parameters output from the tool | | ↳ `full_refresh` | boolean | full\_refresh output from the tool | | ↳ `refresh_selection` | array | refresh\_selection output from the tool | | ↳ `full_refresh_selection` | array | full\_refresh\_selection output from the tool | | ↳ `reset_checkpoint_selection` | array | reset\_checkpoint\_selection output from the tool | | ↳ `refresh_flow_selection` | array | refresh\_flow\_selection output from the tool | | ↳ `dbt_task` | object | dbt\_task output from the tool | | ↳ `commands` | array | dbt commands | | ↳ `project_directory` | string | project\_directory output from the tool | | ↳ `profiles_directory` | string | profiles\_directory output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `catalog` | string | catalog output from the tool | | ↳ `schema` | string | schema output from the tool | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `condition_task` | object | condition\_task output from the tool | | ↳ `op` | string | Comparison operator | | ↳ `left` | string | Left operand | | ↳ `right` | string | Right operand | | ↳ `outcome` | string | Evaluation result: true or false | | ↳ `for_each_task` | object | for\_each\_task output from the tool | | ↳ `inputs` | string | JSON array or parameter reference to iterate over | | ↳ `concurrency` | number | concurrency output from the tool | | ↳ `task` | object | Nested task definition | | ↳ `clean_rooms_notebook_task` | object | clean\_rooms\_notebook\_task output from the tool | | ↳ `clean_room_name` | string | clean\_room\_name output from the tool | | ↳ `notebook_name` | string | notebook\_name output from the tool | | ↳ `etag` | string | etag output from the tool | | ↳ `notebook_base_parameters` | object | notebook\_base\_parameters output from the tool | | ↳ `dashboard_task` | object | dashboard\_task output from the tool | | ↳ `dashboard_id` | string | dashboard\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `subscription` | object | subscription output from the tool | | ↳ `filters` | object | filters output from the tool | | ↳ `alert_task` | object | alert\_task output from the tool | | ↳ `alert_id` | string | alert\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `workspace_path` | string | workspace\_path output from the tool | | ↳ `subscribers` | array | subscribers output from the tool | | ↳ `power_bi_task` | object | power\_bi\_task output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `connection_resource_name` | string | connection\_resource\_name output from the tool | | ↳ `refresh_after_update` | boolean | refresh\_after\_update output from the tool | | ↳ `power_bi_model` | object | power\_bi\_model output from the tool | | ↳ `tables` | array | tables output from the tool | | ↳ `state` | object | state output from the tool | | ↳ `life_cycle_state` | string | life\_cycle\_state output from the tool | | ↳ `result_state` | string | result\_state output from the tool | | ↳ `state_message` | string | state\_message output from the tool | | ↳ `resolved_values` | object | Resolved task parameters keyed by task type (notebook\_task, spark\_python\_task, sql\_task, and other task variants) | | ↳ `start_time` | number | Task start in epoch milliseconds | | ↳ `end_time` | number | Task end in epoch milliseconds | | ↳ `run_page_url` | string | Task run URL | | ↳ `jobClusters` | array | Shared job compute definitions | | ↳ `job_cluster_key` | string | Cluster reference key | | ↳ `new_cluster` | object | Cloud-dependent compute configuration | | ↳ `spark_version` | string | spark\_version output from the tool | | ↳ `node_type_id` | string | node\_type\_id output from the tool | | ↳ `num_workers` | number | num\_workers output from the tool | | ↳ `autoscale` | object | autoscale output from the tool | | ↳ `min_workers` | number | min\_workers output from the tool | | ↳ `max_workers` | number | max\_workers output from the tool | | ↳ `runStatus` | object | Run lifecycle and termination or queue details | | ↳ `state` | string | Current lifecycle state | | ↳ `termination_details` | object | termination\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `type` | string | type output from the tool | | ↳ `message` | string | message output from the tool | | ↳ `queue_details` | object | queue\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `message` | string | message output from the tool | | ↳ `hasMore` | boolean | Whether tasks or job clusters have additional pages | | ↳ `runPageUrl` | string | Run details URL | | ↳ `runId` | number | Unique run identifier | | ↳ `jobId` | number | Job this run belongs to | | ↳ `runName` | string | Run name | | ↳ `runType` | string | Run type (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) | | ↳ `state` | object | Run state information | | ↳ `lifeCycleState` | string | Lifecycle state (QUEUED, PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED, INTERNAL\_ERROR, BLOCKED, WAITING\_FOR\_RETRY) | | ↳ `resultState` | string | Result state (SUCCESS, FAILED, TIMEDOUT, CANCELED, SUCCESS\_WITH\_FAILURES, UPSTREAM\_FAILED, UPSTREAM\_CANCELED, EXCLUDED) | | ↳ `stateMessage` | string | Descriptive state message | | ↳ `userCancelledOrTimedout` | boolean | Whether the run was cancelled by user or timed out | | ↳ `startTime` | number | Run start timestamp (epoch ms) | | ↳ `endTime` | number | Run end timestamp (epoch ms) | | `hasMore` | boolean | Whether more runs are available for pagination | | `nextPageToken` | string | Token for fetching the next page of results | ### Databricks Get Run [#databricks-get-run] Get the status, timing, and details of a Databricks job run by its run ID. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ----------------------------------------------------------------- | | `pageToken` | string | No | Token for the next page of tasks and job clusters | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `runId` | number | Yes | The canonical identifier of the run | | `includeHistory` | boolean | No | Include repair history in the response | | `includeResolvedValues` | boolean | No | Include resolved parameter values in the response | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------- | | `tasks` | array | Task definitions and task run IDs; nested keys use Databricks API names | | ↳ `task_key` | string | Task key | | ↳ `run_id` | number | Task run ID for Get Run Output | | ↳ `description` | string | Task description | | ↳ `depends_on` | array | depends\_on output from the tool | | ↳ `task_key` | string | Upstream task key | | ↳ `outcome` | string | Required outcome of a condition task | | ↳ `existing_cluster_id` | string | Existing compute cluster | | ↳ `job_cluster_key` | string | Shared job cluster key | | ↳ `notebook_task` | object | notebook\_task output from the tool | | ↳ `notebook_path` | string | Notebook path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `base_parameters` | object | Notebook parameter map | | ↳ `spark_python_task` | object | spark\_python\_task output from the tool | | ↳ `python_file` | string | Python file path or cloud URI | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `parameters` | array | parameters output from the tool | | ↳ `spark_jar_task` | object | spark\_jar\_task output from the tool | | ↳ `main_class_name` | string | JAR entry point class | | ↳ `parameters` | array | parameters output from the tool | | ↳ `jar_uri` | string | Legacy JAR URI | | ↳ `spark_submit_task` | object | Legacy spark-submit task | | ↳ `parameters` | array | parameters output from the tool | | ↳ `python_wheel_task` | object | python\_wheel\_task output from the tool | | ↳ `package_name` | string | Python package name | | ↳ `entry_point` | string | Package entry point | | ↳ `parameters` | array | parameters output from the tool | | ↳ `named_parameters` | object | Named wheel parameters | | ↳ `sql_task` | object | sql\_task output from the tool | | ↳ `warehouse_id` | string | SQL warehouse identifier | | ↳ `parameters` | object | SQL parameters | | ↳ `query` | object | query output from the tool | | ↳ `query_id` | string | Saved query identifier | | ↳ `file` | object | file output from the tool | | ↳ `path` | string | SQL file path | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `alert` | object | alert output from the tool | | ↳ `alert_id` | string | SQL alert identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `dashboard` | object | dashboard output from the tool | | ↳ `dashboard_id` | string | Legacy SQL dashboard identifier | | ↳ `subscriptions` | array | subscriptions output from the tool | | ↳ `custom_subject` | string | custom\_subject output from the tool | | ↳ `pause_subscriptions` | boolean | pause\_subscriptions output from the tool | | ↳ `run_job_task` | object | run\_job\_task output from the tool | | ↳ `job_id` | number | Nested job identifier | | ↳ `job_parameters` | object | Nested job parameters | | ↳ `pipeline_params` | object | Pipeline refresh settings | | ↳ `pipeline_task` | object | pipeline\_task output from the tool | | ↳ `pipeline_id` | string | Pipeline identifier | | ↳ `parameters` | object | parameters output from the tool | | ↳ `full_refresh` | boolean | full\_refresh output from the tool | | ↳ `refresh_selection` | array | refresh\_selection output from the tool | | ↳ `full_refresh_selection` | array | full\_refresh\_selection output from the tool | | ↳ `reset_checkpoint_selection` | array | reset\_checkpoint\_selection output from the tool | | ↳ `refresh_flow_selection` | array | refresh\_flow\_selection output from the tool | | ↳ `dbt_task` | object | dbt\_task output from the tool | | ↳ `commands` | array | dbt commands | | ↳ `project_directory` | string | project\_directory output from the tool | | ↳ `profiles_directory` | string | profiles\_directory output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `catalog` | string | catalog output from the tool | | ↳ `schema` | string | schema output from the tool | | ↳ `source` | string | WORKSPACE or GIT | | ↳ `condition_task` | object | condition\_task output from the tool | | ↳ `op` | string | Comparison operator | | ↳ `left` | string | Left operand | | ↳ `right` | string | Right operand | | ↳ `outcome` | string | Evaluation result: true or false | | ↳ `for_each_task` | object | for\_each\_task output from the tool | | ↳ `inputs` | string | JSON array or parameter reference to iterate over | | ↳ `concurrency` | number | concurrency output from the tool | | ↳ `task` | object | Nested task definition | | ↳ `clean_rooms_notebook_task` | object | clean\_rooms\_notebook\_task output from the tool | | ↳ `clean_room_name` | string | clean\_room\_name output from the tool | | ↳ `notebook_name` | string | notebook\_name output from the tool | | ↳ `etag` | string | etag output from the tool | | ↳ `notebook_base_parameters` | object | notebook\_base\_parameters output from the tool | | ↳ `dashboard_task` | object | dashboard\_task output from the tool | | ↳ `dashboard_id` | string | dashboard\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `subscription` | object | subscription output from the tool | | ↳ `filters` | object | filters output from the tool | | ↳ `alert_task` | object | alert\_task output from the tool | | ↳ `alert_id` | string | alert\_id output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `workspace_path` | string | workspace\_path output from the tool | | ↳ `subscribers` | array | subscribers output from the tool | | ↳ `power_bi_task` | object | power\_bi\_task output from the tool | | ↳ `warehouse_id` | string | warehouse\_id output from the tool | | ↳ `connection_resource_name` | string | connection\_resource\_name output from the tool | | ↳ `refresh_after_update` | boolean | refresh\_after\_update output from the tool | | ↳ `power_bi_model` | object | power\_bi\_model output from the tool | | ↳ `tables` | array | tables output from the tool | | ↳ `state` | object | state output from the tool | | ↳ `life_cycle_state` | string | life\_cycle\_state output from the tool | | ↳ `result_state` | string | result\_state output from the tool | | ↳ `state_message` | string | state\_message output from the tool | | ↳ `resolved_values` | object | Resolved task parameters keyed by task type (notebook\_task, spark\_python\_task, sql\_task, and other task variants) | | ↳ `start_time` | number | Task start in epoch milliseconds | | ↳ `end_time` | number | Task end in epoch milliseconds | | ↳ `run_page_url` | string | Task run URL | | `jobClusters` | array | Shared job compute definitions | | ↳ `job_cluster_key` | string | Cluster reference key | | ↳ `new_cluster` | object | Cloud-dependent compute configuration | | ↳ `spark_version` | string | spark\_version output from the tool | | ↳ `node_type_id` | string | node\_type\_id output from the tool | | ↳ `num_workers` | number | num\_workers output from the tool | | ↳ `autoscale` | object | autoscale output from the tool | | ↳ `min_workers` | number | min\_workers output from the tool | | ↳ `max_workers` | number | max\_workers output from the tool | | `runStatus` | object | Run lifecycle and termination or queue details | | ↳ `state` | string | Current lifecycle state | | ↳ `termination_details` | object | termination\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `type` | string | type output from the tool | | ↳ `message` | string | message output from the tool | | ↳ `queue_details` | object | queue\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `message` | string | message output from the tool | | `repairHistory` | array | Prior repairs; pass the latest id to Repair Run | | ↳ `id` | number | id output from the tool | | ↳ `task_run_ids` | array | task\_run\_ids output from the tool | | ↳ `status` | object | Run lifecycle and termination or queue details | | ↳ `state` | string | Current lifecycle state | | ↳ `termination_details` | object | termination\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `type` | string | type output from the tool | | ↳ `message` | string | message output from the tool | | ↳ `queue_details` | object | queue\_details output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `message` | string | message output from the tool | | `jobParameters` | array | Resolved job parameter values | | `runDuration` | number | Run duration including repairs in milliseconds | | `nextPageToken` | string | Token for the next page of tasks or job clusters | | `runId` | number | The run ID | | `jobId` | number | The job ID this run belongs to | | `runName` | string | Name of the run | | `runType` | string | Type of run (JOB\_RUN, WORKFLOW\_RUN, SUBMIT\_RUN) | | `attemptNumber` | number | Retry attempt number (0 for initial attempt) | | `state` | object | Run state information | | ↳ `lifeCycleState` | string | Lifecycle state (QUEUED, PENDING, RUNNING, TERMINATING, TERMINATED, SKIPPED, INTERNAL\_ERROR, BLOCKED, WAITING\_FOR\_RETRY) | | ↳ `resultState` | string | Result state (SUCCESS, FAILED, TIMEDOUT, CANCELED, SUCCESS\_WITH\_FAILURES, UPSTREAM\_FAILED, UPSTREAM\_CANCELED, EXCLUDED) | | ↳ `stateMessage` | string | Descriptive message for the current state | | ↳ `userCancelledOrTimedout` | boolean | Whether the run was cancelled by user or timed out | | `startTime` | number | Run start timestamp (epoch ms) | | `endTime` | number | Run end timestamp (epoch ms, 0 if still running) | | `setupDuration` | number | Cluster setup duration (ms) | | `executionDuration` | number | Execution duration (ms) | | `cleanupDuration` | number | Cleanup duration (ms) | | `queueDuration` | number | Time spent in queue before execution (ms) | | `runPageUrl` | string | URL to the run detail page in Databricks UI | | `creatorUserName` | string | Email of the user who triggered the run | ### Databricks Get Run Output [#databricks-get-run-output] Get the output of a completed Databricks job run, including notebook results, error messages, and logs. For multi-task jobs, use the task run ID (not the parent run ID). #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `runId` | number | Yes | The run ID to get output for. For multi-task jobs, use the task run ID | #### Output [#output-14] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------- | | `info` | string | Additional output information | | `runJobOutput` | object | Run Job task result | | ↳ `run_id` | number | Child run identifier | | `dbtOutput` | object | dbt artifact download information | | ↳ `artifacts_link` | string | Temporary artifact URL | | ↳ `artifacts_headers` | object | Headers required to fetch the artifact | | `sqlOutput` | object | SQL query, alert, or dashboard task results | | ↳ `query_output` | object | query\_output output from the tool | | ↳ `alert_output` | object | alert\_output output from the tool | | ↳ `dashboard_output` | object | dashboard\_output output from the tool | | ↳ `widgets` | array | widgets output from the tool | | `notebookOutput` | object | Notebook task output (from dbutils.notebook.exit()) | | ↳ `result` | string | Value passed to dbutils.notebook.exit() (max 5 MB) | | ↳ `truncated` | boolean | Whether the result was truncated | | `error` | string | Error message if the run failed or output is unavailable | | `errorTrace` | string | Error stack trace if available | | `logs` | string | Log output (last 5 MB) from spark\_jar, spark\_python, or python\_wheel tasks | | `logsTruncated` | boolean | Whether the log output was truncated | ### Databricks Repair Run [#databricks-repair-run] Rerun failed or selected tasks within an existing Databricks run. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `runId` | number | Yes | Run identifier | | `latestRepairId` | number | No | Most recent repair ID; required after the first repair of a run | | `rerunTasks` | json | No | Task keys to repair; mutually exclusive with rerunAllFailedTasks | | `jobParameters` | json | No | Job-level parameter overrides as a JSON object of string keys and values | | `rerunAllFailedTasks` | boolean | No | Repair every failed task instead of specifying task keys | | `rerunDependentTasks` | boolean | No | Also rerun tasks downstream of the selected failed tasks | | `performanceTarget` | string | No | Serverless performance mode: STANDARD or PERFORMANCE\_OPTIMIZED | | `pipelineParams` | json | No | Pipeline refresh settings, including full\_refresh and selective table or flow lists | #### Output [#output-15] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------------------------------------- | | `repairId` | number | Identifier of the repair; pass it as latestRepairId on the next repair | ### Databricks Cancel Run [#databricks-cancel-run] Cancel a running or pending Databricks job run. Cancellation is asynchronous; poll the run status to confirm termination. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `runId` | number | Yes | The canonical identifier of the run to cancel | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether the cancel request was accepted | ### Databricks Cancel All Runs [#databricks-cancel-all-runs] Request cancellation of active runs of a job or queued runs in the workspace. #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `jobId` | number | No | Job identifier; required unless allQueuedRuns is true | | `allQueuedRuns` | boolean | No | Cancel queued runs; without a job ID this applies to the workspace | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Delete Run [#databricks-delete-run] Delete a completed Databricks job run. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `runId` | number | Yes | Run identifier | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks List Clusters [#databricks-list-clusters] List a page of clusters in a Databricks workspace including their state, configuration, and resource details. #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `pageSize` | number | No | Resources per page (default 20) | | `pageToken` | string | No | Token returned by the previous list request | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | #### Output [#output-19] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `nextPageToken` | string | Token for the next page | | `prevPageToken` | string | Token for the previous page | | `clusters` | array | List of clusters in the workspace | | ↳ `policyId` | string | Compute policy identifier | | ↳ `dataSecurityMode` | string | Cluster access mode | | ↳ `terminatedTime` | number | Cluster termination time in epoch milliseconds | | ↳ `customTags` | object | Custom cluster tags | | ↳ `terminationReason` | object | Reason for termination (code, type, parameters) | | ↳ `parameters` | object | Provider-specific termination parameters | | ↳ `clusterId` | string | Unique cluster identifier | | ↳ `clusterName` | string | Cluster display name | | ↳ `state` | string | Current state (PENDING, RUNNING, RESTARTING, RESIZING, TERMINATING, TERMINATED, ERROR, UNKNOWN) | | ↳ `stateMessage` | string | Human-readable state description | | ↳ `creatorUserName` | string | Email of the cluster creator | | ↳ `sparkVersion` | string | Spark runtime version (e.g., 13.3.x-scala2.12) | | ↳ `nodeTypeId` | string | Worker node type identifier | | ↳ `driverNodeTypeId` | string | Driver node type identifier | | ↳ `numWorkers` | number | Number of worker nodes (for fixed-size clusters) | | ↳ `autoscale` | object | Autoscaling configuration (null for fixed-size clusters) | | ↳ `minWorkers` | number | Minimum number of workers | | ↳ `maxWorkers` | number | Maximum number of workers | | ↳ `clusterSource` | string | Origin (API, UI, JOB, MODELS, PIPELINE, PIPELINE\_MAINTENANCE, SQL) | | ↳ `autoterminationMinutes` | number | Minutes of inactivity before auto-termination (0 = disabled) | | ↳ `startTime` | number | Cluster start timestamp (epoch ms) | ### Databricks Get Cluster [#databricks-get-cluster] Get the state, configuration, and resource details of a single Databricks cluster by its cluster ID. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | The ID of the cluster to retrieve | #### Output [#output-20] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `cluster` | object | Cluster detail | | ↳ `policyId` | string | Compute policy identifier | | ↳ `dataSecurityMode` | string | Cluster access mode | | ↳ `terminatedTime` | number | Cluster termination time in epoch milliseconds | | ↳ `customTags` | object | Custom cluster tags | | ↳ `terminationReason` | object | Reason for termination (code, type, parameters) | | ↳ `parameters` | object | Provider-specific termination parameters | | ↳ `clusterId` | string | Unique cluster identifier | | ↳ `clusterName` | string | Cluster display name | | ↳ `state` | string | Current state (PENDING, RUNNING, RESTARTING, RESIZING, TERMINATING, TERMINATED, ERROR, UNKNOWN) | | ↳ `stateMessage` | string | Human-readable state description | | ↳ `creatorUserName` | string | Email of the cluster creator | | ↳ `sparkVersion` | string | Spark runtime version (e.g., 13.3.x-scala2.12) | | ↳ `nodeTypeId` | string | Worker node type identifier | | ↳ `driverNodeTypeId` | string | Driver node type identifier | | ↳ `numWorkers` | number | Number of worker nodes (for fixed-size clusters) | | ↳ `autoscale` | object | Autoscaling configuration (null for fixed-size clusters) | | ↳ `minWorkers` | number | Minimum number of workers | | ↳ `maxWorkers` | number | Maximum number of workers | | ↳ `clusterSource` | string | Origin (API, UI, JOB, MODELS, PIPELINE, PIPELINE\_MAINTENANCE, SQL) | | ↳ `autoterminationMinutes` | number | Minutes of inactivity before auto-termination (0 = disabled) | | ↳ `startTime` | number | Cluster start timestamp (epoch ms) | ### Databricks Create Cluster [#databricks-create-cluster] Create a compute cluster with runtime, sizing, policy, and cloud-specific settings. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `applyPolicyDefaultValues` | boolean | No | Fill unspecified settings from the compute policy defaults | | `cloneFrom` | json | No | Clone source as \{source\_cluster\_id, clone\_source} | | `numWorkers` | number | No | Fixed worker count; use this or autoscale | | `autoscale` | json | No | Worker range as \{min\_workers, max\_workers}; use this or numWorkers | | `clusterName` | string | No | Display name of the compute cluster | | `sparkVersion` | string | No | Databricks runtime version, or omit when supplied by a compute policy | | `sparkConf` | json | No | Spark configuration as a JSON map | | `awsAttributes` | json | No | AWS compute configuration such as availability, zone\_id, and instance\_profile\_arn | | `azureAttributes` | json | No | Azure compute configuration such as availability and spot\_bid\_max\_price | | `gcpAttributes` | json | No | GCP compute configuration such as availability and zone\_id | | `nodeTypeId` | string | No | Worker node type identifier | | `driverNodeTypeId` | string | No | Driver node type identifier | | `workerNodeTypeFlexibility` | json | No | Alternative worker node type selection settings | | `driverNodeTypeFlexibility` | json | No | Alternative driver node type selection settings | | `sshPublicKeys` | json | No | SSH public keys to install on the cluster | | `customTags` | json | No | Custom cluster tags as a JSON map | | `clusterLogConf` | json | No | Cluster log destination in Databricks API format | | `sparkEnvVars` | json | No | Environment variables for the Spark processes as a JSON map | | `autoterminationMinutes` | number | No | Idle minutes before termination; 0 disables automatic termination | | `enableElasticDisk` | boolean | No | Allow automatic expansion of attached storage | | `initScripts` | json | No | Cluster initialization script locations in Databricks API format | | `dockerImage` | json | No | Custom container image URL and optional basic\_auth settings | | `instancePoolId` | string | No | Worker instance pool identifier | | `singleUserName` | string | No | Assigned user or service principal for dedicated access mode | | `policyId` | string | No | Compute policy identifier | | `enableLocalDiskEncryption` | boolean | No | Encrypt local cluster storage | | `driverInstancePoolId` | string | No | Driver instance pool identifier | | `workloadType` | json | No | Permitted workload types in Databricks API format | | `dataSecurityMode` | string | No | Cluster access mode | | `runtimeEngine` | string | No | Runtime execution engine | | `kind` | string | No | Compute kind | | `useMlRuntime` | boolean | No | Use a machine learning runtime | | `isSingleNode` | boolean | No | Create a single-node compute resource | | `remoteDiskThroughput` | number | No | Remote disk throughput setting | | `totalInitialRemoteDiskSize` | number | No | Initial remote disk size setting | | `dependencyMode` | string | No | Cluster dependency mode | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------ | -------------------------- | | `clusterId` | string | Compute cluster identifier | ### Databricks Edit Cluster [#databricks-edit-cluster] Replace a compute cluster configuration; a running cluster restarts to apply the changes. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | | `applyPolicyDefaultValues` | boolean | No | Fill unspecified settings from the compute policy defaults | | `numWorkers` | number | No | Fixed worker count; use this or autoscale | | `autoscale` | json | No | Worker range as \{min\_workers, max\_workers}; use this or numWorkers | | `clusterName` | string | No | Display name of the compute cluster | | `sparkVersion` | string | No | Databricks runtime version, or omit when supplied by a compute policy | | `sparkConf` | json | No | Spark configuration as a JSON map | | `awsAttributes` | json | No | AWS compute configuration such as availability, zone\_id, and instance\_profile\_arn | | `azureAttributes` | json | No | Azure compute configuration such as availability and spot\_bid\_max\_price | | `gcpAttributes` | json | No | GCP compute configuration such as availability and zone\_id | | `nodeTypeId` | string | No | Worker node type identifier | | `driverNodeTypeId` | string | No | Driver node type identifier | | `workerNodeTypeFlexibility` | json | No | Alternative worker node type selection settings | | `driverNodeTypeFlexibility` | json | No | Alternative driver node type selection settings | | `sshPublicKeys` | json | No | SSH public keys to install on the cluster | | `customTags` | json | No | Custom cluster tags as a JSON map | | `clusterLogConf` | json | No | Cluster log destination in Databricks API format | | `sparkEnvVars` | json | No | Environment variables for the Spark processes as a JSON map | | `autoterminationMinutes` | number | No | Idle minutes before termination; 0 disables automatic termination | | `enableElasticDisk` | boolean | No | Allow automatic expansion of attached storage | | `initScripts` | json | No | Cluster initialization script locations in Databricks API format | | `dockerImage` | json | No | Custom container image URL and optional basic\_auth settings | | `instancePoolId` | string | No | Worker instance pool identifier | | `singleUserName` | string | No | Assigned user or service principal for dedicated access mode | | `policyId` | string | No | Compute policy identifier | | `enableLocalDiskEncryption` | boolean | No | Encrypt local cluster storage | | `driverInstancePoolId` | string | No | Driver instance pool identifier | | `workloadType` | json | No | Permitted workload types in Databricks API format | | `dataSecurityMode` | string | No | Cluster access mode | | `runtimeEngine` | string | No | Runtime execution engine | | `kind` | string | No | Compute kind | | `useMlRuntime` | boolean | No | Use a machine learning runtime | | `isSingleNode` | boolean | No | Create a single-node compute resource | | `remoteDiskThroughput` | number | No | Remote disk throughput setting | | `totalInitialRemoteDiskSize` | number | No | Initial remote disk size setting | | `dependencyMode` | string | No | Cluster dependency mode | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Start Cluster [#databricks-start-cluster] Start a terminated all-purpose compute cluster. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Restart Cluster [#databricks-restart-cluster] Restart a running compute cluster. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | | `restartUser` | string | No | User requesting the cluster restart | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Resize Cluster [#databricks-resize-cluster] Change the fixed worker count or autoscaling range of a running cluster. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | | `numWorkers` | number | No | Fixed worker count; use this or autoscale | | `autoscale` | json | No | Worker range as \{min\_workers, max\_workers}; use this or numWorkers | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Terminate Cluster [#databricks-terminate-cluster] Terminate a compute cluster while retaining its configuration for a later restart. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Delete Cluster [#databricks-delete-cluster] Permanently delete a compute cluster and its configuration. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `clusterId` | string | Yes | Compute cluster identifier | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks List Warehouses [#databricks-list-warehouses] List a page of SQL warehouses in a Databricks workspace including their size, state, and type. Use this to discover the warehouse ID needed for Execute SQL. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `pageSize` | number | No | Resources per page (default 20) | | `pageToken` | string | No | Token returned by the previous list request | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | #### Output [#output-28] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------------------------------------- | | `nextPageToken` | string | Token for the next page | | `warehouses` | array | List of SQL warehouses in the workspace | | ↳ `jdbcUrl` | string | JDBC connection string | | ↳ `odbcParams` | object | ODBC connection settings | | ↳ `hostname` | string | hostname output from the tool | | ↳ `path` | string | path output from the tool | | ↳ `protocol` | string | protocol output from the tool | | ↳ `port` | number | port output from the tool | | ↳ `health` | object | Warehouse health and failure reason | | ↳ `status` | string | status output from the tool | | ↳ `failure_reason` | object | failure\_reason output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `type` | string | type output from the tool | | ↳ `parameters` | object | parameters output from the tool | | ↳ `tags` | object | Warehouse tags | | ↳ `custom_tags` | array | custom\_tags output from the tool | | ↳ `key` | string | key output from the tool | | ↳ `value` | string | value output from the tool | | ↳ `enablePhoton` | boolean | Whether Photon is enabled | | ↳ `spotInstancePolicy` | string | Spot instance policy | | ↳ `channel` | object | Warehouse release channel | | ↳ `name` | string | name output from the tool | | ↳ `statementTimeout` | number | Statement timeout in seconds | | ↳ `warehouseId` | string | Unique warehouse identifier | | ↳ `name` | string | Warehouse display name | | ↳ `clusterSize` | string | Warehouse size (e.g., 2X-Small, Small, Medium, Large) | | ↳ `state` | string | Current state (STARTING, RUNNING, STOPPING, STOPPED, DELETING, DELETED) | | ↳ `warehouseType` | string | Warehouse type (CLASSIC, PRO) | | ↳ `creatorName` | string | Email of the warehouse creator | | ↳ `autoStopMinutes` | number | Minutes of inactivity before auto-stop (0 = disabled) | | ↳ `numClusters` | number | Current number of running clusters | | ↳ `minNumClusters` | number | Minimum cluster count for scaling | | ↳ `maxNumClusters` | number | Maximum cluster count for scaling | | ↳ `numActiveSessions` | number | Number of active sessions | | ↳ `enableServerlessCompute` | boolean | Whether serverless compute is enabled | ### Databricks Get Warehouse [#databricks-get-warehouse] Get the configuration, state, and scaling settings of a SQL warehouse. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | #### Output [#output-29] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------------------------------------- | | `warehouse` | object | SQL warehouse configuration and state | | ↳ `jdbcUrl` | string | JDBC connection string | | ↳ `odbcParams` | object | ODBC connection settings | | ↳ `hostname` | string | hostname output from the tool | | ↳ `path` | string | path output from the tool | | ↳ `protocol` | string | protocol output from the tool | | ↳ `port` | number | port output from the tool | | ↳ `health` | object | Warehouse health and failure reason | | ↳ `status` | string | status output from the tool | | ↳ `failure_reason` | object | failure\_reason output from the tool | | ↳ `code` | string | code output from the tool | | ↳ `type` | string | type output from the tool | | ↳ `parameters` | object | parameters output from the tool | | ↳ `tags` | object | Warehouse tags | | ↳ `custom_tags` | array | custom\_tags output from the tool | | ↳ `key` | string | key output from the tool | | ↳ `value` | string | value output from the tool | | ↳ `enablePhoton` | boolean | Whether Photon is enabled | | ↳ `spotInstancePolicy` | string | Spot instance policy | | ↳ `channel` | object | Warehouse release channel | | ↳ `name` | string | name output from the tool | | ↳ `statementTimeout` | number | Statement timeout in seconds | | ↳ `warehouseId` | string | Unique warehouse identifier | | ↳ `name` | string | Warehouse display name | | ↳ `clusterSize` | string | Warehouse size (e.g., 2X-Small, Small, Medium, Large) | | ↳ `state` | string | Current state (STARTING, RUNNING, STOPPING, STOPPED, DELETING, DELETED) | | ↳ `warehouseType` | string | Warehouse type (CLASSIC, PRO) | | ↳ `creatorName` | string | Email of the warehouse creator | | ↳ `autoStopMinutes` | number | Minutes of inactivity before auto-stop (0 = disabled) | | ↳ `numClusters` | number | Current number of running clusters | | ↳ `minNumClusters` | number | Minimum cluster count for scaling | | ↳ `maxNumClusters` | number | Maximum cluster count for scaling | | ↳ `numActiveSessions` | number | Number of active sessions | | ↳ `enableServerlessCompute` | boolean | Whether serverless compute is enabled | ### Databricks Create Warehouse [#databricks-create-warehouse] Create a SQL warehouse with sizing, autoscaling, and serverless settings. #### Input [#input-30] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `name` | string | No | Display name of the SQL warehouse | | `clusterSize` | string | No | SQL warehouse size, such as Small or Medium | | `minNumClusters` | number | No | Minimum number of SQL warehouse clusters | | `maxNumClusters` | number | No | Maximum number of SQL warehouse clusters | | `autoStopMins` | number | No | Idle minutes before stopping the warehouse; 0 disables automatic stopping | | `creatorName` | string | No | Warehouse creator name | | `warehouseTags` | json | No | Warehouse tags as \{custom\_tags: \[\{key, value}]} | | `spotInstancePolicy` | string | No | Cost or reliability preference for spot instances | | `enablePhoton` | boolean | No | Enable Photon for SQL warehouse compute | | `channel` | json | No | Warehouse release channel as \{name: "CHANNEL\_NAME\_CURRENT"} | | `enableServerlessCompute` | boolean | No | Use serverless SQL warehouse compute | | `warehouseType` | string | No | Warehouse type; use PRO for serverless | | `statementTimeout` | number | No | Warehouse statement timeout in seconds | #### Output [#output-30] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `warehouseId` | string | SQL warehouse identifier | ### Databricks Edit Warehouse [#databricks-edit-warehouse] Update a SQL warehouse configuration. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | | `name` | string | No | Display name of the SQL warehouse | | `clusterSize` | string | No | SQL warehouse size, such as Small or Medium | | `minNumClusters` | number | No | Minimum number of SQL warehouse clusters | | `maxNumClusters` | number | No | Maximum number of SQL warehouse clusters | | `autoStopMins` | number | No | Idle minutes before stopping the warehouse; 0 disables automatic stopping | | `creatorName` | string | No | Warehouse creator name | | `warehouseTags` | json | No | Warehouse tags as \{custom\_tags: \[\{key, value}]} | | `spotInstancePolicy` | string | No | Cost or reliability preference for spot instances | | `enablePhoton` | boolean | No | Enable Photon for SQL warehouse compute | | `channel` | json | No | Warehouse release channel as \{name: "CHANNEL\_NAME\_CURRENT"} | | `enableServerlessCompute` | boolean | No | Use serverless SQL warehouse compute | | `warehouseType` | string | No | Warehouse type; use PRO for serverless | | `statementTimeout` | number | No | Warehouse statement timeout in seconds | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Start Warehouse [#databricks-start-warehouse] Start a stopped SQL warehouse. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | #### Output [#output-32] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Stop Warehouse [#databricks-stop-warehouse] Stop a running SQL warehouse. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Delete Warehouse [#databricks-delete-warehouse] Delete a SQL warehouse. #### Input [#input-34] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | #### Output [#output-34] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Genie List Spaces [#databricks-genie-list-spaces] List the Genie spaces (Genie agents) you can access. Use this to find the space ID needed to ask Genie a question. #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `pageSize` | number | No | Maximum number of spaces to return per page (default 20, max 100) | | `pageToken` | string | No | Pagination token from a previous response | #### Output [#output-35] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------- | | `spaces` | array | Genie spaces | | ↳ `etag` | string | Space version for conditional updates | | ↳ `spaceId` | string | Genie space ID | | ↳ `title` | string | Space title | | ↳ `description` | string | Space description | | ↳ `warehouseId` | string | SQL warehouse the space runs queries on | | ↳ `parentPath` | string | Workspace folder containing the space | | ↳ `createTime` | string | When the space was created (ISO 8601) | | ↳ `updateTime` | string | When the space was last modified (ISO 8601) | | `nextPageToken` | string | Token for the next page of results | ### Databricks Genie Get Space [#databricks-genie-get-space] Get a Genie space's title, description, and SQL warehouse, optionally with its full configuration export (tables, instructions, sample questions). #### Input [#input-36] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `includeSerializedSpace` | boolean | No | Include the space's serialized configuration export (requires CAN EDIT on the space) | #### Output [#output-36] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------- | | `etag` | string | Space version for conditional updates | | `spaceId` | string | Genie space ID | | `title` | string | Space title | | `description` | string | Space description | | `warehouseId` | string | SQL warehouse the space runs queries on | | `parentPath` | string | Workspace folder containing the space | | `createTime` | string | When the space was created (ISO 8601) | | `updateTime` | string | When the space was last modified (ISO 8601) | | `serializedSpace` | string | Serialized space configuration as a JSON string (data sources, instructions, sample questions) | ### Databricks Create Genie Space [#databricks-create-genie-space] Create a Genie space from its serialized configuration and a SQL warehouse. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `warehouseId` | string | Yes | SQL warehouse identifier | | `parentPath` | string | No | Parent workspace folder for the Genie space | | `serializedSpace` | string | Yes | Serialized Genie configuration JSON, including data\_sources, instructions, config, and benchmarks; get an example with Get Genie Space | | `title` | string | No | Genie space title | | `description` | string | No | Description of the Genie space | #### Output [#output-37] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------- | | `etag` | string | Space version for conditional updates | | `spaceId` | string | Genie space ID | | `title` | string | Space title | | `description` | string | Space description | | `warehouseId` | string | SQL warehouse the space runs queries on | | `parentPath` | string | Workspace folder containing the space | | `createTime` | string | When the space was created (ISO 8601) | | `updateTime` | string | When the space was last modified (ISO 8601) | | `serializedSpace` | string | Serialized Genie configuration (data\_sources, instructions, config, benchmarks) | ### Databricks Update Genie Space [#databricks-update-genie-space] Update a Genie space, optionally protecting the change with its current ETag. #### Input [#input-38] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | Genie space identifier | | `serializedSpace` | string | No | Serialized Genie configuration JSON, including data\_sources, instructions, config, and benchmarks; get an example with Get Genie Space | | `title` | string | No | Genie space title | | `description` | string | No | Description of the Genie space; an empty string clears the description | | `warehouseId` | string | No | SQL warehouse identifier | | `etag` | string | No | Version from Get Genie Space; prevents overwriting concurrent changes | | `parentPath` | string | No | Parent workspace folder for the Genie space | #### Output [#output-38] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------- | | `etag` | string | Space version for conditional updates | | `spaceId` | string | Genie space ID | | `title` | string | Space title | | `description` | string | Space description | | `warehouseId` | string | SQL warehouse the space runs queries on | | `parentPath` | string | Workspace folder containing the space | | `createTime` | string | When the space was created (ISO 8601) | | `updateTime` | string | When the space was last modified (ISO 8601) | | `serializedSpace` | string | Serialized Genie configuration (data\_sources, instructions, config, benchmarks) | ### Databricks Trash Genie Space [#databricks-trash-genie-space] Move a Genie space to the trash. #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | Genie space identifier | #### Output [#output-39] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether Databricks accepted the request | ### Databricks Genie Ask [#databricks-genie-ask] Ask a Databricks Genie space a question in natural language and wait for the answer. Starts a new conversation, or continues an existing one when a conversation ID is given. Returns the text answer, the SQL Genie generated, and the query result rows. #### Input [#input-40] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `content` | string | Yes | The question to ask Genie | | `conversationId` | string | No | Continue this conversation so Genie uses its earlier messages as context. Omit to start a new conversation. | | `enableVisualization` | boolean | No | Ask Genie to also generate a chart when one fits the answer | #### Output [#output-40] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `rowCount` | number | Number of rows in this chunk | | `conversationId` | string | Genie conversation ID | | `messageId` | string | Genie message ID | | `status` | string | Message status (SUBMITTED, FETCHING\_METADATA, FILTERING\_CONTEXT, ASKING\_AI, PENDING\_WAREHOUSE, EXECUTING\_QUERY, COMPLETED, FAILED, CANCELLED, QUERY\_RESULT\_EXPIRED) | | `content` | string | The question that was asked | | `answer` | string | Genie's text answer or summary | | `followUpQuestion` | string | Clarifying question Genie asked instead of, or alongside, an answer | | `queryTitle` | string | Title of the generated query | | `sql` | string | SQL query Genie generated | | `queryDescription` | string | Plain-language description of the generated SQL | | `queryAttachmentId` | string | Attachment ID of the generated query, used to fetch or re-run its result | | `statementId` | string | SQL statement ID of the generated query | | `thoughts` | array | How Genie interpreted the question and built the SQL (Public Preview) | | ↳ `type` | string | Thought category (THOUGHT\_TYPE\_DESCRIPTION, THOUGHT\_TYPE\_UNDERSTANDING, THOUGHT\_TYPE\_DATA\_SOURCING, THOUGHT\_TYPE\_INSTRUCTIONS, THOUGHT\_TYPE\_STEPS) | | ↳ `content` | string | Markdown-formatted thought | | `suggestedQuestions` | array | Follow-up questions suggested by Genie | | `visualizations` | array | Charts Genie generated (only when visualization was requested) | | ↳ `attachmentId` | string | Visualization attachment ID, used to download the chart | | ↳ `title` | string | Chart title | | ↳ `queryAttachmentId` | string | Query attachment the chart was built from | | `error` | string | Why Genie failed to answer | | `errorType` | string | Genie error type | | `createdTimestamp` | number | When the message was created | | `totalChunks` | number | Number of result chunks | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `columns` | array | Column schema of the query result | | ↳ `name` | string | Column name | | ↳ `position` | number | Column position (0-based) | | ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | | `totalRows` | number | Total number of rows in the result | | `truncated` | boolean | Whether the result set was truncated | ### Databricks Genie Get Message [#databricks-genie-get-message] Get a Genie message's status and answer, including the generated SQL, visualizations, and suggested follow-up questions. #### Input [#input-41] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | #### Output [#output-41] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Genie conversation ID | | `messageId` | string | Genie message ID | | `status` | string | Message status (SUBMITTED, FETCHING\_METADATA, FILTERING\_CONTEXT, ASKING\_AI, PENDING\_WAREHOUSE, EXECUTING\_QUERY, COMPLETED, FAILED, CANCELLED, QUERY\_RESULT\_EXPIRED) | | `content` | string | The question that was asked | | `answer` | string | Genie's text answer or summary | | `followUpQuestion` | string | Clarifying question Genie asked instead of, or alongside, an answer | | `queryTitle` | string | Title of the generated query | | `sql` | string | SQL query Genie generated | | `queryDescription` | string | Plain-language description of the generated SQL | | `queryAttachmentId` | string | Attachment ID of the generated query, used to fetch or re-run its result | | `statementId` | string | SQL statement ID of the generated query | | `rowCount` | number | Number of rows the generated query returned | | `thoughts` | array | How Genie interpreted the question and built the SQL (Public Preview) | | ↳ `type` | string | Thought category (THOUGHT\_TYPE\_DESCRIPTION, THOUGHT\_TYPE\_UNDERSTANDING, THOUGHT\_TYPE\_DATA\_SOURCING, THOUGHT\_TYPE\_INSTRUCTIONS, THOUGHT\_TYPE\_STEPS) | | ↳ `content` | string | Markdown-formatted thought | | `suggestedQuestions` | array | Follow-up questions suggested by Genie | | `visualizations` | array | Charts Genie generated (only when visualization was requested) | | ↳ `attachmentId` | string | Visualization attachment ID, used to download the chart | | ↳ `title` | string | Chart title | | ↳ `queryAttachmentId` | string | Query attachment the chart was built from | | `error` | string | Why Genie failed to answer | | `errorType` | string | Genie error type | | `createdTimestamp` | number | When the message was created | ### Databricks Genie List Messages [#databricks-genie-list-messages] List the messages in a Genie conversation with their answers and generated SQL, for example to replay a conversation history. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `pageSize` | number | No | Maximum number of messages to return per page (default 20, max 100) | | `pageToken` | string | No | Pagination token from a previous response | #### Output [#output-42] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `messages` | array | Messages in the conversation | | ↳ `conversationId` | string | Genie conversation ID | | ↳ `messageId` | string | Genie message ID | | ↳ `status` | string | Message status (SUBMITTED, FETCHING\_METADATA, FILTERING\_CONTEXT, ASKING\_AI, PENDING\_WAREHOUSE, EXECUTING\_QUERY, COMPLETED, FAILED, CANCELLED, QUERY\_RESULT\_EXPIRED) | | ↳ `content` | string | The question that was asked | | ↳ `answer` | string | Genie's text answer or summary | | ↳ `followUpQuestion` | string | Clarifying question Genie asked instead of, or alongside, an answer | | ↳ `queryTitle` | string | Title of the generated query | | ↳ `sql` | string | SQL query Genie generated | | ↳ `queryDescription` | string | Plain-language description of the generated SQL | | ↳ `queryAttachmentId` | string | Attachment ID of the generated query, used to fetch or re-run its result | | ↳ `statementId` | string | SQL statement ID of the generated query | | ↳ `rowCount` | number | Number of rows the generated query returned | | ↳ `thoughts` | array | How Genie interpreted the question and built the SQL (Public Preview) | | ↳ `type` | string | Thought category (THOUGHT\_TYPE\_DESCRIPTION, THOUGHT\_TYPE\_UNDERSTANDING, THOUGHT\_TYPE\_DATA\_SOURCING, THOUGHT\_TYPE\_INSTRUCTIONS, THOUGHT\_TYPE\_STEPS) | | ↳ `content` | string | Markdown-formatted thought | | ↳ `suggestedQuestions` | array | Follow-up questions suggested by Genie | | ↳ `visualizations` | array | Charts Genie generated (only when visualization was requested) | | ↳ `attachmentId` | string | Visualization attachment ID, used to download the chart | | ↳ `title` | string | Chart title | | ↳ `queryAttachmentId` | string | Query attachment the chart was built from | | ↳ `error` | string | Why Genie failed to answer | | ↳ `errorType` | string | Genie error type | | ↳ `createdTimestamp` | number | When the message was created | | `nextPageToken` | string | Token for the next page of results | ### Databricks Genie Get Query Result [#databricks-genie-get-query-result] Get the rows returned by the SQL query Genie generated for a message. Available once the message is EXECUTING\_QUERY or COMPLETED. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | | `attachmentId` | string | Yes | The query attachment ID (queryAttachmentId from Ask Genie or Get Genie Message) | #### Output [#output-43] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------ | | `totalChunks` | number | Number of result chunks | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `rowCount` | number | Number of rows in this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `columns` | array | Column schema of the query result | | ↳ `name` | string | Column name | | ↳ `position` | number | Column position (0-based) | | ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | | `totalRows` | number | Total number of rows in the result | | `truncated` | boolean | Whether the result set was truncated | | `statementId` | string | SQL statement ID of the query | | `status` | string | Statement status (PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, CLOSED) | ### Databricks Genie Execute Query [#databricks-genie-execute-query] Re-run the SQL query Genie generated for a message. Use this when the message's query result has expired (status QUERY\_RESULT\_EXPIRED). If the returned status is PENDING or RUNNING, fetch the rows afterwards with Get Genie Query Result. #### Input [#input-44] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | | `attachmentId` | string | Yes | The query attachment ID (queryAttachmentId from Ask Genie or Get Genie Message) | #### Output [#output-44] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------ | | `totalChunks` | number | Number of result chunks | | `chunkIndex` | number | Index of this result chunk | | `rowOffset` | number | Starting row offset of this chunk | | `rowCount` | number | Number of rows in this chunk | | `nextChunkIndex` | number | Next chunk to retrieve with Get Statement Chunk; null on the final chunk | | `nextChunkInternalLink` | string | Workspace-relative path to the next result chunk | | `columns` | array | Column schema of the query result | | ↳ `name` | string | Column name | | ↳ `position` | number | Column position (0-based) | | ↳ `typeName` | string | Column type (STRING, INT, LONG, DOUBLE, BOOLEAN, TIMESTAMP, DATE, DECIMAL, etc.) | | `data` | array | Result rows as a 2D array; each non-null value is a string and null values stay null | | `totalRows` | number | Total number of rows in the result | | `truncated` | boolean | Whether the result set was truncated | | `statementId` | string | SQL statement ID of the query | | `status` | string | Statement status (PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, CLOSED) | ### Databricks Genie Download Visualization [#databricks-genie-download-visualization] Download a chart Genie generated as a PNG image, for example to post it to Slack. The message must be COMPLETED and asked with visualization enabled. Not supported on Private Link workspaces. #### Input [#input-45] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | | `attachmentId` | string | Yes | The visualization attachment ID (visualizations\[].attachmentId) | #### Output [#output-45] | Parameter | Type | Description | | --------- | ---- | ---------------------------------------------------- | | `file` | file | Rendered chart image (PNG) stored in execution files | ### Databricks Genie Send Feedback [#databricks-genie-send-feedback] Rate a Genie answer as positive or negative, with an optional comment. Space authors use this feedback to improve the space's instructions. #### Input [#input-46] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | | `rating` | string | Yes | Feedback rating: POSITIVE, NEGATIVE, or NONE (clears a previous rating) | | `comment` | string | No | Optional feedback comment (max 5000 characters) | #### Output [#output-46] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the feedback was recorded | ### Databricks Genie Delete Message [#databricks-genie-delete-message] Delete a message from a Genie conversation. #### Input [#input-47] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation | | `messageId` | string | Yes | The ID of the Genie message | #### Output [#output-47] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the message was deleted | ### Databricks Genie List Conversations [#databricks-genie-list-conversations] List conversations in a Genie space, including whether each is a chat-mode or agent-mode conversation. By default only your own conversations are returned. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `includeAll` | boolean | No | Include every user's conversations in the space (requires CAN MANAGE on the space) | | `pageSize` | number | No | Maximum number of conversations to return per page (default 20, max 100) | | `pageToken` | string | No | Pagination token from a previous response | #### Output [#output-48] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------------------------------------------- | | `conversations` | array | Conversations in the Genie space | | ↳ `conversationId` | string | Conversation ID | | ↳ `title` | string | Conversation title | | ↳ `createdTimestamp` | number | When the conversation was created | | ↳ `agentType` | string | Conversation mode (GENIE\_CONVERSATION\_TYPE\_CHAT or GENIE\_CONVERSATION\_TYPE\_AGENT) | | `nextPageToken` | string | Token for the next page of results | ### Databricks Genie Delete Conversation [#databricks-genie-delete-conversation] Delete a Genie conversation you no longer need. #### Input [#input-49] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | The ID of the Genie conversation to delete | #### Output [#output-49] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the conversation was deleted | ### Databricks Genie Agent Ask [#databricks-genie-agent-ask] Ask a Genie agent a question in agent mode, where Genie plans multi-step research, runs several SQL queries, and writes a report with citations. Waits for the final report. Starts a new agent-mode conversation, or continues one when a conversation ID is given. Agent mode is in preview and must be enabled on the workspace. #### Input [#input-50] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------ | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space (the Genie agent ID) | | `content` | string | Yes | The question to ask the Genie agent | | `conversationId` | string | No | Continue this agent-mode conversation. Omit to start a new conversation. | | `enableVisualization` | boolean | No | Ask the agent to also generate charts where they fit | #### Output [#output-50] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `responseId` | string | Agent response ID | | `conversationId` | string | Agent-mode conversation ID; pass it back to ask a follow-up | | `status` | string | Response status (completed) | | `report` | string | The agent's final report, with citation links | | `queries` | array | SQL queries the agent ran | | ↳ `callId` | string | Function call ID | | ↳ `title` | string | Query title | | ↳ `sql` | string | SQL the agent ran | | `items` | array | Every output item: reasoning, SQL calls, query results, and messages | | ↳ `type` | string | Item type (message, reasoning, function\_call, function\_call\_output) | | ↳ `id` | string | Item ID | | ↳ `status` | string | Item status | | ↳ `role` | string | Message role (user, assistant, or system) for message items | | ↳ `text` | string | Text of a message or reasoning item | | ↳ `callId` | string | Pairs a function\_call with its function\_call\_output | | ↳ `name` | string | Function name (execute\_sql) | | ↳ `arguments` | string | Function call arguments as a JSON string (title and sql) | | ↳ `output` | string | Query result: the query title followed by a Markdown table | | `createdAt` | number | When the response was created (Unix epoch seconds) | | `error` | string | System error message the agent reported alongside its report | ### Databricks Genie Agent List Items [#databricks-genie-agent-list-items] List an agent-mode conversation's full history in order: questions, reasoning, SQL calls, query results, and reports. Agent mode is in preview and must be enabled on the workspace. #### Input [#input-51] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space (the Genie agent ID) | | `conversationId` | string | Yes | The ID of the agent-mode conversation | | `limit` | number | No | Maximum number of items to return (1-100, default 100) | | `after` | string | No | Pagination cursor: the lastId from a previous response | | `order` | string | No | Sort order: asc (oldest first, default) or desc (newest first) | #### Output [#output-51] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------------------------------------------------- | | `items` | array | Conversation items in order; user questions are message items whose ID ends in \_input | | ↳ `type` | string | Item type (message, reasoning, function\_call, function\_call\_output) | | ↳ `id` | string | Item ID | | ↳ `status` | string | Item status | | ↳ `role` | string | Message role (user, assistant, or system) for message items | | ↳ `text` | string | Text of a message or reasoning item | | ↳ `callId` | string | Pairs a function\_call with its function\_call\_output | | ↳ `name` | string | Function name (execute\_sql) | | ↳ `arguments` | string | Function call arguments as a JSON string (title and sql) | | ↳ `output` | string | Query result: the query title followed by a Markdown table | | `firstId` | string | ID of the first item in the page | | `lastId` | string | ID of the last item in the page; pass it as After for the next page | | `hasMore` | boolean | Whether more items follow this page | | `status` | string | Status of the latest response in the conversation | ### Databricks Genie Agent Cancel [#databricks-genie-agent-cancel] Cancel an in-flight Genie agent response using the response ID returned by the agent stream. #### Input [#input-52] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `host` | string | Yes | Databricks workspace host (e.g., dbc-abc123.cloud.databricks.com) | | `apiKey` | string | Yes | Databricks Personal Access Token | | `spaceId` | string | Yes | The ID of the Genie space | | `conversationId` | string | Yes | Agent conversation identifier | | `responseId` | string | Yes | Response ID from the response.created stream event | #### Output [#output-52] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Genie conversation ID | | `messageId` | string | Genie message ID | | `status` | string | Message status (SUBMITTED, FETCHING\_METADATA, FILTERING\_CONTEXT, ASKING\_AI, PENDING\_WAREHOUSE, EXECUTING\_QUERY, COMPLETED, FAILED, CANCELLED, QUERY\_RESULT\_EXPIRED) | | `content` | string | The question that was asked | | `answer` | string | Genie's text answer or summary | | `followUpQuestion` | string | Clarifying question Genie asked instead of, or alongside, an answer | | `queryTitle` | string | Title of the generated query | | `sql` | string | SQL query Genie generated | | `queryDescription` | string | Plain-language description of the generated SQL | | `queryAttachmentId` | string | Attachment ID of the generated query, used to fetch or re-run its result | | `statementId` | string | SQL statement ID of the generated query | | `rowCount` | number | Number of rows the generated query returned | | `thoughts` | array | How Genie interpreted the question and built the SQL (Public Preview) | | ↳ `type` | string | Thought category (THOUGHT\_TYPE\_DESCRIPTION, THOUGHT\_TYPE\_UNDERSTANDING, THOUGHT\_TYPE\_DATA\_SOURCING, THOUGHT\_TYPE\_INSTRUCTIONS, THOUGHT\_TYPE\_STEPS) | | ↳ `content` | string | Markdown-formatted thought | | `suggestedQuestions` | array | Follow-up questions suggested by Genie | | `visualizations` | array | Charts Genie generated (only when visualization was requested) | | ↳ `attachmentId` | string | Visualization attachment ID, used to download the chart | | ↳ `title` | string | Chart title | | ↳ `queryAttachmentId` | string | Query attachment the chart was built from | | `error` | string | Why Genie failed to answer | | `errorType` | string | Genie error type | | `createdTimestamp` | number | When the message was created | --- # Datadog (/integrations/datadog) {/* MANUAL-CONTENT-START:intro */} Use [Datadog](https://datadoghq.com/) to send or query telemetry, manage monitors and incidents, and inspect observability data from a workflow. The actions below also cover dashboards, SLOs, synthetic tests, and security signals. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more. ## Actions [#actions] ### Datadog Submit Metrics [#datadog-submit-metrics] Submit custom metrics to Datadog. Use for tracking application performance, business metrics, or custom monitoring data. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `series` | string | Yes | JSON array of metric series to submit. Each entry needs "metric" and "points" (objects with "timestamp" in POSIX seconds and a numeric "value"); timestamps cannot be more than 10 minutes in the future or 1 hour in the past. Optional per entry: "type" ("count", "rate", or "gauge"; omit to let Datadog infer), "interval" in seconds (required by Datadog for count and rate), "tags", "unit", "sourceTypeName", and "resources". | | `apiKey` | string | Yes | Datadog API key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the metrics were submitted successfully | | `errors` | array | Any errors that occurred during submission | ### Datadog Query Timeseries [#datadog-query-timeseries] Query metric timeseries data from Datadog. Use for analyzing trends, creating reports, or retrieving metric values. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Datadog metrics query (e.g., "avg:system.cpu.user\{\*}", "sum:nginx.requests\{env:prod}.as\_count()") | | `from` | number | Yes | Start time as Unix timestamp in seconds (e.g., 1705320000) | | `to` | number | Yes | End time as Unix timestamp in seconds (e.g., 1705323600) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------------------- | | `series` | array | Array of timeseries data with metric name, tags, and data points | | ↳ `metric` | string | Metric name | | ↳ `tags` | array | Tags attached to the series | | ↳ `points` | array | Data points | | ↳ `timestamp` | number | Point timestamp (Unix seconds) | | ↳ `value` | number | Point value | | `status` | string | Query status | ### Datadog Create Event [#datadog-create-event] Post an event to the Datadog event stream. Use for deployment notifications, alerts, or any significant occurrences. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | string | Yes | Event title | | `text` | string | Yes | Event body/description. Supports markdown. | | `alertType` | string | No | Alert type: error, warning, info, success, user\_update, recommendation, or snapshot | | `priority` | string | No | Event priority: normal or low | | `host` | string | No | Host name to associate with this event (e.g., "web-server-01", "prod-api-1") | | `tags` | string | No | Comma-separated list of tags (e.g., "env:production,service:api", "team:backend,priority:high") | | `aggregationKey` | string | No | Key to aggregate events together | | `sourceTypeName` | string | No | Source type name for the event | | `dateHappened` | number | No | Unix timestamp in seconds when the event occurred (e.g., 1705320000, defaults to now). Datadog limits this to events no older than 18 hours. | | `apiKey` | string | Yes | Datadog API key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `event` | object | The created event details | | ↳ `id` | number | Event ID | | ↳ `title` | string | Event title | | ↳ `text` | string | Event text | | ↳ `date_happened` | number | Unix timestamp when event occurred | | ↳ `priority` | string | Event priority | | ↳ `alert_type` | string | Alert type | | ↳ `host` | string | Associated host | | ↳ `tags` | array | Event tags | | ↳ `url` | string | URL to view the event in Datadog | ### Datadog Create Monitor [#datadog-create-monitor] Create a new monitor/alert in Datadog. Monitors can track metrics, service checks, events, and more. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | Monitor name | | `type` | string | Yes | Monitor type: metric alert, service check, event alert, process alert, log alert, query alert, composite, synthetics alert, slo alert | | `query` | string | Yes | Monitor query (e.g., "avg(last\_5m):avg:system.cpu.idle\{\*} \< 20", "logs("status:error").index("main").rollup("count").last("5m") > 100") | | `message` | string | No | Message to include with notifications. Can include @-mentions and markdown. | | `tags` | string | No | Comma-separated list of tags | | `priority` | number | No | Monitor priority (1-5, where 1 is highest) | | `options` | string | No | JSON string of monitor options (thresholds, notify\_no\_data, renotify\_interval, etc.) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------- | | `monitor` | object | The created monitor details | | ↳ `id` | number | Monitor ID | | ↳ `name` | string | Monitor name | | ↳ `type` | string | Monitor type | | ↳ `query` | string | Monitor query | | ↳ `message` | string | Notification message | | ↳ `tags` | array | Monitor tags | | ↳ `priority` | number | Monitor priority | | ↳ `overall_state` | string | Current monitor state | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `options` | json | Monitor options (thresholds, notification settings) | | ↳ `creator` | json | Monitor creator (email, handle, name) | ### Datadog Get Monitor [#datadog-get-monitor] Retrieve details of a specific monitor by ID. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `monitorId` | string | Yes | The ID of the monitor to retrieve (e.g., "12345678") | | `groupStates` | string | No | Comma-separated group states to include. Valid values are "all", "alert", "warn", and "no data" (e.g., "alert,warn"). | | `withDowntimes` | boolean | No | Include downtime data with the monitor | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------- | | `monitor` | object | The monitor details | | ↳ `id` | number | Monitor ID | | ↳ `name` | string | Monitor name | | ↳ `type` | string | Monitor type | | ↳ `query` | string | Monitor query | | ↳ `message` | string | Notification message | | ↳ `tags` | array | Monitor tags | | ↳ `priority` | number | Monitor priority | | ↳ `overall_state` | string | Current monitor state | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `options` | json | Monitor options (thresholds, notification settings) | | ↳ `creator` | json | Monitor creator (email, handle, name) | ### Datadog List Monitors [#datadog-list-monitors] List all monitors in Datadog with optional filtering by name, tags, or state. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `groupStates` | string | No | Comma-separated group states to filter by. Valid values are "all", "alert", "warn", and "no data" (e.g., "alert,warn"). | | `name` | string | No | Filter monitors by name with partial match (e.g., "CPU", "Production") | | `tags` | string | No | Comma-separated list of tags to filter by (e.g., "env:prod,team:backend") | | `monitorTags` | string | No | Comma-separated list of monitor tags to filter by (e.g., "service:api,priority:high") | | `withDowntimes` | boolean | No | Include downtime data with monitors | | `page` | number | No | Page to start paginating from (0-indexed, e.g., 0, 1, 2). Datadog returns every monitor in the org without pagination when this is not specified, so set it to bound the response. Setting Page Size alone implies page 0. | | `pageSize` | number | No | Number of monitors per page (e.g., 50, max: 1000). Datadog only applies this when a page is specified — otherwise it returns all monitors with no page size limit — so setting this alone sends page 0. With a page but no page size, Datadog defaults to 100. | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------- | | `monitors` | array | List of monitors | | ↳ `id` | number | Monitor ID | | ↳ `name` | string | Monitor name | | ↳ `type` | string | Monitor type | | ↳ `query` | string | Monitor query | | ↳ `message` | string | Notification message | | ↳ `overall_state` | string | Current state | | ↳ `tags` | array | Tags | | ↳ `priority` | number | Monitor priority | | ↳ `options` | json | Monitor options (thresholds, notification settings) | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `creator` | json | Monitor creator (email, handle, name) | ### Datadog Mute Monitor [#datadog-mute-monitor] Mute a monitor to temporarily suppress its notifications. Use Unmute Monitor to reverse it, or schedule a downtime instead when you want a planned, auditable maintenance window. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `monitorId` | string | Yes | The ID of the monitor to mute (e.g., "12345678") | | `scope` | string | No | Scope to mute (e.g., "host:myhost", "env:prod"). If not specified, mutes all scopes. | | `end` | number | No | Unix timestamp in seconds when the mute should end (e.g., 1705323600). If not specified, the monitor stays muted until it is unmuted. | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the monitor was successfully muted | | `monitorId` | number | ID of the muted monitor | | `name` | string | Name of the muted monitor | | `overallState` | string | Monitor state after muting | ### Datadog Unmute Monitor [#datadog-unmute-monitor] Unmute a monitor so it resumes sending notifications. Reverses Mute Monitor, either for one scope or for every scope at once. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `monitorId` | string | Yes | The ID of the monitor to unmute (e.g., "12345678") | | `scope` | string | No | Scope to unmute (e.g., "host:myhost"). Leave blank to unmute the monitor itself rather than a single scope. | | `allScopes` | boolean | No | Clear the mute settings for every scope on this monitor | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the monitor was successfully unmuted | | `monitorId` | number | ID of the unmuted monitor | | `name` | string | Name of the unmuted monitor | | `overallState` | string | Monitor state after unmuting | ### Datadog Query Logs [#datadog-query-logs] Search and retrieve logs from Datadog. Use for troubleshooting, analysis, or monitoring. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Log search query using Datadog query syntax (e.g., "service:web-app status:error", "host:prod-\* @http.status\_code:500") | | `from` | string | Yes | Start time in ISO-8601 format or relative time (e.g., "now-1h", "now-15m", "2024-01-15T10:00:00Z") | | `to` | string | Yes | End time in ISO-8601 format or relative time (e.g., "now", "now-5m", "2024-01-15T12:00:00Z") | | `limit` | number | No | Maximum number of logs to return (e.g., 50, 100, max: 1000) | | `cursor` | string | No | Pagination cursor from a previous call, taken from its nextLogId output. Omit for the first page. | | `sort` | string | No | Sort order: "timestamp" for oldest first, "-timestamp" for newest first | | `indexes` | string | No | Comma-separated list of log indexes to search | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------ | ------------------------ | | `logs` | array | List of log entries | | ↳ `id` | string | Log ID | | ↳ `content` | object | Log content | | ↳ `timestamp` | string | Log timestamp | | ↳ `host` | string | Host name | | ↳ `service` | string | Service name | | ↳ `message` | string | Log message | | ↳ `status` | string | Log status/level | | ↳ `attributes` | json | Free-form log attributes | | ↳ `tags` | array | Log tags | | `nextLogId` | string | Cursor for pagination | ### Datadog Send Logs [#datadog-send-logs] Send log entries to Datadog for centralized logging and analysis. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `logs` | string | Yes | JSON array of log entries. Each entry should have message and optionally ddsource, ddtags, hostname, service. Agent Serve fills in ddsource="custom" when an entry omits it — that is an Agent Serve default, not a Datadog one; set ddsource yourself to have Datadog apply the matching integration log pipeline. | | `apiKey` | string | Yes | Datadog API key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether the logs were sent successfully | ### Datadog Create Downtime [#datadog-create-downtime] Schedule a downtime to suppress monitor notifications during maintenance windows. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------- | | `scope` | string | Yes | Scope to apply downtime to (e.g., "host:myhost", "env:production", or "\*" for all) | | `message` | string | No | Message to display during downtime | | `start` | number | No | Unix timestamp for downtime start in seconds (e.g., 1705320000, defaults to now) | | `end` | number | No | Unix timestamp for downtime end in seconds (e.g., 1705323600) | | `timezone` | string | No | Timezone for the downtime (e.g., "America/New\_York", "UTC", "Europe/London") | | `monitorId` | string | No | Specific monitor ID to mute (e.g., "12345678") | | `monitorTags` | string | No | Comma-separated monitor tags to match (e.g., "team:backend,priority:high") | | `muteFirstRecoveryNotification` | boolean | No | Mute the first recovery notification | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------- | | `downtime` | object | The created downtime details | | ↳ `id` | string | Downtime UUID | | ↳ `scope` | array | Downtime scope | | ↳ `message` | string | Downtime message | | ↳ `start` | number | Start time (Unix timestamp) | | ↳ `end` | number | End time (Unix timestamp) | | ↳ `timezone` | string | Display timezone for the downtime | | ↳ `active` | boolean | Whether downtime is currently active | | ↳ `created` | number | Creation time (Unix timestamp) | | ↳ `modified` | number | Last modification time (Unix timestamp) | ### Datadog List Downtimes [#datadog-list-downtimes] List all scheduled downtimes in Datadog. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `currentOnly` | boolean | No | Only return currently active downtimes | | `limit` | number | No | Number of downtimes to return per page. Datadog defaults to 30 and declares no maximum; keep this at 100 or below to stay within the bound Agent Serve recommends. | | `offset` | number | No | Index of the first downtime to return (e.g., 0, 30, 60) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------------------------- | | `totalCount` | number | Total number of downtimes matching the filter, across all pages | | `downtimes` | array | List of downtimes | | ↳ `id` | string | Downtime UUID | | ↳ `scope` | array | Downtime scope | | ↳ `message` | string | Downtime message | | ↳ `start` | number | Start time (Unix timestamp) | | ↳ `end` | number | End time (Unix timestamp) | | ↳ `timezone` | string | Display timezone for the downtime | | ↳ `active` | boolean | Whether downtime is currently active | | ↳ `created` | number | Creation time (Unix timestamp) | | ↳ `modified` | number | Last modification time (Unix timestamp) | ### Datadog Cancel Downtime [#datadog-cancel-downtime] Cancel a scheduled downtime. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `downtimeId` | string | Yes | The ID of the downtime to cancel (e.g., "abc123def456") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the downtime was successfully canceled | ### Datadog List Incidents [#datadog-list-incidents] List incidents for the organization. Requires the Incident Management `incident_read` permission; the Incidents API is in public beta. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------- | | `include` | string | No | Comma-separated related resources to include: "users" and/or "attachments" | | `pageSize` | number | No | Number of incidents to return per page (default: 10, max: 100) | | `pageOffset` | number | No | Index of the first incident to return (e.g., 0, 10, 20) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-13] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------ | | `incidents` | array | List of incidents | | ↳ `id` | string | Incident UUID | | ↳ `type` | string | Resource type (incidents) | | ↳ `attributes` | object | Incident attributes | | ↳ `title` | string | Incident title | | ↳ `state` | string | Incident state | | ↳ `severity` | string | Incident severity | | ↳ `public_id` | number | Incremental public incident ID | | ↳ `customer_impacted` | boolean | Whether customers were impacted | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `resolved` | string | Resolution timestamp | | `nextOffset` | number | Offset to use for the next page of results | ### Datadog Get Incident [#datadog-get-incident] Get the details of a single incident by ID. Requires the Incident Management `incident_read` permission; the Incidents API is in public beta. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------- | | `incidentId` | string | Yes | The UUID of the incident (e.g., "00000000-0000-0000-1234-000000000000") | | `include` | string | No | Comma-separated related resources to include (e.g., "users", "attachments") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-14] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------- | | `incident` | object | The incident | | ↳ `id` | string | Incident UUID | | ↳ `type` | string | Resource type (incidents) | | ↳ `attributes` | object | Incident attributes | | ↳ `title` | string | Incident title | | ↳ `state` | string | Incident state | | ↳ `severity` | string | Incident severity | | ↳ `public_id` | number | Incremental public incident ID | | ↳ `customer_impacted` | boolean | Whether customers were impacted | | ↳ `customer_impact_scope` | string | Summary of the customer impact | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `resolved` | string | Resolution timestamp | | ↳ `time_to_resolve` | number | Seconds from creation to resolution | ### Datadog Create Incident [#datadog-create-incident] Declare a new incident. Requires the Incident Management `incident_write` permission; the Incidents API is in public beta. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `title` | string | Yes | Title of the incident summarizing what happened | | `customerImpacted` | boolean | Yes | Whether the incident caused customer impact | | `severity` | string | No | Incident severity: UNKNOWN, SEV-0, SEV-1, SEV-2, SEV-3, SEV-4, or SEV-5 | | `customerImpactScope` | string | No | Summary of the customer impact. Required when customerImpacted is true | | `incidentTypeUuid` | string | No | UUID of the incident type. The default incident type is used when omitted | | `isTest` | boolean | No | Whether this is a test incident | | `fields` | string | No | JSON object of user-defined incident fields, e.g. \{"severity": \{"type": "dropdown", "value": "SEV-2"}} | | `notificationHandles` | string | No | Comma-separated handles to notify on creation (e.g., "@slack-incidents,@[user@example.com](mailto:user@example.com)") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------- | | `incident` | object | The created incident | | ↳ `id` | string | Incident UUID | | ↳ `type` | string | Resource type (incidents) | | ↳ `attributes` | object | Incident attributes | | ↳ `title` | string | Incident title | | ↳ `public_id` | number | Incremental public incident ID | | ↳ `customer_impacted` | boolean | Whether customers were impacted | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | ### Datadog Update Incident [#datadog-update-incident] Partially update an existing incident. Requires the Incident Management `incident_write` permission; the Incidents API is in public beta. #### Input [#input-16] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `incidentId` | string | Yes | The UUID of the incident to update | | `title` | string | No | New title for the incident | | `severity` | string | No | Incident severity: UNKNOWN, SEV-0, SEV-1, SEV-2, SEV-3, SEV-4, or SEV-5 | | `customerImpacted` | boolean | No | Whether the incident caused customer impact | | `customerImpactScope` | string | No | Summary of the customer impact | | `customerImpactStart` | string | No | ISO-8601 timestamp when customers began being impacted | | `customerImpactEnd` | string | No | ISO-8601 timestamp when customers were no longer impacted | | `detected` | string | No | ISO-8601 timestamp when the incident was detected | | `fields` | string | No | JSON object of user-defined incident fields to update, e.g. \{"state": \{"type": "dropdown", "value": "resolved"}} | | `notificationHandles` | string | No | Comma-separated handles to notify about the update | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-16] | Parameter | Type | Description | | -------------- | ------ | --------------------------- | | `incident` | object | The updated incident | | ↳ `id` | string | Incident UUID | | ↳ `type` | string | Resource type (incidents) | | ↳ `attributes` | object | Incident attributes | | ↳ `title` | string | Incident title | | ↳ `state` | string | Incident state | | ↳ `severity` | string | Incident severity | | ↳ `modified` | string | Last modification timestamp | | ↳ `resolved` | string | Resolution timestamp | ### Datadog Add Incident Todo [#datadog-add-incident-todo] Add a follow-up task (todo) to an incident. Requires the Incident Management `incident_write` permission; the Incidents API is in public beta. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `incidentId` | string | Yes | The UUID of the incident the todo belongs to | | `content` | string | Yes | The follow-up task content (e.g., "Restore lost data") | | `assignees` | string | Yes | Comma-separated assignee handles (e.g., "@[jane@example.com](mailto:jane@example.com),@on-call"). Datadog requires at least one assignee | | `dueDate` | string | No | ISO-8601 timestamp for when the todo should be completed | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-17] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `todo` | object | The created incident todo | | ↳ `id` | string | Todo UUID | | ↳ `type` | string | Resource type (incident\_todos) | | ↳ `attributes` | object | Todo attributes | | ↳ `content` | string | Task content | | ↳ `assignees` | array | Assignee handles | | ↳ `due_date` | string | Due date | | ↳ `completed` | string | Completion timestamp | | ↳ `incident_id` | string | UUID of the parent incident | ### Datadog List SLOs [#datadog-list-slos] List service level objectives, optionally filtered by IDs, name, tags, or underlying metrics query. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `ids` | string | No | Comma-separated SLO IDs to fetch (e.g., "id1,id2") | | `query` | string | No | Filter results by SLO name (e.g., "checkout latency") | | `tagsQuery` | string | No | Filter results by a single SLO tag (e.g., "env:prod") | | `metricsQuery` | string | No | Filter results by SLO numerator and denominator (e.g., "aws.elb.request\_count") | | `limit` | number | No | Number of SLOs to return (default: 1000) | | `offset` | number | No | Offset of the first SLO returned (e.g., 0, 50) | | `isDeleted` | boolean | No | Return only deleted SLOs | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-18] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------- | | `slos` | array | List of service level objectives | | ↳ `id` | string | SLO ID | | ↳ `name` | string | SLO name | | ↳ `type` | string | SLO type: metric, monitor, or time\_slice | | ↳ `description` | string | SLO description | | ↳ `tags` | array | SLO tags | | ↳ `thresholds` | array | Timeframe targets and warnings | | ↳ `target_threshold` | number | Primary target threshold | | ↳ `warning_threshold` | number | Primary warning threshold | | ↳ `timeframe` | string | Primary timeframe | | ↳ `monitor_ids` | array | Monitor IDs for monitor-based SLOs | | ↳ `created_at` | number | Creation timestamp (Unix seconds) | | ↳ `modified_at` | number | Modification timestamp (Unix seconds) | ### Datadog Get SLO [#datadog-get-slo] Get the configuration of a single service level objective by ID. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------- | | `sloId` | string | Yes | The ID of the service level objective | | `withConfiguredAlertIds` | boolean | No | Include the IDs of SLO monitors that reference this SLO | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-19] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------------- | | `slo` | object | The service level objective | | ↳ `id` | string | SLO ID | | ↳ `name` | string | SLO name | | ↳ `type` | string | SLO type: metric, monitor, or time\_slice | | ↳ `description` | string | SLO description | | ↳ `tags` | array | SLO tags | | ↳ `thresholds` | array | Timeframe targets and warnings | | ↳ `target_threshold` | number | Primary target threshold | | ↳ `warning_threshold` | number | Primary warning threshold | | ↳ `timeframe` | string | Primary timeframe | | ↳ `monitor_ids` | array | Monitor IDs for monitor-based SLOs | | ↳ `groups` | array | Monitor groups narrowing the SLO scope | | ↳ `configured_alert_ids` | array | SLO monitor IDs referencing this SLO | | ↳ `created_at` | number | Creation timestamp (Unix seconds) | | ↳ `modified_at` | number | Modification timestamp (Unix seconds) | ### Datadog Create SLO [#datadog-create-slo] Create a service level objective from a metric query, monitors, or a time-slice condition. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | Name of the SLO (e.g., "Checkout API availability") | | `type` | string | Yes | SLO type: "metric" (supply query) or "monitor" (supply monitorIds). Time-slice SLOs are not supported here because they need an SLI specification this tool does not send. | | `thresholds` | string | Yes | JSON array of thresholds, e.g. \[\{"timeframe": "30d", "target": 99.9, "warning": 99.95}] | | `description` | string | No | Description of the SLO | | `tags` | string | No | Comma-separated tags (e.g., "env:prod,team:core") | | `query` | string | No | For metric SLOs, JSON with numerator and denominator, e.g. \{"numerator": "sum:requests\{status:ok}.as\_count()", "denominator": "sum:requests\{\*}.as\_count()"} | | `monitorIds` | string | No | For monitor SLOs, comma-separated monitor IDs (e.g., "123,456") | | `groups` | string | No | For monitor SLOs with a single monitor, comma-separated monitor groups (e.g., "env:prod,role:mysql") | | `targetThreshold` | number | No | Primary target threshold (e.g., 99.9) | | `warningThreshold` | number | No | Primary warning threshold, must be greater than the target (e.g., 99.95) | | `timeframe` | string | No | Primary timeframe: "7d", "30d", or "90d" | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `slo` | object | The created service level objective | | ↳ `id` | string | SLO ID | | ↳ `name` | string | SLO name | | ↳ `type` | string | SLO type | | ↳ `description` | string | SLO description | | ↳ `tags` | array | SLO tags | | ↳ `thresholds` | array | Timeframe targets and warnings | | ↳ `created_at` | number | Creation timestamp (Unix seconds) | | ↳ `modified_at` | number | Modification timestamp (Unix seconds) | ### Datadog Update SLO [#datadog-update-slo] Update a service level objective. Reads the current SLO first and applies only the fields you supply, so anything left blank keeps its stored value. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sloId` | string | Yes | The ID of the service level objective to update | | `name` | string | No | New name for the SLO. Leave blank to keep the current name. | | `type` | string | No | SLO type: "metric" or "monitor". Leave blank to keep the current type. Changing type requires supplying the matching query or monitorIds. | | `thresholds` | string | No | JSON array of thresholds replacing the stored ones, e.g. \[\{"timeframe": "30d", "target": 99.9, "warning": 99.95}]. Leave blank to keep the current thresholds. | | `description` | string | No | Description of the SLO | | `tags` | string | No | Comma-separated tags (e.g., "env:prod,team:core") | | `query` | string | No | For metric SLOs, JSON with numerator and denominator, e.g. \{"numerator": "sum:requests\{status:ok}.as\_count()", "denominator": "sum:requests\{\*}.as\_count()"} | | `monitorIds` | string | No | For monitor SLOs, comma-separated monitor IDs (e.g., "123,456") | | `groups` | string | No | Comma-separated monitor groups (e.g., "env:prod,role:mysql") | | `targetThreshold` | number | No | Primary target threshold (e.g., 99.9) | | `warningThreshold` | number | No | Primary warning threshold, must be greater than the target (e.g., 99.95) | | `timeframe` | string | No | Primary timeframe: "7d", "30d", or "90d" | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `slo` | object | The updated service level objective | | ↳ `id` | string | SLO ID | | ↳ `name` | string | SLO name | | ↳ `type` | string | SLO type | | ↳ `description` | string | SLO description | | ↳ `tags` | array | SLO tags | | ↳ `thresholds` | array | Timeframe targets and warnings | | ↳ `modified_at` | number | Modification timestamp (Unix seconds) | ### Datadog Delete SLO [#datadog-delete-slo] Permanently delete a service level objective. Datadog returns a conflict when the SLO is still referenced by a dashboard. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------- | | `sloId` | string | Yes | The ID of the service level objective to delete | | `force` | boolean | No | Delete even when the SLO is referenced by other resources | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-22] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------- | | `success` | boolean | Whether the SLO was deleted | | `deletedIds` | array | IDs of the deleted service level objectives | ### Datadog Get SLO History [#datadog-get-slo-history] Get an SLO’s history over a time window, including the overall SLI value and remaining error budget. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `sloId` | string | Yes | The ID of the service level objective | | `fromTs` | number | Yes | Start of the query window as a Unix timestamp in seconds | | `toTs` | number | Yes | End of the query window as a Unix timestamp in seconds | | `target` | number | No | SLO target between 0 and 100. When supplied, the response includes the remaining error budget for a custom timeframe | | `applyCorrection` | boolean | No | Whether to apply SLO corrections (defaults to true) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-23] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------- | | `history` | object | SLO history for the requested window | | ↳ `from_ts` | number | Window start (Unix seconds) | | ↳ `to_ts` | number | Window end (Unix seconds) | | ↳ `type` | string | SLO type | | ↳ `overall` | object | Overall SLI data for the window | | ↳ `sli_value` | number | SLI value over the window | | ↳ `span_precision` | number | Decimal precision of the SLI value | | ↳ `error_budget_remaining` | object | Remaining error budget keyed by timeframe | | ↳ `groups` | array | Per-group SLI data for grouped SLOs | | ↳ `monitors` | array | Per-monitor SLI data for multi-monitor SLOs | | ↳ `thresholds` | object | Thresholds keyed by timeframe | | `sliValue` | number | Overall SLI value over the window | ### Datadog List Dashboards [#datadog-list-dashboards] List custom created or cloned dashboards. Datadog preset dashboards are not returned. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------- | | `filterShared` | boolean | No | Return only shared dashboards | | `filterDeleted` | boolean | No | Return only deleted dashboards. Incompatible with filterShared | | `count` | number | No | Maximum number of dashboards to return (default: 100) | | `start` | number | No | Offset of the first dashboard returned (e.g., 0, 100) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-24] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------- | | `dashboards` | array | List of dashboard summaries | | ↳ `id` | string | Dashboard ID | | ↳ `title` | string | Dashboard title | | ↳ `description` | string | Dashboard description | | ↳ `layout_type` | string | Layout type: ordered or free | | ↳ `url` | string | Dashboard URL path | | ↳ `author_handle` | string | Handle of the dashboard author | | ↳ `created_at` | string | Creation timestamp | | ↳ `modified_at` | string | Modification timestamp | | ↳ `is_read_only` | boolean | Whether the dashboard is read-only | ### Datadog Get Dashboard [#datadog-get-dashboard] Get the full definition of a dashboard, including its widgets. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------- | | `dashboardId` | string | Yes | The ID of the dashboard (e.g., "abc-def-ghi") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-25] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------- | | `dashboard` | object | The dashboard definition | | ↳ `id` | string | Dashboard ID | | ↳ `title` | string | Dashboard title | | ↳ `description` | string | Dashboard description | | ↳ `layout_type` | string | Layout type: ordered or free | | ↳ `url` | string | Dashboard URL path | | ↳ `author_handle` | string | Handle of the dashboard author | | ↳ `author_name` | string | Name of the dashboard author | | ↳ `created_at` | string | Creation timestamp | | ↳ `modified_at` | string | Modification timestamp | | ↳ `tags` | array | Dashboard tags | | ↳ `notify_list` | array | Handles notified on dashboard changes | | ↳ `template_variables` | array | Template variable definitions | | ↳ `widgets` | array | Widget definitions | ### Datadog Create Dashboard [#datadog-create-dashboard] Create a dashboard from a title, layout type, and widget definitions. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `title` | string | Yes | Title of the dashboard | | `layoutType` | string | Yes | Layout type: "ordered" or "free" | | `widgets` | string | Yes | JSON array of widget definitions, e.g. \[\{"definition": \{"type": "timeseries", "requests": \[\{"q": "avg:system.cpu.user\{\*}"}]}}] | | `description` | string | No | Description of the dashboard | | `notifyList` | string | No | Comma-separated user handles to notify on dashboard changes | | `templateVariables` | string | No | JSON array of template variable definitions, e.g. \[\{"name": "env", "prefix": "env", "available\_values": \["prod"]}] | | `tags` | string | No | Comma-separated dashboard tags in the form "team:\" (max 5) | | `reflowType` | string | No | Reflow type for ordered layouts: "auto" or "fixed" | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-26] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------ | | `dashboard` | object | The created dashboard | | ↳ `id` | string | Dashboard ID | | ↳ `title` | string | Dashboard title | | ↳ `layout_type` | string | Layout type: ordered or free | | ↳ `url` | string | Dashboard URL path | | ↳ `author_handle` | string | Handle of the dashboard author | | ↳ `created_at` | string | Creation timestamp | | ↳ `modified_at` | string | Modification timestamp | | ↳ `widgets` | array | Widget definitions | ### Datadog Delete Dashboard [#datadog-delete-dashboard] Delete a dashboard by ID. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------- | | `dashboardId` | string | Yes | The ID of the dashboard to delete | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-27] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------- | | `success` | boolean | Whether the dashboard was deleted | | `deletedDashboardId` | string | ID of the deleted dashboard | ### Datadog List Synthetic Tests [#datadog-list-synthetic-tests] List all Synthetic tests (API, browser, and mobile) with their current status. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------ | | `pageSize` | number | No | Number of tests returned per page (default: 100) | | `pageNumber` | number | No | Page to retrieve, starting at zero | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-28] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `tests` | array | List of Synthetic tests | | ↳ `public_id` | string | Public ID of the test | | ↳ `name` | string | Test name | | ↳ `status` | string | Pause status: live or paused | | ↳ `type` | string | Test type: api, browser, mobile, or network | | ↳ `subtype` | string | Test subtype, such as http or ssl | | ↳ `message` | string | Notification message | | ↳ `monitor_id` | number | Associated monitor ID | | ↳ `tags` | array | Tags attached to the test | | ↳ `locations` | array | Locations the test runs from | ### Datadog Get Synthetic Test [#datadog-get-synthetic-test] Get the configuration of a Synthetic test by public ID. Browser test steps are not included by this type-agnostic endpoint. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------- | | `publicId` | string | Yes | The public ID of the Synthetic test (e.g., "abc-def-ghi") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-29] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `test` | object | The Synthetic test configuration | | ↳ `public_id` | string | Public ID of the test | | ↳ `name` | string | Test name | | ↳ `status` | string | Pause status: live or paused | | ↳ `type` | string | Test type: api, browser, mobile, or network | | ↳ `subtype` | string | Test subtype, such as http or ssl | | ↳ `message` | string | Notification message | | ↳ `monitor_id` | number | Associated monitor ID | | ↳ `tags` | array | Tags attached to the test | | ↳ `locations` | array | Locations the test runs from | | ↳ `config` | object | Test request, assertions, and variables | | ↳ `options` | object | Scheduling, retry, and monitor options | | ↳ `creator` | object | User who created the test | ### Datadog Get Synthetic Test Results [#datadog-get-synthetic-test-results] Get the latest result summaries (up to the last 150 runs) for a Synthetic API test. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------- | | `publicId` | string | Yes | The public ID of the Synthetic API test | | `fromTs` | number | No | Timestamp in milliseconds from which to start querying results | | `toTs` | number | No | Timestamp in milliseconds up to which to query results | | `probeDc` | string | No | Comma-separated locations to query results for (e.g., "aws:eu-west-3") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-30] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------- | | `results` | array | Latest test result summaries | | ↳ `result_id` | string | ID of the test result | | ↳ `check_time` | number | Time the test ran | | ↳ `probe_dc` | string | Location the test ran from | | ↳ `status` | number | Monitor status: 0 not triggered, 1 triggered, 2 no data | | ↳ `result` | object | Run outcome | | ↳ `passed` | boolean | Whether the run passed | | ↳ `timings` | object | Request timing breakdown | | `lastTimestampFetched` | number | Timestamp of the latest test run | ### Datadog Get Browser Synthetic Test Results [#datadog-get-browser-synthetic-test-results] Get the latest result summaries (up to the last 150 runs) for a Synthetic browser test, including step counts and errors. #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------- | | `publicId` | string | Yes | The public ID of the Synthetic browser test | | `fromTs` | number | No | Timestamp in milliseconds from which to start querying results | | `toTs` | number | No | Timestamp in milliseconds up to which to query results | | `probeDc` | string | No | Comma-separated locations to query results for (e.g., "aws:eu-west-3") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-31] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------- | | `results` | array | Latest browser test result summaries | | ↳ `result_id` | string | ID of the browser test result | | ↳ `check_time` | number | Time the browser test ran | | ↳ `probe_dc` | string | Location the browser test ran from | | ↳ `status` | number | Monitor status: 0 not triggered, 1 triggered, 2 no data | | ↳ `result` | object | Run outcome | | ↳ `duration` | number | Length of the run in milliseconds | | ↳ `errorCount` | number | Number of errors collected in the run | | ↳ `stepCountCompleted` | number | Steps completed before failing | | ↳ `stepCountTotal` | number | Total number of steps | | ↳ `device` | object | Device the run was performed on | | `lastTimestampFetched` | number | Timestamp of the latest browser test run | ### Datadog Trigger Synthetic Tests [#datadog-trigger-synthetic-tests] Trigger an immediate run of one or more Synthetic tests by public ID. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `publicIds` | string | Yes | Comma-separated public IDs of the Synthetic tests to trigger | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-32] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `batchId` | string | Public ID of the triggered batch | | `triggeredCheckIds` | array | Public IDs of the triggered Synthetic tests | | `results` | array | Information about each triggered test run | | ↳ `public_id` | string | Public ID of the test | | ↳ `result_id` | string | ID of the run result | | ↳ `location` | number | Location ID of the run | | ↳ `device` | string | Device ID used for browser tests | | `locations` | array | Locations the tests were triggered from | | ↳ `id` | number | Location ID | | ↳ `name` | string | Location name | ### Datadog Pause Or Start Synthetic Test [#datadog-pause-or-start-synthetic-test] Pause or resume a Synthetic test by setting its status to "paused" or "live". #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `publicId` | string | Yes | The public ID of the Synthetic test to update | | `newStatus` | string | Yes | New status: "live" to start the test or "paused" to pause it | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------------------- | | `success` | boolean | Whether Datadog reported the status update as successful | | `status` | string | The status that was requested: live or paused | ### Datadog List Security Signals [#datadog-list-security-signals] Search Cloud SIEM security signals by query and time range. Requires the `security_monitoring_signals_read` permission. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `query` | string | No | Signal search query (e.g., "security:attack status:high") | | `from` | string | No | Minimum timestamp as an ISO-8601 date-time (e.g., "2026-01-02T09:42:36.320Z"). Signal search does not accept relative expressions like "now-1h". | | `to` | string | No | Maximum timestamp as an ISO-8601 date-time (e.g., "2026-01-03T09:42:36.320Z"). Signal search does not accept relative expressions like "now". | | `sort` | string | No | Sort order: "timestamp" for oldest first, "-timestamp" for newest first | | `cursor` | string | No | Pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of signals to return (default: 10, max: 1000) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-34] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `signals` | array | List of security signals | | ↳ `id` | string | Signal ID | | ↳ `type` | string | Resource type (signal) | | ↳ `attributes` | object | Signal attributes | | ↳ `message` | string | Message from the detection rule | | ↳ `timestamp` | string | Signal timestamp | | ↳ `tags` | array | Tags on the signal | | ↳ `custom` | object | Signal-specific attributes | | `nextCursor` | string | Cursor for the next page of signals | ### Datadog Get Security Signal [#datadog-get-security-signal] Get the details of a single Cloud SIEM security signal. Requires the `security_monitoring_signals_read` permission. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------- | | `signalId` | string | Yes | The ID of the security signal | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-35] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `signal` | object | The security signal | | ↳ `id` | string | Signal ID | | ↳ `type` | string | Resource type (signal) | | ↳ `attributes` | object | Signal attributes | | ↳ `message` | string | Message from the detection rule | | ↳ `timestamp` | string | Signal timestamp | | ↳ `tags` | array | Tags on the signal | | ↳ `custom` | object | Signal-specific attributes | ### Datadog Update Security Signal State [#datadog-update-security-signal-state] Change the triage state of a Cloud SIEM security signal to open, under\_review, or archived. Requires the `security_monitoring_signals_write` permission. #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `signalId` | string | Yes | The ID of the security signal | | `state` | string | Yes | New triage state: "open", "under\_review", or "archived" | | `archiveReason` | string | No | Reason when archiving: none, false\_positive, testing\_or\_maintenance, remediated, investigated\_case\_opened, true\_positive\_benign, true\_positive\_malicious, or other | | `archiveComment` | string | No | Comment explaining why the signal was archived | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-36] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------- | | `signal` | object | The updated signal triage data | | ↳ `id` | string | Signal ID | | ↳ `type` | string | Resource type of the signal | | ↳ `state` | string | Current triage state | | ↳ `assignee` | object | User the signal is assigned to | | ↳ `incidentIds` | array | IDs of incidents linked to the signal | | ↳ `archiveReason` | string | Archive reason, when archived | | ↳ `archiveComment` | string | Archive comment, when archived | | ↳ `stateUpdateTimestamp` | number | Timestamp of the last state update | ### Datadog Assign Security Signal [#datadog-assign-security-signal] Assign a Cloud SIEM security signal to a Datadog user by UUID. Requires the `security_monitoring_signals_write` permission. #### Input [#input-37] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `signalId` | string | Yes | The ID of the security signal | | `assigneeUuid` | string | Yes | UUID of the Datadog user to assign the signal to (e.g., "773b045d-ccf8-4808-bd3b-955ef6a8c940") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-37] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------- | | `signal` | object | The updated signal triage data | | ↳ `id` | string | Signal ID | | ↳ `type` | string | Resource type of the signal | | ↳ `state` | string | Current triage state | | ↳ `assignee` | object | User the signal is assigned to | | ↳ `incidentIds` | array | IDs of incidents linked to the signal | | ↳ `archiveReason` | string | Archive reason, when archived | | ↳ `archiveComment` | string | Archive comment, when archived | | ↳ `stateUpdateTimestamp` | number | Timestamp of the last state update | ### Datadog List Security Rules [#datadog-list-security-rules] List Cloud SIEM detection rules. Requires the `security_monitoring_rules_read` permission. #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `query` | string | No | Search query filtering rules by attributes such as type, source, or tags (e.g., "type:log\_detection source:cloudtrail") | | `sort` | string | No | Sort attribute, prefix with "-" for descending: name, creation\_date, update\_date, enabled, type, highest\_severity, or source | | `pageSize` | number | No | Number of rules per page (default: 10, max: 100) | | `pageNumber` | number | No | Page to retrieve, starting at zero | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-38] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------ | | `rules` | array | List of detection rules | | ↳ `id` | string | Rule ID | | ↳ `name` | string | Rule name | | ↳ `type` | string | Rule type | | ↳ `message` | string | Message attached to generated signals | | ↳ `tags` | array | Rule tags | | ↳ `isEnabled` | boolean | Whether the rule is enabled | | ↳ `isDefault` | boolean | Whether the rule is a Datadog default rule | | ↳ `createdAt` | number | Creation timestamp in milliseconds | | ↳ `version` | number | Rule version | ### Datadog Search Spans [#datadog-search-spans] Search indexed APM spans using the span query syntax, with cursor pagination. #### Input [#input-39] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `query` | string | No | Span search query (e.g., "service:web\* AND @http.status\_code:\[500 TO 599]"). Defaults to "\*" | | `from` | string | No | Minimum time, ISO-8601, date math, or milliseconds (default: "now-15m") | | `to` | string | No | Maximum time, ISO-8601, date math, or milliseconds (default: "now") | | `sort` | string | No | Sort order: "timestamp" for oldest first, "-timestamp" for newest first | | `cursor` | string | No | Pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of spans to return (default: 10, max: 1000) | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-39] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------- | | `spans` | array | List of matching spans | | ↳ `id` | string | Unique span event ID | | ↳ `type` | string | Resource type (spans) | | ↳ `attributes` | object | Span attributes | | ↳ `service` | string | Service that emitted the span | | ↳ `resource_name` | string | Resource name | | ↳ `env` | string | Environment | | ↳ `host` | string | Host that emitted the span | | ↳ `type` | string | Span type, such as web or db | | ↳ `trace_id` | string | Trace ID | | ↳ `span_id` | string | Span ID | | ↳ `parent_id` | string | Parent span ID | | ↳ `start_timestamp` | string | Span start timestamp | | ↳ `end_timestamp` | string | Span end timestamp | | ↳ `tags` | array | Tags on the span | | ↳ `custom` | object | Custom span data | | `nextCursor` | string | Cursor for the next page of spans | | `elapsed` | number | Query time in milliseconds | ### Datadog List Services [#datadog-list-services] List service definitions from the Datadog Service Catalog. Requires the `apm_service_catalog_read` permission. #### Input [#input-40] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------- | | `pageSize` | number | No | Number of service definitions per page (default: 10, max: 100) | | `pageNumber` | number | No | Page to retrieve, starting at zero | | `schemaVersion` | string | No | Schema version to return (e.g., "v2", "v2.1", "v2.2") | | `apiKey` | string | Yes | Datadog API key | | `applicationKey` | string | Yes | Datadog Application key | | `site` | string | No | Datadog site/region (default: datadoghq.com) | #### Output [#output-40] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------------------------- | | `services` | array | List of service definitions | | ↳ `id` | string | Service definition ID | | ↳ `type` | string | Resource type (service\_definitions) | | ↳ `schema` | object | The service definition schema. Its shape depends on the requested schema version | | ↳ `meta` | object | Ingestion metadata such as origin and last modified time | --- # Datagma (/integrations/datagma) {/* MANUAL-CONTENT-START:intro */} [Datagma](https://datagma.com/) is a B2B data enrichment platform for finding verified work emails, direct mobile numbers, and detailed person and company profiles from minimal input such as a name, company domain, or LinkedIn URL. With Datagma, you can: * **Find verified work emails:** Resolve a verified professional email from a person's full name and their company name or domain. * **Enrich person profiles:** Pull job title, seniority, location, and social profiles from an email or LinkedIn URL. * **Enrich company data:** Retrieve firmographics such as size, industry, and location from a domain or company name. * **Find mobile phone numbers:** Look up direct dial mobile numbers from a LinkedIn profile. * **Check your credit balance:** Monitor remaining Datagma credits before running large enrichment jobs. In Agent Serve, the Datagma integration lets your agents enrich contacts and companies, find and verify emails, and look up phone numbers directly inside a workflow — automating lead generation, CRM hygiene, and outreach prep without leaving Agent Serve. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Datagma to find verified work emails from a name and company, enrich person profiles via email or LinkedIn URL, enrich company data from a domain or name, look up mobile phone numbers from LinkedIn, and check your credit balance. ## Actions [#actions] ### Datagma Find Email [#datagma-find-email] Find a verified work email from a person's full name and company. Uses 1 credit when a verified email is found. #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `fullName` | string | Yes | Person's full name (e.g., 'John Doe') | | `company` | string | Yes | Company name or domain (e.g., 'Stripe' or 'stripe.com') | | `linkedInSlug` | string | No | LinkedIn company URL slug to improve match accuracy by 20%+ | | `findEmailV2Step` | number | No | Lookup depth: 3 = full email (default), 2 = domain only | | `findEmailV2Country` | string | No | User's location to improve accuracy (e.g., 'General', 'Japan', 'France') | | `apiKey` | string | Yes | Datagma API key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------ | | `email` | string | Verified work email address | | `emailStatus` | string | Email verification status (e.g., valid, invalid) | | `emailDomain` | string | Email domain | | `mxfound` | boolean | Whether MX records were found | | `smtpCheck` | boolean | Whether SMTP validation succeeded | | `catchAll` | boolean | Whether the domain is catch-all | ### Datagma Enrich Person [#datagma-enrich-person] Enrich a person's profile using their email, LinkedIn URL, or full name and company. Returns job title, company, location, and social data. Uses 2 credits per match; add 30 credits when a phone number is found. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `data` | string | Yes | Email address, LinkedIn URL, or full name (use companyKeyword when providing a name) | | `companyKeyword` | string | No | Company name or keyword to disambiguate when data is a full name | | `countryCode` | string | No | Two-letter country code to improve match accuracy (e.g., 'US', 'GB') | | `personFull` | boolean | No | Include education and work history in the response | | `phoneFull` | boolean | No | Attempt to find a mobile phone number (costs 30 additional credits if found) | | `apiKey` | string | Yes | Datagma API key | #### Output [#output-1] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------- | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Work email address | | `emailStatus` | string | Email verification status | | `jobTitle` | string | Current job title | | `company` | string | Current company name | | `linkedInUrl` | string | LinkedIn profile URL | | `location` | string | Location string | | `country` | string | Country | | `region` | string | Region/state | | `city` | string | City | | `extractedRole` | string | Extracted role category | | `extractedSeniority` | string | Extracted seniority level | | `twitter` | string | Twitter handle | | `phone` | string | Mobile phone number | | `personConfidenceScore` | number | Confidence score for the person match (0–1) | ### Datagma Enrich Company [#datagma-enrich-company] Enrich a company profile using a domain, company name, or SIREN number (France). Returns size, industry, revenue, and description. Uses 2 credits per match. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------- | | `data` | string | Yes | Company domain (e.g., 'stripe.com'), company name, or French SIREN number to enrich | | `companyPremium` | boolean | No | Include LinkedIn company data in the response | | `companyFull` | boolean | No | Include financial information in the response | | `apiKey` | string | Yes | Datagma API key | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------ | | `name` | string | Company name | | `website` | string | Company website | | `industries` | string | Industry classification | | `companySize` | string | Employee headcount range | | `type` | string | Company type (e.g., Private, Public) | | `founded` | string | Year founded | | `shortDescription` | string | Short company description | | `revenueRange` | string | Estimated annual revenue range | | `headquarters` | string | Headquarters location | ### Datagma Find Phone [#datagma-find-phone] Find a mobile phone number from a person's LinkedIn URL. Optionally supply an email to improve match accuracy. Uses 30 credits when a number is found. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `username` | string | Yes | LinkedIn URL of the person (e.g., '[https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)') | | `email` | string | No | Email address to improve phone match accuracy | | `minimumMatch` | number | No | Minimum match confidence threshold (0–1; default 1 for highest precision) | | `apiKey` | string | Yes | Datagma API key | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------- | | `phone` | string | Mobile phone number | | `countryCode` | string | Country code prefix (e.g., +1) | | `isWhatsapp` | boolean | Whether the number is linked to WhatsApp | ### Datagma Get Credits [#datagma-get-credits] Check remaining credit balance on a Datagma account. Free — no credits consumed. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------- | | `apiKey` | string | Yes | Datagma API key | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `credits` | number | Remaining Datagma credits | --- # Daytona (/integrations/daytona) {/* MANUAL-CONTENT-START:intro */} Use [Daytona](https://www.daytona.io/) in Agent Serve to create and manage sandboxes, execute shell commands or Python, JavaScript, and TypeScript code, transfer files, and clone repositories. Authenticate with a Daytona API key. Stop or delete sandboxes when work finishes, and configure auto-stop and auto-delete intervals to manage idle resources. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Daytona into your workflow to run AI-generated code in secure, isolated sandboxes. Create and manage sandboxes, execute shell commands, run Python, JavaScript, or TypeScript code, transfer files, and clone Git repositories. ## Actions [#actions] ### Daytona Create Sandbox [#daytona-create-sandbox] Create a new Daytona sandbox for running AI-generated code in isolation #### Input [#input] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `snapshot` | string | No | ID or name of the snapshot to create the sandbox from (uses default if empty) | | `name` | string | No | Name for the sandbox (defaults to the sandbox ID) | | `target` | string | No | Region where the sandbox will be created (e.g., us, eu) | | `user` | string | No | User associated with the sandbox | | `env` | json | No | Environment variables to set in the sandbox as key-value pairs | | `labels` | json | No | Labels to attach to the sandbox as key-value pairs | | `cpu` | number | No | CPU cores to allocate to the sandbox | | `memory` | number | No | Memory to allocate to the sandbox in GB | | `disk` | number | No | Disk space to allocate to the sandbox in GB | | `autoStopInterval` | number | No | Auto-stop interval in minutes (0 disables auto-stop) | | `autoArchiveInterval` | number | No | Auto-archive interval in minutes (0 uses the maximum interval) | | `autoDeleteInterval` | number | No | Auto-delete interval in minutes (negative disables, 0 deletes immediately on stop) | | `public` | boolean | No | Whether the sandbox HTTP preview is publicly accessible | #### Output [#output] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `sandbox` | json | The created sandbox | ### Daytona List Sandboxes [#daytona-list-sandboxes] List Daytona sandboxes in the organization #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `limit` | number | No | Maximum number of sandboxes to return (1-200) | | `name` | string | No | Filter sandboxes by name prefix (case-insensitive) | | `labels` | json | No | Filter sandboxes by labels as key-value pairs | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `sandboxes` | array | Sandboxes in the organization | | `nextCursor` | string | Cursor for the next page of results | ### Daytona Get Sandbox [#daytona-get-sandbox] Get details of a Daytona sandbox #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID or name of the sandbox | #### Output [#output-2] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `sandbox` | json | The sandbox details | ### Daytona Start Sandbox [#daytona-start-sandbox] Start a stopped Daytona sandbox #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID or name of the sandbox | #### Output [#output-3] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `sandbox` | json | The started sandbox | ### Daytona Stop Sandbox [#daytona-stop-sandbox] Stop a running Daytona sandbox #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID or name of the sandbox | #### Output [#output-4] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `sandbox` | json | The stopped sandbox | ### Daytona Delete Sandbox [#daytona-delete-sandbox] Delete a Daytona sandbox #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID or name of the sandbox | #### Output [#output-5] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `sandbox` | json | The deleted sandbox | ### Daytona Execute Command [#daytona-execute-command] Execute a shell command inside a Daytona sandbox #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to execute the command in | | `command` | string | Yes | Shell command to execute | | `cwd` | string | No | Working directory for the command (defaults to the sandbox working directory) | | `env` | json | No | Environment variables to set for the command as key-value pairs | | `timeout` | number | No | Timeout in seconds (defaults to 10 seconds) | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------------------------- | | `exitCode` | number | Exit code of the command (-1 if missing from the response) | | `result` | string | Combined stdout/stderr output of the command | ### Daytona Run Code [#daytona-run-code] Run Python, JavaScript, or TypeScript code inside a Daytona sandbox #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to run the code in | | `code` | string | Yes | Code to run | | `language` | string | Yes | Language of the code: python, javascript, or typescript | | `env` | json | No | Environment variables to set for the run as key-value pairs | | `timeout` | number | No | Timeout in seconds (defaults to 10 seconds) | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `exitCode` | number | Exit code of the code run (-1 if missing from the response) | | `result` | string | Combined stdout/stderr output of the code run | | `artifacts` | json | Artifacts produced by the run (e.g., matplotlib charts) | ### Daytona Upload File [#daytona-upload-file] Upload a file to a Daytona sandbox #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to upload the file to | | `destinationPath` | string | Yes | Destination path in the sandbox (a trailing slash uploads into that directory using the file name) | | `file` | file | No | The file to upload | | `fileName` | string | No | Optional file name override | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------- | | `uploadedPath` | string | Path of the uploaded file in the sandbox | | `name` | string | Name of the uploaded file | | `size` | number | Size of the uploaded file in bytes | ### Daytona Download File [#daytona-download-file] Download a file from a Daytona sandbox #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to download the file from | | `filePath` | string | Yes | Path of the file in the sandbox | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | | `name` | string | Name of the downloaded file | | `mimeType` | string | MIME type of the downloaded file | | `size` | number | Size of the downloaded file in bytes | ### Daytona List Files [#daytona-list-files] List files in a directory of a Daytona sandbox #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to list files in | | `path` | string | No | Directory path to list (defaults to the sandbox working directory) | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------- | | `files` | array | Files and directories at the given path | | ↳ `name` | string | File or directory name | | ↳ `isDir` | boolean | Whether the entry is a directory | | ↳ `size` | number | Size in bytes | | ↳ `mode` | string | File mode string | | ↳ `permissions` | string | Permission string | | ↳ `owner` | string | Owning user | | ↳ `group` | string | Owning group | | ↳ `modifiedAt` | string | Last modification timestamp | ### Daytona Git Clone [#daytona-git-clone] Clone a Git repository into a Daytona sandbox #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Daytona API key | | `sandboxId` | string | Yes | ID of the sandbox to clone the repository into | | `url` | string | Yes | URL of the Git repository to clone | | `path` | string | Yes | Path in the sandbox to clone the repository into | | `branch` | string | No | Branch to clone (defaults to the default branch) | | `commitId` | string | No | Specific commit to check out after cloning | | `username` | string | No | Username for authenticating to private repositories | | `password` | string | No | Password or personal access token for private repositories | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------- | | `repoUrl` | string | URL of the cloned repository | | `clonePath` | string | Path the repository was cloned into | --- # Deployments (/integrations/deployments) {/* MANUAL-CONTENT-START:intro */} Use the Deployments block to manage other workflows in the current workspace. Deploy creates a new version; Promote Version to Live makes an existing version live without creating another. Undeploy takes a workflow offline and removes its triggers, webhooks, and schedules. For the deployment UI and execution model, see [Workflow Deployment](/workflows/deployment). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Deploy, undeploy, and roll back workflows in the current workspace. Promote a previous deployment version to live, list every version, or fetch the deployed workflow state for a specific version. ## Actions [#actions] ### Deploy Workflow [#deploy-workflow] Deploy a workflow’s current draft state, creating a new deployment version and making it live for API execution. Requires admin permission on the workflow’s workspace. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------ | | `workflowId` | string | Yes | ID of the workflow to deploy | | `name` | string | No | Optional label for the new deployment version | | `description` | string | No | Optional summary of what changed in this version | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------- | | `workflowId` | string | ID of the deployed workflow | | `isDeployed` | boolean | Whether the workflow is now deployed | | `deployedAt` | string | ISO 8601 timestamp of the deployment (null if unavailable) | | `version` | number | The deployment version that is now active | | `warnings` | array | Non-fatal warnings (e.g. trigger or schedule sync still in progress) | ### Undeploy Workflow [#undeploy-workflow] Take a deployed workflow offline. API execution stops and schedules, webhooks, and other deployment side effects are removed. Requires admin permission on the workflow’s workspace. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | `workflowId` | string | Yes | ID of the workflow to undeploy | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `workflowId` | string | ID of the undeployed workflow | | `isDeployed` | boolean | Whether the workflow is still deployed (false) | | `deployedAt` | string | Always null after an undeploy | | `warnings` | array | Non-fatal warnings (e.g. trigger or schedule cleanup still in progress) | ### Promote Version to Live [#promote-version-to-live] Make a specific deployment version the live one without creating a new version — the same operation as Promote to live in the deploy modal. Useful for rolling back to a known-good version. Also works on an undeployed workflow: it re-deploys the workflow live at that version. Requires admin permission on the workflow’s workspace. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------ | | `workflowId` | string | Yes | ID of the workflow | | `version` | number | Yes | The deployment version number to promote to live | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------- | | `workflowId` | string | ID of the workflow | | `isDeployed` | boolean | Whether the workflow is now deployed | | `deployedAt` | string | ISO 8601 timestamp of the active deployment (null if unavailable) | | `version` | number | The deployment version that is now live | | `warnings` | array | Non-fatal warnings (e.g. trigger or schedule sync still in progress) | ### List Deployment Versions [#list-deployment-versions] List every deployment version of a workflow, newest first, including which version is currently live. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `workflowId` | string | Yes | ID of the workflow | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------ | | `workflowId` | string | ID of the workflow | | `versions` | array | Deployment versions, newest first (id, version, name, description, isActive, createdAt, createdBy, deployedByName) | ### Get Deployment Version [#get-deployment-version] Fetch a single deployment version of a workflow, including its metadata and the full workflow state snapshot that was deployed. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `workflowId` | string | Yes | ID of the workflow | | `version` | number | Yes | The deployment version number to fetch | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------- | | `workflowId` | string | ID of the workflow | | `version` | number | The deployment version number | | `name` | string | Version label | | `description` | string | Version description | | `isActive` | boolean | Whether this version is currently live | | `createdAt` | string | When this version was deployed (ISO 8601) | | `deployedState` | json | The full workflow state snapshot (blocks, edges, loops, parallels, variables) | --- # Devin (/integrations/devin) {/* MANUAL-CONTENT-START:intro */} [Devin](https://devin.ai/) is an autonomous AI software engineer by Cognition that can independently write, run, debug, and deploy code. With Devin, you can: * **Automate coding tasks**: Assign software engineering tasks and let Devin autonomously write, test, and iterate on code * **Manage sessions**: Create, monitor, and interact with Devin sessions to track progress on assigned tasks * **Guide active work**: Send messages to running sessions to provide additional context, redirect efforts, or answer questions * **Retrieve structured output**: Poll completed sessions for pull requests, structured results, and detailed status * **Control costs**: Set ACU (Autonomous Compute Unit) limits to cap spending on long-running tasks * **Standardize workflows**: Use playbook IDs to apply repeatable task patterns across sessions In Agent Serve, the Devin integration enables your agents to programmatically manage Devin sessions as part of their workflows: * **Create sessions**: Kick off new Devin sessions with a prompt describing the task, optional playbook, ACU limits, and tags * **Get session details**: Retrieve the full state of a session including status, pull requests, structured output, and resource consumption * **List sessions**: Query all sessions in your organization with optional pagination * **Send messages**: Communicate with active or suspended sessions to provide guidance, and automatically resume suspended sessions This allows for powerful automation scenarios such as triggering code generation from upstream events, polling for completion before consuming results, orchestrating multi-step development pipelines, and integrating Devin's output into broader agent workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Devin into your workflow. Create sessions to assign coding tasks, send messages to guide active sessions, and retrieve session status and results. Devin autonomously writes, runs, and tests code. ## Actions [#actions] ### Devin Create Session [#devin-create-session] Create a new Devin session with a prompt. Devin will autonomously work on the task described in the prompt. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `prompt` | string | Yes | The task prompt for Devin to work on | | `playbookId` | string | No | Optional playbook ID to guide the session | | `maxAcuLimit` | number | No | Maximum ACU limit for the session | | `tags` | string | No | Comma-separated tags for the session | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `sessionId` | string | Unique identifier for the session | | `url` | string | URL to view the session in the Devin UI | | `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) | | `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) | | `title` | string | Session title | | `createdAt` | number | Unix timestamp when the session was created | | `updatedAt` | number | Unix timestamp when the session was last updated | | `acusConsumed` | number | ACUs consumed by the session | | `tags` | json | Tags associated with the session (array of strings) | | `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | `structuredOutput` | json | Structured output from the session | | `playbookId` | string | Associated playbook ID | | `isArchived` | boolean | Whether the session is archived | ### Devin Get Session [#devin-get-session] Retrieve details of an existing Devin session including status, tags, pull requests, and structured output. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `sessionId` | string | Unique identifier for the session | | `url` | string | URL to view the session in the Devin UI | | `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) | | `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) | | `title` | string | Session title | | `createdAt` | number | Unix timestamp when the session was created | | `updatedAt` | number | Unix timestamp when the session was last updated | | `acusConsumed` | number | ACUs consumed by the session | | `tags` | json | Tags associated with the session (array of strings) | | `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | `structuredOutput` | json | Structured output from the session | | `playbookId` | string | Associated playbook ID | | `isArchived` | boolean | Whether the session is archived | ### Devin List Sessions [#devin-list-sessions] List Devin sessions in the organization. Returns up to 100 sessions by default. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `limit` | number | No | Maximum number of sessions to return (1-200, default: 100) | | `after` | string | No | Pagination cursor (endCursor from a previous response) to fetch the next page | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------------- | | `sessions` | array | List of Devin sessions | | ↳ `sessionId` | string | Unique identifier for the session | | ↳ `url` | string | URL to view the session | | ↳ `status` | string | Session status | | ↳ `statusDetail` | string | Detailed status | | ↳ `title` | string | Session title | | ↳ `createdAt` | number | Creation timestamp (Unix) | | ↳ `updatedAt` | number | Last updated timestamp (Unix) | | ↳ `tags` | json | Session tags (array of strings) | | ↳ `acusConsumed` | number | ACUs consumed by the session | | ↳ `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | ↳ `playbookId` | string | Associated playbook ID | | ↳ `isArchived` | boolean | Whether the session is archived | | `endCursor` | string | Pagination cursor for the next page, or null if last page | | `hasNextPage` | boolean | Whether more sessions are available | | `total` | number | Total number of sessions, if provided | ### Devin Send Message [#devin-send-message] Send a message to a Devin session. If the session is suspended, it will be automatically resumed. Returns the updated session state. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to send the message to | | `message` | string | Yes | The message to send to Devin | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `sessionId` | string | Unique identifier for the session | | `url` | string | URL to view the session in the Devin UI | | `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) | | `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) | | `title` | string | Session title | | `createdAt` | number | Unix timestamp when the session was created | | `updatedAt` | number | Unix timestamp when the session was last updated | | `acusConsumed` | number | ACUs consumed by the session | | `tags` | json | Tags associated with the session (array of strings) | | `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | `structuredOutput` | json | Structured output from the session | | `playbookId` | string | Associated playbook ID | | `isArchived` | boolean | Whether the session is archived | ### Devin List Session Messages [#devin-list-session-messages] List the messages exchanged in a Devin session, including messages from both the user and Devin. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to list messages for | | `limit` | number | No | Maximum number of messages to return (1-200, default: 100) | | `after` | string | No | Pagination cursor (endCursor from a previous response) to fetch the next page | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------- | | `messages` | array | Messages exchanged in the session | | ↳ `eventId` | string | Unique identifier for the message event | | ↳ `source` | string | Origin of the message (devin or user) | | ↳ `message` | string | The message content | | ↳ `createdAt` | number | Unix timestamp when the message was created | | `endCursor` | string | Pagination cursor for the next page, or null if last page | | `hasNextPage` | boolean | Whether more messages are available | | `total` | number | Total number of messages, if provided | ### Devin List Session Attachments [#devin-list-session-attachments] List the files uploaded to or produced by a Devin session. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to list attachments for | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------- | | `attachments` | array | Attachments associated with the session | | ↳ `attachmentId` | string | Unique identifier for the attachment | | ↳ `name` | string | Attachment file name | | ↳ `url` | string | URL to download the attachment | | ↳ `source` | string | Origin of the attachment (devin or user) | | ↳ `contentType` | string | MIME type of the attachment | ### Devin Get Session Tags [#devin-get-session-tags] Retrieve the tags currently applied to a Devin session. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to retrieve tags for | #### Output [#output-6] | Parameter | Type | Description | | --------- | ---- | ---------------------------------------------- | | `tags` | json | Tags applied to the session (array of strings) | ### Devin Append Session Tags [#devin-append-session-tags] Add tags to a Devin session without removing existing tags (max 50 tags total). #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to add tags to | | `tags` | string | Yes | Tags to append to the session (comma-separated string or array of strings) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------------ | | `tags` | json | Updated list of tags on the session (array of strings) | ### Devin Replace Session Tags [#devin-replace-session-tags] Replace all tags on a Devin session with a new set of tags (max 50 tags). #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to replace tags on | | `tags` | string | Yes | Tags that will overwrite the existing tags (comma-separated string or array of strings) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------------ | | `tags` | json | Updated list of tags on the session (array of strings) | ### Devin Archive Session [#devin-archive-session] Archive a Devin session. Archived sessions can still be viewed but cannot be modified or resumed. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to archive | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `sessionId` | string | Unique identifier for the session | | `url` | string | URL to view the session in the Devin UI | | `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) | | `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) | | `title` | string | Session title | | `createdAt` | number | Unix timestamp when the session was created | | `updatedAt` | number | Unix timestamp when the session was last updated | | `acusConsumed` | number | ACUs consumed by the session | | `tags` | json | Tags associated with the session (array of strings) | | `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | `structuredOutput` | json | Structured output from the session | | `playbookId` | string | Associated playbook ID | | `isArchived` | boolean | Whether the session is archived | ### Devin Terminate Session [#devin-terminate-session] Terminate a Devin session. Optionally archive the session instead of permanently terminating it. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Devin API key (service user credential starting with cog\_) | | `orgId` | string | Yes | Devin organization ID (prefixed with org-) | | `sessionId` | string | Yes | The session ID to terminate | | `archive` | boolean | No | Archive the session instead of permanently terminating it (default: false) | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `sessionId` | string | Unique identifier for the session | | `url` | string | URL to view the session in the Devin UI | | `status` | string | Session status (new, claimed, running, exit, error, suspended, resuming) | | `statusDetail` | string | Detailed status (working, waiting\_for\_user, waiting\_for\_approval, finished, inactivity, etc.) | | `title` | string | Session title | | `createdAt` | number | Unix timestamp when the session was created | | `updatedAt` | number | Unix timestamp when the session was last updated | | `acusConsumed` | number | ACUs consumed by the session | | `tags` | json | Tags associated with the session (array of strings) | | `pullRequests` | json | Pull requests created during the session (\[\{pr\_url, pr\_state}]) | | `structuredOutput` | json | Structured output from the session | | `playbookId` | string | Associated playbook ID | | `isArchived` | boolean | Whether the session is archived | --- # Dialpad (/integrations/dialpad) ## Usage Instructions [#usage-instructions] Integrate Dialpad business phone and contact center into the workflow. Ring a rep and dial a lead, hang up calls, send SMS, look up calls with their recordings, transcripts, and Ai Recap, manage contacts, and find users. Can also run workflows on Dialpad call, SMS, and contact events. Requires a Dialpad API key. ## Actions [#actions] ### Dialpad Initiate Call [#dialpad-initiate-call] Start an outbound call from a Dialpad user: Dialpad rings the user's devices (or one chosen device) and, once they answer, dials the phone number. Limited to 5 calls per minute per user. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `userId` | string | Yes | ID of the Dialpad user who makes the call (from List Users) | | `phoneNumber` | string | Yes | Number to call, in E.164 format (e.g. +14155551234) | | `outboundCallerId` | string | No | Number shown to the recipient, in E.164 format: the user’s number, the group’s number, or a company number. Use "blocked" to hide it. | | `deviceId` | string | No | Ring only this device instead of all of the user’s devices | | `groupId` | string | No | ID of an office, department, or call center to place the call through | | `groupType` | string | No | Type of the group: callcenter, department, or office | | `customData` | string | No | Your own reference (e.g. a lead ID), passed through to the call events for this call | | `isConsult` | boolean | No | Put the user’s ongoing call on hold and start this as a second call | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `callId` | string | ID of the new call | ### Dialpad Get Call [#dialpad-get-call] Get the details of a Dialpad call by ID: state, direction, numbers, target user, contact, timings, duration, and recording and voicemail links. Limited to 10 requests per minute. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `callId` | string | Yes | Dialpad call ID | #### Output [#output-1] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------------------------------------------- | | `callId` | string | Dialpad call ID | | `state` | string | Call state, e.g. hangup | | `direction` | string | inbound or outbound | | `externalNumber` | string | Number of the party outside Dialpad, in E.164 format | | `internalNumber` | string | Dialpad number used on the call, in E.164 format | | `target` | object | The Dialpad user, office, or call center that took or placed the call | | ↳ `id` | string | ID | | ↳ `type` | string | Type, e.g. user, office, or callcenter | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number in E.164 format | | `contact` | object | The external party (contact) on the call | | ↳ `id` | string | ID | | ↳ `type` | string | Type, e.g. user, office, or callcenter | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number in E.164 format | | `dateRang` | number | When the call rang (epoch ms) | | `dateStarted` | number | When the call started (epoch ms) | | `dateConnected` | number | When the call connected (epoch ms) | | `dateEnded` | number | When the call ended (epoch ms) | | `duration` | number | Talk time in milliseconds, from connect to end | | `totalDuration` | number | Total call time in milliseconds, including ringing and queueing | | `wasRecorded` | boolean | Whether the call was recorded | | `recordingUrls` | array | URLs of the call recordings | | `recordingDetails` | array | Recording details | | ↳ `id` | string | Recording ID | | ↳ `url` | string | Recording URL | | ↳ `recordingType` | string | callrecording, admincallrecording, or voicemail | | ↳ `duration` | number | Duration in milliseconds | | ↳ `startTime` | number | Start time (epoch ms) | | `callRecordingShareLinks` | array | Shareable links to the call recordings | | `transcriptionText` | string | Voicemail transcription text | | `voicemailLink` | string | Voicemail recording URL | | `voicemailShareLink` | string | Shareable voicemail link | | `customData` | string | Custom data passed when the call was initiated | | `groupId` | string | Group the call went through, as "\{type}:\{id}", e.g. "Office:124" | | `isTransferred` | boolean | Whether the call was transferred | | `masterCallId` | string | ID of the master call | | `entryPointCallId` | string | ID of the call at the entry point (e.g. the office or call center line) | | `labels` | array | Labels on the call | | `csatScore` | string | CSAT score from the post-call survey | | `mosScore` | number | Mean opinion score (call quality) | ### Dialpad List Calls [#dialpad-list-calls] List concluded Dialpad calls, newest first, optionally filtered by start time and by the user, office, department, or call center that handled them. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `startedAfter` | string | No | Only calls started after this time: ISO 8601 date or epoch milliseconds (UTC) | | `startedBefore` | string | No | Only calls started before this time: ISO 8601 date or epoch milliseconds (UTC) | | `targetId` | string | No | Only calls handled by this target ID. Requires Target Type. | | `targetType` | string | No | Type of the target: user, office, department, callcenter, callrouter, channel, coachinggroup, coachingteam, room, staffgroup, or unknown | | `includeAnonymized` | boolean | No | Include anonymized calls | | `cursor` | string | No | Cursor from a previous response, to fetch the next page | #### Output [#output-2] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------------------------------------- | | `cursor` | string | Pass as Cursor to fetch the next page. Empty on the last page. | | `calls` | array | Concluded calls, newest first | | ↳ `callId` | string | Dialpad call ID | | ↳ `state` | string | Call state, e.g. hangup | | ↳ `direction` | string | inbound or outbound | | ↳ `externalNumber` | string | Number of the party outside Dialpad, in E.164 format | | ↳ `internalNumber` | string | Dialpad number used on the call, in E.164 format | | ↳ `target` | object | The Dialpad user, office, or call center that took or placed the call | | ↳ `id` | string | ID | | ↳ `type` | string | Type, e.g. user, office, or callcenter | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number in E.164 format | | ↳ `contact` | object | The external party (contact) on the call | | ↳ `id` | string | ID | | ↳ `type` | string | Type, e.g. user, office, or callcenter | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `phone` | string | Phone number in E.164 format | | ↳ `dateRang` | number | When the call rang (epoch ms) | | ↳ `dateStarted` | number | When the call started (epoch ms) | | ↳ `dateConnected` | number | When the call connected (epoch ms) | | ↳ `dateEnded` | number | When the call ended (epoch ms) | | ↳ `duration` | number | Talk time in milliseconds, from connect to end | | ↳ `totalDuration` | number | Total call time in milliseconds, including ringing and queueing | | ↳ `wasRecorded` | boolean | Whether the call was recorded | | ↳ `recordingUrls` | array | URLs of the call recordings | | ↳ `recordingDetails` | array | Recording details | | ↳ `id` | string | Recording ID | | ↳ `url` | string | Recording URL | | ↳ `recordingType` | string | callrecording, admincallrecording, or voicemail | | ↳ `duration` | number | Duration in milliseconds | | ↳ `startTime` | number | Start time (epoch ms) | | ↳ `callRecordingShareLinks` | array | Shareable links to the call recordings | | ↳ `transcriptionText` | string | Voicemail transcription text | | ↳ `voicemailLink` | string | Voicemail recording URL | | ↳ `voicemailShareLink` | string | Shareable voicemail link | | ↳ `customData` | string | Custom data passed when the call was initiated | | ↳ `groupId` | string | Group the call went through, as "\{type}:\{id}", e.g. "Office:124" | | ↳ `isTransferred` | boolean | Whether the call was transferred | | ↳ `masterCallId` | string | ID of the master call | | ↳ `entryPointCallId` | string | ID of the call at the entry point (e.g. the office or call center line) | | ↳ `labels` | array | Labels on the call | | ↳ `csatScore` | string | CSAT score from the post-call survey | | ↳ `mosScore` | number | Mean opinion score (call quality) | ### Dialpad Hang Up Call [#dialpad-hang-up-call] Hang up an active Dialpad call by ID. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `callId` | string | Yes | ID of the call to hang up | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | -------------------------------------- | | `callId` | string | ID of the call that was hung up | | `hungUp` | boolean | True when Dialpad accepted the hang-up | ### Dialpad Send SMS [#dialpad-send-sms] Send an SMS from a Dialpad user, office, department, or call center number to up to 10 phone numbers, or post it to a Dialpad channel. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `toNumbers` | string | No | Recipient numbers in E.164 format, comma-separated (up to 10). Required unless Channel Hashtag is set. | | `text` | string | Yes | Message text | | `userId` | string | No | ID of the Dialpad user to send as. Required with a company-level API key unless From Number or a sender group is set. | | `fromNumber` | string | No | Dialpad number to send from, in E.164 format. Overrides the user and sender group. | | `senderGroupId` | string | No | ID of the office, department, or call center to send as | | `senderGroupType` | string | No | Type of the sender group: callcenter, department, or office | | `channelHashtag` | string | No | Dialpad channel to post to instead of phone numbers, e.g. "#sales" | | `inferCountryCode` | boolean | No | Read numbers without a country code as being in the sender’s country | #### Output [#output-4] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------- | | `smsId` | string | Dialpad SMS ID | | `text` | string | Message text | | `fromNumber` | string | Sender number | | `toNumbers` | array | Recipient numbers | | `direction` | string | inbound or outbound | | `messageStatus` | string | Send status: pending, success, or failed | | `messageDeliveryResult` | string | Delivery result, e.g. accepted, rejected, or invalid\_destination | | `contactId` | string | ID of the recipient contact | | `userId` | string | ID of the sending user | | `targetId` | string | ID of the sending target | | `targetType` | string | Type of the sending target | | `deviceType` | string | Device the message was sent from | | `createdDate` | string | When the message was created | ### Dialpad Create Contact [#dialpad-create-contact] Create a Dialpad contact. Without an owner it is a shared company contact; with an owner user ID it is a local contact for that user. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `firstName` | string | Yes | First name | | `lastName` | string | Yes | Last name | | `phones` | string | No | Phone numbers in E.164 format, comma-separated (e.g. "+14155551234,+14155555678"). The first is the primary number. | | `emails` | string | No | Email addresses, comma-separated. The first is the primary email. | | `companyName` | string | No | Company name | | `jobTitle` | string | No | Job title | | `extension` | string | No | Extension | | `urls` | string | No | Websites, comma-separated | | `ownerId` | string | No | ID of the user to create a local contact for. Leave empty for a shared contact. | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `id` | string | Dialpad contact ID | | `type` | string | shared, local, or lead | | `firstName` | string | First name | | `lastName` | string | Last name | | `displayName` | string | Display name | | `companyName` | string | Company name | | `jobTitle` | string | Job title | | `extension` | string | Extension | | `phones` | array | Phone numbers in E.164 format | | `primaryPhone` | string | Primary phone number | | `emails` | array | Email addresses | | `primaryEmail` | string | Primary email address | | `urls` | array | Websites | | `ownerId` | string | ID of the user who owns a local contact | ### Dialpad Update Contact [#dialpad-update-contact] Update a Dialpad contact. Only the fields you fill in change; list fields such as phones replace the existing list. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `contactId` | string | Yes | Dialpad contact ID | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `phones` | string | No | Phone numbers in E.164 format, comma-separated (e.g. "+14155551234,+14155555678"). The first is the primary number. | | `emails` | string | No | Email addresses, comma-separated. The first is the primary email. | | `companyName` | string | No | Company name | | `jobTitle` | string | No | Job title | | `extension` | string | No | Extension | | `urls` | string | No | Websites, comma-separated | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `id` | string | Dialpad contact ID | | `type` | string | shared, local, or lead | | `firstName` | string | First name | | `lastName` | string | Last name | | `displayName` | string | Display name | | `companyName` | string | Company name | | `jobTitle` | string | Job title | | `extension` | string | Extension | | `phones` | array | Phone numbers in E.164 format | | `primaryPhone` | string | Primary phone number | | `emails` | array | Email addresses | | `primaryEmail` | string | Primary email address | | `urls` | array | Websites | | `ownerId` | string | ID of the user who owns a local contact | ### Dialpad Get Contact [#dialpad-get-contact] Get a Dialpad shared or local contact by ID. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `contactId` | string | Yes | Dialpad contact ID | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `id` | string | Dialpad contact ID | | `type` | string | shared, local, or lead | | `firstName` | string | First name | | `lastName` | string | Last name | | `displayName` | string | Display name | | `companyName` | string | Company name | | `jobTitle` | string | Job title | | `extension` | string | Extension | | `phones` | array | Phone numbers in E.164 format | | `primaryPhone` | string | Primary phone number | | `emails` | array | Email addresses | | `primaryEmail` | string | Primary email address | | `urls` | array | Websites | | `ownerId` | string | ID of the user who owns a local contact | ### Dialpad List Contacts [#dialpad-list-contacts] List Dialpad shared contacts, optionally searched by name, including local contacts or only those owned by one user. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `name` | string | No | Search contacts by name | | `ownerId` | string | No | Only contacts owned by this user ID | | `includeLocal` | boolean | No | Also include users’ local contacts (default false) | | `cursor` | string | No | Cursor from a previous response, to fetch the next page | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------- | | `cursor` | string | Pass as Cursor to fetch the next page. Empty on the last page. | | `contacts` | array | Contacts on this page | | ↳ `id` | string | Dialpad contact ID | | ↳ `type` | string | shared, local, or lead | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `displayName` | string | Display name | | ↳ `companyName` | string | Company name | | ↳ `jobTitle` | string | Job title | | ↳ `extension` | string | Extension | | ↳ `phones` | array | Phone numbers in E.164 format | | ↳ `primaryPhone` | string | Primary phone number | | ↳ `emails` | array | Email addresses | | ↳ `primaryEmail` | string | Primary email address | | ↳ `urls` | array | Websites | | ↳ `ownerId` | string | ID of the user who owns a local contact | ### Dialpad List Users [#dialpad-list-users] List Dialpad users, or find one by email, phone number, or name prefix. Use it to get the user ID needed to place calls and send SMS. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `email` | string | No | Find the user with this email. Cannot be combined with name filters. | | `number` | string | No | Find the user with this Dialpad number, in E.164 format. Cannot be combined with name filters. | | `firstName` | string | No | Filter by first-name prefix (e.g. "jo" matches John and Jose) | | `lastName` | string | No | Filter by last-name prefix | | `state` | string | No | User state: active, all, cancelled, deleted, pending, or suspended | | `companyAdmin` | boolean | No | true for only company admins, false for only non-admins | | `cursor` | string | No | Cursor from a previous response, to fetch the next page | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------------- | | `cursor` | string | Pass as Cursor to fetch the next page. Empty on the last page. | | `users` | array | Users on this page | | ↳ `id` | string | Dialpad user ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `displayName` | string | Display name | | ↳ `emails` | array | Email addresses | | ↳ `phoneNumbers` | array | Dialpad numbers assigned to the user | | ↳ `extension` | string | Extension | | ↳ `jobTitle` | string | Job title | | ↳ `state` | string | active, cancelled, deleted, pending, or suspended | | ↳ `isAdmin` | boolean | Whether the user is an admin | | ↳ `isOnline` | boolean | Whether the user is online | | ↳ `isAvailable` | boolean | Whether the user is available | | ↳ `onDutyStatus` | string | Contact center status, e.g. available, busy, or wrapup | | ↳ `doNotDisturb` | boolean | Whether Do Not Disturb is on | | ↳ `officeId` | string | ID of the user’s office | | ↳ `companyId` | string | ID of the company | | ↳ `timezone` | string | Timezone | | ↳ `language` | string | Language | | ↳ `license` | string | License type | ### Dialpad Get User [#dialpad-get-user] Get a Dialpad user by ID, including their numbers, availability, and contact center status. Use "me" with a user-level API key for its owner. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `userId` | string | Yes | Dialpad user ID, or "me" for the owner of a user-level API key | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------ | | `id` | string | Dialpad user ID | | `firstName` | string | First name | | `lastName` | string | Last name | | `displayName` | string | Display name | | `emails` | array | Email addresses | | `phoneNumbers` | array | Dialpad numbers assigned to the user | | `extension` | string | Extension | | `jobTitle` | string | Job title | | `state` | string | active, cancelled, deleted, pending, or suspended | | `isAdmin` | boolean | Whether the user is an admin | | `isOnline` | boolean | Whether the user is online | | `isAvailable` | boolean | Whether the user is available | | `onDutyStatus` | string | Contact center status, e.g. available, busy, or wrapup | | `doNotDisturb` | boolean | Whether Do Not Disturb is on | | `officeId` | string | ID of the user’s office | | `companyId` | string | ID of the company | | `timezone` | string | Timezone | | `language` | string | Language | | `license` | string | License type | ### Dialpad Get Call Transcript [#dialpad-get-call-transcript] Get the transcript of a Dialpad call: each spoken line with the speaker and time, plus AI moments. Also returns the spoken lines joined as plain text. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `callId` | string | Yes | Dialpad call ID | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------------------- | | `callId` | string | Dialpad call ID | | `lines` | array | Transcript lines and AI moments in order | | ↳ `type` | string | transcript, moment, real\_time\_moment, custom\_moment, or ai\_question | | ↳ `name` | string | Speaker name | | ↳ `content` | string | What was said | | ↳ `time` | string | When it was said | | ↳ `userId` | string | Speaker’s Dialpad user ID | | ↳ `contactId` | string | Speaker’s contact ID | | `text` | string | Spoken lines as plain text, one "Speaker: line" per row | ### Dialpad Get AI Recap [#dialpad-get-ai-recap] Get the Dialpad Ai Recap of a call: summary, action items, call purposes, and disposition. Requires Ai Recaps on the Dialpad plan. Limited to 12 requests per minute. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dialpad API key, sent as a Bearer token. Company admins create keys under Admin Settings > My Company > Authentication > API Keys. | | `environment` | string | No | Dialpad environment the API key belongs to: "production" (dialpad.com, default) or "sandbox" (sandbox.dialpad.com) | | `callId` | string | Yes | Dialpad call ID | | `summaryFormat` | string | No | Summary format: bullet, short, medium, or long | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------- | | `callId` | string | Dialpad call ID | | `summary` | string | Recap summary text | | `actionItems` | array | Action items from the call | | `purposes` | array | Why the call happened | | `disposition` | string | Call outcome (disposition) | | `isInternalCall` | boolean | Whether both parties were inside the company | | `source` | string | Language model that wrote the recap | | `dateCreated` | number | When the recap was created (epoch ms) | | `dateModified` | number | When the recap was last changed (epoch ms) | --- # Discord (/integrations/discord) {/* MANUAL-CONTENT-START:intro */} [Discord](https://discord.com) is a powerful communication platform that allows you to connect with friends, communities, and teams. It offers a range of features for team collaboration, including text channels, voice channels, and video calls. With a Discord account or bot, you can: * **Send messages**: Send messages to a specific channel * **Get messages**: Get messages from a specific channel * **Get server**: Get information about a specific server * **Get user**: Get information about a specific user In Agent Serve, the Discord integration enables your agents to access and leverage your organization's Discord servers. Agents can retrieve information from Discord channels, search for specific users, get server information, and send messages. This allows your workflows to integrate with your Discord communities, automate notifications, and create interactive experiences. > **Important:** To read message content, your Discord bot needs the "Message Content Intent" enabled in the Discord Developer Portal. Without this permission, you'll still receive message metadata but the content field will appear empty. ## Setting Up Your Discord Bot [#setting-up-your-discord-bot] 1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) 2. Create a new application and navigate to the "Bot" tab 3. Create a bot and copy your bot token 4. Under "Privileged Gateway Intents", enable the **Message Content Intent** to read message content 5. Invite your bot to your servers with appropriate permissions {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Comprehensive Discord integration: messages, threads, channels, roles, members, invites, and webhooks. ## Actions [#actions] ### Discord Send Message [#discord-send-message] Send a message to a Discord channel #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to send the message to, e.g., 123456789012345678 | | `content` | string | No | The text content of the message | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `files` | file\[] | No | Files to attach to the message | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------- | | `message` | string | Success or error message | | `files` | file\[] | Files attached to the message | | `data` | object | Discord message data | | ↳ `id` | string | Message ID | | ↳ `content` | string | Message content | | ↳ `channel_id` | string | Channel ID where message was sent | | ↳ `author` | object | Message author information | | ↳ `id` | string | Author user ID | | ↳ `username` | string | Author username | | ↳ `avatar` | string | Author avatar hash | | ↳ `bot` | boolean | Whether author is a bot | | ↳ `timestamp` | string | Message timestamp | | ↳ `edited_timestamp` | string | Message edited timestamp | | ↳ `embeds` | array | Message embeds | | ↳ `attachments` | array | Message attachments | | ↳ `mentions` | array | User mentions in message | | ↳ `mention_roles` | array | Role mentions in message | | ↳ `mention_everyone` | boolean | Whether message mentions everyone | ### Discord Get Messages [#discord-get-messages] Retrieve messages from a Discord channel #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to retrieve messages from, e.g., 123456789012345678 | | `limit` | number | No | Maximum number of messages to retrieve (default: 10, max: 100) | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------- | | `message` | string | Success or error message | | `data` | object | Container for messages data | | ↳ `messages` | array | Array of Discord messages with full metadata | | ↳ `id` | string | Message ID | | ↳ `content` | string | Message content | | ↳ `channel_id` | string | Channel ID | | ↳ `author` | object | Message author information | | ↳ `id` | string | Author user ID | | ↳ `username` | string | Author username | | ↳ `avatar` | string | Author avatar hash | | ↳ `bot` | boolean | Whether author is a bot | | ↳ `timestamp` | string | Message timestamp | | ↳ `edited_timestamp` | string | Message edited timestamp | | ↳ `embeds` | array | Message embeds | | ↳ `attachments` | array | Message attachments | | ↳ `mentions` | array | User mentions in message | | ↳ `mention_roles` | array | Role mentions in message | | ↳ `mention_everyone` | boolean | Whether message mentions everyone | | ↳ `channel_id` | string | Channel ID | ### Discord Get Server [#discord-get-server] Retrieve information about a Discord server (guild) #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-2] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------- | | `message` | string | Success or error message | | `data` | object | Discord server (guild) information | | ↳ `id` | string | Server ID | | ↳ `name` | string | Server name | | ↳ `icon` | string | Server icon hash | | ↳ `description` | string | Server description | | ↳ `owner_id` | string | Server owner user ID | | ↳ `roles` | array | Server roles | | ↳ `approximate_member_count` | number | Approximate total member count | | ↳ `approximate_presence_count` | number | Approximate online member count | ### Discord Get User [#discord-get-user] Retrieve information about a Discord user #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------- | | `botToken` | string | Yes | Discord bot token for authentication | | `userId` | string | Yes | The Discord user ID, e.g., 123456789012345678 | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------- | | `message` | string | Success or error message | | `data` | object | Discord user information | | ↳ `id` | string | User ID | | ↳ `username` | string | Username | | ↳ `discriminator` | string | User discriminator (4-digit number) | | ↳ `avatar` | string | User avatar hash | | ↳ `bot` | boolean | Whether user is a bot | | ↳ `system` | boolean | Whether user is a system user | | ↳ `email` | string | User email (if available) | | ↳ `verified` | boolean | Whether user email is verified | ### Discord Edit Message [#discord-edit-message] Edit an existing message in a Discord channel #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message to edit, e.g., 123456789012345678 | | `content` | string | No | The new text content for the message | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------- | | `message` | string | Success or error message | | `data` | object | Updated Discord message data | | ↳ `id` | string | Message ID | | ↳ `content` | string | Updated message content | | ↳ `channel_id` | string | Channel ID | | ↳ `edited_timestamp` | string | Message edited timestamp | ### Discord Delete Message [#discord-delete-message] Delete a message from a Discord channel #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message to delete, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Bulk Delete Messages [#discord-bulk-delete-messages] Delete 2-100 messages from a Discord channel in a single request #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to delete messages from, e.g., 123456789012345678 | | `messageIds` | json | Yes | Array of 2-100 message IDs to delete. Messages older than 2 weeks cannot be bulk deleted. | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Add Reaction [#discord-add-reaction] Add a reaction emoji to a Discord message #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message to react to, e.g., 123456789012345678 | | `emoji` | string | Yes | The emoji to react with (unicode emoji or custom emoji in name:id format) | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Remove Reaction [#discord-remove-reaction] Remove a reaction from a Discord message #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message with the reaction, e.g., 123456789012345678 | | `emoji` | string | Yes | The emoji to remove (unicode emoji or custom emoji in name:id format) | | `userId` | string | No | The user ID whose reaction to remove (omit to remove bot's own reaction), e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Pin Message [#discord-pin-message] Pin a message in a Discord channel #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message to pin, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Unpin Message [#discord-unpin-message] Unpin a message in a Discord channel #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID containing the message, e.g., 123456789012345678 | | `messageId` | string | Yes | The ID of the message to unpin, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Get Pinned Messages [#discord-get-pinned-messages] Retrieve all pinned messages in a Discord channel #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to retrieve pinned messages from, e.g., 123456789012345678 | | `limit` | number | No | Maximum number of pins to return per page (1-50). Defaults to 50. | | `before` | string | No | Return pins created before this ISO8601 timestamp, for paging past the first 50 results | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------------------- | | `message` | string | Success or error message | | `data` | array | Array of pinned Discord messages | | ↳ `id` | string | Message ID | | ↳ `content` | string | Message content | | ↳ `channel_id` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | | ↳ `pinned_at` | string | When the message was pinned | | ↳ `author` | object | Message author information | | ↳ `id` | string | Author user ID | | ↳ `username` | string | Author username | | `hasMore` | boolean | Whether more pinned messages exist beyond this page | ### Discord Create Thread [#discord-create-thread] Create a thread in a Discord channel #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to create the thread in, e.g., 123456789012345678 | | `name` | string | Yes | The name of the thread (1-100 characters) | | `messageId` | string | No | The message ID to create a thread from (if creating from existing message), e.g., 123456789012345678 | | `autoArchiveDuration` | number | No | Duration in minutes to auto-archive the thread (60, 1440, 4320, 10080) | | `isPublic` | boolean | No | Whether the standalone thread is public (visible to everyone in the channel) or private. Ignored when creating a thread from an existing message, which always inherits the parent channel visibility. Defaults to public if omitted. | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Created thread data | | ↳ `id` | string | Thread ID | | ↳ `name` | string | Thread name | | ↳ `type` | number | Thread channel type | | ↳ `guild_id` | string | Server ID | | ↳ `parent_id` | string | Parent channel ID | ### Discord Join Thread [#discord-join-thread] Join a thread in Discord #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `threadId` | string | Yes | The thread ID to join, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Leave Thread [#discord-leave-thread] Leave a thread in Discord #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `threadId` | string | Yes | The thread ID to leave, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Archive Thread [#discord-archive-thread] Archive or unarchive a thread in Discord #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------------------------------ | | `botToken` | string | Yes | The bot token for authentication | | `threadId` | string | Yes | The thread ID to archive/unarchive, e.g., 123456789012345678 | | `archived` | boolean | Yes | Whether to archive (true) or unarchive (false) the thread | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------- | -------------------------- | | `message` | string | Success or error message | | `data` | object | Updated thread data | | ↳ `id` | string | Thread ID | | ↳ `archived` | boolean | Whether thread is archived | ### Discord Create Channel [#discord-create-channel] Create a new channel in a Discord server #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `name` | string | Yes | The name of the channel (1-100 characters) | | `type` | number | No | Channel type (0=text, 2=voice, 4=category, 5=announcement, 13=stage) | | `topic` | string | No | Channel topic (0-1024 characters) | | `parentId` | string | No | Parent category ID for the channel, e.g., 123456789012345678 | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Created channel data | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `type` | number | Channel type | | ↳ `guild_id` | string | Server ID | ### Discord Update Channel [#discord-update-channel] Update a Discord channel #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to update, e.g., 123456789012345678 | | `name` | string | No | The new name for the channel | | `topic` | string | No | The new topic for the channel | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Updated channel data | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `type` | number | Channel type | | ↳ `topic` | string | Channel topic | ### Discord Delete Channel [#discord-delete-channel] Delete a Discord channel #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to delete, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-18] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------- | | `message` | string | Success or error message | | `data` | object | The deleted channel, as returned by Discord | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `type` | number | Channel type | | ↳ `guild_id` | string | Server ID | ### Discord Get Channel [#discord-get-channel] Get information about a Discord channel #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------ | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to retrieve, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-19] | Parameter | Type | Description | | ------------ | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Channel data | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `type` | number | Channel type | | ↳ `topic` | string | Channel topic | | ↳ `guild_id` | string | Server ID | ### Discord List Channels [#discord-list-channels] List all channels in a Discord server #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-20] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------- | | `message` | string | Success or error message | | `data` | array | Array of Discord channels in the server | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `type` | number | Channel type | | ↳ `topic` | string | Channel topic | | ↳ `parent_id` | string | Parent category ID | | ↳ `position` | number | Sort position within the channel list | ### Discord Create Role [#discord-create-role] Create a new role in a Discord server #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `name` | string | Yes | The name of the role | | `color` | number | No | RGB color value as integer (e.g., 0xFF0000 for red) | | `hoist` | boolean | No | Whether to display role members separately from online members | | `mentionable` | boolean | No | Whether the role can be mentioned | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | --------------------------- | | `message` | string | Success or error message | | `data` | object | Created role data | | ↳ `id` | string | Role ID | | ↳ `name` | string | Role name | | ↳ `color` | number | Role color | | ↳ `hoist` | boolean | Whether role is hoisted | | ↳ `mentionable` | boolean | Whether role is mentionable | ### Discord Update Role [#discord-update-role] Update a role in a Discord server #### Input [#input-22] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `roleId` | string | Yes | The role ID to update, e.g., 123456789012345678 | | `name` | string | No | The new name for the role | | `color` | number | No | RGB color value as integer | | `hoist` | boolean | No | Whether to display role members separately | | `mentionable` | boolean | No | Whether the role can be mentioned | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Updated role data | | ↳ `id` | string | Role ID | | ↳ `name` | string | Role name | | ↳ `color` | number | Role color | ### Discord Delete Role [#discord-delete-role] Delete a role from a Discord server #### Input [#input-23] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `roleId` | string | Yes | The role ID to delete, e.g., 123456789012345678 | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Assign Role [#discord-assign-role] Assign a role to a member in a Discord server #### Input [#input-24] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to assign the role to, e.g., 123456789012345678 | | `roleId` | string | Yes | The role ID to assign, e.g., 123456789012345678 | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Remove Role [#discord-remove-role] Remove a role from a member in a Discord server #### Input [#input-25] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to remove the role from, e.g., 123456789012345678 | | `roleId` | string | Yes | The role ID to remove, e.g., 123456789012345678 | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord List Roles [#discord-list-roles] List all roles in a Discord server #### Input [#input-26] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------ | | `message` | string | Success or error message | | `data` | array | Array of Discord roles in the server | | ↳ `id` | string | Role ID | | ↳ `name` | string | Role name | | ↳ `color` | number | Role color | | ↳ `hoist` | boolean | Whether role is hoisted | | ↳ `position` | number | Role position in the hierarchy | | ↳ `mentionable` | boolean | Whether role is mentionable | ### Discord Kick Member [#discord-kick-member] Kick a member from a Discord server #### Input [#input-27] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to kick, e.g., 123456789012345678 | | `reason` | string | No | Reason for kicking the member | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Ban Member [#discord-ban-member] Ban a member from a Discord server #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to ban, e.g., 123456789012345678 | | `reason` | string | No | Reason for banning the member | | `deleteMessageSeconds` | number | No | Seconds of message history to delete, 0-604800 (7 days) | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Unban Member [#discord-unban-member] Unban a member from a Discord server #### Input [#input-29] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to unban, e.g., 123456789012345678 | | `reason` | string | No | Reason for unbanning the member | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Get Member [#discord-get-member] Get information about a member in a Discord server #### Input [#input-30] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to retrieve, e.g., 123456789012345678 | #### Output [#output-30] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Member data | | ↳ `user` | object | User information | | ↳ `id` | string | User ID | | ↳ `username` | string | Username | | ↳ `avatar` | string | Avatar hash | | ↳ `nick` | string | Server nickname | | ↳ `roles` | array | Array of role IDs | | ↳ `joined_at` | string | When the member joined | ### Discord Update Member [#discord-update-member] Update a member in a Discord server (e.g., change nickname) #### Input [#input-31] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | | `userId` | string | Yes | The user ID to update, e.g., 123456789012345678 | | `nick` | string | No | New nickname for the member (null to remove) | | `mute` | boolean | No | Whether to mute the member in voice channels | | `deaf` | boolean | No | Whether to deafen the member in voice channels | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `message` | string | Success or error message | | `data` | object | Updated member data | | ↳ `nick` | string | Server nickname | | ↳ `mute` | boolean | Voice mute status | | ↳ `deaf` | boolean | Voice deaf status | ### Discord Create Invite [#discord-create-invite] Create an invite link for a Discord channel #### Input [#input-32] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------ | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to create an invite for, e.g., 123456789012345678 | | `maxAge` | number | No | Duration of invite in seconds (0 = never expires, default 86400) | | `maxUses` | number | No | Max number of uses (0 = unlimited, default 0) | | `temporary` | boolean | No | Whether invite grants temporary membership | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-32] | Parameter | Type | Description | | ------------- | ------- | ------------------------ | | `message` | string | Success or error message | | `data` | object | Created invite data | | ↳ `code` | string | Invite code | | ↳ `url` | string | Full invite URL | | ↳ `max_age` | number | Max age in seconds | | ↳ `max_uses` | number | Max uses | | ↳ `temporary` | boolean | Whether temporary | ### Discord Get Invite [#discord-get-invite] Get information about a Discord invite #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `inviteCode` | string | Yes | The invite code to retrieve | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-33] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Invite data | | ↳ `code` | string | Invite code | | ↳ `guild` | object | Server information | | ↳ `channel` | object | Channel information | | ↳ `approximate_member_count` | number | Approximate member count | | ↳ `approximate_presence_count` | number | Approximate online count | ### Discord Delete Invite [#discord-delete-invite] Delete a Discord invite #### Input [#input-34] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `inviteCode` | string | Yes | The invite code to delete | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-34] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | ### Discord Create Webhook [#discord-create-webhook] Create a webhook in a Discord channel #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `channelId` | string | Yes | The Discord channel ID to create the webhook in, e.g., 123456789012345678 | | `name` | string | Yes | Name of the webhook (1-80 characters) | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-35] | Parameter | Type | Description | | -------------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Created webhook data | | ↳ `id` | string | Webhook ID | | ↳ `name` | string | Webhook name | | ↳ `token` | string | Webhook token | | ↳ `url` | string | Webhook URL | | ↳ `channel_id` | string | Channel ID | ### Discord Execute Webhook [#discord-execute-webhook] Execute a Discord webhook to send a message #### Input [#input-36] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------- | | `webhookId` | string | Yes | The webhook ID, e.g., 123456789012345678 | | `webhookToken` | string | Yes | The webhook token | | `content` | string | Yes | The message content to send | | `username` | string | No | Override the default username of the webhook | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-36] | Parameter | Type | Description | | -------------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Message sent via webhook | | ↳ `id` | string | Message ID | | ↳ `content` | string | Message content | | ↳ `channel_id` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | ### Discord Get Webhook [#discord-get-webhook] Get information about a Discord webhook #### Input [#input-37] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `webhookId` | string | Yes | The webhook ID to retrieve, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------ | ------------------------ | | `message` | string | Success or error message | | `data` | object | Webhook data | | ↳ `id` | string | Webhook ID | | ↳ `name` | string | Webhook name | | ↳ `channel_id` | string | Channel ID | | ↳ `guild_id` | string | Server ID | | ↳ `token` | string | Webhook token | ### Discord Delete Webhook [#discord-delete-webhook] Delete a Discord webhook #### Input [#input-38] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `botToken` | string | Yes | The bot token for authentication | | `webhookId` | string | Yes | The webhook ID to delete, e.g., 123456789012345678 | | `serverId` | string | Yes | The Discord server ID (guild ID), e.g., 123456789012345678 | #### Output [#output-38] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Success or error message | --- # DocuSign (/integrations/docusign) {/* MANUAL-CONTENT-START:intro */} Use [DocuSign](https://www.docusign.com) to send envelopes for e-signature, create them from templates, inspect recipients and signing status, and download completed documents. Pending envelopes can be voided with a reason. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Create and send envelopes for e-signature, use templates, check signing status, download signed documents, and manage recipients with DocuSign. ## Actions [#actions] ### Send DocuSign Envelope [#send-docusign-envelope] Create and send a DocuSign envelope with a document for e-signature #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `emailSubject` | string | Yes | Email subject for the envelope | | `emailBody` | string | No | Email body message | | `signerEmail` | string | Yes | Email address of the signer | | `signerName` | string | Yes | Full name of the signer | | `ccEmail` | string | No | Email address of carbon copy recipient | | `ccName` | string | No | Full name of carbon copy recipient | | `file` | file | No | Document file to send for signature | | `status` | string | No | Envelope status: "sent" to send immediately, "created" for draft (default: "sent") | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `envelopeId` | string | Created envelope ID | | `status` | string | Envelope status | | `statusDateTime` | string | Status change datetime | | `uri` | string | Envelope URI | ### Send from DocuSign Template [#send-from-docusign-template] Create and send a DocuSign envelope using a pre-built template #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `templateId` | string | Yes | DocuSign template ID to use | | `emailSubject` | string | No | Override email subject (uses template default if not set) | | `emailBody` | string | No | Override email body message | | `templateRoles` | string | Yes | JSON array of template roles, e.g. \[\{"roleName":"Signer","name":"John","email":"[john@example.com](mailto:john@example.com)"}] | | `status` | string | No | Envelope status: "sent" to send immediately, "created" for draft (default: "sent") | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `envelopeId` | string | Created envelope ID | | `status` | string | Envelope status | | `statusDateTime` | string | Status change datetime | | `uri` | string | Envelope URI | ### Get DocuSign Envelope [#get-docusign-envelope] Get the details and status of a DocuSign envelope #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------- | | `envelopeId` | string | Yes | The envelope ID to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------- | | `envelopeId` | string | Envelope ID | | `status` | string | Envelope status (created, sent, delivered, completed, declined, voided) | | `emailSubject` | string | Email subject line | | `sentDateTime` | string | When the envelope was sent | | `completedDateTime` | string | When all recipients completed signing | | `createdDateTime` | string | When the envelope was created | | `statusChangedDateTime` | string | When the status last changed | | `voidedReason` | string | Reason the envelope was voided | | `signerCount` | number | Number of signers | | `documentCount` | number | Number of documents | ### List DocuSign Envelopes [#list-docusign-envelopes] List envelopes from your DocuSign account with optional filters #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------- | | `fromDate` | string | No | Start date filter (ISO 8601). Defaults to 30 days ago | | `toDate` | string | No | End date filter (ISO 8601) | | `envelopeStatus` | string | No | Filter by status: created, sent, delivered, completed, declined, voided | | `searchText` | string | No | Search text to filter envelopes | | `count` | string | No | Maximum number of envelopes to return (default: 25) | #### Output [#output-3] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------------------------------------------------- | | `envelopes` | array | Array of DocuSign envelopes | | ↳ `envelopeId` | string | Unique envelope identifier | | ↳ `status` | string | Envelope status (created, sent, delivered, completed, declined, voided) | | ↳ `emailSubject` | string | Email subject line | | ↳ `sentDateTime` | string | ISO 8601 datetime when envelope was sent | | ↳ `completedDateTime` | string | ISO 8601 datetime when envelope was completed | | ↳ `createdDateTime` | string | ISO 8601 datetime when envelope was created | | ↳ `statusChangedDateTime` | string | ISO 8601 datetime of last status change | | `totalSetSize` | number | Total number of matching envelopes | | `resultSetSize` | number | Number of envelopes returned in this response | ### Void DocuSign Envelope [#void-docusign-envelope] Void (cancel) a sent DocuSign envelope that has not yet been completed #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------- | | `envelopeId` | string | Yes | The envelope ID to void | | `voidedReason` | string | Yes | Reason for voiding the envelope | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | ------------------------ | | `envelopeId` | string | Voided envelope ID | | `status` | string | Envelope status (voided) | ### Download DocuSign Document [#download-docusign-document] Download a signed document from a completed DocuSign envelope #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `envelopeId` | string | Yes | The envelope ID containing the document | | `documentId` | string | No | Specific document ID to download, or "combined" for all documents merged (default: "combined") | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------ | | `file` | file | Stored downloaded document file | | `base64Content` | string | Deprecated legacy inline content. New downloads return file. | | `mimeType` | string | MIME type of the document | | `fileName` | string | Original file name | ### List DocuSign Templates [#list-docusign-templates] List available templates in your DocuSign account #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------- | | `searchText` | string | No | Search text to filter templates by name | | `count` | string | No | Maximum number of templates to return | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------- | | `templates` | array | Array of DocuSign templates | | ↳ `templateId` | string | Template identifier | | ↳ `name` | string | Template name | | ↳ `description` | string | Template description | | ↳ `shared` | boolean | Whether template is shared | | ↳ `created` | string | ISO 8601 creation date | | ↳ `lastModified` | string | ISO 8601 last modified date | | `totalSetSize` | number | Total number of matching templates | | `resultSetSize` | number | Number of templates returned in this response | ### List DocuSign Recipients [#list-docusign-recipients] Get the recipient status details for a DocuSign envelope #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `envelopeId` | string | Yes | The envelope ID to get recipients for | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------- | | `signers` | array | Array of DocuSign recipients | | ↳ `recipientId` | string | Recipient identifier | | ↳ `name` | string | Recipient name | | ↳ `email` | string | Recipient email address | | ↳ `status` | string | Recipient signing status (sent, delivered, completed, declined) | | ↳ `signedDateTime` | string | ISO 8601 datetime when recipient signed | | ↳ `deliveredDateTime` | string | ISO 8601 datetime when delivered to recipient | | `carbonCopies` | array | Array of carbon copy recipients | | ↳ `recipientId` | string | Recipient ID | | ↳ `name` | string | Recipient name | | ↳ `email` | string | Recipient email | | ↳ `status` | string | Recipient status | --- # Downdetector (/integrations/downdetector) {/* MANUAL-CONTENT-START:intro */} [Downdetector](https://downdetector.com/) is an outage-tracking service that aggregates user-submitted reports to detect and visualize real-time service disruptions for thousands of companies. The Downdetector Enterprise API exposes this data programmatically for monitoring and alerting. With Downdetector, you can: * **Search and identify companies**: Look up monitored companies by name, slug, country, or category to get their ids and status page URLs * **Check current status and trends**: Read a company's cached status, 24h report statistics, and baseline to judge whether current activity is abnormal * **Inspect problem indicators**: See which specific issues (e.g. "Login", "App crashing") are being reported and in what proportion * **Track incidents and events**: Pull incident timelines, published events, and attribution data (internal vs. external cause, user impact) for outages In Agent Serve, the Downdetector integration allows your agents to search for monitored companies, check their current status and baseline reports, retrieve near-real-time report counts and problem indicators, and pull incident, event, and attribution data — all programmatically through API calls. This enables your agents to power outage alerts, monitoring dashboards, and automated incident summaries that stay current with service disruptions across the companies and regions Downdetector tracks. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Track real-time service outages with the Downdetector Enterprise API. Search monitored companies, read their current status and report trends, inspect problem indicators, and pull incident timelines to power outage alerts and dashboards. Requires a Downdetector Enterprise API plan. ## Actions [#actions] ### Downdetector Search Companies [#downdetector-search-companies] Search Downdetector for monitored companies by name, slug, country, or category. Returns matching companies with their ids and slugs, which you can use with the other Downdetector operations. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------- | | `name` | string | No | Company name to filter on (partial, case-insensitive match). Example: "slack" | | `country` | string | No | ISO-2 country code to filter on. Example: "US" | | `slug` | string | No | Exact company slug to filter on. Example: "optimum-cablevision" | | `categoryId` | number | No | Category id to filter on | | `page` | number | No | 1-indexed page number for paginated results (default 1) | | `pageSize` | number | No | Number of results per page, between 10 and 100 (default 25) | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `companies` | array | List of companies matching the search | | ↳ `id` | number | Company id | | ↳ `name` | string | Company name | | ↳ `slug` | string | Company slug | | ↳ `url` | string | Company status page URL | | ↳ `countryIso` | string | ISO-2 country code | | ↳ `categoryId` | number | Category id | ### Downdetector Get Company [#downdetector-get-company] Get details for a Downdetector company by id, including its current status, 24h report statistics, baseline, and available problem indicators. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `fields` | string | No | Comma-separated list of fields to return (defaults to a rich set including status, stats\_24, and baseline) | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------ | | `company` | object | Company details | | ↳ `id` | number | Company id | | ↳ `name` | string | Company name | | ↳ `slug` | string | Company slug | | ↳ `url` | string | Company status page URL | | ↳ `status` | string | Cached current status (success, warning, or danger) | | ↳ `categoryId` | number | Category id | | ↳ `countryIso` | string | ISO-2 country code | | ↳ `siteId` | number | Site id | | ↳ `baselineCurrent` | number | The current considered average reports at this point in time | | ↳ `stats24` | array | Reports over the last 24h in 15-minute buckets | | ↳ `baseline` | array | Averaged baseline values per 15m over 24h | | ↳ `indicators` | array | List of available problem indicators | | ↳ `description` | string | Company description | ### Downdetector Get Company Status [#downdetector-get-company-status] Get the current detected status for a Downdetector company. Returns "success" (no problems), "warning", or "danger" (likely outage). #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `threshold` | number | No | If set, returns "danger" when the current report count is above this threshold, otherwise "success" | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------- | | `status` | string | Current status: "success", "warning", or "danger" | ### Downdetector Get Company Baseline [#downdetector-get-company-baseline] Get the current baseline report value for a Downdetector company. This is the expected average number of reports for the current period, used to judge whether current reports are abnormal. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------- | | `baseline` | number | The current baseline (expected average reports) for this period | ### Downdetector Get Company Last 15 Minutes [#downdetector-get-company-last-15-minutes] Get the number of outage reports for a Downdetector company over the last 15 minutes. A convenient near-real-time signal for threshold-based alerting. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `count` | number | Number of reports over the last 15 minutes | ### Downdetector Get Company Indicators [#downdetector-get-company-indicators] Get the problem indicators (e.g. "App crashing", "Login", "Server connection") reported for a Downdetector company over a time period, with the report counts and percentages for each. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) | | `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------- | | `indicators` | array | Reported problem indicators with their counts | | ↳ `slug` | string | Indicator slug | | ↳ `indicator` | string | Human-readable indicator label | | ↳ `key` | string | Indicator key | | ↳ `amount` | number | Number of reports for this indicator | | ↳ `percentage` | number | Share of total reports (percentage) | ### Downdetector Get Reports [#downdetector-get-reports] Get the number of outage reports over time for one or more company slugs, bucketed by interval. Useful for plotting report trends or detecting spikes. Defaults to the last 24 hours. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `slugs` | string | Yes | Comma-separated company slug(s) to report on. Example: "slack,zoom" | | `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) | | `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) | | `interval` | string | No | Bucket interval, e.g. "15m", "1h", "1d" (default "15m") | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `reports` | array | Report counts bucketed by interval | | ↳ `pointInTime` | string | Start of the time bucket (ISO 8601) | | ↳ `total` | number | Total number of reports in the bucket | | ↳ `indicators` | number | Number of indicator reports | | ↳ `other` | number | Number of reports from other sources | ### Downdetector Get Company Incidents [#downdetector-get-company-incidents] Get the list of incidents (outages) for a Downdetector company. Defaults to the last 24 hours unless a date range is provided. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `onlyActive` | boolean | No | When true, only the currently active incident is returned | | `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) | | `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) | | `page` | number | No | Requested page number (1-indexed) | | `pageSize` | number | No | Number of results per page, between 10 and 100 | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ----- | --------------------------------- | | `incidents` | array | List of incidents for the company | ### Downdetector Get Company Attribution [#downdetector-get-company-attribution] Get the incident attribution for a Downdetector company while it is in an outage state — whether the issue is internal (isolated) or external (a dependency), the estimated user impact, and the related incident. Requires Incident Attribution access. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-8] | Parameter | Type | Description | | --------------------------- | ------ | --------------------------------------------------------------------- | | `attribution` | object | Incident attribution detail | | ↳ `attribution` | number | Attribution enum (0 N/A, 1 undetermined, 2 external, 3 internal) | | ↳ `attributionCalculatedAt` | string | ISO 8601 timestamp when attribution was calculated | | ↳ `userImpact` | number | User impact enum (0 low, 1 medium, 2 high, 3 very high) | | ↳ `userImpactCalculatedAt` | string | ISO 8601 timestamp when user impact was calculated | | ↳ `reason` | number | Reason enum explaining how the attribution value was calculated (0-7) | | ↳ `dangerDurationS` | number | Duration of the current danger (outage) state in seconds | | ↳ `incidentId` | number | Id of the related incident (null when attribution is N/A) | | ↳ `incidentCreatedAt` | string | ISO 8601 timestamp when the related incident was created | ### Downdetector Get Company Events [#downdetector-get-company-events] Get the published events (such as detected outages) for a Downdetector company, including the measured vs expected report volume for each event. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------- | | `companyId` | string | Yes | The Downdetector company id | | `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) | | `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) | | `page` | number | No | Requested page number (1-indexed) | | `pageSize` | number | No | Number of results per page, between 10 and 100 | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------- | | `events` | array | List of events for the company | | ↳ `id` | number | Event id | | ↳ `title` | string | Localized event title | | ↳ `body` | string | Localized event body | | ↳ `companyId` | number | Id of the impacted company | | ↳ `createdAt` | string | ISO 8601 creation timestamp | | ↳ `publishAt` | string | ISO 8601 publish timestamp | | ↳ `isActive` | boolean | Whether the event is ongoing | | ↳ `measurement` | object | Measured vs expected report volume for the event window | | ↳ `startedOn` | string | Measurement window start (ISO 8601) | | ↳ `endedOn` | string | Measurement window end (ISO 8601) | | ↳ `expected` | number | Expected reports based on historic data | | ↳ `actual` | number | Actual reports in the window | ### Downdetector Get Site Companies [#downdetector-get-site-companies] List the companies monitored on a Downdetector site, including each company’s current status. Useful for discovering the companies available on a regional status page. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------- | | `siteId` | string | Yes | The Downdetector site id | | `fields` | string | No | Comma-separated company fields to return (defaults to id, name, slug, status) | | `page` | string | No | Opaque page token from a previous response (X-Page-Next) for the next page | | `pageSize` | number | No | Number of results per page, between 10 and 100 | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------- | | `companies` | array | List of companies on the site | | ↳ `id` | number | Company id | | ↳ `name` | string | Company name | | ↳ `slug` | string | Company slug | | ↳ `url` | string | Company status page URL | | ↳ `status` | string | Cached current status (success, warning, or danger) | | ↳ `countryIso` | string | ISO-2 country code | | ↳ `categoryId` | number | Category id | ### Downdetector Get Provider [#downdetector-get-provider] Get details for a Downdetector provider (ISP or network operator) by id, such as its name and Downdetector id. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------- | | `providerId` | string | Yes | The Downdetector provider id | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------- | | `provider` | object | Provider details | | ↳ `id` | number | Provider id | | ↳ `name` | string | Provider name | | ↳ `downdetectorId` | number | Downdetector internal provider id | ### Downdetector List Incidents [#downdetector-list-incidents] List all incidents (outages) across every company that were active in the chosen time period, or in the last 24 hours if no date range is provided. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------- | | `onlyActive` | boolean | No | When true, only currently active incidents are returned | | `startdate` | string | No | ISO 8601 start of the time range (only works together with enddate) | | `enddate` | string | No | ISO 8601 end of the time range (only works together with startdate) | | `page` | number | No | Requested page number (1-indexed) | | `pageSize` | number | No | Number of results per page, between 10 and 100 | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-12] | Parameter | Type | Description | | ----------- | ----- | -------------------------------------- | | `incidents` | array | List of incidents across all companies | ### Downdetector List Categories [#downdetector-list-categories] List all Downdetector categories (e.g. "Telecom", "Gaming", "Social Media"). Use the returned category id to filter company searches. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------ | ------------------------------- | | `categories` | array | List of Downdetector categories | | ↳ `id` | number | Category id | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | ### Downdetector List Sites [#downdetector-list-sites] List all available Downdetector sites (regional status-page domains). Each site groups the companies monitored for a given country/region. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Downdetector API Bearer token | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | -------------------------- | | `sites` | array | List of Downdetector sites | | ↳ `id` | number | Site id | | ↳ `name` | string | Site name | | ↳ `domain` | string | Site domain | | ↳ `countryId` | number | Country id for the site | --- # Dropbox (/integrations/dropbox) {/* MANUAL-CONTENT-START:intro */} [Dropbox](https://dropbox.com/) is a popular cloud storage and collaboration platform that enables individuals and teams to securely store, access, and share files from anywhere. Dropbox is designed for easy file management, syncing, and powerful collaboration, whether you're working solo or with a group. With Dropbox in Agent Serve, you can: * **Upload and download files**: Seamlessly upload any file to your Dropbox or retrieve content on demand * **List folder contents**: Browse the files and folders within any Dropbox directory * **Create new folders**: Organize your files by programmatically creating new folders in your Dropbox * **Search files and folders**: Locate documents, images, or other items by name or content * **Generate shared links**: Quickly create shareable public or private links for files and folders * **Manage files**: Move, delete, or rename files and folders as part of automated workflows These capabilities allow your Agent Serve agents to automate Dropbox operations directly within your workflows — from backing up important files to distributing content and maintaining organized folders. Use Dropbox as both a source and destination for files, enabling seamless cloud storage management as part of your business processes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more. ## Actions [#actions] ### Dropbox Upload File [#dropbox-upload-file] Upload a file to Dropbox #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------- | | `path` | string | Yes | The path in Dropbox where the file should be saved (e.g., /folder/document.pdf) | | `file` | file | No | The file to upload (UserFile object) | | `fileName` | string | No | Optional filename (used if path is a folder) | | `mode` | string | No | Write mode: add (default) or overwrite | | `autorename` | boolean | No | If true, rename the file if there is a conflict | | `mute` | boolean | No | If true, don't notify the user about this upload | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------ | | `file` | object | The uploaded file metadata | | ↳ `id` | string | Unique identifier for the file | | ↳ `name` | string | Name of the file | | ↳ `path_display` | string | Display path of the file | | ↳ `path_lower` | string | Lowercase path of the file | | ↳ `size` | number | Size of the file in bytes | | ↳ `client_modified` | string | Client modification time | | ↳ `server_modified` | string | Server modification time | | ↳ `rev` | string | Revision identifier | | ↳ `content_hash` | string | Content hash for the file | ### Dropbox Download File [#dropbox-download-file] Download a file from Dropbox with metadata #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `path` | string | Yes | The path of the file to download (e.g., /folder/document.pdf) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------- | | `file` | file | Downloaded file stored in execution files | | `metadata` | json | The file metadata | | `temporaryLink` | string | Temporary link to download the file (valid for \~4 hours) | ### Dropbox List Folder [#dropbox-list-folder] List the contents of a folder in Dropbox #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------- | | `path` | string | Yes | The path of the folder to list (use "" for root) | | `recursive` | boolean | No | If true, list contents recursively | | `includeDeleted` | boolean | No | If true, include deleted files/folders | | `includeMediaInfo` | boolean | No | If true, include media info for photos/videos | | `limit` | number | No | Maximum number of results to return (default: 500) | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------ | | `entries` | array | List of files and folders in the directory | | ↳ `id` | string | Unique identifier | | ↳ `name` | string | Name of the file/folder | | ↳ `path_display` | string | Display path | | ↳ `size` | number | Size in bytes (files only) | | `cursor` | string | Cursor for pagination | | `hasMore` | boolean | Whether there are more results | ### Dropbox Create Folder [#dropbox-create-folder] Create a new folder in Dropbox #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------------------- | | `path` | string | Yes | The path where the folder should be created (e.g., /new-folder) | | `autorename` | boolean | No | If true, rename the folder if there is a conflict | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------- | | `folder` | object | The created folder metadata | | ↳ `id` | string | Unique identifier for the folder | | ↳ `name` | string | Name of the folder | | ↳ `path_display` | string | Display path of the folder | | ↳ `path_lower` | string | Lowercase path of the folder | ### Dropbox Delete [#dropbox-delete] Delete a file or folder in Dropbox (moves to trash) #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `path` | string | Yes | The path of the file or folder to delete | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `metadata` | object | Metadata of the deleted item | | ↳ `name` | string | Name of the deleted item | | ↳ `path_display` | string | Display path | | `deleted` | boolean | Whether the deletion was successful | ### Dropbox Copy [#dropbox-copy] Copy a file or folder in Dropbox #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------- | | `fromPath` | string | Yes | The source path of the file or folder to copy | | `toPath` | string | Yes | The destination path for the copied file or folder | | `autorename` | boolean | No | If true, rename the file if there is a conflict at destination | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | --------------------------- | | `metadata` | object | Metadata of the copied item | | ↳ `id` | string | Unique identifier | | ↳ `name` | string | Name of the copied item | | ↳ `path_display` | string | Display path | | ↳ `size` | number | Size in bytes (files only) | ### Dropbox Move [#dropbox-move] Move or rename a file or folder in Dropbox #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------- | | `fromPath` | string | Yes | The source path of the file or folder to move | | `toPath` | string | Yes | The destination path for the moved file or folder | | `autorename` | boolean | No | If true, rename the file if there is a conflict at destination | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | -------------------------- | | `metadata` | object | Metadata of the moved item | | ↳ `id` | string | Unique identifier | | ↳ `name` | string | Name of the moved item | | ↳ `path_display` | string | Display path | | ↳ `size` | number | Size in bytes (files only) | ### Dropbox Get Metadata [#dropbox-get-metadata] Get metadata for a file or folder in Dropbox #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------- | | `path` | string | Yes | The path of the file or folder to get metadata for | | `includeMediaInfo` | boolean | No | If true, include media info for photos/videos | | `includeDeleted` | boolean | No | If true, include deleted files in results | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------- | | `metadata` | object | Metadata for the file or folder | | ↳ `id` | string | Unique identifier | | ↳ `name` | string | Name of the item | | ↳ `path_display` | string | Display path | | ↳ `path_lower` | string | Lowercase path | | ↳ `size` | number | Size in bytes (files only) | | ↳ `client_modified` | string | Client modification time (files only) | | ↳ `server_modified` | string | Server modification time (files only) | | ↳ `rev` | string | Revision identifier (files only) | | ↳ `content_hash` | string | Content hash (files only) | ### Dropbox Create Shared Link [#dropbox-create-shared-link] Create a shareable link for a file or folder in Dropbox #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------- | | `path` | string | Yes | The path of the file or folder to share | | `requestedVisibility` | string | No | Visibility: public, team\_only, or password | | `linkPassword` | string | No | Password for the shared link (only if visibility is password) | | `expires` | string | No | Expiration date in ISO 8601 format (e.g., 2025-12-31T23:59:59Z) | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `sharedLink` | object | The created shared link | | ↳ `url` | string | The shared link URL | | ↳ `name` | string | Name of the shared item | | ↳ `path_lower` | string | Lowercase path of the shared item | | ↳ `expires` | string | Expiration date if set | | ↳ `link_permissions` | object | Permissions for the shared link | ### Dropbox List Shared Links [#dropbox-list-shared-links] List shared links for a path, or for the entire account if no path is given #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------ | | `path` | string | No | Path to list shared links for. If omitted, lists all shared links. | | `directOnly` | boolean | No | If true, only return links directly to the path, not parent folder links | | `cursor` | string | No | Cursor from a previous call to fetch the next page of results | #### Output [#output-9] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------- | | `links` | array | Shared links applicable to the path argument | | ↳ `url` | string | The shared link URL | | ↳ `name` | string | Name of the shared item | | ↳ `path_lower` | string | Lowercase path of the shared item | | ↳ `expires` | string | Expiration date if set | | `hasMore` | boolean | Whether there are more results | | `cursor` | string | Cursor for pagination (only returned when no path is given) | ### Dropbox Search [#dropbox-search] Search for files and folders in Dropbox #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------- | | `query` | string | Yes | The search query | | `path` | string | No | Dropbox folder path to limit search scope (e.g., /folder/subfolder) | | `fileExtensions` | string | No | Comma-separated list of file extensions to filter by (e.g., pdf,xlsx) | | `maxResults` | number | No | Maximum number of results to return (default: 100) | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------- | | `matches` | array | Search results | | ↳ `match_type` | object | Type of match: filename, content, or both | | ↳ `metadata` | object | File or folder metadata | | `hasMore` | boolean | Whether there are more results | | `cursor` | string | Cursor for pagination | ### Dropbox List Revisions [#dropbox-list-revisions] List the revision history for a file in Dropbox (files only, not folders) #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `path` | string | Yes | The path of the file to list revisions for | | `limit` | number | No | Maximum number of revisions to return, 1-100 (default: 10) | | `beforeRev` | string | No | Only return revisions before this one. Pass the rev of the last revision from a previous call to fetch the next page. | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------- | | `entries` | array | The revisions for the file, most recent first | | ↳ `id` | string | Unique identifier for this revision | | ↳ `name` | string | Name of the file | | ↳ `path_display` | string | Display path | | ↳ `rev` | string | Revision identifier, pass to Restore | | ↳ `size` | number | Size of this revision in bytes | | ↳ `server_modified` | string | Server modification time | | `isDeleted` | boolean | Whether the file identified by the latest revision is deleted or moved | | `hasMore` | boolean | Whether there are more revisions available | ### Dropbox Restore [#dropbox-restore] Restore a specific revision of a file to the given path #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `path` | string | Yes | The path to save the restored file to | | `rev` | string | Yes | The revision identifier to restore (from Dropbox List Revisions) | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------- | | `metadata` | object | Metadata of the restored file | | ↳ `id` | string | Unique identifier for the file | | ↳ `name` | string | Name of the file | | ↳ `path_display` | string | Display path of the file | | ↳ `path_lower` | string | Lowercase path of the file | | ↳ `size` | number | Size of the file in bytes | | ↳ `rev` | string | Revision identifier of the restored file | | ↳ `server_modified` | string | Server modification time | --- # Dropcontact (/integrations/dropcontact) {/* MANUAL-CONTENT-START:intro */} Use [Dropcontact](https://www.dropcontact.com/) to enrich contact data from a name, company, website, or LinkedIn URL. Requests are asynchronous; Agent Serve polls until the result is ready. Credits are charged when a verified email is returned. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Use Dropcontact to verify and enrich B2B contacts. Submit a contact with their name, company, website, or LinkedIn URL and receive a verified professional email, phone number, company firmographics, and LinkedIn profile. Enrichment is async: Dropcontact processes the request, then Agent Serve polls until the result is ready. Credits are only charged when a verified email is returned. ## Actions [#actions] ### Dropcontact Enrich Contact [#dropcontact-enrich-contact] Enrich a contact with verified B2B email, phone, company data, and LinkedIn info via Dropcontact. Submits an async enrichment request, then polls until the result is ready (up to 2 minutes). Charges 1 credit only when a verified email is returned. Provide at least one of: email, first\_name+last\_name+company, full\_name+company, or linkedin URL. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Dropcontact API key (X-Access-Token) | | `email` | string | No | Email address of the contact to enrich | | `first_name` | string | No | First name of the contact | | `last_name` | string | No | Last name of the contact | | `full_name` | string | No | Full name (alternative to first\_name + last\_name) | | `company` | string | No | Company name | | `website` | string | No | Company website (e.g. acme.com) | | `num_siren` | string | No | French company SIREN number | | `phone` | string | No | Phone number | | `linkedin` | string | No | LinkedIn profile URL | | `country` | string | No | Country code (ISO 3166-1 alpha-2, e.g. "US", "FR") | | `siren` | boolean | No | Include SIREN/SIRET enrichment (France only) | | `language` | string | No | Language for returned data (e.g. "en", "fr") | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `request_id` | string | Dropcontact async request ID | | `email_found` | boolean | Whether a verified email was found | | `email` | string | Primary verified email address | | `emails` | array | All email addresses returned (each with email and qualification) | | ↳ `email` | string | Email address | | ↳ `qualification` | string | Email qualification (e.g. nominative\@pro) | | `qualification` | string | Primary email qualification (e.g. nominative\@pro, catch\_all\@pro) | | `first_name` | string | First name | | `last_name` | string | Last name | | `full_name` | string | Full name | | `civility` | string | Civility (Mr, Mrs, etc.) | | `phone` | string | Phone number | | `mobile_phone` | string | Mobile phone number | | `company` | string | Company name | | `website` | string | Company website | | `company_linkedin` | string | Company LinkedIn URL | | `linkedin` | string | Personal LinkedIn URL | | `country` | string | Country code (ISO 3166-1 alpha-2) | | `siren` | string | French SIREN number | | `siret` | string | French SIRET number | | `siret_address` | string | SIRET registered address | | `siret_zip` | string | SIRET registered postal code | | `siret_city` | string | SIRET registered city | | `vat` | string | VAT number | | `nb_employees` | string | Employee count range | | `employee_count` | number | Exact employee count (Growth plan and above) | | `naf5_code` | string | NAF/APE code (France) | | `naf5_des` | string | NAF/APE code description (France) | | `industry` | string | Industry classification | | `job` | string | Job title | | `job_level` | string | Job seniority level (e.g. C-level, Director) | | `job_function` | string | Job function (e.g. Sales, Engineering) | | `company_turnover` | string | Company revenue/turnover range | | `company_results` | string | Company net results | --- # DSPy (/integrations/dspy) {/* MANUAL-CONTENT-START:intro */} [DSPy](https://github.com/stanford-oval/dspy) is an open-source framework for programming—rather than prompting—language models. DSPy enables you to build interpretable and modular LLM-powered agents using Python functions, structured modules, and declarative signatures, making it easy to compose, debug, and reliably deploy language model applications. With DSPy in Agent Serve, you can: * **Run custom predictions**: Connect your self-hosted DSPy server and invoke prediction endpoints for a variety of natural language tasks. * **Chain of Thought and ReAct reasoning**: Leverage advanced DSPy modules for step-by-step reasoning, multi-turn dialogs, and action-observation loops. * **Integrate with your workflows**: Automate LLM predictions and reasoning as part of any Agent Serve automation or agent routine. * **Provide custom endpoints and context**: Flexibly call your own DSPy-powered APIs with custom authentication, endpoints, input fields, and context. These features let your Agent Serve agents access modular, interpretable LLM-based programs for tasks like question answering, document analysis, decision support, and more—where you remain in control of the model, data, and logic. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with your self-hosted DSPy programs for LLM-powered predictions. Supports Predict, Chain of Thought, and ReAct agents. DSPy is the framework for programming—not prompting—language models. ## Actions [#actions] ### DSPy Predict [#dspy-predict] Run a prediction using a self-hosted DSPy program endpoint #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com](https://your-dspy-server.com)) | | `apiKey` | string | No | API key for authentication (if required by your server) | | `endpoint` | string | No | API endpoint path (defaults to /predict) | | `input` | string | Yes | The input text to send to the DSPy program | | `inputField` | string | No | Name of the input field expected by the DSPy program (defaults to "text") | | `context` | string | No | Additional context to provide to the DSPy program | | `additionalInputs` | json | No | Additional key-value pairs to include in the request body | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------- | | `answer` | string | The main output/answer from the DSPy program | | `reasoning` | string | The reasoning or rationale behind the answer (if available) | | `status` | string | Response status from the DSPy server (success or error) | | `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) | ### DSPy Chain of Thought [#dspy-chain-of-thought] Run a Chain of Thought prediction using a self-hosted DSPy ChainOfThought program endpoint #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com](https://your-dspy-server.com)) | | `apiKey` | string | No | API key for authentication (if required by your server) | | `endpoint` | string | No | API endpoint path (defaults to /predict) | | `question` | string | Yes | The question to answer using chain of thought reasoning | | `context` | string | No | Additional context to provide for answering the question | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------- | | `answer` | string | The answer generated through chain of thought reasoning | | `reasoning` | string | The step-by-step reasoning that led to the answer | | `status` | string | Response status from the DSPy server (success or error) | | `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) | ### DSPy ReAct [#dspy-react] Run a ReAct agent using a self-hosted DSPy ReAct program endpoint for multi-step reasoning and action #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Base URL of the DSPy server (e.g., [https://your-dspy-server.com](https://your-dspy-server.com)) | | `apiKey` | string | No | API key for authentication (if required by your server) | | `endpoint` | string | No | API endpoint path (defaults to /predict) | | `task` | string | Yes | The task or question for the ReAct agent to work on | | `context` | string | No | Additional context to provide for the task | | `maxIterations` | number | No | Maximum number of reasoning iterations (defaults to server setting) | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------ | | `answer` | string | The final answer or result from the ReAct agent | | `reasoning` | string | The overall reasoning summary from the agent | | `trajectory` | array | The step-by-step trajectory of thoughts, actions, and observations | | ↳ `thought` | string | The reasoning thought at this step | | ↳ `toolName` | string | The name of the tool/action called | | ↳ `toolArgs` | json | Arguments passed to the tool | | ↳ `observation` | string | The observation/result from the tool execution | | `status` | string | Response status from the DSPy server (success or error) | | `rawOutput` | json | The complete raw output from the DSPy program (result.toDict()) | --- # Dub (/integrations/dub) {/* MANUAL-CONTENT-START:intro */} [Dub](https://dub.co/) is an open-source link management platform for modern marketing teams. It provides powerful short link creation, analytics, and tracking capabilities with enterprise-grade infrastructure. With the Dub integration in Agent Serve, you can: * **Create short links**: Generate branded short links with custom domains, slugs, and UTM parameters * **Upsert links**: Create or update links idempotently by destination URL * **Retrieve link info**: Look up link details by ID, external ID, or domain + key combination * **Update links**: Modify destination URLs, metadata, UTM parameters, and link settings * **Delete links**: Remove short links by ID or external ID * **List links**: Search and filter links with pagination, sorting, and tag filtering * **Get analytics**: Retrieve click, lead, and sales analytics with grouping by time, geography, device, browser, referer, and more In Agent Serve, the Dub integration enables your agents to manage short links and track their performance programmatically. Use it to create trackable links as part of marketing workflows, monitor link engagement, and make data-driven decisions based on click analytics and conversion metrics. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Create, manage, and track short links with Dub. Supports custom domains, UTM parameters, link analytics, and more. ## Actions [#actions] ### Dub Create Link [#dub-create-link] Create a new short link with Dub. Supports custom domains, slugs, UTM parameters, and more. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `url` | string | Yes | The destination URL of the short link | | `domain` | string | No | Custom domain for the short link (defaults to dub.sh) | | `key` | string | No | Custom slug for the short link (randomly generated if not provided) | | `externalId` | string | No | External ID for the link in your database | | `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant | | `folderId` | string | No | Folder ID to organize the link into | | `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link | | `tagIds` | string | No | Comma-separated tag IDs to assign to the link | | `comments` | string | No | Comments for the short link | | `expiresAt` | string | No | Expiration date in ISO 8601 format | | `password` | string | No | Password to protect the short link | | `rewrite` | boolean | No | Whether to enable link cloaking | | `archived` | boolean | No | Whether to archive the link | | `title` | string | No | Custom OG title for the link preview | | `description` | string | No | Custom OG description for the link preview | | `utm_source` | string | No | UTM source parameter | | `utm_medium` | string | No | UTM medium parameter | | `utm_campaign` | string | No | UTM campaign parameter | | `utm_term` | string | No | UTM term parameter | | `utm_content` | string | No | UTM content parameter | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `id` | string | Unique ID of the created link | | `domain` | string | Domain of the short link | | `key` | string | Slug of the short link | | `url` | string | Destination URL | | `shortLink` | string | Full short link URL | | `qrCode` | string | QR code URL for the short link | | `archived` | boolean | Whether the link is archived | | `externalId` | string | External ID | | `title` | string | OG title | | `description` | string | OG description | | `tags` | json | Tags assigned to the link (id, name, color) | | `folderId` | string | Folder the link is organized into | | `tenantId` | string | Tenant ID associated with the link | | `trackConversion` | boolean | Whether conversion tracking is enabled | | `clicks` | number | Number of clicks | | `leads` | number | Number of leads | | `conversions` | number | Number of conversions | | `sales` | number | Number of sales | | `saleAmount` | number | Total sale amount in cents | | `lastClicked` | string | Last clicked timestamp | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `utm_source` | string | UTM source parameter | | `utm_medium` | string | UTM medium parameter | | `utm_campaign` | string | UTM campaign parameter | | `utm_term` | string | UTM term parameter | | `utm_content` | string | UTM content parameter | ### Dub Upsert Link [#dub-upsert-link] Create or update a short link by its URL. If a link with the same URL already exists, update it. Otherwise, create a new link. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `url` | string | Yes | The destination URL of the short link | | `domain` | string | No | Custom domain for the short link (defaults to dub.sh) | | `key` | string | No | Custom slug for the short link (randomly generated if not provided) | | `externalId` | string | No | External ID for the link in your database | | `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant | | `folderId` | string | No | Folder ID to organize the link into | | `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link | | `tagIds` | string | No | Comma-separated tag IDs to assign to the link | | `comments` | string | No | Comments for the short link | | `expiresAt` | string | No | Expiration date in ISO 8601 format | | `password` | string | No | Password to protect the short link | | `rewrite` | boolean | No | Whether to enable link cloaking | | `archived` | boolean | No | Whether to archive the link | | `title` | string | No | Custom OG title for the link preview | | `description` | string | No | Custom OG description for the link preview | | `utm_source` | string | No | UTM source parameter | | `utm_medium` | string | No | UTM medium parameter | | `utm_campaign` | string | No | UTM campaign parameter | | `utm_term` | string | No | UTM term parameter | | `utm_content` | string | No | UTM content parameter | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `id` | string | Unique ID of the link | | `domain` | string | Domain of the short link | | `key` | string | Slug of the short link | | `url` | string | Destination URL | | `shortLink` | string | Full short link URL | | `qrCode` | string | QR code URL for the short link | | `archived` | boolean | Whether the link is archived | | `externalId` | string | External ID | | `title` | string | OG title | | `description` | string | OG description | | `tags` | json | Tags assigned to the link (id, name, color) | | `folderId` | string | Folder the link is organized into | | `tenantId` | string | Tenant ID associated with the link | | `trackConversion` | boolean | Whether conversion tracking is enabled | | `clicks` | number | Number of clicks | | `leads` | number | Number of leads | | `conversions` | number | Number of conversions | | `sales` | number | Number of sales | | `saleAmount` | number | Total sale amount in cents | | `lastClicked` | string | Last clicked timestamp | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `utm_source` | string | UTM source parameter | | `utm_medium` | string | UTM medium parameter | | `utm_campaign` | string | UTM campaign parameter | | `utm_term` | string | UTM term parameter | | `utm_content` | string | UTM content parameter | ### Dub Get Link [#dub-get-link] Retrieve information about a short link by its link ID, external ID, or domain + key combination. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `linkId` | string | No | The unique ID of the short link | | `externalId` | string | No | The external ID of the link in your database | | `domain` | string | No | The domain of the link (use with key) | | `key` | string | No | The slug of the link (use with domain) | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `id` | string | Unique ID of the link | | `domain` | string | Domain of the short link | | `key` | string | Slug of the short link | | `url` | string | Destination URL | | `shortLink` | string | Full short link URL | | `qrCode` | string | QR code URL for the short link | | `archived` | boolean | Whether the link is archived | | `externalId` | string | External ID | | `title` | string | OG title | | `description` | string | OG description | | `tags` | json | Tags assigned to the link (id, name, color) | | `folderId` | string | Folder the link is organized into | | `tenantId` | string | Tenant ID associated with the link | | `trackConversion` | boolean | Whether conversion tracking is enabled | | `clicks` | number | Number of clicks | | `leads` | number | Number of leads | | `conversions` | number | Number of conversions | | `sales` | number | Number of sales | | `saleAmount` | number | Total sale amount in cents | | `lastClicked` | string | Last clicked timestamp | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `utm_source` | string | UTM source parameter | | `utm_medium` | string | UTM medium parameter | | `utm_campaign` | string | UTM campaign parameter | | `utm_term` | string | UTM term parameter | | `utm_content` | string | UTM content parameter | ### Dub Update Link [#dub-update-link] Update an existing short link. You can modify the destination URL, slug, metadata, UTM parameters, and more. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `linkId` | string | Yes | The link ID or external ID prefixed with ext\_ | | `url` | string | No | New destination URL | | `domain` | string | No | New custom domain | | `key` | string | No | New custom slug | | `title` | string | No | Custom OG title | | `description` | string | No | Custom OG description | | `externalId` | string | No | External ID for the link | | `tenantId` | string | No | Tenant ID for grouping links created on behalf of a customer/tenant | | `folderId` | string | No | Folder ID to organize the link into | | `trackConversion` | boolean | No | Whether to track conversions (leads/sales) for the short link | | `tagIds` | string | No | Comma-separated tag IDs | | `comments` | string | No | Comments for the short link | | `expiresAt` | string | No | Expiration date in ISO 8601 format | | `password` | string | No | Password to protect the link | | `rewrite` | boolean | No | Whether to enable link cloaking | | `archived` | boolean | No | Whether to archive the link | | `utm_source` | string | No | UTM source parameter | | `utm_medium` | string | No | UTM medium parameter | | `utm_campaign` | string | No | UTM campaign parameter | | `utm_term` | string | No | UTM term parameter | | `utm_content` | string | No | UTM content parameter | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `id` | string | Unique ID of the updated link | | `domain` | string | Domain of the short link | | `key` | string | Slug of the short link | | `url` | string | Destination URL | | `shortLink` | string | Full short link URL | | `qrCode` | string | QR code URL for the short link | | `archived` | boolean | Whether the link is archived | | `externalId` | string | External ID | | `title` | string | OG title | | `description` | string | OG description | | `tags` | json | Tags assigned to the link (id, name, color) | | `folderId` | string | Folder the link is organized into | | `tenantId` | string | Tenant ID associated with the link | | `trackConversion` | boolean | Whether conversion tracking is enabled | | `clicks` | number | Number of clicks | | `leads` | number | Number of leads | | `conversions` | number | Number of conversions | | `sales` | number | Number of sales | | `saleAmount` | number | Total sale amount in cents | | `lastClicked` | string | Last clicked timestamp | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `utm_source` | string | UTM source parameter | | `utm_medium` | string | UTM medium parameter | | `utm_campaign` | string | UTM campaign parameter | | `utm_term` | string | UTM term parameter | | `utm_content` | string | UTM content parameter | ### Dub Delete Link [#dub-delete-link] Delete a short link by its link ID or external ID (prefixed with ext\_). #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `linkId` | string | Yes | The link ID or external ID prefixed with ext\_ | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `id` | string | ID of the deleted link | ### Dub List Links [#dub-list-links] Retrieve a paginated list of short links for the authenticated workspace. Supports filtering by domain, search query, tags, and sorting. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `domain` | string | No | Filter by domain | | `search` | string | No | Search query matched against the short link slug and destination URL | | `tagIds` | string | No | Comma-separated tag IDs to filter by | | `tenantId` | string | No | Filter by tenant ID | | `folderId` | string | No | Filter by folder ID | | `showArchived` | boolean | No | Whether to include archived links (defaults to false) | | `page` | number | No | Page number (deprecated by Dub in favor of startingAfter/endingBefore) | | `pageSize` | number | No | Number of links per page (default: 100, max: 100) | | `startingAfter` | string | No | Cursor: fetch results after this link ID | | `endingBefore` | string | No | Cursor: fetch results before this link ID | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------------------------------- | | `links` | json | Array of link objects (id, domain, key, url, shortLink, clicks, tags, createdAt) | | `count` | number | Number of links returned | ### Dub Count Links [#dub-count-links] Retrieve the number of short links for the authenticated workspace, optionally filtered and grouped by domain, tag, user, or folder. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `domain` | string | No | Filter by domain | | `search` | string | No | Search query matched against the short link slug and destination URL | | `tagIds` | string | No | Comma-separated tag IDs to filter by | | `tagNames` | string | No | Comma-separated tag names to filter by (case-insensitive) | | `folderId` | string | No | Filter by folder ID | | `showArchived` | boolean | No | Whether to include archived links (defaults to false) | | `groupBy` | string | No | Group counts by: domain, tagId, userId, or folderId | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------- | | `count` | number | Total number of links matching the filters | | `groups` | json | Per-group counts when groupBy is set (e.g. \[\{ domain, count }]) | ### Dub Bulk Create Links [#dub-bulk-create-links] Create up to 100 short links in a single request. Returns the created links alongside any per-link errors. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `links` | json | Yes | JSON array of link objects to create. Each object requires a "url" and may include domain, key, tagIds, and other link fields (max 100). | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------- | | `created` | json | Array of successfully created link objects | | `errors` | json | Array of per-link errors (\{ link, error, code }) for links that failed | | `count` | number | Number of links successfully created | ### Dub Bulk Update Links [#dub-bulk-update-links] Apply the same set of field updates to up to 100 links at once, selected by link IDs or external IDs. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Dub API key | | `linkIds` | string | No | Comma-separated link IDs to update (max 100, takes precedence over externalIds) | | `externalIds` | string | No | Comma-separated external IDs to update (max 100) | | `data` | json | Yes | JSON object of fields to apply to every selected link (e.g. \{ "archived": true, "tagIds": \["..."] }) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `updated` | json | Array of updated link objects | | `count` | number | Number of links updated | ### Dub Bulk Delete Links [#dub-bulk-delete-links] Delete up to 100 short links in a single request by their link IDs. Non-existing IDs are ignored. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `linkIds` | string | Yes | Comma-separated link IDs to delete (max 100) | #### Output [#output-9] | Parameter | Type | Description | | -------------- | ------ | --------------------------------- | | `deletedCount` | number | Number of links that were deleted | ### Dub Get Analytics [#dub-get-analytics] Retrieve analytics for links including clicks, leads, and sales. Supports filtering by link, time range, and grouping by various dimensions. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Dub API key | | `event` | string | No | Event type: clicks (default), leads, sales, or composite | | `groupBy` | string | No | Group results by: count (default), timeseries, countries, cities, devices, browsers, os, referers, top\_links, top\_urls | | `linkId` | string | No | Filter by link ID | | `externalId` | string | No | Filter by external ID (prefix with ext\_) | | `domain` | string | No | Filter by domain | | `interval` | string | No | Time interval: 24h (default), 7d, 30d, 90d, 1y, mtd, qtd, ytd, or all | | `start` | string | No | Start date/time in ISO 8601 format (overrides interval) | | `end` | string | No | End date/time in ISO 8601 format (defaults to now) | | `country` | string | No | Filter by country (ISO 3166-1 alpha-2 code) | | `timezone` | string | No | IANA timezone for timeseries data (defaults to UTC) | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------- | | `clicks` | number | Total number of clicks | | `leads` | number | Total number of leads | | `sales` | number | Total number of sales | | `saleAmount` | number | Total sale amount in cents | | `data` | json | Grouped analytics data (timeseries, countries, devices, etc.) | ### Dub List Events [#dub-list-events] Retrieve a paginated stream of individual click, lead, and sale events for links, with filtering by link, time range, and location. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `event` | string | No | Event type: clicks (default), leads, or sales | | `linkId` | string | No | Filter by link ID | | `externalId` | string | No | Filter by external ID (prefix with ext\_) | | `domain` | string | No | Filter by domain | | `interval` | string | No | Time interval: 24h (default), 7d, 30d, 90d, 1y, mtd, qtd, ytd, or all | | `start` | string | No | Start date/time in ISO 8601 format (overrides interval) | | `end` | string | No | End date/time in ISO 8601 format (defaults to now) | | `country` | string | No | Filter by country (ISO 3166-1 alpha-2 code) | | `timezone` | string | No | IANA timezone for event timestamps (defaults to UTC) | | `page` | number | No | Page number (default: 1) | | `limit` | number | No | Number of events per page (default: 100, max: 1000) | | `sortOrder` | string | No | Sort order: desc (default) or asc | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------------------- | | `events` | json | Array of event objects (event, timestamp, click, link, and customer/sale data when applicable) | | `count` | number | Number of events returned | ### Dub Get QR Code [#dub-get-qr-code] Generate a customizable QR code (PNG) for a short link, with control over size, error correction, colors, and margin. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `url` | string | Yes | The short link URL to encode in the QR code | | `logo` | string | No | URL of a custom logo to embed in the QR code (requires a paid Dub plan) | | `size` | number | No | QR code size in pixels (default: 600) | | `level` | string | No | Error correction level: L (default), M, Q, or H | | `fgColor` | string | No | Foreground color in hex (default: #000000) | | `bgColor` | string | No | Background color in hex (default: #FFFFFF) | | `hideLogo` | boolean | No | Whether to hide the logo in the center of the QR code (default: false) | | `margin` | number | No | Margin (quiet zone) around the QR code (default: 2) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------- | | `file` | file | Generated QR code image stored in execution files | ### Dub List Domains [#dub-list-domains] Retrieve the custom domains registered in the workspace, so links can be created against the right domain. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `archived` | boolean | No | Whether to include archived domains (defaults to false) | | `search` | string | No | Search by domain name | | `page` | number | No | Page number (default: 1) | | `pageSize` | number | No | Number of domains per page (default: 50, max: 50) | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------- | | `domains` | json | Array of domain objects (slug, verified, primary, archived) | | `count` | number | Number of domains returned | ### Dub List Tags [#dub-list-tags] Retrieve the tags defined in the workspace, so the right tag IDs can be assigned to links. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | Dub API key | | `search` | string | No | Search by tag name | | `sortBy` | string | No | Field to sort by: name (default) or createdAt | | `sortOrder` | string | No | Sort order: asc (default) or desc | | `page` | number | No | Page number (default: 1) | | `pageSize` | number | No | Number of tags per page (default: 100, max: 100) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | -------------------------------------- | | `tags` | json | Array of tag objects (id, name, color) | | `count` | number | Number of tags returned | ### Dub Create Tag [#dub-create-tag] Create a new tag in the workspace for organizing and filtering short links. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `name` | string | Yes | The name of the tag to create (1-50 characters) | | `color` | string | No | Tag color: red, yellow, green, blue, purple, brown, gray, or pink (random if omitted) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `id` | string | Unique ID of the created tag | | `name` | string | Name of the tag | | `color` | string | Color assigned to the tag | ### Dub List Folders [#dub-list-folders] Retrieve the folders defined in the workspace, so the right folder ID can be used to organize links. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Dub API key | | `search` | string | No | Search by folder name | | `page` | number | No | Page number (default: 1) | | `pageSize` | number | No | Number of folders per page (default: 50, max: 50) | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------- | | `folders` | json | Array of folder objects (id, name, accessLevel) | | `count` | number | Number of folders returned | --- # DuckDuckGo (/integrations/duckduckgo) {/* MANUAL-CONTENT-START:intro */} Use [DuckDuckGo](https://duckduckgo.com/)'s Instant Answers API to retrieve answers, abstracts, and related topics for a query. No API key is required. Optional controls remove HTML or skip disambiguation results. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key. ## Actions [#actions] ### DuckDuckGo Search [#duckduckgo-search] Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, and related topics for your query. Free to use without an API key. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------ | | `query` | string | Yes | The search query to execute | | `noHtml` | boolean | No | Remove HTML from text in results (default: true) | | `skipDisambig` | boolean | No | Skip disambiguation results (default: false) | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------- | | `heading` | string | The heading/title of the instant answer | | `abstract` | string | A short abstract summary of the topic | | `abstractText` | string | Plain text version of the abstract | | `abstractSource` | string | The source of the abstract (e.g., Wikipedia) | | `abstractURL` | string | URL to the source of the abstract | | `definition` | string | Dictionary-style definition if available | | `definitionSource` | string | The source of the definition | | `definitionURL` | string | URL to the source of the definition | | `image` | string | URL to an image related to the topic | | `answer` | string | Direct answer if available (e.g., for calculations) | | `answerType` | string | Type of the answer (e.g., calc, ip, etc.) | | `type` | string | Response type: A (article), D (disambiguation), C (category), N (name), E (exclusive) | | `redirect` | string | !bang redirect URL, populated only for bang queries | | `relatedTopics` | array | Array of related topics with URLs and descriptions | | ↳ `FirstURL` | string | URL to the related topic | | ↳ `Text` | string | Description of the related topic | | ↳ `Result` | string | HTML result snippet | | `results` | array | Array of external link results | | ↳ `FirstURL` | string | URL of the result | | ↳ `Text` | string | Description of the result | | ↳ `Result` | string | HTML result snippet | --- # Amazon DynamoDB (/integrations/dynamodb) {/* MANUAL-CONTENT-START:intro */} [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) stores items in tables identified by primary keys. Use Get to read an item, Put to insert or replace one, Update to change attributes, and Delete to remove it. Query a table or index by key conditions; use Scan when you need to inspect items across the table. The integration also reads table metadata and uses AWS access-key credentials. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Amazon DynamoDB into workflows. Supports Get, Put, Query, Scan, Update, Delete, and Introspect operations on DynamoDB tables. ## Actions [#actions] ### DynamoDB Get [#dynamodb-get] Get an item from a DynamoDB table by primary key #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `key` | json | Yes | Primary key of the item to retrieve (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) | | `consistentRead` | boolean | No | Use strongly consistent read | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | | `item` | json | Retrieved item | ### DynamoDB Put [#dynamodb-put] Put an item into a DynamoDB table #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `item` | json | Yes | Item to put into the table (e.g., \{"pk": "USER#123", "name": "John", "email": "[john@example.com](mailto:john@example.com)"}) | | `conditionExpression` | string | No | Condition that must be met for the put to succeed (e.g., "attribute\_not\_exists(pk)" to prevent overwrites) | | `expressionAttributeNames` | json | No | Attribute name mappings for reserved words used in conditionExpression (e.g., \{"#name": "name"}) | | `expressionAttributeValues` | json | No | Expression attribute values used in conditionExpression (e.g., \{":expected": "value"}) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | | `item` | json | Created item | ### DynamoDB Query [#dynamodb-query] Query items from a DynamoDB table using key conditions #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `keyConditionExpression` | string | Yes | Key condition expression (e.g., "pk = :pk" or "pk = :pk AND sk BEGINS\_WITH :prefix") | | `filterExpression` | string | No | Filter expression for results (e.g., "age > :minAge AND #status = :status") | | `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#status": "status"}) | | `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":pk": "USER#123", ":minAge": 18}) | | `indexName` | string | No | Secondary index name to query (e.g., "GSI1", "email-index") | | `limit` | number | No | Maximum number of items to return (e.g., 10, 50, 100) | | `exclusiveStartKey` | json | No | Pagination token from a previous query's lastEvaluatedKey to continue fetching results | | `scanIndexForward` | boolean | No | Sort order for the sort key: true for ascending (default), false for descending | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `items` | array | Array of items returned | | `count` | number | Number of items returned | | `lastEvaluatedKey` | json | Pagination token to pass as exclusiveStartKey to fetch the next page of results | ### DynamoDB Scan [#dynamodb-scan] Scan all items in a DynamoDB table #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `filterExpression` | string | No | Filter expression for results (e.g., "age > :minAge AND #status = :status") | | `projectionExpression` | string | No | Attributes to retrieve (e.g., "pk, sk, #name, email") | | `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#name": "name", "#status": "status"}) | | `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":minAge": 18, ":status": "active"}) | | `limit` | number | No | Maximum number of items to return (e.g., 10, 50, 100) | | `exclusiveStartKey` | json | No | Pagination token from a previous scan's lastEvaluatedKey to continue fetching results | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `items` | array | Array of items returned | | `count` | number | Number of items returned | | `lastEvaluatedKey` | json | Pagination token to pass as exclusiveStartKey to fetch the next page of results | ### DynamoDB Update [#dynamodb-update] Update an item in a DynamoDB table #### Input [#input-4] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `key` | json | Yes | Primary key of the item to update (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) | | `updateExpression` | string | Yes | Update expression (e.g., "SET #name = :name, age = :age" or "SET #count = #count + :inc") | | `expressionAttributeNames` | json | No | Attribute name mappings for reserved words (e.g., \{"#name": "name", "#count": "count"}) | | `expressionAttributeValues` | json | No | Expression attribute values (e.g., \{":name": "John", ":age": 30, ":inc": 1}) | | `conditionExpression` | string | No | Condition that must be met for the update to succeed (e.g., "attribute\_exists(pk)" or "version = :expectedVersion") | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `item` | json | Updated item with all attributes | ### DynamoDB Delete [#dynamodb-delete] Delete an item from a DynamoDB table #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | Yes | DynamoDB table name (e.g., "Users", "Orders") | | `key` | json | Yes | Primary key of the item to delete (e.g., \{"pk": "USER#123"} or \{"pk": "ORDER#456", "sk": "ITEM#789"}) | | `conditionExpression` | string | No | Condition that must be met for the delete to succeed (e.g., "attribute\_exists(pk)") | | `expressionAttributeNames` | json | No | Attribute name mappings for reserved words used in conditionExpression (e.g., \{"#status": "status"}) | | `expressionAttributeValues` | json | No | Expression attribute values used in conditionExpression (e.g., \{":status": "active"}) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### DynamoDB Introspect [#dynamodb-introspect] Introspect DynamoDB to list tables or get detailed schema information for a specific table #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `tableName` | string | No | Optional table name to get detailed schema (e.g., "Users", "Orders"). If not provided, lists all tables. | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `message` | string | Operation status message | | `tables` | array | List of table names in the region | | `tableDetails` | json | Detailed schema information for a specific table | --- # Dynatrace (/integrations/dynatrace) {/* MANUAL-CONTENT-START:intro */} [Dynatrace](https://www.dynatrace.com/) is an observability platform that monitors applications, infrastructure, and user experience from a single agent. Its Davis AI correlates signals across the stack into **problems** — a single incident with a root cause, an impact assessment, and the affected entities attached — instead of a stream of disconnected alerts. **What you can reach from Agent Serve** * **Problems** — list and inspect Davis problems, read their root cause and affected entities, close them, and manage their comments. * **Metrics** — query time series with a metric selector, discover which metrics exist, read a metric's descriptor, and push your own data points. * **Entities** — list and inspect monitored hosts, services, applications, and Kubernetes workloads, and enumerate the entity types available for building selectors. * **Tags** — read, add, and remove the custom tags that drive selectors, management zones, and alerting. * **Events** — read deployments, availability changes, and annotations, and ingest your own. * **Logs** — search log records and ingest new ones. * **SLOs** — read, create, update, and delete service-level objectives, with their attainment, error budget, and burn rate. * **Application Security** — list and inspect vulnerabilities with risk assessment and remediation guidance, walk their remediation items, mute and unmute them singly or in bulk, and review the runtime attacks that exploited them. * **Settings** — browse schemas and read, create, update, and delete settings objects. This is how maintenance windows, alerting profiles, management zones, and anomaly-detection thresholds are configured. * **Synthetic** — list monitors, trigger an on-demand batch execution, and poll the batch for its result. * **Audit log** — read who changed which configuration, and when. **Setup** You need two values: your **environment URL** and an **access token**. The environment URL is the base address of your Dynatrace environment, without the API path: | Deployment | Environment URL | | -------------------------------- | ----------------------------------------- | | SaaS | `https://abc12345.live.dynatrace.com` | | Managed / environment ActiveGate | `https://your-activegate:9999/e/abc12345` | Create the token under **Access tokens** in Dynatrace, and grant only the scopes for the operations you plan to call. Each action's `apiToken` description names the scope it needs: | Area | Read | Write | | ----------------- | ----------------------------------------------- | --------------------------- | | Problems | `problems.read` | `problems.write` | | Metrics | `metrics.read` | `metrics.ingest` | | Entities and tags | `entities.read` | `entities.write` | | Events | `events.read` | `events.ingest` | | Logs | `logs.read` | `logs.ingest` | | SLOs | `slo.read` | `slo.write` | | Vulnerabilities | `securityProblems.read` | `securityProblems.write` | | Attacks | `attacks.read` | — | | Settings | `settings.read` | `settings.write` | | Synthetic | `syntheticExecutions.read`, `ReadSyntheticData` | `syntheticExecutions.write` | | Audit log | `auditLogs.read` | — | Note that **Synthetic monitors are the one part of this integration on Environment API v1** — Agent Serve handles the path difference, but the token scopes differ from the v2 endpoints. **Selectors** Most read operations are scoped by a selector rather than by fixed filter fields. Criteria are comma-separated, and every criterion matched must hold: ``` entitySelector: type("HOST"),tag("env:prod") problemSelector: status("open"),severityLevel("AVAILABILITY") metricSelector: builtin:host.cpu.usage:splitBy("dt.entity.host"):avg:names securityProblemSelector: status("OPEN"),riskLevel("CRITICAL") ``` Every selector field in the block has a wand — describe what you want in plain language and Agent Serve writes the selector for you. **Settings objects** Most Dynatrace configuration is a *settings object*: a JSON `value` whose shape is defined by a *schema* such as `builtin:alerting.maintenance-window`. There is no fixed structure Agent Serve can validate for you, so the reliable way to write one is to read an existing object of the same schema first and mirror its `value`. Get Settings Object also returns an `updateToken` — pass it back on update or delete and the call fails rather than overwriting a change someone else made in the meantime. **Pagination** List operations return a `nextPageKey` (a `nextSliceKey` for log search). Feed it back into the next call to read the following page. Dynatrace encodes the original filters into the cursor, so Agent Serve sends the cursor alone and ignores the other filters on that call — which is what the API requires. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Dynatrace into workflows. Investigate and close Davis problems, query metrics and monitored entities, search and ingest logs, push deployment events, manage SLOs and their burn rates, triage and mute Application Security vulnerabilities, review runtime attacks, tag entities, manage settings objects such as maintenance windows and alerting profiles, run synthetic monitors on demand, and read the audit log. ## Actions [#actions] ### Dynatrace List Problems [#dynatrace-list-problems] List Davis-detected problems in a Dynatrace environment, filtered by timeframe, problem selector, or entity selector. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `problemSelector` | string | No | Problem selector, e.g. status("open"),severityLevel("AVAILABILITY"),impactLevel("SERVICES") | | `entitySelector` | string | No | Entity selector scoping the result, e.g. type("HOST"),tag("env:prod") | | `sort` | string | No | Sort order: status, startTime, or relevance, each optionally prefixed with + or - (e.g. -startTime) | | `fields` | string | No | Comma-separated optional properties to include: evidenceDetails, impactAnalysis, recentComments | | `pageSize` | number | No | Problems per page (max 500, default 50) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output] | Parameter | Type | Description | | ---------- | ----- | ----------------- | | `problems` | array | Matching problems | ### Dynatrace Get Problem [#dynatrace-get-problem] Get the full details of a single Dynatrace problem, including root cause, affected entities, and optionally its evidence and impact analysis. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope | | `problemId` | string | Yes | ID of the problem (e.g., -1234567890123456789\_1700000000000V2) | | `fields` | string | No | Comma-separated optional properties to include. Defaults to all of them: evidenceDetails, impactAnalysis, recentComments | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `problem` | object | The requested problem | ### Dynatrace Close Problem [#dynatrace-close-problem] Close a Dynatrace problem and record the closing comment. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope | | `problemId` | string | Yes | ID of the problem to close | | `message` | string | Yes | Text of the closing comment | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------- | | `problemId` | string | ID of the closed problem | | `closeTimestamp` | number | Timestamp when closing was triggered, in UTC milliseconds | | `closing` | boolean | Whether the problem is in the process of being closed | | `comment` | object | The closing comment that was recorded | ### Dynatrace List Problem Comments [#dynatrace-list-problem-comments] List the comments recorded on a Dynatrace problem. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope | | `problemId` | string | Yes | ID of the problem whose comments should be listed | | `pageSize` | number | No | Comments per page (max 500, default 10) | | `nextPageKey` | string | No | Cursor for the next page. Page size is ignored when it is set | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ----- | ----------------------- | | `comments` | array | Comments on the problem | ### Dynatrace Add Problem Comment [#dynatrace-add-problem-comment] Add a comment to a Dynatrace problem. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope | | `problemId` | string | Yes | ID of the problem to comment on | | `message` | string | Yes | Text of the comment | | `context` | string | No | Context of the comment, shown alongside the author (e.g., the source system) | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------ | | `problemId` | string | ID of the problem the comment was added to | | `message` | string | Text of the comment that was added | | `context` | string | Context of the comment | ### Dynatrace Query Metrics [#dynatrace-query-metrics] Read metric data points from Dynatrace using a metric selector, with optional entity and management-zone scoping. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope | | `metricSelector` | string | Yes | Metric selector, up to 10 metrics comma-separated, with optional transformations after a colon (e.g. builtin:host.cpu.usage:avg:names) | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-2h. Defaults to now-2h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `resolution` | string | No | Number of data points (default 120), a timespan such as 10m or 3w, or Inf for a single aggregated value | | `entitySelector` | string | No | Entity selector scoping the query, e.g. type("HOST"),tag("env:prod") | | `mzSelector` | string | No | Management zone selector, e.g. mzName("Production") | #### Output [#output-5] | Parameter | Type | Description | | -------------------------- | ------ | ---------------------------------------------------- | | `result` | array | One entry per queried metric | | ↳ `metricId` | string | Metric key including transformations | | ↳ `dataPointCountRatio` | number | Queried data points relative to the query limit | | ↳ `dimensionCountRatio` | number | Queried dimension tuples relative to the query limit | | ↳ `appliedOptionalFilters` | array | Optional filters Dynatrace applied to the query | | ↳ `dql` | json | DQL translation of the query, when available | | ↳ `status` | string | Whether the translation succeeded | | ↳ `query` | string | The equivalent DQL query | | ↳ `warnings` | array | Warnings for this metric | | ↳ `data` | array | Series of the metric, one per dimension tuple | | ↳ `dimensions` | array | Dimension values of the series | | ↳ `dimensionMap` | json | Dimension values keyed by dimension key | | ↳ `timestamps` | array | Timestamps in UTC milliseconds, one per value | | ↳ `values` | array | Metric values. Null where no data exists | | `resolution` | string | Resolution Dynatrace actually used | ### Dynatrace List Metrics [#dynatrace-list-metrics] Discover the metrics available in a Dynatrace environment, filtered by metric selector, free text, or metadata. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope | | `metricSelector` | string | No | Metric selector, supporting wildcards (e.g. builtin:host.cpu.\*) | | `text` | string | No | Free-text search across metric display names and descriptions | | `fields` | string | No | Comma-separated descriptor properties. Prefix with + to add a non-default property and - to drop a default one; metricId is always returned (e.g. +aggregationTypes,-description) | | `writtenSince` | string | No | Only metrics written since this point, as UTC milliseconds, ISO 8601, or a relative expression such as now-7d | | `writtenSinceMode` | string | No | INCLUDE (default) keeps metrics written since Written Since; EXCLUDE keeps the ones not written since then | | `metadataSelector` | string | No | Metadata selector, e.g. unit("Percent"),tags("dashboard") | | `pageSize` | number | No | Metrics per page (max 500, default 100) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-6] | Parameter | Type | Description | | --------- | ----- | --------------------------- | | `metrics` | array | Matching metric descriptors | ### Dynatrace Get Metric Descriptor [#dynatrace-get-metric-descriptor] Get the descriptor of a single Dynatrace metric — its unit, dimensions, supported aggregations, and transformations. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.read scope | | `metricKey` | string | Yes | Metric key, optionally followed by transformation operators separated by a colon (e.g. builtin:host.cpu.usage) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `metric` | object | The requested metric descriptor | ### Dynatrace Ingest Metrics [#dynatrace-ingest-metrics] Push custom metric data points into Dynatrace using the metric line protocol, one data point per line. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the metrics.ingest scope | | `payload` | string | Yes | Metric line protocol payload, one data point per line, max 1 MB (e.g. cpu.temperature,dt.entity.host=HOST-06F288EE2A930951,cpu=1 55) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------- | | `linesOk` | number | Number of accepted data points | | `linesInvalid` | number | Number of rejected data points | | `ingestError` | json | Details of the invalid lines | | ↳ `code` | number | Error code | | ↳ `message` | string | Error message | | ↳ `invalidLines` | array | The rejected lines | | ↳ `line` | number | Line number in the payload | | ↳ `error` | string | Why the line was rejected | | `warnings` | json | Warnings raised during ingestion, such as changed metric keys | | ↳ `message` | string | Warning message | | ↳ `changedMetricKeys` | array | Lines whose metric key Dynatrace rewrote | | ↳ `line` | number | Line number in the payload | | ↳ `warning` | string | What was changed | ### Dynatrace List Entities [#dynatrace-list-entities] List monitored entities — hosts, services, applications, Kubernetes workloads — matching an entity selector. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope | | `entitySelector` | string | Yes | Entity selector defining the scope, e.g. type("HOST"),tag("env:prod") or entityId("HOST-06F288EE2A930951") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-3d. Defaults to now-3d | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `fields` | string | No | Comma-separated additional entity properties to include (e.g. +lastSeenTms,+properties.BITNESS,+tags) | | `sort` | string | No | Sort by display name: +displayName ascending or -displayName descending | | `pageSize` | number | No | Entities per page (default 50) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ----- | --------------------------- | | `entities` | array | Matching monitored entities | ### Dynatrace Get Entity [#dynatrace-get-entity] Get the properties, tags, management zones, and relationships of a single monitored entity. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope | | `entityId` | string | Yes | ID of the entity (e.g., HOST-06F288EE2A930951) | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-3d. Defaults to now-3d | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `fields` | string | No | Comma-separated additional entity properties to include (e.g. +lastSeenTms,+properties.BITNESS) | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `entity` | object | The requested monitored entity | ### Dynatrace List Entity Types [#dynatrace-list-entity-types] List the monitored entity types available in the environment, with the properties and relationships each supports. Use it to build valid entity selectors. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope | | `pageSize` | number | No | Entity types per page (max 500, default 50) | | `nextPageKey` | string | No | Cursor for the next page. Page size is ignored when it is set | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `types` | array | Available entity types | | ↳ `type` | string | Entity type (e.g., HOST, SERVICE) | | ↳ `displayName` | string | Display name of the type | | ↳ `dimensionKey` | string | Metric dimension key of the type | | ↳ `entityLimitExceeded` | boolean | Whether the environment exceeded the entity limit for this type | | ↳ `fromRelationships` | array | Relationships originating at this type | | ↳ `id` | string | Relationship ID | | ↳ `toTypes` | array | Entity types the relationship points to | | ↳ `toRelationships` | array | Relationships pointing at this type | | ↳ `id` | string | Relationship ID | | ↳ `fromTypes` | array | Entity types the relationship originates from | ### Dynatrace List Events [#dynatrace-list-events] List events — deployments, availability changes, alerts, custom annotations — in a Dynatrace environment. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.read scope | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `eventSelector` | string | No | Event selector, e.g. eventType("CUSTOM\_DEPLOYMENT"),status("OPEN"),correlationId("build-42") | | `entitySelector` | string | No | Entity selector scoping the result, e.g. type("SERVICE"),tag("env:prod") | | `pageSize` | number | No | Events per page (max 1000, default 100) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-12] | Parameter | Type | Description | | --------- | ----- | --------------- | | `events` | array | Matching events | ### Dynatrace Get Event [#dynatrace-get-event] Get the full details of a single Dynatrace event. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.read scope | | `eventId` | string | Yes | ID of the event | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `event` | object | The requested event | ### Dynatrace Ingest Event [#dynatrace-ingest-event] Push an event into Dynatrace — a deployment marker, custom annotation, or custom alert — attached to the entities matched by an entity selector. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the events.ingest scope | | `eventType` | string | Yes | One of AVAILABILITY\_EVENT, CUSTOM\_ALERT, CUSTOM\_ANNOTATION, CUSTOM\_CONFIGURATION, CUSTOM\_DEPLOYMENT, CUSTOM\_INFO, ERROR\_EVENT, MARKED\_FOR\_TERMINATION, PERFORMANCE\_EVENT, RESOURCE\_CONTENTION\_EVENT, WARNING | | `title` | string | Yes | Title of the event | | `entitySelector` | string | No | Entity selector for the entities to attach the event to. Defaults to the environment entity | | `startTime` | number | No | Event start in UTC milliseconds. Defaults to now | | `endTime` | number | No | Event end in UTC milliseconds. Defaults to the start time plus the timeout | | `eventTimeout` | number | No | Minutes the event stays open when no end time is given. Defaults to 15, capped at 360 | | `properties` | json | No | Event properties as a key-value object. Max 100 entries, keys up to 100 and values up to 4096 characters | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------- | | `reportCount` | number | Number of events Dynatrace reported | | `eventIngestResults` | array | One result per ingested event | | ↳ `correlationId` | string | Correlation ID of the ingested event | | ↳ `status` | string | OK, INVALID\_ENTITY\_TYPE, INVALID\_METADATA, or INVALID\_TIMESTAMPS | ### Dynatrace Search Logs [#dynatrace-search-logs] Search log records in Dynatrace by query and timeframe, for troubleshooting and incident analysis. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the logs.read scope, or storage:logs:read and storage:buckets:read on Grail | | `query` | string | No | Log search query, e.g. status="ERROR" AND dt.entity.host="HOST-06F288EE2A930951" | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1h. Defaults to now-2w | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `sort` | string | No | Sort by field with a + or - prefix, e.g. -timestamp for newest first | | `limit` | number | No | Number of log records to return (max 1000, default 1000) | | `nextSliceKey` | string | No | Cursor for the next slice. All other filters are ignored when it is set | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------- | | `results` | array | Matching log records | | ↳ `timestamp` | number | Log timestamp in UTC milliseconds | | ↳ `status` | string | Log level: ERROR, WARN, INFO, NONE, or NOT\_APPLICABLE | | ↳ `content` | string | Log message content | | ↳ `eventType` | string | Event type of the record | | ↳ `additionalColumns` | json | Additional log attributes keyed by column name | | `sliceSize` | number | Number of records in this slice | | `nextSliceKey` | string | Cursor for the next slice. Null when the result is complete | | `warnings` | string | Warning raised while searching | ### Dynatrace Ingest Logs [#dynatrace-ingest-logs] Push log events into Dynatrace. Accepts a single log event object or an array of them. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the logs.ingest scope | | `logs` | json | Yes | A log event object, or an array of them. Recognized keys are content, timestamp, and severity; any other key becomes a custom attribute (e.g. \[\{"content":"Deploy finished","severity":"info","service":"checkout"}]) | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `accepted` | boolean | True when Dynatrace accepted every log event (HTTP 204) | | `statusCode` | number | HTTP status Dynatrace returned. 204 is full success, 200 is partial success | | `details` | json | Partial-success body, present only when some events were rejected. The reference does not document its shape, so it is passed through as-is | ### Dynatrace List SLOs [#dynatrace-list-slos] List service-level objectives with their current attainment, error budget, and burn rate. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.read scope | | `sloSelector` | string | No | SLO selector, e.g. healthState("WARNING"),text("checkout"),problems("true"). Combine criteria with commas | | `from` | string | No | Start of the evaluation timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d | | `to` | string | No | End of the evaluation timeframe in the same formats as From. Defaults to now | | `timeFrame` | string | No | CURRENT evaluates each SLO over its own timeframe; GTF evaluates over the From/To range | | `sort` | string | No | Sort by name: name ascending or -name descending | | `enabledSlos` | string | No | Filter by enabled state: true, false, or all | | `evaluate` | boolean | No | Evaluate each SLO and include its calculated values | | `showGlobalSlos` | boolean | No | Include SLOs that are not scoped to a management zone | | `pageSize` | number | No | SLOs per page (max 10000, default 10) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-17] | Parameter | Type | Description | | --------- | ----- | --------------------------------- | | `slos` | array | Matching service-level objectives | ### Dynatrace Get SLO [#dynatrace-get-slo] Get a single service-level objective with its evaluated attainment, error budget, and burn rate. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.read scope | | `sloId` | string | Yes | ID of the SLO | | `from` | string | No | Start of the evaluation timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-2w | | `to` | string | No | End of the evaluation timeframe in the same formats as From. Defaults to now | | `timeFrame` | string | No | CURRENT evaluates the SLO over its own timeframe; GTF evaluates over the From/To range | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `slo` | object | The requested service-level objective | ### Dynatrace List Security Problems [#dynatrace-list-security-problems] List vulnerabilities detected by Dynatrace Application Security, filtered by risk level, status, CVE, or technology. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope | | `securityProblemSelector` | string | No | Security problem selector, e.g. status("OPEN"),riskLevel("CRITICAL"),technology("JAVA") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-30d | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `fields` | string | No | Comma-separated optional properties to include: +riskAssessment, +managementZones, +codeLevelVulnerabilityDetails, +globalCounts | | `sort` | string | No | Sort by a field with a + or - prefix, e.g. -riskAssessment.riskScore | | `pageSize` | number | No | Security problems per page (max 500, default 100) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ----- | -------------------------- | | `securityProblems` | array | Matching security problems | ### Dynatrace Get Security Problem [#dynatrace-get-security-problem] Get a single vulnerability with its description, remediation guidance, affected entities, and risk assessment. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope | | `securityProblemId` | string | Yes | ID of the security problem | | `fields` | string | No | Comma-separated optional properties to include, each prefixed with +. Defaults to every detail property: +riskAssessment, +managementZones, +codeLevelVulnerabilityDetails, +globalCounts, +filteredCounts, +description, +remediationDescription, +events, +vulnerableComponents, +affectedEntities, +exposedEntities, +reachableDataAssets, +relatedEntities, +relatedContainerImages, +relatedAttacks, +entryPoints | | `managementZoneFilter` | string | No | Restrict the counts to management zones, e.g. names("Production") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-24h. Defaults to the last 24 hours | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------ | | `securityProblem` | object | The requested security problem | ### Dynatrace Get Audit Logs [#dynatrace-get-audit-logs] Read the Dynatrace audit log — who changed which configuration, when, and whether it succeeded. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the auditLogs.read scope | | `filter` | string | No | Audit log filter, e.g. eventType("UPDATE"),user("[someone@example.com](mailto:someone@example.com)"),category("CONFIG") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-1d. Defaults to now-2w | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `sort` | string | No | timestamp for oldest first, or -timestamp for newest first (default) | | `pageSize` | number | No | Entries per page (max 5000, default 1000) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-21] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | | `auditLogs` | array | Matching audit log entries | | ↳ `logId` | string | Audit log entry ID | | ↳ `eventType` | string | Type of the audited change | | ↳ `category` | string | Category of the audited change | | ↳ `entityId` | string | ID of the changed entity | | ↳ `environmentId` | string | Environment the change happened in | | ↳ `user` | string | User or token that made the change | | ↳ `userType` | string | Type of the acting user | | ↳ `userOrigin` | string | Origin of the request | | ↳ `timestamp` | number | Change timestamp in UTC milliseconds | | ↳ `success` | boolean | Whether the change succeeded | | ↳ `message` | string | Description of the change | | ↳ `patch` | json | JSON patch describing the change. Its shape follows whatever settings object was edited, so it is dynamic | | ↳ `settingsSchemaId` | string | Settings schema ID (dt.settings.schema\_id) | | ↳ `settingsScopeId` | string | Settings scope ID (dt.settings.scope\_id) | | ↳ `settingsKey` | string | Settings key (dt.settings.key) | | ↳ `settingsObjectId` | string | Settings object ID (dt.settings.object\_id) | | ↳ `settingsObjectSummary` | string | Settings object summary (dt.settings.object\_summary) | | ↳ `settingsScopeName` | string | Settings scope name (dt.settings.scope\_name) | ### Dynatrace Mute Security Problem [#dynatrace-mute-security-problem] Mute a single Dynatrace vulnerability with a reason, for triaging false positives or accepted risk. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope | | `securityProblemId` | string | Yes | ID of the security problem to mute | | `reason` | string | Yes | One of CONFIGURATION\_NOT\_AFFECTED, FALSE\_POSITIVE, IGNORE, OTHER, VULNERABLE\_CODE\_NOT\_IN\_USE | | `comment` | string | No | Explanation recorded alongside the mute | #### Output [#output-22] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------- | | `securityProblemId` | string | ID of the muted security problem | | `reason` | string | Reason recorded for the mute | | `comment` | string | Comment recorded for the mute | | `alreadyInState` | boolean | True when Dynatrace reported the problem was already muted (HTTP 204) | ### Dynatrace Unmute Security Problem [#dynatrace-unmute-security-problem] Unmute a single Dynatrace vulnerability, returning it to the active triage queue. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope | | `securityProblemId` | string | Yes | ID of the security problem to unmute | | `reason` | string | Yes | Reason for unmuting. AFFECTED is the only value the API accepts | | `comment` | string | No | Explanation recorded alongside the unmute | #### Output [#output-23] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------- | | `securityProblemId` | string | ID of the unmuted security problem | | `reason` | string | Reason recorded for the unmute | | `comment` | string | Comment recorded for the unmute | | `alreadyInState` | boolean | True when Dynatrace reported the problem was already unmuted (HTTP 204) | ### Dynatrace Mute Security Problems [#dynatrace-mute-security-problems] Mute several Dynatrace vulnerabilities at once with a shared reason, for bulk triage. #### Input [#input-24] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope | | `securityProblemIds` | string | Yes | Security problem IDs to mute, comma-separated or as a JSON array | | `reason` | string | Yes | One of CONFIGURATION\_NOT\_AFFECTED, FALSE\_POSITIVE, IGNORE, OTHER, VULNERABLE\_CODE\_NOT\_IN\_USE | | `comment` | string | No | Explanation recorded against every muted problem | #### Output [#output-24] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------- | | `changedCount` | number | How many problems actually changed state, excluding those already muted | ### Dynatrace Unmute Security Problems [#dynatrace-unmute-security-problems] Unmute several Dynatrace vulnerabilities at once, returning them to active triage. #### Input [#input-25] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.write scope | | `securityProblemIds` | string | Yes | Security problem IDs to unmute, comma-separated or as a JSON array | | `reason` | string | Yes | Reason for unmuting. AFFECTED is the only value the API accepts | | `comment` | string | No | Explanation recorded against every unmuted problem | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------- | | `changedCount` | number | How many problems actually changed state, excluding those already unmuted | ### Dynatrace List Remediation Items [#dynatrace-list-remediation-items] List the remediation items of a third-party vulnerability — the components to upgrade, their affected entities, and their mute state. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the securityProblems.read scope | | `securityProblemId` | string | Yes | ID of the third-party security problem | | `remediationItemSelector` | string | No | Remediation item selector, e.g. vulnerabilityState("VULNERABLE"),muted("false"),exposure("PUBLIC\_NETWORK") | #### Output [#output-26] | Parameter | Type | Description | | ------------------ | ----- | ---------------------------------------------------------------------------- | | `remediationItems` | array | Remediation items of the vulnerability. This endpoint returns no total count | ### Dynatrace List Attacks [#dynatrace-list-attacks] List runtime attacks Dynatrace Application Protection detected — injection attempts, their source, and whether they were blocked. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the attacks.read scope | | `attackSelector` | string | No | Attack selector, e.g. state("EXPLOITED"),attackType("SQL\_INJECTION"),technology("JAVA") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression such as now-7d. Defaults to now-30d | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | | `fields` | string | No | Comma-separated optional properties to include: +attackTarget, +request, +entrypoint, +vulnerability, +securityProblem, +attacker, +managementZones, +affectedEntities | | `sort` | string | No | Sort by displayId, displayName, attackType, state, sourceIp, requestPath, or timestamp with a + or - prefix | | `pageSize` | number | No | Attacks per page (max 500, default 100) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-27] | Parameter | Type | Description | | --------- | ----- | ---------------- | | `attacks` | array | Matching attacks | ### Dynatrace Get Attack [#dynatrace-get-attack] Get a single attack with its entry point, payload, attacker, and the vulnerability it exploited. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the attacks.read scope | | `attackId` | string | Yes | ID of the attack | | `fields` | string | No | Comma-separated optional properties to include, each prefixed with +. Defaults to all of them: +attackTarget, +request, +entrypoint, +vulnerability, +securityProblem, +attacker, +managementZones | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `attack` | object | The requested attack | ### Dynatrace List Tags [#dynatrace-list-tags] List the custom tags applied to the monitored entities an entity selector matches. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.read scope | | `entitySelector` | string | Yes | Entity selector for the entities to read tags from, e.g. type("HOST") | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | #### Output [#output-29] | Parameter | Type | Description | | --------- | ----- | ----------------------------------- | | `tags` | array | Custom tags on the matched entities | ### Dynatrace Add Tags [#dynatrace-add-tags] Add custom tags to every monitored entity an entity selector matches. Tags drive selectors, management zones, and alerting. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.write scope | | `entitySelector` | string | Yes | Entity selector for the entities to tag, e.g. type("HOST"),tag("env:staging") | | `tags` | json | Yes | Tags to add, as an array of objects with a key and an optional value (e.g. \[\{"key":"owner","value":"platform"},\{"key":"reviewed"}]) | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | #### Output [#output-30] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------ | | `appliedTags` | array | Tags that were applied | | `matchedEntitiesCount` | number | How many entities the selector matched and were tagged | ### Dynatrace Delete Tag [#dynatrace-delete-tag] Remove a custom tag from every monitored entity an entity selector matches. Deletes one key-value pair, or every tag with the key. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the entities.write scope | | `entitySelector` | string | Yes | Entity selector for the entities to untag, e.g. type("HOST"),tag("owner:old") | | `key` | string | Yes | Key of the tag to delete | | `value` | string | No | Value of the tag to delete. Omit it and set Delete All With Key to remove every value of the key | | `deleteAllWithKey` | boolean | No | Delete every tag carrying the key, regardless of value | | `from` | string | No | Start of the timeframe as UTC milliseconds, ISO 8601, or a relative expression. Defaults to now-24h | | `to` | string | No | End of the timeframe in the same formats as From. Defaults to now | #### Output [#output-31] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------- | | `matchedEntitiesCount` | number | How many entities the selector matched and had the tag removed from | ### Dynatrace List Settings Schemas [#dynatrace-list-settings-schemas] List the settings schemas available in the environment. Use it to find the schema ID for a configuration type such as builtin:alerting.profile. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope | | `fields` | string | No | Comma-separated fields to include: schemaId, displayName, maturity, latestSchemaVersion, multiObject, ordered, ownerBasedAccessControl | #### Output [#output-32] | Parameter | Type | Description | | --------- | ----- | -------------------------- | | `schemas` | array | Available settings schemas | ### Dynatrace List Settings Objects [#dynatrace-list-settings-objects] List settings objects — the configuration behind maintenance windows, alerting profiles, management zones, and anomaly detection. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope | | `schemaIds` | string | No | Comma-separated schema IDs, e.g. builtin:alerting.profile | | `scopes` | string | No | Comma-separated scopes, e.g. environment or HOST-06F288EE2A930951 | | `externalIds` | string | No | Comma-separated external IDs | | `fields` | string | No | Comma-separated fields to include: objectId, value, schemaId, schemaVersion, scope, author, modified, updateToken, created, externalId, summary, searchSummary | | `filter` | string | No | Filter expression over created, modified, createdBy, modifiedBy, or value | | `sort` | string | No | Sort expression, e.g. -modified | | `pageSize` | number | No | Objects per page (max 500, default 100) | | `nextPageKey` | string | No | Cursor for the next page. All other filters are ignored when it is set | #### Output [#output-33] | Parameter | Type | Description | | --------- | ----- | ------------------------- | | `items` | array | Matching settings objects | ### Dynatrace Get Settings Object [#dynatrace-get-settings-object] Get a single settings object with its value and its update token. Read it before updating so the token can guard against a concurrent change. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.read scope | | `objectId` | string | Yes | ID of the settings object | #### Output [#output-34] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `object` | object | The requested settings object | ### Dynatrace Create Settings Object [#dynatrace-create-settings-object] Create a settings object — a maintenance window, alerting profile, management zone, or any other schema-backed configuration. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope | | `schemaId` | string | Yes | Schema of the object to create, e.g. builtin:alerting.maintenance-window. List Settings Schemas returns the available IDs | | `scope` | string | Yes | Scope the object applies to, e.g. environment or an entity ID such as HOST-06F288EE2A930951 | | `value` | json | Yes | The configuration itself. Its shape is defined by the schema — read an existing object of the same schema to see the expected fields | | `schemaVersion` | string | No | Schema version to validate against. Defaults to the latest | | `externalId` | string | No | External ID to correlate the object with a system outside Dynatrace | | `validateOnly` | boolean | No | Validate the payload without creating anything | #### Output [#output-35] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `results` | array | One result per submitted object | | ↳ `code` | number | Per-object HTTP status | | ↳ `objectId` | string | ID of the created object | | ↳ `writeError` | json | Validation error for this object, when it failed | | ↳ `code` | number | Error code | | ↳ `message` | string | Error message | | ↳ `constraintViolations` | array | Which part of the value failed validation | | ↳ `location` | string | Where the violation was found | | ↳ `message` | string | What is wrong | | ↳ `parameterLocation` | string | HEADER, PATH, PAYLOAD\_BODY, or QUERY | | ↳ `path` | string | Path to the offending field | | ↳ `invalidValue` | json | The value that was rejected. Mirrors the submitted schema-defined value, so the shape is dynamic | | `objectId` | string | ID of the created object, lifted from the first result | ### Dynatrace Update Settings Object [#dynatrace-update-settings-object] Update an existing settings object. Pass the update token from Get Settings Object to fail rather than overwrite a concurrent change. #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope | | `objectId` | string | Yes | ID of the settings object to update | | `value` | json | Yes | The full replacement configuration. Its shape is defined by the object schema — this replaces the value rather than merging into it | | `schemaVersion` | string | No | Schema version to validate against | | `updateToken` | string | No | Token from Get Settings Object. When set, the update fails if the object changed in the meantime. Omit it to overwrite unconditionally | | `validateOnly` | boolean | No | Validate the payload without saving anything | #### Output [#output-36] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------- | | `objectId` | string | ID of the updated object | | `code` | number | Status Dynatrace reported for the update | ### Dynatrace Delete Settings Object [#dynatrace-delete-settings-object] Delete a settings object. Dynatrace cannot undo this. #### Input [#input-37] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the settings.write scope | | `objectId` | string | Yes | ID of the settings object to delete | | `updateToken` | string | No | Token from Get Settings Object. When set, the delete fails if the object changed in the meantime | #### Output [#output-37] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------- | | `objectId` | string | ID of the deleted settings object | | `deleted` | boolean | Always true — a failed delete raises instead | ### Dynatrace List Synthetic Monitors [#dynatrace-list-synthetic-monitors] List synthetic monitors and their IDs. Use it to find the monitor IDs to feed into an on-demand execution. #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with one of ReadSyntheticData, DataExport, or ExternalSyntheticIntegration | | `type` | string | No | Filter by monitor type: BROWSER or HTTP | | `enabled` | boolean | No | Filter to enabled (true) or disabled (false) monitors | | `location` | string | No | Filter to monitors assigned to a synthetic location | | `tag` | string | No | Filter by tag. Comma-separate to require several tags | | `managementZone` | number | No | Filter to monitors in a management zone, by numeric zone ID | #### Output [#output-38] | Parameter | Type | Description | | ---------- | ----- | --------------------------- | | `monitors` | array | Matching synthetic monitors | ### Dynatrace Execute Synthetic Monitors [#dynatrace-execute-synthetic-monitors] Trigger an on-demand batch execution of synthetic monitors, for gating a deploy on a smoke test. Returns a batch ID to poll. #### Input [#input-39] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with syntheticExecutions.write or ExternalSyntheticIntegration | | `monitors` | json | Yes | Monitors to run, as an array of objects with monitorId and optional locations and executionCount (e.g. \[\{"monitorId":"SYNTHETIC\_TEST-123","executionCount":1}]). Execution count caps at 10 | | `processingMode` | string | No | STANDARD, DISABLE\_PROBLEM\_DETECTION, or EXECUTIONS\_DETAILS\_ONLY | | `failOnPerformanceIssue` | boolean | No | Treat a performance threshold breach as a failure | | `stopOnProblem` | boolean | No | Stop the batch as soon as one monitor reports a problem | | `takeScreenshotsOnSuccess` | boolean | No | Capture screenshots for successful browser executions too | | `metadata` | json | No | Key-value metadata to attach to the batch, e.g. the release version. Max 64 pairs, 1024 characters each | #### Output [#output-39] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------------------- | | `batchId` | string | ID of the batch, to poll with Get Synthetic Batch | | `triggeredCount` | number | How many executions were triggered | | `triggeringProblemsCount` | number | How many executions could not be triggered | | `triggered` | array | Triggered executions, grouped by monitor | | ↳ `monitorId` | string | Monitor that was triggered | | ↳ `executions` | array | One entry per location the monitor ran from | | ↳ `executionId` | string | Execution ID | | ↳ `locationId` | string | Location the execution ran from | | `triggeringProblemsDetails` | array | Why each untriggered execution failed to start | | ↳ `cause` | string | Why the execution could not be triggered | | ↳ `details` | string | Detail behind the cause | | ↳ `entityId` | string | Entity the problem relates to | | ↳ `executionId` | string | Execution ID, when one was assigned | | ↳ `locationId` | string | Location the execution targeted | ### Dynatrace Get Synthetic Batch [#dynatrace-get-synthetic-batch] Get the status and failures of an on-demand synthetic batch execution. Poll it after triggering to gate a deploy on the result. #### Input [#input-40] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with syntheticExecutions.read, ReadSyntheticData, or ExternalSyntheticIntegration | | `batchId` | string | Yes | Batch ID returned by Execute Synthetic Monitors | #### Output [#output-40] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | | `batchId` | string | ID of the batch | | `batchStatus` | string | RUNNING, SUCCESS, FAILED, FAILED\_TO\_EXECUTE, or NOT\_TRIGGERED | | `executedCount` | number | Executions completed | | `failedCount` | number | Executions that failed | | `failedToExecuteCount` | number | Executions that never ran | | `triggeredCount` | number | Executions triggered | | `triggeringProblemsCount` | number | Executions that could not be triggered | | `failedExecutions` | array | Executions that ran and failed | | ↳ `errorCode` | string | Error code Dynatrace reported | | ↳ `executionId` | string | Execution ID | | ↳ `executionStage` | string | DATA\_RETRIEVED, EXECUTED, NOT\_TRIGGERED, TIMED\_OUT, TRIGGERED, or WAITING | | ↳ `executionTimestamp` | number | Execution time in UTC ms | | ↳ `failureMessage` | string | Why the execution failed | | ↳ `locationId` | string | Location the execution ran from | | ↳ `monitorId` | string | Monitor that was executed | | `failedToExecute` | array | Executions that never started | | ↳ `errorCode` | string | Error code Dynatrace reported | | ↳ `executionId` | string | Execution ID | | ↳ `executionStage` | string | DATA\_RETRIEVED, EXECUTED, NOT\_TRIGGERED, TIMED\_OUT, TRIGGERED, or WAITING | | ↳ `executionTimestamp` | number | Execution time in UTC ms | | ↳ `failureMessage` | string | Why the execution failed | | ↳ `locationId` | string | Location the execution ran from | | ↳ `monitorId` | string | Monitor that was executed | | `triggeringProblems` | array | Reasons executions could not be triggered | | ↳ `cause` | string | Why the execution could not be triggered | | ↳ `details` | string | Detail behind the cause | | ↳ `entityId` | string | Entity the problem relates to | | ↳ `executionId` | string | Execution ID, when one was assigned | | ↳ `locationId` | string | Location the execution targeted | | `metadata` | json | Key-value metadata supplied when the batch was triggered. Keys are caller-defined, so the shape is dynamic | | `userId` | string | Who triggered the batch | ### Dynatrace Get Problem Comment [#dynatrace-get-problem-comment] Get a single comment on a Dynatrace problem. #### Input [#input-41] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.read scope | | `problemId` | string | Yes | ID of the problem the comment belongs to | | `commentId` | string | Yes | ID of the comment | #### Output [#output-41] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `comment` | object | The requested comment | ### Dynatrace Update Problem Comment [#dynatrace-update-problem-comment] Replace the text of an existing comment on a Dynatrace problem. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope | | `problemId` | string | Yes | ID of the problem the comment belongs to | | `commentId` | string | Yes | ID of the comment to update | | `message` | string | Yes | Replacement text of the comment | | `context` | string | No | Context of the comment, shown alongside the author | #### Output [#output-42] | Parameter | Type | Description | | ----------- | ------ | ---------------------------- | | `problemId` | string | ID of the problem | | `commentId` | string | ID of the updated comment | | `message` | string | Text the comment now carries | | `context` | string | Context of the comment | ### Dynatrace Delete Problem Comment [#dynatrace-delete-problem-comment] Delete a comment from a Dynatrace problem. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the problems.write scope | | `problemId` | string | Yes | ID of the problem the comment belongs to | | `commentId` | string | Yes | ID of the comment to delete | #### Output [#output-43] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `problemId` | string | ID of the problem | | `commentId` | string | ID of the deleted comment | | `deleted` | boolean | Always true — a failed delete raises instead | ### Dynatrace Create SLO [#dynatrace-create-slo] Create a service-level objective from a metric expression, target, and evaluation timeframe. #### Input [#input-44] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope | | `name` | string | Yes | Name of the SLO | | `target` | number | Yes | Target success rate as a percentage, e.g. 99.5 | | `warning` | number | Yes | Warning threshold as a percentage. Must sit above the target, e.g. 99.8 | | `timeframe` | string | Yes | Evaluation timeframe in Dynatrace notation, e.g. -1d, -1w, or now-30d | | `evaluationType` | string | Yes | Evaluation type. AGGREGATE is the only value the API accepts | | `description` | string | No | Description of the SLO | | `enabled` | boolean | No | Whether the SLO is evaluated. Dynatrace defaults it to false | | `filter` | string | No | Entity filter scoping the SLO, e.g. type("SERVICE"),tag("env:prod") | | `metricExpression` | string | No | Metric expression the SLO evaluates, e.g. (100)\*(builtin:service.errors.total.successCount:splitBy())/(builtin:service.requestCount.total:splitBy()) | | `metricName` | string | No | Display name for the SLO metric | | `burnRateVisualizationEnabled` | boolean | No | Show the error-budget burn rate on the SLO | | `fastBurnThreshold` | number | No | Burn rate above which the SLO is considered fast-burning | #### Output [#output-44] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------- | | `sloId` | string | ID of the created SLO, read from the Location header | | `name` | string | Name the SLO was created with | ### Dynatrace Update SLO [#dynatrace-update-slo] Update an existing service-level objective. Every field is replaced, so send the complete definition. #### Input [#input-45] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope | | `sloId` | string | Yes | ID of the SLO to update | | `name` | string | Yes | Name of the SLO | | `target` | number | Yes | Target success rate as a percentage, e.g. 99.5 | | `warning` | number | Yes | Warning threshold as a percentage. Must sit above the target, e.g. 99.8 | | `timeframe` | string | Yes | Evaluation timeframe in Dynatrace notation, e.g. -1d, -1w, or now-30d | | `evaluationType` | string | Yes | Evaluation type. AGGREGATE is the only value the API accepts | | `description` | string | No | Description of the SLO | | `enabled` | boolean | No | Whether the SLO is evaluated. Dynatrace defaults it to false | | `filter` | string | No | Entity filter scoping the SLO, e.g. type("SERVICE"),tag("env:prod") | | `metricExpression` | string | No | Metric expression the SLO evaluates, e.g. (100)\*(builtin:service.errors.total.successCount:splitBy())/(builtin:service.requestCount.total:splitBy()) | | `metricName` | string | No | Display name for the SLO metric | | `burnRateVisualizationEnabled` | boolean | No | Show the error-budget burn rate on the SLO | | `fastBurnThreshold` | number | No | Burn rate above which the SLO is considered fast-burning | #### Output [#output-45] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `sloId` | string | ID of the updated SLO | | `name` | string | Name the SLO now carries | ### Dynatrace Delete SLO [#dynatrace-delete-slo] Delete a service-level objective. #### Input [#input-46] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynatrace environment URL (e.g., [https://abc12345.live.dynatrace.com](https://abc12345.live.dynatrace.com), or [https://your-activegate:9999/e/abc12345](https://your-activegate:9999/e/abc12345) for Managed) | | `apiToken` | string | Yes | Dynatrace access token (dt0c01...) with the slo.write scope | | `sloId` | string | Yes | ID of the SLO to delete | #### Output [#output-46] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `sloId` | string | ID of the deleted SLO | | `deleted` | boolean | Always true — a failed delete raises instead | --- # Elasticsearch (/integrations/elasticsearch) {/* MANUAL-CONTENT-START:intro */} Use [Elasticsearch](https://www.elastic.co/elasticsearch/) to search with Query DSL, manage documents and indexes, run bulk operations, and inspect cluster health. The block supports self-hosted and Elastic Cloud deployments. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Elasticsearch into workflows for powerful search, indexing, and data management. Supports document CRUD operations, advanced search queries, bulk operations, index management, and cluster monitoring. Works with both self-hosted and Elastic Cloud deployments. ## Actions [#actions] ### Elasticsearch Search [#elasticsearch-search] Search documents in Elasticsearch using Query DSL. Returns matching documents with scores and metadata. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name to search (e.g., "products", "logs-2024") | | `query` | string | No | Query DSL as JSON string. Example: \{"match":\{"title":"search term"}} or \{"bool":\{"must":\[...]}} | | `from` | number | No | Starting offset for pagination (e.g., 0, 10, 20). Default: 0 | | `size` | number | No | Number of results to return (e.g., 10, 25, 100). Default: 10 | | `sort` | string | No | Sort specification as JSON string. Example: \[\{"created\_at":"desc"}] or \[\{"\_score":"desc"},\{"name":"asc"}] | | `sourceIncludes` | string | No | Comma-separated list of fields to include in \_source | | `sourceExcludes` | string | No | Comma-separated list of fields to exclude from \_source | | `trackTotalHits` | boolean | No | Track accurate total hit count (default: true) | #### Output [#output] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------ | | `took` | number | Time in milliseconds the search took | | `timed_out` | boolean | Whether the search timed out | | `hits` | object | Search results with total count and matching documents | | `aggregations` | json | Aggregation results if any | ### Elasticsearch Index Document [#elasticsearch-index-document] Index (create or update) a document in Elasticsearch. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Target index name (e.g., "products", "logs-2024") | | `documentId` | string | No | Document ID (e.g., "abc123", "user\_456"). Auto-generated if not provided | | `document` | string | Yes | Document body as JSON string | | `refresh` | string | No | Refresh policy: true, false, or wait\_for | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `_index` | string | Index where the document was stored | | `_id` | string | Document ID | | `_version` | number | Document version | | `result` | string | Operation result (created or updated) | ### Elasticsearch Get Document [#elasticsearch-get-document] Retrieve a document by ID from Elasticsearch. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name (e.g., "products", "logs-2024") | | `documentId` | string | Yes | Document ID to retrieve (e.g., "abc123", "user\_456") | | `sourceIncludes` | string | No | Comma-separated list of fields to include | | `sourceExcludes` | string | No | Comma-separated list of fields to exclude | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ------------------------------ | | `_index` | string | Index name | | `_id` | string | Document ID | | `_version` | number | Document version | | `found` | boolean | Whether the document was found | | `_source` | json | Document content | ### Elasticsearch Update Document [#elasticsearch-update-document] Partially update a document in Elasticsearch using doc merge. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name (e.g., "products", "logs-2024") | | `documentId` | string | Yes | Document ID to update (e.g., "abc123", "user\_456") | | `document` | string | Yes | Partial document to merge as JSON string | | `retryOnConflict` | number | No | Number of retries on version conflict | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------- | | `_index` | string | Index name | | `_id` | string | Document ID | | `_version` | number | New document version | | `result` | string | Operation result (updated or noop) | ### Elasticsearch Delete Document [#elasticsearch-delete-document] Delete a document from Elasticsearch by ID. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name (e.g., "products", "logs-2024") | | `documentId` | string | Yes | Document ID to delete (e.g., "abc123", "user\_456") | | `refresh` | string | No | Refresh policy: true, false, or wait\_for | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------- | | `_index` | string | Index name | | `_id` | string | Document ID | | `_version` | number | Document version | | `result` | string | Operation result (deleted or not\_found) | ### Elasticsearch Bulk Operations [#elasticsearch-bulk-operations] Perform multiple index, create, delete, or update operations in a single request for high performance. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | No | Default index for operations (e.g., "products", "logs-2024") | | `operations` | string | Yes | Bulk operations as NDJSON string. Each operation is two lines: action metadata and optional document. Example: \{"index":\{"\_index":"products","\_id":"1"}}\n\{"name":"Widget"}\n | | `refresh` | string | No | Refresh policy: true, false, or wait\_for | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `took` | number | Time in milliseconds the bulk operation took | | `errors` | boolean | Whether any operation had an error | | `items` | array | Results for each operation | ### Elasticsearch Count [#elasticsearch-count] Count documents matching a query in Elasticsearch. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name to count documents in (e.g., "products", "logs-2024") | | `query` | string | No | Query DSL to filter documents (JSON string). Example: \{"match":\{"status":"active"}} | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | -------------------------------------- | | `count` | number | Number of documents matching the query | | `_shards` | object | Shard statistics | ### Elasticsearch Create Index [#elasticsearch-create-index] Create a new index with optional settings and mappings. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name to create (e.g., "products", "logs-2024") | | `settings` | string | No | Index settings as JSON string | | `mappings` | string | No | Index mappings as JSON string | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------ | | `acknowledged` | boolean | Whether the request was acknowledged | | `shards_acknowledged` | boolean | Whether the shards were acknowledged | | `index` | string | Created index name | ### Elasticsearch Delete Index [#elasticsearch-delete-index] Delete an index and all its documents. This operation is irreversible. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name to delete (e.g., "products", "logs-2024") | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------- | | `acknowledged` | boolean | Whether the deletion was acknowledged | ### Elasticsearch Get Index [#elasticsearch-get-index] Retrieve index information including settings, mappings, and aliases. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `index` | string | Yes | Index name to retrieve info for (e.g., "products", "logs-2024") | #### Output [#output-9] | Parameter | Type | Description | | --------- | ---- | ---------------------------------------------------------------------------------- | | `indices` | json | Matched indices keyed by index name, each with its aliases, mappings, and settings | ### Elasticsearch Cluster Health [#elasticsearch-cluster-health] Get the health status of the Elasticsearch cluster. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `waitForStatus` | string | No | Wait until cluster reaches this status: green, yellow, or red | | `clusterTimeout` | string | No | How long Elasticsearch waits for the cluster to reach the requested status, as an Elasticsearch time value (e.g., 30s, 1m). Not named "timeout": that name is reserved by the tool transport as a client-side abort deadline in milliseconds. | #### Output [#output-10] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------------- | | `cluster_name` | string | Name of the cluster | | `status` | string | Cluster health status: green, yellow, or red | | `number_of_nodes` | number | Total number of nodes in the cluster | | `number_of_data_nodes` | number | Number of data nodes | | `active_shards` | number | Number of active shards | | `unassigned_shards` | number | Number of unassigned shards | ### Elasticsearch Cluster Stats [#elasticsearch-cluster-stats] Get comprehensive statistics about the Elasticsearch cluster. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------- | | `cluster_name` | string | Name of the cluster | | `status` | string | Cluster health status | | `nodes` | object | Node statistics including count and versions | | `indices` | object | Index statistics including document count and store size | ### Elasticsearch List Indices [#elasticsearch-list-indices] List all indices in the Elasticsearch cluster with their health, status, and statistics. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------- | | `deploymentType` | string | Yes | Deployment type: self\_hosted or cloud | | `host` | string | No | Elasticsearch host URL (for self-hosted) | | `cloudId` | string | No | Elastic Cloud ID (for cloud deployments) | | `authMethod` | string | Yes | Authentication method: api\_key or basic\_auth | | `apiKey` | string | No | Elasticsearch API key | | `username` | string | No | Username for basic auth | | `password` | string | No | Password for basic auth | | `includeSystemIndices` | boolean | No | Include Elasticsearch system indices (names starting with "."). Omitted by default. | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `message` | string | Summary message about the indices | | `indices` | json | Array of index information objects (index, health, status, docsCount, storeSize, primaryShards, replicaShards). System indices are omitted unless includeSystemIndices is set. | --- # ElevenLabs (/integrations/elevenlabs) {/* MANUAL-CONTENT-START:intro */} [ElevenLabs](https://elevenlabs.io/) generates and transforms audio. Use this integration for text-to-speech, sound effects, speech-to-speech, and audio isolation. You can also list voices and models, inspect or change voice settings, and read account information. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate ElevenLabs into the workflow. Convert text to speech, generate sound effects, transform voices, isolate audio, and manage voices, models, and account settings. ## Actions [#actions] ### ElevenLabs TTS [#elevenlabs-tts] Convert text to speech using ElevenLabs voices #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `text` | string | Yes | The text to convert to speech (e.g., "Hello, welcome to our service!") | | `voiceId` | string | Yes | The ID of the voice to use (e.g., "21m00Tcm4TlvDq8ikWAM" for Rachel) | | `modelId` | string | No | The ID of the model to use (e.g., "eleven\_multilingual\_v2", "eleven\_turbo\_v2"). Defaults to eleven\_monolingual\_v1 | | `stability` | number | No | Voice stability setting from 0.0 to 1.0 (e.g., 0.5 for balanced, 0.75 for more stable). Higher values produce more consistent output | | `similarityBoost` | number | No | Similarity boost setting from 0.0 to 1.0 (e.g., 0.75 for natural, 1.0 for maximum similarity). Higher values make the voice more similar to the original | | `apiKey` | string | Yes | Your ElevenLabs API key | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | ------------------------------ | | `audioUrl` | string | The URL of the generated audio | | `audioFile` | file | The generated audio file | ### ElevenLabs Sound Effects [#elevenlabs-sound-effects] Generate a sound effect from a text prompt using ElevenLabs #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `text` | string | Yes | The prompt describing the sound effect (e.g., "thunder rumbling in the distance") | | `modelId` | string | No | The model to use (defaults to eleven\_text\_to\_sound\_v2) | | `durationSeconds` | number | No | Length of the sound in seconds (0.5-30). Omit to auto-determine | | `promptInfluence` | number | No | How closely to follow the prompt from 0.0 to 1.0 (default 0.3) | | `loop` | boolean | No | Whether to generate a seamlessly looping sound effect (default false) | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | --------------------------------- | | `audioUrl` | string | URL of the generated sound effect | | `audioFile` | file | The generated sound effect file | ### ElevenLabs Speech to Speech [#elevenlabs-speech-to-speech] Convert audio into a chosen ElevenLabs voice while preserving content and emotion #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Your ElevenLabs API key | | `voiceId` | string | Yes | The ID of the target voice to convert the audio into | | `audioFile` | file | Yes | The source audio file to convert (e.g., MP3, WAV, M4A) | | `modelId` | string | No | The model to use (defaults to eleven\_english\_sts\_v2) | | `removeBackgroundNoise` | boolean | No | Whether to isolate the voice and remove background noise (default false) | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | -------------------------- | | `audioUrl` | string | URL of the converted audio | | `audioFile` | file | The converted audio file | ### ElevenLabs Audio Isolation [#elevenlabs-audio-isolation] Remove background noise from an audio file, isolating the speech using ElevenLabs #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `audioFile` | file | Yes | The audio file to isolate speech from (e.g., MP3, WAV, M4A) | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | ------------------------- | | `audioUrl` | string | URL of the isolated audio | | `audioFile` | file | The isolated audio file | ### ElevenLabs List Voices [#elevenlabs-list-voices] List the voices available in your ElevenLabs account #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `search` | string | No | Search term to filter voices by name, description, labels, or category | | `category` | string | No | Filter by category: premade, cloned, generated, or professional | | `pageSize` | number | No | Number of voices to return (1-100, default 10) | | `nextPageToken` | string | No | Page token from a previous response to fetch the next page of voices | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------- | | `voices` | array | List of voices | | ↳ `voiceId` | string | Unique voice identifier | | ↳ `name` | string | Voice name | | ↳ `category` | string | Voice category | | ↳ `description` | string | Voice description | | ↳ `labels` | json | Voice labels (accent, gender, age, use case) | | ↳ `previewUrl` | string | URL to a preview audio sample | | ↳ `settings` | json | Default voice settings | | `totalCount` | number | Total number of matching voices | | `hasMore` | boolean | Whether more voices are available | | `nextPageToken` | string | Token to fetch the next page | ### ElevenLabs Get Voice [#elevenlabs-get-voice] Get metadata and settings for a specific ElevenLabs voice #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `voiceId` | string | Yes | The ID of the voice to retrieve (e.g., "21m00Tcm4TlvDq8ikWAM") | #### Output [#output-5] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `voiceId` | string | Unique voice identifier | | `name` | string | Voice name | | `category` | string | Voice category | | `description` | string | Voice description | | `labels` | json | Voice labels (accent, gender, age, use case) | | `previewUrl` | string | URL to a preview audio sample | | `settings` | json | Default voice settings | | `availableForTiers` | array | Subscription tiers the voice is available on | | `highQualityBaseModelIds` | array | Model IDs that support high-quality output for this voice | | `isOwner` | boolean | Whether the current user owns this voice | ### ElevenLabs Get Voice Settings [#elevenlabs-get-voice-settings] Get the configured settings for a specific ElevenLabs voice #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `voiceId` | string | Yes | The ID of the voice whose settings to retrieve | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------- | | `stability` | number | Voice stability (0.0-1.0) | | `similarityBoost` | number | Similarity boost (0.0-1.0) | | `style` | number | Style exaggeration (0.0-1.0) | | `useSpeakerBoost` | boolean | Whether speaker boost is enabled | | `speed` | number | Speech speed (1.0 = normal) | ### ElevenLabs Edit Voice Settings [#elevenlabs-edit-voice-settings] Update the settings for a specific ElevenLabs voice #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | | `voiceId` | string | Yes | The ID of the voice to update | | `stability` | number | No | Voice stability from 0.0 to 1.0 (default 0.5) | | `similarityBoost` | number | No | Similarity boost from 0.0 to 1.0 (default 0.75) | | `style` | number | No | Style exaggeration from 0.0 to 1.0 (default 0) | | `useSpeakerBoost` | boolean | No | Whether to enhance similarity to the original speaker (default true) | | `speed` | number | No | Speech speed where 1.0 is normal (default 1.0) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `status` | string | Request outcome ("ok" on success) | ### ElevenLabs List Models [#elevenlabs-list-models] List the models available in ElevenLabs #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------- | | `models` | array | List of available models | | ↳ `modelId` | string | Unique model identifier | | ↳ `name` | string | Model name | | ↳ `description` | string | Model description | | ↳ `canDoTextToSpeech` | boolean | Supports text-to-speech | | ↳ `canDoVoiceConversion` | boolean | Supports voice conversion | | ↳ `canUseStyle` | boolean | Supports the style parameter | | ↳ `canUseSpeakerBoost` | boolean | Supports speaker boost | | ↳ `languages` | array | Languages supported by the model | | ↳ `languageId` | string | Language code | | ↳ `name` | string | Language name | ### ElevenLabs Get User [#elevenlabs-get-user] Get account and subscription information for the ElevenLabs user #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | Your ElevenLabs API key | #### Output [#output-9] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------- | | `userId` | string | Unique user identifier | | `isNewUser` | boolean | Whether the user is new | | `subscription` | object | Subscription and usage details | | ↳ `tier` | string | Subscription tier | | ↳ `characterCount` | number | Characters used this period | | ↳ `characterLimit` | number | Character quota for this period | | ↳ `canExtendCharacterLimit` | boolean | Whether the character limit can be extended | | ↳ `status` | string | Subscription status | | ↳ `nextCharacterCountResetUnix` | number | Unix timestamp when the character count resets | --- # Email Bison (/integrations/emailbison) {/* MANUAL-CONTENT-START:intro */} [Email Bison](https://emailbison.com/) is a cold email outreach and deliverability platform for managing leads, sending sequences, and tracking campaign performance. With Email Bison, you can: * **Manage leads**: Create, update, retrieve, and tag leads, and track their engagement across campaigns * **Run campaigns**: Create campaigns, attach leads, and pause, resume, or archive them as needed * **Track replies**: List and filter incoming replies by status, folder, campaign, sender, lead, or tag * **React to events**: Trigger workflows on first email sent, interested replies, unsubscribes, bounces, opens, and sender account changes In Agent Serve, the Email Bison integration allows your agents to create and update leads, list and filter leads/campaigns/replies, attach leads to campaigns, manage campaign status, and organize leads with tags — all programmatically through API calls. Combined with Email Bison triggers, agents can also react in real time to events like a contact being emailed, replying, marking interest, unsubscribing, or an email bouncing, making it possible to automate outbound outreach workflows end to end. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Email Bison into workflows. Create and update leads, manage campaigns, attach leads to campaigns, list replies, and organize leads with tags. ## Actions [#actions] ### Email Bison List Leads [#email-bison-list-leads] Retrieves leads from Email Bison with optional search and tag filters. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `search` | string | No | Search term for filtering leads | | `campaignStatus` | string | No | Lead campaign status filter: in\_sequence, sequence\_finished, sequence\_stopped, never\_contacted, or replied | | `tagIds` | array | No | Tag IDs to include | | `excludedTagIds` | array | No | Tag IDs to exclude | | `withoutTags` | boolean | No | Only return leads without tags | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Get Lead [#email-bison-get-lead] Retrieves a lead by Email Bison lead ID or email address. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `leadId` | string | Yes | Lead ID or email address | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Create Lead [#email-bison-create-lead] Creates a single lead in Email Bison. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `firstName` | string | Yes | Lead first name | | `lastName` | string | Yes | Lead last name | | `email` | string | Yes | Lead email address | | `title` | string | No | Lead job title | | `company` | string | No | Lead company | | `notes` | string | No | Additional notes about the lead | | `customVariables` | array | No | Custom variables to store on the lead | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Update Lead [#email-bison-update-lead] Updates an existing Email Bison lead. Fields omitted from a PUT update may be cleared by Email Bison. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `leadId` | string | Yes | Lead ID or email address | | `firstName` | string | Yes | Lead first name | | `lastName` | string | Yes | Lead last name | | `email` | string | Yes | Lead email address | | `title` | string | No | Lead job title | | `company` | string | No | Lead company | | `notes` | string | No | Additional notes about the lead | | `customVariables` | array | No | Custom variables to store on the lead | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison List Campaigns [#email-bison-list-campaigns] Retrieves Email Bison campaigns. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Create Campaign [#email-bison-create-campaign] Creates a new Email Bison campaign. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `name` | string | Yes | Campaign name | | `campaignType` | string | No | Campaign type: outbound or reply\_followup | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Update Campaign [#email-bison-update-campaign] Updates Email Bison campaign settings. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `campaignId` | number | Yes | Campaign ID | | `name` | string | No | Campaign name | | `maxEmailsPerDay` | number | No | Maximum emails per day | | `maxNewLeadsPerDay` | number | No | Maximum new leads per day | | `plainText` | boolean | No | Send plain text emails | | `openTracking` | boolean | No | Enable open tracking | | `reputationBuilding` | boolean | No | Enable reputation building | | `canUnsubscribe` | boolean | No | Enable unsubscribe link | | `includeAutoRepliesInStats` | boolean | No | Include auto replies in campaign stats | | `sequencePrioritization` | string | No | Sequence prioritization: followups or new\_leads | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Update Campaign Status [#email-bison-update-campaign-status] Pauses, resumes, or archives an Email Bison campaign. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `campaignId` | number | Yes | Campaign ID | | `action` | string | Yes | Status action: pause, resume, or archive | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Attach Leads to Campaign [#email-bison-attach-leads-to-campaign] Adds existing Email Bison leads to a campaign. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `campaignId` | number | Yes | Campaign ID | | `leadIds` | array | Yes | Lead IDs to add to the campaign | | `allowParallelSending` | boolean | No | Force add leads already in sequence in other campaigns | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison List Replies [#email-bison-list-replies] Retrieves Email Bison replies with optional status, folder, campaign, sender, lead, and tag filters. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `search` | string | No | Search term for replies | | `status` | string | No | Reply status: interested, automated\_reply, or not\_automated\_reply | | `folder` | string | No | Reply folder: inbox, sent, spam, bounced, or all | | `read` | boolean | No | Filter by read state | | `campaignId` | number | No | Campaign ID | | `senderEmailId` | number | No | Sender email ID | | `leadId` | number | No | Lead ID | | `tagIds` | array | No | Tag IDs to filter replies by | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison List Tags [#email-bison-list-tags] Retrieves all Email Bison tags for the authenticated workspace. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Create Tag [#email-bison-create-tag] Creates a new Email Bison tag. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `name` | string | Yes | Tag name | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ### Email Bison Attach Tags to Leads [#email-bison-attach-tags-to-leads] Attaches Email Bison tags to one or more leads. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Email Bison API token | | `apiBaseUrl` | string | Yes | Email Bison instance URL that issued the token | | `tagIds` | array | Yes | Tag IDs to attach | | `leadIds` | array | Yes | Lead IDs to tag | | `skipWebhooks` | boolean | No | Skip Email Bison webhooks for this action | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `leads` | array | List of leads | | `campaigns` | array | List of campaigns | | `replies` | array | List of replies | | `tags` | array | List of tags | | `count` | number | Number of returned records | | `id` | number | Record ID | | `uuid` | string | Record UUID | | `name` | string | Campaign or tag name | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `email` | string | Lead email address | | `status` | string | Record status | | `success` | boolean | Whether the action succeeded | | `message` | string | Action message | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Email Bison Contact First Emailed [#email-bison-contact-first-emailed] Trigger when a contact receives their first campaign email in Email Bison #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-13] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `lead_id` | number | Lead ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `email_subject` | string | Email subject | | ↳ `email_body` | string | Email body HTML | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Contact Interested [#email-bison-contact-interested] Trigger when a reply is marked interested in Email Bison #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-14] | Parameter | Type | Description | | ---------------------------- | ------- | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `reply` | object | reply output from the tool | | ↳ `id` | number | Reply ID | | ↳ `uuid` | string | Reply UUID | | ↳ `email_subject` | string | Reply email subject | | ↳ `interested` | boolean | Whether the reply is marked interested | | ↳ `automated_reply` | boolean | Whether the reply is automated | | ↳ `html_body` | string | Reply HTML body | | ↳ `text_body` | string | Reply plain text body | | ↳ `raw_body` | string | Raw MIME reply body | | ↳ `headers` | string | Encoded raw email headers | | ↳ `date_received` | string | Reply received timestamp | | ↳ `from_name` | string | Reply sender name | | ↳ `from_email_address` | string | Reply sender email address | | ↳ `primary_to_email_address` | string | Primary recipient email address | | ↳ `to` | json | Reply To recipients | | ↳ `cc` | json | Reply CC recipients | | ↳ `bcc` | json | Reply BCC recipients | | ↳ `parent_id` | number | Parent reply ID | | ↳ `reply_type` | string | Reply type | | ↳ `folder` | string | Reply folder | | ↳ `raw_message_id` | string | Raw email message ID | | ↳ `created_at` | string | Reply creation timestamp | | ↳ `updated_at` | string | Reply update timestamp | | ↳ `attachments` | json | Reply attachments | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Contact Replied [#email-bison-contact-replied] Trigger when a campaign lead replies in Email Bison #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-15] | Parameter | Type | Description | | ---------------------------- | ------- | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `reply` | object | reply output from the tool | | ↳ `id` | number | Reply ID | | ↳ `uuid` | string | Reply UUID | | ↳ `email_subject` | string | Reply email subject | | ↳ `interested` | boolean | Whether the reply is marked interested | | ↳ `automated_reply` | boolean | Whether the reply is automated | | ↳ `html_body` | string | Reply HTML body | | ↳ `text_body` | string | Reply plain text body | | ↳ `raw_body` | string | Raw MIME reply body | | ↳ `headers` | string | Encoded raw email headers | | ↳ `date_received` | string | Reply received timestamp | | ↳ `from_name` | string | Reply sender name | | ↳ `from_email_address` | string | Reply sender email address | | ↳ `primary_to_email_address` | string | Primary recipient email address | | ↳ `to` | json | Reply To recipients | | ↳ `cc` | json | Reply CC recipients | | ↳ `bcc` | json | Reply BCC recipients | | ↳ `parent_id` | number | Parent reply ID | | ↳ `reply_type` | string | Reply type | | ↳ `folder` | string | Reply folder | | ↳ `raw_message_id` | string | Raw email message ID | | ↳ `created_at` | string | Reply creation timestamp | | ↳ `updated_at` | string | Reply update timestamp | | ↳ `attachments` | json | Reply attachments | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Contact Unsubscribed [#email-bison-contact-unsubscribed] Trigger when a contact unsubscribes in Email Bison #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-16] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `lead_id` | number | Lead ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `email_subject` | string | Email subject | | ↳ `email_body` | string | Email body HTML | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Account Added [#email-bison-email-account-added] Trigger when a sender email account is added to Email Bison #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-17] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Account Disconnected [#email-bison-email-account-disconnected] Trigger when a sender email account disconnects in Email Bison #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-18] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Account Reconnected [#email-bison-email-account-reconnected] Trigger when a sender email account reconnects in Email Bison #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-19] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Account Removed [#email-bison-email-account-removed] Trigger when a sender email account is removed from Email Bison #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-20] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Bounced [#email-bison-email-bounced] Trigger when an Email Bison campaign email bounces #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-21] | Parameter | Type | Description | | ---------------------------- | ------- | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `reply` | object | reply output from the tool | | ↳ `id` | number | Reply ID | | ↳ `uuid` | string | Reply UUID | | ↳ `email_subject` | string | Reply email subject | | ↳ `interested` | boolean | Whether the reply is marked interested | | ↳ `automated_reply` | boolean | Whether the reply is automated | | ↳ `html_body` | string | Reply HTML body | | ↳ `text_body` | string | Reply plain text body | | ↳ `raw_body` | string | Raw MIME reply body | | ↳ `headers` | string | Encoded raw email headers | | ↳ `date_received` | string | Reply received timestamp | | ↳ `from_name` | string | Reply sender name | | ↳ `from_email_address` | string | Reply sender email address | | ↳ `primary_to_email_address` | string | Primary recipient email address | | ↳ `to` | json | Reply To recipients | | ↳ `cc` | json | Reply CC recipients | | ↳ `bcc` | json | Reply BCC recipients | | ↳ `parent_id` | number | Parent reply ID | | ↳ `reply_type` | string | Reply type | | ↳ `folder` | string | Reply folder | | ↳ `raw_message_id` | string | Raw email message ID | | ↳ `created_at` | string | Reply creation timestamp | | ↳ `updated_at` | string | Reply update timestamp | | ↳ `attachments` | json | Reply attachments | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Opened [#email-bison-email-opened] Trigger when an Email Bison campaign email is opened #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-22] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `lead_id` | number | Lead ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `email_subject` | string | Email subject | | ↳ `email_body` | string | Email body HTML | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Email Sent [#email-bison-email-sent] Trigger when a campaign email is sent in Email Bison #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-23] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `lead_id` | number | Lead ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `email_subject` | string | Email subject | | ↳ `email_body` | string | Email body HTML | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | string | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `campaignEvent` | object | campaignEvent output from the tool | | ↳ `id` | number | Campaign event ID | | ↳ `event_type` | string | Campaign event type | | ↳ `created_at_local` | string | Campaign event local creation timestamp | | ↳ `local_timezone` | string | Campaign event local timezone | | ↳ `created_at` | string | Campaign event creation timestamp | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Manual Email Sent [#email-bison-manual-email-sent] Trigger when a manual email is sent in Email Bison #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-24] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `reply` | object | reply output from the tool | | ↳ `id` | number | Reply ID | | ↳ `email_subject` | string | Reply email subject | | ↳ `interested` | boolean | Whether the reply is marked interested | | ↳ `automated_reply` | boolean | Whether the reply is automated | | ↳ `html_body` | string | Reply HTML body | | ↳ `text_body` | string | Reply plain text body | | ↳ `raw_body` | string | Raw MIME reply body | | ↳ `headers` | string | Encoded raw email headers | | ↳ `date_received` | string | Reply received timestamp | | ↳ `reply_type` | string | Reply type | | ↳ `from_name` | string | Reply sender name | | ↳ `from_email_address` | string | Reply sender email address | | ↳ `primary_to_email_address` | string | Primary recipient email address | | ↳ `to` | json | Reply To recipients | | ↳ `cc` | json | Reply CC recipients | | ↳ `bcc` | json | Reply BCC recipients | | ↳ `parent_id` | json | Parent reply ID | | ↳ `folder` | string | Reply folder | | ↳ `raw_message_id` | string | Raw email message ID | | ↳ `created_at` | string | Reply creation timestamp | | ↳ `updated_at` | string | Reply update timestamp | | ↳ `attachments` | json | Reply attachments | | `lead` | object | lead output from the tool | | ↳ `id` | number | Lead ID | | ↳ `email` | string | Lead email address | | ↳ `first_name` | string | Lead first name | | ↳ `last_name` | string | Lead last name | | ↳ `status` | string | Lead status | | ↳ `title` | string | Lead title | | ↳ `company` | string | Lead company | | ↳ `custom_variables` | json | Lead custom variables | | ↳ `emails_sent` | number | Lead emails sent count | | ↳ `opens` | number | Lead open count | | ↳ `unique_opens` | number | Lead unique open count | | ↳ `replies` | number | Lead reply count | | ↳ `unique_replies` | number | Lead unique reply count | | ↳ `bounces` | number | Lead bounce count | | `campaign` | object | campaign output from the tool | | ↳ `id` | number | Campaign ID | | ↳ `name` | string | Campaign name | | `scheduledEmail` | object | scheduledEmail output from the tool | | ↳ `id` | number | Scheduled email ID | | ↳ `sequence_step_id` | number | Sequence step ID | | ↳ `sequence_step_order` | number | Sequence step order | | ↳ `sequence_step_variant` | number | Sequence step variant | | ↳ `status` | string | Scheduled email status | | ↳ `scheduled_date_est` | string | Scheduled date in EST | | ↳ `scheduled_date_local` | string | Scheduled date in local timezone | | ↳ `local_timezone` | string | Scheduled email local timezone | | ↳ `sent_at` | string | Email sent timestamp | | ↳ `opens` | number | Open count | | ↳ `replies` | number | Reply count | | ↳ `unique_opens` | number | Unique open count | | ↳ `unique_replies` | number | Unique reply count | | ↳ `interested` | json | Interested status | | ↳ `raw_message_id` | string | Raw email message ID | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Tag Attached [#email-bison-tag-attached] Trigger when a custom tag is attached to a taggable in Email Bison #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `tagId` | number | Email Bison tag ID | | `tagName` | string | Email Bison tag name | | `taggableId` | number | ID of the tagged resource | | `taggableType` | string | Type of the tagged resource | *** ### Email Bison Tag Removed [#email-bison-tag-removed] Trigger when a custom tag is removed from a taggable in Email Bison #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `tagId` | number | Email Bison tag ID | | `tagName` | string | Email Bison tag name | | `taggableId` | number | ID of the tagged resource | | `taggableType` | string | Type of the tagged resource | *** ### Email Bison Untracked Reply Received [#email-bison-untracked-reply-received] Trigger when Email Bison receives a reply not tied to a scheduled campaign email #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-27] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `reply` | object | reply output from the tool | | ↳ `id` | number | Reply ID | | ↳ `uuid` | string | Reply UUID | | ↳ `email_subject` | string | Reply email subject | | ↳ `interested` | boolean | Whether the reply is marked interested | | ↳ `automated_reply` | boolean | Whether the reply is automated | | ↳ `html_body` | string | Reply HTML body | | ↳ `text_body` | string | Reply plain text body | | ↳ `raw_body` | string | Raw MIME reply body | | ↳ `headers` | string | Encoded raw email headers | | ↳ `date_received` | string | Reply received timestamp | | ↳ `from_name` | string | Reply sender name | | ↳ `from_email_address` | string | Reply sender email address | | ↳ `primary_to_email_address` | string | Primary recipient email address | | ↳ `to` | json | Reply To recipients | | ↳ `cc` | json | Reply CC recipients | | ↳ `bcc` | json | Reply BCC recipients | | ↳ `parent_id` | number | Parent reply ID | | ↳ `reply_type` | string | Reply type | | ↳ `folder` | string | Reply folder | | ↳ `raw_message_id` | string | Raw email message ID | | ↳ `created_at` | string | Reply creation timestamp | | ↳ `updated_at` | string | Reply update timestamp | | ↳ `attachments` | json | Reply attachments | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Warmup Disabled Causing Bounces [#email-bison-warmup-disabled-causing-bounces] Trigger when warmup is disabled for a sender email causing too many bounces #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-28] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | *** ### Email Bison Warmup Disabled Receiving Bounces [#email-bison-warmup-disabled-receiving-bounces] Trigger when warmup is disabled for a sender email receiving too many bounces #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------ | | `apiKey` | string | Yes | API Key | | `apiBaseUrl` | string | Yes | Instance URL | #### Output [#output-29] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------- | | `eventType` | string | Email Bison webhook event type | | `eventName` | string | Human-readable Email Bison event name | | `instanceUrl` | string | Email Bison instance URL | | `workspaceId` | number | Email Bison workspace ID | | `workspaceName` | string | Email Bison workspace name | | `event` | json | Raw Email Bison event metadata object | | `data` | json | Raw Email Bison event data object | | `senderEmail` | object | senderEmail output from the tool | | ↳ `id` | number | Sender email ID | | ↳ `name` | string | Sender email name | | ↳ `email` | string | Sender email address | | ↳ `status` | string | Sender email status | | ↳ `account_type` | string | Sender email connection type | | ↳ `daily_limit` | number | Sender email daily limit | | ↳ `emails_sent` | number | Sender email sent count | | ↳ `replied` | number | Sender email replied count | | ↳ `opened` | number | Sender email opened count | | ↳ `unsubscribed` | number | Sender email unsubscribed count | | ↳ `bounced` | number | Sender email bounced count | | ↳ `unique_replies` | number | Sender email unique reply count | | ↳ `unique_opens` | number | Sender email unique open count | | ↳ `total_leads_contacted` | number | Sender email total leads contacted | | ↳ `interested` | number | Sender email interested count | | ↳ `created_at` | string | Sender email creation timestamp | | ↳ `updated_at` | string | Sender email update timestamp | --- # Embeddings (/integrations/embeddings) {/* MANUAL-CONTENT-START:intro */} An embedding turns a piece of text into a list of numbers that captures its meaning. Two texts that mean similar things get similar numbers, so you can compare meaning directly instead of matching keywords. That is what powers semantic search, grouping related items, and spotting near-duplicates that are worded differently. The Embeddings block generates those numbers using OpenAI, Google Gemini, Cohere, Mistral, OpenRouter, or a model on your own Ollama server. Pick a provider, pick one of its models, pass in text, and get a vector back — one vector per input, in the order you supplied them. You can embed a single string or a list of strings in one call. Choose a provider and a supported model for your workload. Some models let you configure vector size or task type; the block shows these controls only when the selected model supports them. Two things worth knowing before you build on it. Vectors are only comparable when they come from the same model at the same size, so changing either means re-embedding everything you intend to compare. And input longer than the model's limit is shortened to fit rather than rejected, with a warning in the run, so chunk long documents yourself when the tail matters. Ollama is the exception to most of the above. It runs on your own deployment, so it needs no API key and adds no provider charge — Agent Serve's own per-run charge still applies — and the model list is whatever you have pulled onto that server rather than a catalog Agent Serve maintains. The block reads it live, drops the models that report a non-embedding capability, and shows each one's vector width next to its name where Ollama reports one. A server too old to report either will list its chat models too and label none of them, so check the model you pick. The block offers no task-type or dimension control for Ollama: task conditioning has no equivalent there, and while recent Ollama builds do accept a dimension override for Matryoshka models, older ones silently ignore it, so Agent Serve uses each model's own width rather than one that may or may not take effect. Point Agent Serve at the server with `OLLAMA_URL`. Agent Serve Cloud runs no Ollama of its own, so without that variable the list comes back empty rather than dialling a loopback address that cannot answer — set it to a reachable server and Cloud will use it like any other deployment. Agent Serve's knowledge bases embed separately: a base fixes one model and one vector width when it is created, from a smaller set of models. This block is for embedding text yourself inside a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Turn text into embedding vectors for semantic search, clustering, and similarity. Supports OpenAI, OpenRouter, Google Gemini, Cohere, and Mistral embedding models, plus embedding models on a self-hosted Ollama. ## Actions [#actions] ### OpenAI Embeddings [#openai-embeddings] Generate embeddings from text using OpenAI's embedding models #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | No | Embedding model to use | | `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering | | `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. | | `apiKey` | string | Yes | API key for the selected embedding provider | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | ### OpenRouter Embeddings [#openrouter-embeddings] Generate embeddings through OpenRouter #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | No | Embedding model to use | | `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering | | `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. | | `apiKey` | string | No | API key for the selected embedding provider | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | ### Gemini Embeddings [#gemini-embeddings] Generate embeddings from text using Google's Gemini embedding models #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | No | Embedding model to use | | `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering | | `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. | | `apiKey` | string | Yes | API key for the selected embedding provider | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | ### Cohere Embeddings [#cohere-embeddings] Generate embeddings from text using Cohere's embedding models #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | No | Embedding model to use | | `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering | | `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. | | `apiKey` | string | Yes | API key for the selected embedding provider | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | ### Mistral Embeddings [#mistral-embeddings] Generate embeddings from text using Mistral's embedding models #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | No | Embedding model to use | | `taskType` | string | No | What the embedding is for, when the model supports task conditioning: document, query, similarity, classification, or clustering | | `dimensions` | number | No | Output dimensions, when the model supports truncation. Defaults to native. | | `apiKey` | string | Yes | API key for the selected embedding provider | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | ### Ollama Embeddings [#ollama-embeddings] Generate embeddings on a self-hosted Ollama server #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `input` | string | Yes | Text to embed, or an array of texts to embed in one call | | `model` | string | Yes | Embedding model pulled on the configured Ollama server | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `embeddings` | json | Generated embedding vectors, one per input, in input order | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each returned vector | | `usage` | json | Token usage | | ↳ `prompt_tokens` | number | Tokens in the input | | ↳ `total_tokens` | number | Total tokens billed | --- # Enrich (/integrations/enrich) {/* MANUAL-CONTENT-START:intro */} [Enrich.so](https://enrich.so/) delivers real-time, precision B2B data enrichment and LinkedIn intelligence. Its platform provides dynamic access to public and structured company, contact, and professional information, enabling teams to build richer profiles, improve lead quality, and drive more effective outreach. With Enrich.so, you can: * **Enrich contact and company profiles**: Instantly discover key data points for leads, prospects, and businesses using just an email or LinkedIn profile. * **Verify email deliverability**: Check if emails are valid, deliverable, and safe to contact before sending. * **Find work & personal emails**: Identify missing business emails from a LinkedIn profile or personal emails to expand your reach. * **Reveal phone numbers and social profiles**: Surface additional communication channels for contacts through enrichment tools. * **Analyze LinkedIn posts and engagement**: Extract insights on post reach, reactions, and audience from public LinkedIn content. * **Conduct advanced people and company search**: Enable your agents to locate companies and professionals based on deep filters and real-time intelligence. The Agent Serve integration with Enrich.so empowers your agents and automations to instantly query, enrich, and validate B2B data, boosting productivity in workflows like sales prospecting, recruiting, marketing operations, and more. Combining Agent Serve's orchestration capabilities with Enrich.so unlocks smarter, data-driven automation strategies powered by best-in-class B2B intelligence. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Access real-time B2B data intelligence with Enrich.so. Enrich profiles from email addresses, find work emails from LinkedIn, verify email deliverability, search for people and companies, and analyze LinkedIn post engagement. ## Actions [#actions] ### Enrich Check Credits [#enrich-check-credits] Check your Enrich API credit usage and remaining balance. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------- | | `apiKey` | string | Yes | Enrich API key | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------- | | `totalCredits` | number | Total credits allocated to the account | | `creditsUsed` | number | Credits consumed so far | | `creditsRemaining` | number | Available credits remaining | ### Enrich Email to Profile [#enrich-email-to-profile] Retrieve detailed LinkedIn profile information using an email address including work history, education, and skills. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to look up (e.g., [john.doe@company.com](mailto:john.doe@company.com)) | | `inRealtime` | boolean | No | Set to true to retrieve fresh data, bypassing cached information | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------- | --------------------------------------------- | | `displayName` | string | Full display name | | `firstName` | string | First name | | `lastName` | string | Last name | | `headline` | string | Professional headline | | `occupation` | string | Current occupation | | `summary` | string | Profile summary | | `location` | string | Location | | `country` | string | Country | | `linkedInUrl` | string | LinkedIn profile URL | | `photoUrl` | string | Profile photo URL | | `connectionCount` | number | Number of connections | | `isConnectionCountObfuscated` | boolean | Whether connection count is obfuscated (500+) | | `positionHistory` | array | Work experience history | | ↳ `title` | string | Job title | | ↳ `company` | string | Company name | | ↳ `startDate` | string | Start date | | ↳ `endDate` | string | End date | | ↳ `location` | string | Location | | `education` | array | Education history | | ↳ `school` | string | School name | | ↳ `degree` | string | Degree | | ↳ `fieldOfStudy` | string | Field of study | | ↳ `startDate` | string | Start date | | ↳ `endDate` | string | End date | | `certifications` | array | Professional certifications | | ↳ `name` | string | Certification name | | ↳ `authority` | string | Issuing authority | | ↳ `url` | string | Certification URL | | `skills` | array | List of skills | | `languages` | array | List of languages | | `locale` | string | Profile locale (e.g., en\_US) | | `version` | number | Profile version number | ### Enrich Email to Person Lite [#enrich-email-to-person-lite] Retrieve basic LinkedIn profile information from an email address. A lighter version with essential data only. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to look up (e.g., [john.doe@company.com](mailto:john.doe@company.com)) | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------ | --------------------- | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `title` | string | Job title | | `location` | string | Location | | `company` | string | Current company | | `companyLocation` | string | Company location | | `companyLinkedIn` | string | Company LinkedIn URL | | `profileId` | string | LinkedIn profile ID | | `schoolName` | string | School name | | `schoolUrl` | string | School URL | | `linkedInUrl` | string | LinkedIn profile URL | | `photoUrl` | string | Profile photo URL | | `followerCount` | number | Number of followers | | `connectionCount` | number | Number of connections | | `languages` | array | Languages spoken | | `projects` | array | Projects | | `certifications` | array | Certifications | | `volunteerExperience` | array | Volunteer experience | ### Enrich LinkedIn Profile [#enrich-linkedin-profile] Enrich a LinkedIn profile URL with detailed information including positions, education, and social metrics. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `url` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/williamhgates) | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------ | | `profileId` | string | LinkedIn profile ID | | `firstName` | string | First name | | `lastName` | string | Last name | | `subTitle` | string | Profile subtitle/headline | | `profilePicture` | string | Profile picture URL | | `backgroundImage` | string | Background image URL | | `industry` | string | Industry | | `location` | string | Location | | `followersCount` | number | Number of followers | | `connectionsCount` | number | Number of connections | | `premium` | boolean | Whether the account is premium | | `influencer` | boolean | Whether the account is an influencer | | `positions` | array | Work positions | | ↳ `title` | string | Job title | | ↳ `company` | string | Company name | | ↳ `companyLogo` | string | Company logo URL | | ↳ `startDate` | string | Start date | | ↳ `endDate` | string | End date | | ↳ `location` | string | Location | | `education` | array | Education history | | ↳ `school` | string | School name | | ↳ `degree` | string | Degree | | ↳ `fieldOfStudy` | string | Field of study | | ↳ `startDate` | string | Start date | | ↳ `endDate` | string | End date | | `websites` | array | Personal websites | ### Enrich Find Email [#enrich-find-email] Find a person's work email address using their full name and company domain. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `fullName` | string | Yes | Person's full name (e.g., John Doe) | | `companyDomain` | string | Yes | Company domain (e.g., example.com) | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------- | | `email` | string | Found email address | | `firstName` | string | First name | | `lastName` | string | Last name | | `domain` | string | Company domain | | `found` | boolean | Whether an email was found | | `acceptAll` | boolean | Whether the domain accepts all emails | ### Enrich LinkedIn to Work Email [#enrich-linkedin-to-work-email] Find a work email address from a LinkedIn profile URL. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., [https://www.linkedin.com/in/williamhgates](https://www.linkedin.com/in/williamhgates)) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `email` | string | Found work email address | | `found` | boolean | Whether an email was found | | `status` | string | Request status (in\_progress or completed) | ### Enrich LinkedIn to Personal Email [#enrich-linkedin-to-personal-email] Find personal email address from a LinkedIn profile URL. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/username) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `email` | string | Personal email address | | `found` | boolean | Whether an email was found | | `status` | string | Request status | ### Enrich Phone Finder [#enrich-phone-finder] Find a phone number from a LinkedIn profile URL. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `linkedinProfile` | string | Yes | LinkedIn profile URL (e.g., linkedin.com/in/williamhgates) | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `profileUrl` | string | LinkedIn profile URL | | `mobileNumber` | string | Found mobile phone number | | `found` | boolean | Whether a phone number was found | | `status` | string | Request status (in\_progress or completed) | ### Enrich Email to Phone [#enrich-email-to-phone] Find a phone number associated with an email address. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to look up (e.g., [john.doe@example.com](mailto:john.doe@example.com)) | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `email` | string | Email address looked up | | `mobileNumber` | string | Found mobile phone number | | `found` | boolean | Whether a phone number was found | | `status` | string | Request status (in\_progress or completed) | ### Enrich Verify Email [#enrich-verify-email] Verify an email address for deliverability, including catch-all detection and provider identification. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to verify (e.g., [john.doe@example.com](mailto:john.doe@example.com)) | #### Output [#output-9] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `email` | string | Email address verified | | `status` | string | Verification status | | `result` | string | Deliverability result (deliverable, undeliverable, etc.) | | `confidenceScore` | number | Confidence score (0-100) | | `smtpProvider` | string | Email service provider (e.g., Google, Microsoft) | | `mailDisposable` | boolean | Whether the email is from a disposable provider | | `mailAcceptAll` | boolean | Whether the domain is a catch-all domain | | `free` | boolean | Whether the email uses a free email service | ### Enrich Disposable Email Check [#enrich-disposable-email-check] Check if an email address is from a disposable or temporary email provider. Returns a score and validation details. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to check (e.g., [john.doe@example.com](mailto:john.doe@example.com)) | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------------- | | `email` | string | Email address checked | | `score` | number | Validation score (0-100) | | `testsPassed` | string | Number of tests passed (e.g., "3/3") | | `passed` | boolean | Whether the email passed all validation tests | | `reason` | string | Reason for failure if email did not pass | | `mailServerIp` | string | Mail server IP address | | `mxRecords` | array | MX records for the domain | | ↳ `host` | string | MX record host | | ↳ `pref` | number | MX record preference | ### Enrich Email to IP [#enrich-email-to-ip] Discover an IP address associated with an email address. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `email` | string | Yes | Email address to look up (e.g., [john.doe@example.com](mailto:john.doe@example.com)) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `email` | string | Email address looked up | | `ip` | string | Associated IP address | | `found` | boolean | Whether an IP address was found | ### Enrich IP to Company [#enrich-ip-to-company] Identify a company from an IP address with detailed firmographic information. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `ip` | string | Yes | IP address to look up (e.g., 86.92.60.221) | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------ | -------------------- | | `name` | string | Company name | | `legalName` | string | Legal company name | | `domain` | string | Primary domain | | `domainAliases` | array | Domain aliases | | `sector` | string | Business sector | | `industry` | string | Industry | | `phone` | string | Phone number | | `employees` | number | Number of employees | | `revenue` | string | Estimated revenue | | `location` | json | Company location | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `country` | string | Country | | ↳ `timezone` | string | Timezone | | `linkedInUrl` | string | LinkedIn company URL | | `twitterUrl` | string | Twitter URL | | `facebookUrl` | string | Facebook URL | ### Enrich Company Lookup [#enrich-company-lookup] Look up comprehensive company information by name or domain including funding, location, and social profiles. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `name` | string | No | Company name (e.g., Google) | | `domain` | string | No | Company domain (e.g., google.com) | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | ---------------------------- | | `name` | string | Company name | | `universalName` | string | Universal company name | | `companyId` | string | Company ID | | `description` | string | Company description | | `phone` | string | Phone number | | `linkedInUrl` | string | LinkedIn company URL | | `websiteUrl` | string | Company website | | `followers` | number | Number of LinkedIn followers | | `staffCount` | number | Number of employees | | `foundedDate` | string | Date founded | | `type` | string | Company type | | `industries` | array | Industries | | `specialties` | array | Company specialties | | `headquarters` | json | Headquarters location | | ↳ `city` | string | City | | ↳ `country` | string | Country | | ↳ `postalCode` | string | Postal code | | ↳ `line1` | string | Address line 1 | | `logo` | string | Company logo URL | | `coverImage` | string | Cover image URL | | `fundingRounds` | array | Funding history | | ↳ `roundType` | string | Funding round type | | ↳ `amount` | number | Amount raised | | ↳ `currency` | string | Currency | | ↳ `investors` | array | Investors | ### Enrich Company Funding [#enrich-company-funding] Retrieve company funding history, traffic metrics, and executive information by domain. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `domain` | string | Yes | Company domain (e.g., example.com) | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------- | | `legalName` | string | Legal company name | | `employeeCount` | number | Number of employees | | `headquarters` | string | Headquarters location | | `industry` | string | Industry | | `totalFundingRaised` | number | Total funding raised | | `fundingRounds` | array | Funding rounds | | ↳ `roundType` | string | Round type | | ↳ `amount` | number | Amount raised | | ↳ `date` | string | Date | | ↳ `investors` | array | Investors | | `monthlyVisits` | number | Monthly website visits | | `trafficChange` | number | Traffic change percentage | | `itSpending` | number | Estimated IT spending in USD | | `executives` | array | Executive team | | ↳ `name` | string | Name | | ↳ `title` | string | Title | ### Enrich Company Revenue [#enrich-company-revenue] Retrieve company revenue data, CEO information, and competitive analysis by domain. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Enrich API key | | `domain` | string | Yes | Company domain (e.g., clay.io) | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------- | | `companyName` | string | Company name | | `shortDescription` | string | Short company description | | `fullSummary` | string | Full company summary | | `revenue` | string | Company revenue | | `revenueMin` | number | Minimum revenue estimate | | `revenueMax` | number | Maximum revenue estimate | | `employeeCount` | number | Number of employees | | `founded` | string | Year founded | | `ownership` | string | Ownership type | | `status` | string | Company status (e.g., Active) | | `website` | string | Company website URL | | `ceo` | json | CEO information | | ↳ `name` | string | CEO name | | ↳ `designation` | string | CEO designation/title | | ↳ `rating` | number | CEO rating | | `socialLinks` | json | Social media links | | ↳ `linkedIn` | string | LinkedIn URL | | ↳ `twitter` | string | Twitter URL | | ↳ `facebook` | string | Facebook URL | | `totalFunding` | string | Total funding raised | | `fundingRounds` | number | Number of funding rounds | | `competitors` | array | Competitors | | ↳ `name` | string | Competitor name | | ↳ `revenue` | string | Revenue | | ↳ `employeeCount` | number | Employee count | | ↳ `headquarters` | string | Headquarters | ### Enrich Search People [#enrich-search-people] Search for professionals by various criteria including name, title, skills, education, and company. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `summary` | string | No | Professional summary keywords | | `subTitle` | string | No | Job title/subtitle | | `locationCountry` | string | No | Country | | `locationCity` | string | No | City | | `locationState` | string | No | State/province | | `influencer` | boolean | No | Filter for influencers only | | `premium` | boolean | No | Filter for premium accounts only | | `language` | string | No | Primary language | | `industry` | string | No | Industry | | `currentJobTitles` | json | No | Current job titles (array) | | `pastJobTitles` | json | No | Past job titles (array) | | `skills` | json | No | Skills to search for (array) | | `schoolNames` | json | No | School names (array) | | `certifications` | json | No | Certifications to filter by (array) | | `degreeNames` | json | No | Degree names to filter by (array) | | `studyFields` | json | No | Fields of study to filter by (array) | | `currentCompanies` | json | No | Current company IDs to filter by (array of numbers) | | `pastCompanies` | json | No | Past company IDs to filter by (array of numbers) | | `currentPage` | number | No | Page number (default: 1) | | `pageSize` | number | No | Results per page (default: 20) | #### Output [#output-16] | Parameter | Type | Description | | ---------------------- | ------ | --------------------- | | `currentPage` | number | Current page number | | `totalPage` | number | Total number of pages | | `pageSize` | number | Results per page | | `profiles` | array | Search results | | ↳ `profileIdentifier` | string | Profile ID | | ↳ `givenName` | string | First name | | ↳ `familyName` | string | Last name | | ↳ `currentPosition` | string | Current job title | | ↳ `profileImage` | string | Profile image URL | | ↳ `externalProfileUrl` | string | LinkedIn URL | | ↳ `city` | string | City | | ↳ `country` | string | Country | | ↳ `expertSkills` | array | Skills | ### Enrich Search Company [#enrich-search-company] Search for companies by various criteria including name, industry, location, and size. #### Input [#input-17] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `name` | string | No | Company name | | `website` | string | No | Company website URL | | `tagline` | string | No | Company tagline | | `type` | string | No | Company type (e.g., Private, Public) | | `description` | string | No | Company description keywords | | `industries` | json | No | Industries to filter by (array) | | `locationCountry` | string | No | Country | | `locationCity` | string | No | City | | `postalCode` | string | No | Postal code | | `locationCountryList` | json | No | Multiple countries to filter by (array) | | `locationCityList` | json | No | Multiple cities to filter by (array) | | `specialities` | json | No | Company specialties (array) | | `followers` | number | No | Minimum number of followers | | `staffCount` | number | No | Maximum staff count | | `staffCountMin` | number | No | Minimum staff count | | `staffCountMax` | number | No | Maximum staff count | | `currentPage` | number | No | Page number (default: 1) | | `pageSize` | number | No | Results per page (default: 20) | #### Output [#output-17] | Parameter | Type | Description | | ------------------- | ------ | --------------------- | | `currentPage` | number | Current page number | | `totalPage` | number | Total number of pages | | `pageSize` | number | Results per page | | `companies` | array | Search results | | ↳ `companyName` | string | Company name | | ↳ `tagline` | string | Company tagline | | ↳ `webAddress` | string | Website URL | | ↳ `industries` | array | Industries | | ↳ `teamSize` | number | Team size | | ↳ `linkedInProfile` | string | LinkedIn URL | ### Enrich Search Company Employees [#enrich-search-company-employees] Search for employees within specific companies by location and job title. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `companyIds` | json | No | Array of company IDs to search within | | `country` | string | No | Country filter (e.g., United States) | | `city` | string | No | City filter (e.g., San Francisco) | | `state` | string | No | State filter (e.g., California) | | `jobTitles` | json | No | Job titles to filter by (array) | | `page` | number | No | Page number (default: 1) | | `pageSize` | number | No | Results per page (default: 10) | #### Output [#output-18] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------- | | `currentPage` | number | Current page number | | `totalPage` | number | Total number of pages | | `pageSize` | number | Number of results per page | | `profiles` | array | Employee profiles | | ↳ `profileIdentifier` | string | Profile ID | | ↳ `givenName` | string | First name | | ↳ `familyName` | string | Last name | | ↳ `currentPosition` | string | Current job title | | ↳ `profileImage` | string | Profile image URL | | ↳ `externalProfileUrl` | string | LinkedIn URL | | ↳ `city` | string | City | | ↳ `country` | string | Country | | ↳ `expertSkills` | array | Skills | ### Enrich Search Similar Companies [#enrich-search-similar-companies] Find companies similar to a given company by LinkedIn URL with filters for location and size. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `url` | string | Yes | LinkedIn company URL (e.g., linkedin.com/company/google) | | `accountLocation` | json | No | Filter by locations (array of country names) | | `employeeSizeType` | string | No | Employee size filter type (e.g., RANGE) | | `employeeSizeRange` | json | No | Employee size ranges (array of \{start, end} objects) | | `page` | number | No | Page number (default: 1) | | `num` | number | No | Number of results per page | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------ | ----------------- | | `companies` | array | Similar companies | | ↳ `url` | string | LinkedIn URL | | ↳ `name` | string | Company name | | ↳ `universalName` | string | Universal name | | ↳ `type` | string | Company type | | ↳ `description` | string | Description | | ↳ `phone` | string | Phone number | | ↳ `website` | string | Website URL | | ↳ `logo` | string | Logo URL | | ↳ `foundedYear` | number | Year founded | | ↳ `staffTotal` | number | Total staff | | ↳ `industries` | array | Industries | | ↳ `relevancyScore` | number | Relevancy score | | ↳ `relevancyValue` | string | Relevancy value | ### Enrich Sales Pointer People [#enrich-sales-pointer-people] Advanced people search with complex filters for location, company size, seniority, experience, and more. #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `page` | number | Yes | Page number (starts at 1) | | `filters` | json | Yes | Array of filter objects. Each filter has type (e.g., POSTAL\_CODE, COMPANY\_HEADCOUNT), values (array with id, text, selectionType: INCLUDED/EXCLUDED), and optional selectedSubFilter | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------ | -------------------- | | `data` | array | People results | | ↳ `name` | string | Full name | | ↳ `summary` | string | Professional summary | | ↳ `location` | string | Location | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `linkedInUrn` | string | LinkedIn URN | | ↳ `positions` | array | Work positions | | ↳ `education` | array | Education | | `pagination` | json | Pagination info | | ↳ `totalCount` | number | Total results | | ↳ `returnedCount` | number | Returned count | | ↳ `start` | number | Start position | | ↳ `limit` | number | Limit | ### Enrich Search Jobs [#enrich-search-jobs] Search LinkedIn job postings by keywords with filters for location, job type, workplace type, experience level, and company. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `keywords` | string | Yes | Search keywords (e.g., "software engineer") | | `location` | string | No | Location filter (e.g., London) | | `jobTypes` | string | No | Comma-separated job types (e.g., "full time, part time") | | `workplaceTypes` | string | No | Comma-separated workplace types (e.g., "on site, remote") | | `experienceLevels` | string | No | Comma-separated experience levels (e.g., "internship, associate") | | `companyIds` | string | No | Comma-separated LinkedIn company IDs to filter by (e.g., "2048, 3050") | | `timePosted` | string | No | Time filter (e.g., past\_24hrs, past\_week, past\_month) | | `start` | number | No | Number of records to skip for pagination (default: 0) | #### Output [#output-21] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------- | | `count` | number | Number of job postings returned | | `jobs` | array | Job postings | | ↳ `title` | string | Job title | | ↳ `companyName` | string | Hiring company name | | ↳ `companyLink` | string | Company LinkedIn URL | | ↳ `companyLogo` | string | Company logo URL | | ↳ `location` | string | Job location | | ↳ `url` | string | Job posting URL | | ↳ `postedDate` | string | Date the job was posted | | ↳ `postedTimestamp` | string | Timestamp the job was posted | | ↳ `hiringStatus` | string | Hiring status | | ↳ `criteria` | object | Employment criteria (seniority, type, function) | ### Enrich Search Posts [#enrich-search-posts] Search LinkedIn posts by keywords with date filtering. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `keywords` | string | Yes | Search keywords (e.g., "AI automation") | | `datePosted` | string | No | Time filter (e.g., past\_week, past\_month) | | `page` | number | No | Page number (default: 1) | #### Output [#output-22] | Parameter | Type | Description | | ----------------- | ------ | ----------------------- | | `count` | number | Total number of results | | `posts` | array | Search results | | ↳ `url` | string | Post URL | | ↳ `postId` | string | Post ID | | ↳ `author` | object | Author information | | ↳ `name` | string | Author name | | ↳ `headline` | string | Author headline | | ↳ `linkedInUrl` | string | Author LinkedIn URL | | ↳ `profileImage` | string | Author profile image | | ↳ `timestamp` | string | Post timestamp | | ↳ `textContent` | string | Post text content | | ↳ `hashtags` | array | Hashtags | | ↳ `mediaUrls` | array | Media URLs | | ↳ `reactions` | number | Number of reactions | | ↳ `commentsCount` | number | Number of comments | ### Enrich Get Post Details [#enrich-get-post-details] Get detailed information about a LinkedIn post by URL. #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Enrich API key | | `url` | string | Yes | LinkedIn post URL | #### Output [#output-23] | Parameter | Type | Description | | ---------------- | ------ | -------------------- | | `postId` | string | Post ID | | `author` | json | Author information | | ↳ `name` | string | Author name | | ↳ `headline` | string | Author headline | | ↳ `linkedInUrl` | string | Author LinkedIn URL | | ↳ `profileImage` | string | Author profile image | | `timestamp` | string | Post timestamp | | `textContent` | string | Post text content | | `hashtags` | array | Hashtags | | `mediaUrls` | array | Media URLs | | `reactions` | number | Number of reactions | | `commentsCount` | number | Number of comments | ### Enrich Search Post Reactions [#enrich-search-post-reactions] Get reactions on a LinkedIn post with filtering by reaction type. #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `postUrn` | string | Yes | LinkedIn activity URN (e.g., urn:li:activity:7231931952839196672) | | `reactionType` | string | Yes | Reaction type filter: all, like, love, celebrate, insightful, or funny (default: all) | | `page` | number | Yes | Page number (starts at 1) | #### Output [#output-24] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `page` | number | Current page number | | `totalPage` | number | Total number of pages | | `count` | number | Number of reactions returned | | `reactions` | array | Reactions | | ↳ `reactionType` | string | Type of reaction | | ↳ `reactor` | object | Person who reacted | | ↳ `name` | string | Name | | ↳ `subTitle` | string | Job title | | ↳ `profileId` | string | Profile ID | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `linkedInUrl` | string | LinkedIn URL | ### Enrich Search Post Reactions by URL [#enrich-search-post-reactions-by-url] Get reactions on a LinkedIn post by its URL, filtered by reaction type. #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `postUrl` | string | Yes | LinkedIn post URL (e.g., [https://www.linkedin.com/posts/](https://www.linkedin.com/posts/)...) | | `reactionType` | string | Yes | Reaction type filter: all, like, love, celebrate, insightful, or funny (default: all) | | `page` | number | Yes | Page number (starts at 1) | #### Output [#output-25] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `page` | number | Current page number | | `totalPage` | number | Total number of pages | | `count` | number | Number of reactions returned | | `reactions` | array | Reactions | | ↳ `reactionType` | string | Type of reaction | | ↳ `reactor` | object | Person who reacted | | ↳ `name` | string | Name | | ↳ `subTitle` | string | Job title | | ↳ `profileId` | string | Profile ID | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `linkedInUrl` | string | LinkedIn URL | ### Enrich Search Post Comments [#enrich-search-post-comments] Get comments on a LinkedIn post. #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `postUrn` | string | Yes | LinkedIn activity URN (e.g., urn:li:activity:7191163324208705536) | | `page` | number | No | Page number (starts at 1, default: 1) | #### Output [#output-26] | Parameter | Type | Description | | --------------------- | ------ | --------------------------- | | `page` | number | Current page number | | `totalPage` | number | Total number of pages | | `count` | number | Number of comments returned | | `comments` | array | Comments | | ↳ `activityId` | string | Comment activity ID | | ↳ `commentary` | string | Comment text | | ↳ `linkedInUrl` | string | Link to comment | | ↳ `commenter` | object | Commenter info | | ↳ `profileId` | string | Profile ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `subTitle` | string | Subtitle/headline | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `backgroundImage` | string | Background image URL | | ↳ `entityUrn` | string | Entity URN | | ↳ `objectUrn` | string | Object URN | | ↳ `profileType` | string | Profile type | | ↳ `reactionBreakdown` | object | Reactions on the comment | | ↳ `likes` | number | Number of likes | | ↳ `empathy` | number | Number of empathy reactions | | ↳ `other` | number | Number of other reactions | ### Enrich Search Post Comments by URL [#enrich-search-post-comments-by-url] Get comments on a LinkedIn post by its URL. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `postUrl` | string | Yes | LinkedIn post URL (e.g., [https://www.linkedin.com/posts/](https://www.linkedin.com/posts/)...) | | `page` | number | No | Page number (starts at 1, default: 1) | #### Output [#output-27] | Parameter | Type | Description | | --------------------- | ------ | --------------------------- | | `page` | number | Current page number | | `totalPage` | number | Total number of pages | | `count` | number | Number of comments returned | | `comments` | array | Comments | | ↳ `activityId` | string | Comment activity ID | | ↳ `commentary` | string | Comment text | | ↳ `linkedInUrl` | string | Link to comment | | ↳ `commenter` | object | Commenter info | | ↳ `profileId` | string | Profile ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `subTitle` | string | Subtitle/headline | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `backgroundImage` | string | Background image URL | | ↳ `entityUrn` | string | Entity URN | | ↳ `objectUrn` | string | Object URN | | ↳ `profileType` | string | Profile type | | ↳ `reactionBreakdown` | object | Reactions on the comment | | ↳ `likes` | number | Number of likes | | ↳ `empathy` | number | Number of empathy reactions | | ↳ `other` | number | Number of other reactions | ### Enrich Search People Activities [#enrich-search-people-activities] Get a person's LinkedIn activities (posts, comments, or articles) by profile ID. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `profileId` | string | Yes | LinkedIn profile ID | | `activityType` | string | Yes | Activity type: posts, comments, or articles | | `paginationToken` | string | No | Pagination token for next page of results | #### Output [#output-28] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------- | | `paginationToken` | string | Token for fetching next page | | `activityType` | string | Type of activities returned | | `activities` | array | Activities | | ↳ `activityId` | string | Activity ID | | ↳ `commentary` | string | Activity text content | | ↳ `linkedInUrl` | string | Link to activity | | ↳ `timeElapsed` | string | Time elapsed since activity | | ↳ `numReactions` | number | Total number of reactions | | ↳ `author` | object | Activity author info | | ↳ `name` | string | Author name | | ↳ `profileId` | string | Profile ID | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `reactionBreakdown` | object | Reactions | | ↳ `likes` | number | Likes | | ↳ `empathy` | number | Empathy reactions | | ↳ `other` | number | Other reactions | | ↳ `attachments` | array | Attachment URLs | ### Enrich Search Company Activities [#enrich-search-company-activities] Get a company's LinkedIn activities (posts, comments, or articles) by company ID. #### Input [#input-29] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `companyId` | string | Yes | LinkedIn company ID | | `activityType` | string | Yes | Activity type: posts, comments, or articles | | `paginationToken` | string | No | Pagination token for next page of results | | `offset` | number | No | Number of records to skip (default: 0) | #### Output [#output-29] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------- | | `paginationToken` | string | Token for fetching next page | | `activityType` | string | Type of activities returned | | `activities` | array | Activities | | ↳ `activityId` | string | Activity ID | | ↳ `commentary` | string | Activity text content | | ↳ `linkedInUrl` | string | Link to activity | | ↳ `timeElapsed` | string | Time elapsed since activity | | ↳ `numReactions` | number | Total number of reactions | | ↳ `author` | object | Activity author info | | ↳ `name` | string | Author name | | ↳ `profileId` | string | Profile ID | | ↳ `profilePicture` | string | Profile picture URL | | ↳ `reactionBreakdown` | object | Reactions | | ↳ `likes` | number | Likes | | ↳ `empathy` | number | Empathy reactions | | ↳ `other` | number | Other reactions | | ↳ `attachments` | array | Attachments | ### Enrich Reverse Hash Lookup [#enrich-reverse-hash-lookup] Convert an MD5 email hash back to the original email address and display name. #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Enrich API key | | `hash` | string | Yes | MD5 hash value to look up | #### Output [#output-30] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------- | | `hash` | string | MD5 hash that was looked up | | `email` | string | Original email address | | `displayName` | string | Display name associated with the email | | `found` | boolean | Whether an email was found for the hash | ### Enrich Search Logo [#enrich-search-logo] Get a company logo image URL by domain. #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Enrich API key | | `url` | string | Yes | Company domain (e.g., google.com) | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `logoUrl` | string | URL to fetch the company logo | | `domain` | string | Domain that was looked up | --- # Data Enrichment (/integrations/enrichment) {/* MANUAL-CONTENT-START:intro */} Data Enrichment is a built-in Agent Serve block that looks up missing data — work email, phone number, company domain, company info, and more — from fields you map in from your workflow. It runs a registered enrichment (like "Work Email" or "Phone Number") against the same provider cascade used by table enrichments, trying multiple providers until one returns a match. In Agent Serve, the enrichment block allows your agents to fill in gaps in a record by supplying an enrichment id and a map of input values, then reading back whether a match was found and which provider (e.g. Hunter, People Data Labs) supplied the result. This lets workflows enrich leads or contacts inline — for example, taking a name and company and resolving a work email — without agents needing to call each provider's API directly. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Run an Agent Serve enrichment to look up data — work email, phone number, company domain, company info, and more — from the fields you map in. Uses the same provider cascade as table enrichments. ## Actions [#actions] ### Run Enrichment [#run-enrichment] Run an Agent Serve enrichment (e.g. Work Email, Phone Number) and return its outputs #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `enrichmentId` | string | Yes | Registry enrichment id (e.g. "work-email") | | `inputs` | json | Yes | Map of the enrichment's input ids to values | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------------------------------------- | | `matched` | boolean | Whether the enrichment found a result | | `provider` | string | Provider whose result was returned (e.g. "Hunter", "People Data Labs") | --- # Enrow (/integrations/enrow) {/* MANUAL-CONTENT-START:intro */} Use [Enrow](https://enrow.io/) to find a professional email from a person's full name and company, or check an existing email's deliverability. Inspect the returned verification result before using the address downstream. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Enrow to find verified B2B email addresses from a full name and company, or verify the deliverability of an existing email. Enrow performs deterministic verifications including catch-all emails — no additional verifier needed. ## Actions [#actions] ### Enrow Find Email [#enrow-find-email] Find a verified B2B email address from a full name and company domain or name. Uses the Enrow async finder — submits a search and polls until the result is ready. Costs 1 credit per valid email found. ([https://docs.enrow.io/api-reference/email-finder/find-single](https://docs.enrow.io/api-reference/email-finder/find-single)) #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Enrow API key | | `fullname` | string | Yes | Full name of the person (e.g. "John Doe") | | `company_domain` | string | No | Company domain (e.g. "apple.com"). Preferred over company\_name. | | `company_name` | string | No | Company name (e.g. "Apple"). Used when domain is unavailable. | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `id` | string | Enrow job identifier used for polling | | `email` | string | Email address found or verified | | `qualification` | string | Enrow quality result: "valid" or "invalid" | | `fullname` | string | Full name of the person searched | | `firstname` | string | First name of the person searched | | `lastname` | string | Last name of the person searched | | `company_name` | string | Company name associated with the result | | `company_domain` | string | Company domain associated with the result | ### Enrow Verify Email [#enrow-verify-email] Verify the deliverability of an email address using the Enrow async verifier. Submits a verification request and polls until the result is ready. Costs 0.25 credits per verification. ([https://docs.enrow.io/api-reference/email-verifier/verify-single](https://docs.enrow.io/api-reference/email-verifier/verify-single)) #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Enrow API key | | `email` | string | Yes | Email address to verify (e.g. "[john@example.com](mailto:john@example.com)") | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `id` | string | Enrow job identifier used for polling | | `email` | string | Email address found or verified | | `qualification` | string | Enrow quality result: "valid" or "invalid" | --- # Exa (/integrations/exa) {/* MANUAL-CONTENT-START:intro */} [Exa](https://exa.ai/) searches the web, retrieves page content, and answers questions with citations. Use Agent for multi-step research and supply a JSON schema when you need structured results with field-level citations. **Migration notes.** Exa has retired its standalone Research endpoint — use the **Agent** operation for deep research. Workflows still configured with the old Research operation are routed to Agent automatically. Exa has also deprecated **Find Similar Links** in favor of Search, and `livecrawl` in favor of `maxAgeHours`. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Exa into the workflow. Can search the web, get page contents, find similar links, answer a question with citations, and run deep research with Exa Agent. ## Actions [#actions] ### Exa Search [#exa-search] Search the web using Exa AI. Returns relevant search results with titles, URLs, and text snippets. #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `query` | string | Yes | The search query to execute | | `numResults` | number | No | Number of results to return (1-100). Default: 10 | | `type` | string | No | Search type: "instant", "fast", "auto", "deep-lite", "deep", or "deep-reasoning". Default: "auto" | | `includeDomains` | string | No | Comma-separated list of domains to include in results (e.g., "github.com, stackoverflow\.com") | | `excludeDomains` | string | No | Comma-separated list of domains to exclude from results (e.g., "reddit.com, pinterest.com") | | `category` | string | No | Filter by category: company, publication, news, personal site, financial report, people | | `text` | boolean | No | Include full text content in results (default: false) | | `highlights` | boolean | No | Include highlighted snippets in results (default: false) | | `summary` | boolean | No | Include AI-generated summaries in results (default: false) | | `summaryQuery` | string | No | Query to focus the generated summaries on a specific question | | `subpages` | number | No | Number of subpages to crawl per result (0-100). Default: 0 | | `subpageTarget` | string | No | Comma-separated keywords to target specific subpages (e.g., "docs,pricing,about") | | `extrasLinks` | number | No | Number of links to extract from each result page (0-1000). Default: 0 | | `extrasImageLinks` | number | No | Number of image URLs to extract from each result page (0-1000). Default: 0 | | `outputSchema` | json | No | JSON Schema describing a synthesized answer to build from the results. Returned in structuredOutput. | | `systemPrompt` | string | No | Additional guidance for generating the synthesized output | | `userLocation` | string | No | Two-letter ISO country code to localize results (e.g., "US") | | `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. | | `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 | | `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred | | `startPublishedDate` | string | No | Only include results published on or after this ISO 8601 date (e.g., "2024-01-01" or "2024-01-01T00:00:00.000Z") | | `endPublishedDate` | string | No | Only include results published on or before this ISO 8601 date | | `startCrawlDate` | string | No | Deprecated: use startPublishedDate. Only include results crawled on or after this ISO 8601 date | | `endCrawlDate` | string | No | Deprecated: use endPublishedDate. Only include results crawled on or before this ISO 8601 date | | `apiKey` | string | Yes | Exa AI API Key | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------- | | `results` | array | Search results with titles, URLs, and text snippets | | ↳ `id` | string | Result identifier, usable as an id on the Get Contents operation | | ↳ `title` | string | The title of the search result | | ↳ `url` | string | The URL of the search result | | ↳ `publishedDate` | string | Date when the content was published | | ↳ `author` | string | The author of the content | | ↳ `summary` | string | A brief summary of the content | | ↳ `favicon` | string | URL of the site's favicon | | ↳ `image` | string | URL of a representative image from the page | | ↳ `text` | string | Text snippet or full content from the page | | ↳ `highlights` | array | Relevant snippets extracted from the page | | ↳ `highlightScores` | array | Similarity score for each highlight | | ↳ `subpages` | json | Crawled subpages of the result | | ↳ `entities` | json | Structured entity data for company, people, and publication results | | ↳ `extras` | json | Extracted links and image links when requested | | ↳ `score` | number | Relevance score. Only returned by the legacy neural search type | | `requestId` | string | Exa request identifier, useful for support | | `structuredOutput` | json | Synthesized answer matching outputSchema, when one was supplied | | `grounding` | json | Field-level citations backing the synthesized output | ### Exa Get Contents [#exa-get-contents] Retrieve the contents of webpages using Exa AI. Returns the title, text content, and optional summaries for each URL. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `urls` | string | No | Comma-separated list of URLs to retrieve content from (1-100). Provide either urls or ids, not both. | | `ids` | string | No | Comma-separated list of result IDs from a prior Exa search (1-100). Provide either urls or ids, not both. | | `text` | boolean | No | If true, returns full page text with default settings. If false, disables text return. | | `summary` | boolean | No | Include an AI-generated summary of each page (default: false) | | `summaryQuery` | string | No | Query to guide the summary generation | | `subpages` | number | No | Number of subpages to crawl from the provided URLs (0-100) | | `subpageTarget` | string | No | Comma-separated keywords to target specific subpages (e.g., "docs,tutorial,about") | | `highlights` | boolean | No | Include highlighted snippets in results (default: false) | | `extrasLinks` | number | No | Number of links to extract from each page (0-1000). Default: 0 | | `extrasImageLinks` | number | No | Number of image URLs to extract from each page (0-1000). Default: 0 | | `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. | | `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 | | `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred | | `apiKey` | string | Yes | Exa AI API Key | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------- | | `results` | array | Retrieved content from URLs with title, text, and summaries | | ↳ `id` | string | Exa identifier for the retrieved document | | ↳ `url` | string | The URL that content was retrieved from | | ↳ `title` | string | The title of the webpage | | ↳ `text` | string | The full text content of the webpage | | ↳ `summary` | string | AI-generated summary of the webpage content | | ↳ `highlights` | array | Relevant snippets extracted from the page | | ↳ `highlightScores` | array | Similarity score for each highlight | | ↳ `subpages` | json | Crawled subpages of the document | | ↳ `entities` | json | Structured entity data for company, people, and publication pages | | ↳ `extras` | json | Extracted links and image links when requested | | `statuses` | json | Per-URL crawl outcome, showing which pages succeeded and whether they came from cache | | `requestId` | string | Exa request identifier, useful for support | ### Exa Find Similar Links [#exa-find-similar-links] Find webpages similar to a given URL using Exa AI. Deprecated by Exa in favor of Search — prefer Search for new workflows. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `url` | string | Yes | The URL to find similar links for | | `numResults` | number | No | Number of similar links to return (1-100). Default: 10 | | `text` | boolean | No | Whether to include the full text of the similar pages | | `includeDomains` | string | No | Comma-separated list of domains to include in results (e.g., "github.com, stackoverflow\.com") | | `excludeDomains` | string | No | Comma-separated list of domains to exclude from results (e.g., "reddit.com, pinterest.com") | | `excludeSourceDomain` | boolean | No | Exclude the source domain from results (default: false) | | `category` | string | No | Filter by category: company, publication, news, personal site, financial report, people | | `highlights` | boolean | No | Include highlighted snippets in results (default: false) | | `summary` | boolean | No | Include AI-generated summaries in results (default: false) | | `maxAgeHours` | number | No | Cache freshness in hours (-1 to 720). 0 always crawls live, -1 uses cache only. Cannot be combined with livecrawl. | | `livecrawlTimeout` | number | No | Live crawl timeout in milliseconds (max 90000). Default: 10000 | | `livecrawl` | string | No | Deprecated: use maxAgeHours instead. Live crawling mode: never, fallback, always, or preferred | | `apiKey` | string | Yes | Exa AI API Key | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------- | | `similarLinks` | array | Similar links found with titles, URLs, and text snippets | | ↳ `id` | string | Exa identifier for the similar page | | ↳ `title` | string | The title of the similar webpage | | ↳ `url` | string | The URL of the similar webpage | | ↳ `text` | string | Text snippet or full content from the similar webpage | | ↳ `summary` | string | AI-generated summary of the similar webpage | | ↳ `highlights` | array | Relevant snippets extracted from the page | | ↳ `score` | number | Similarity score indicating how similar the page is | | `requestId` | string | Exa request identifier, useful for support | ### Exa Answer [#exa-answer] Get an AI-generated answer to a question with citations from the web using Exa AI. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | The question to answer | | `text` | boolean | No | Include the full page text of each cited source (default: false). This does not affect the answer itself. | | `outputSchema` | json | No | JSON Schema describing the answer shape. When supplied, the answer is returned as a structured object instead of a string. | | `apiKey` | string | Yes | Exa AI API Key | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `answer` | json | AI-generated answer to the question. A string, or an object matching outputSchema when one was supplied. | | `citations` | array | Sources and citations for the answer | | ↳ `id` | string | Exa identifier for the cited source | | ↳ `title` | string | The title of the cited source | | ↳ `url` | string | The URL of the cited source | | ↳ `text` | string | Full page text of the cited source, when text is enabled | | ↳ `author` | string | The author of the cited source | | ↳ `publishedDate` | string | Publication date of the cited source | | `requestId` | string | Exa request identifier, useful for support | ### Exa Agent [#exa-agent] Run a deep research task with Exa Agent. Handles multi-step list building, enrichment, and research, returning a written answer with field-level citations and optional structured output. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `query` | string | Yes | The research question or instructions for the agent | | `effort` | string | No | Cost and depth tradeoff: minimal, low, medium, high, xhigh, or auto (default: auto) | | `outputSchema` | json | No | JSON Schema describing the structured result to return. Returned in the structured output. | | `systemPrompt` | string | No | Additional guidance for how the agent should behave or format its answer | | `previousRunId` | string | No | ID of a completed agent run to continue from, for follow-up questions | | `apiKey` | string | Yes | Exa AI API Key | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------- | | `runId` | string | Identifier of the agent run, reusable as previousRunId | | `status` | string | Final status of the agent run | | `stopReason` | string | Why the agent stopped, such as schema\_satisfied | | `text` | string | The written answer produced by the agent | | `structured` | json | Structured result matching outputSchema, when one was supplied | | `grounding` | json | Field-level citations backing the agent output | | `research` | array | The agent answer in the shape the retired Research operation emitted, so workflows that reference it keep resolving | --- # Exotel (/integrations/exotel) ## Usage Instructions [#usage-instructions] Integrate Exotel cloud telephony into the workflow. Connect a sales rep to a lead, send an IVR call flow to a customer, send DLT-compliant SMS, look up call and SMS records, and check an Indian number for operator and DND status. Can also run workflows when Exotel reports a call or SMS status. Requires an Exotel API key, API token, and Account SID. ## Actions [#actions] ### Exotel Connect Two Numbers [#exotel-connect-two-numbers] Place an outbound call that rings the From number first (for example a sales rep) and, once answered, dials the To number (for example a lead) and connects them through your ExoPhone. #### Input [#input] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `from` | string | Yes | Number called first, in E.164 format (e.g. +919900XXXXXX) or a SIP URI (e.g. sip:[agent@exotel.com](mailto:agent@exotel.com)) | | `to` | string | Yes | Customer number called second, in E.164 format (e.g. +918800XXXXXX) | | `callerId` | string | Yes | Your ExoPhone (virtual number) shown to both parties | | `record` | boolean | No | Whether to record the conversation | | `recordingChannels` | string | No | Recording channels: "single" (default) or "dual" | | `recordingFormat` | string | No | Recording format: "mp3" (default) or "mp3-hq" | | `waitUrl` | string | No | URL of a WAV file played to the first party while the second is dialed | | `callType` | string | No | Set to "trans" for transactional calls | | `timeLimit` | number | No | Maximum call duration in seconds (max 14400) | | `timeOut` | number | No | Seconds to ring each called party before treating the leg as unanswered | | `customField` | string | No | Metadata echoed back in the StatusCallback and to Passthru applets, e.g. a lead or order ID (max 128 characters) | | `statusCallback` | string | No | URL Exotel posts the call status to, such as an Exotel Call Status trigger URL | | `statusCallbackEvents` | string | No | Events that send the extended StatusCallback payload: "terminal", "answered", or "both". Without it the callback carries only CallSid, Status, DateUpdated, and RecordingUrl. | | `statusCallbackContentType` | string | No | Encoding of the StatusCallback POST: "application/json" (default when a StatusCallback is set) or "multipart/form-data" | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------- | | `callSid` | string | Unique call identifier (Sid) | | `parentCallSid` | string | Parent call Sid | | `accountSid` | string | Exotel Account SID | | `status` | string | Call status: queued, in-progress, completed, failed, busy, or no-answer | | `from` | string | The number called first | | `to` | string | The destination number (null when the call goes to a call flow) | | `phoneNumberSid` | string | The ExoPhone used | | `direction` | string | Call direction: inbound, outbound-dial, or outbound-api | | `dateCreated` | string | When the call request was created | | `dateUpdated` | string | Last status update time | | `startTime` | string | When the call was sent to the operator | | `endTime` | string | When the call ended | | `duration` | number | Total duration in seconds. Updates about 2 minutes after the call ends. | | `price` | string | Amount charged (INR or USD). Updates about 2 minutes after the call ends. | | `answeredBy` | string | Who answered the call, if reported | | `recordingUrl` | string | Recording URL when recording was enabled and the call has ended | | `uri` | string | API path of the call resource | ### Exotel Connect to Call Flow [#exotel-connect-to-call-flow] Call a number and, once they answer, hand the call to an Exotel call flow (IVR or applet app) built in App Bazaar. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `from` | string | Yes | Number to call, preferably in E.164 format. Prefix landlines with the STD code. | | `callerId` | string | Yes | Your ExoPhone (virtual number) | | `appId` | string | Yes | ID of the call flow (app) to connect to, from App Bazaar > My Apps | | `callType` | string | No | Set to "trans" for transactional calls | | `timeLimit` | number | No | Maximum call duration in seconds (max 14400) | | `timeOut` | number | No | Seconds to ring each called party before treating the leg as unanswered | | `customField` | string | No | Metadata echoed back in the StatusCallback and to Passthru applets, e.g. a lead or order ID (max 128 characters) | | `statusCallback` | string | No | URL Exotel posts the call status to, such as an Exotel Call Status trigger URL | | `statusCallbackEvents` | string | No | Events that send the extended StatusCallback payload: "terminal", "answered", or "both". Without it the callback carries only CallSid, Status, DateUpdated, and RecordingUrl. | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------- | | `callSid` | string | Unique call identifier (Sid) | | `parentCallSid` | string | Parent call Sid | | `accountSid` | string | Exotel Account SID | | `status` | string | Call status: queued, in-progress, completed, failed, busy, or no-answer | | `from` | string | The number called first | | `to` | string | The destination number (null when the call goes to a call flow) | | `phoneNumberSid` | string | The ExoPhone used | | `direction` | string | Call direction: inbound, outbound-dial, or outbound-api | | `dateCreated` | string | When the call request was created | | `dateUpdated` | string | Last status update time | | `startTime` | string | When the call was sent to the operator | | `endTime` | string | When the call ended | | `duration` | number | Total duration in seconds. Updates about 2 minutes after the call ends. | | `price` | string | Amount charged (INR or USD). Updates about 2 minutes after the call ends. | | `answeredBy` | string | Who answered the call, if reported | | `recordingUrl` | string | Recording URL when recording was enabled and the call has ended | | `uri` | string | API path of the call resource | ### Exotel Get Call [#exotel-get-call] Get the status, duration, price, and recording URL of one call by its Sid, optionally with per-leg details. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `callSid` | string | Yes | Sid of the call, as returned when the call was placed | | `includeDetails` | boolean | No | Include leg-level details (conversation duration and per-leg status) | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------------------------------- | | `callSid` | string | Unique call identifier (Sid) | | `parentCallSid` | string | Parent call Sid | | `accountSid` | string | Exotel Account SID | | `status` | string | Call status: queued, in-progress, completed, failed, busy, or no-answer | | `from` | string | The number called first | | `to` | string | The destination number (null when the call goes to a call flow) | | `phoneNumberSid` | string | The ExoPhone used | | `direction` | string | Call direction: inbound, outbound-dial, or outbound-api | | `dateCreated` | string | When the call request was created | | `dateUpdated` | string | Last status update time | | `startTime` | string | When the call was sent to the operator | | `endTime` | string | When the call ended | | `duration` | number | Total duration in seconds. Updates about 2 minutes after the call ends. | | `price` | string | Amount charged (INR or USD). Updates about 2 minutes after the call ends. | | `answeredBy` | string | Who answered the call, if reported | | `recordingUrl` | string | Recording URL when recording was enabled and the call has ended | | `uri` | string | API path of the call resource | | `details` | json | Leg-level details, present only when Include Details is on | | ↳ `conversationDuration` | number | Seconds both parties were connected | | ↳ `leg1Status` | string | Status of the first leg | | ↳ `leg2Status` | string | Status of the second leg | | ↳ `legs` | array | Per-leg durations | | ↳ `id` | number | Leg number (1 or 2) | | ↳ `onCallDuration` | number | Seconds the leg was on the call | ### Exotel List Calls [#exotel-list-calls] List call records (bulk Call Details) filtered by date range, numbers, status, direction, duration, or price, with cursor pagination. Covers up to 6 months of history, at most 1 month per request. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `callSids` | string | No | One call Sid or a comma-separated list (max 100) | | `startDate` | string | No | Only calls created at or after this time, as YYYY-MM-DD HH:mm:ss | | `endDate` | string | No | Only calls created at or before this time, as YYYY-MM-DD HH:mm:ss | | `to` | string | No | Called number(s) in E.164 format, up to 5 comma-separated | | `from` | string | No | Calling number(s) in E.164 format, up to 5 comma-separated | | `status` | string | No | Call status: completed, failed, busy, or no-answer | | `direction` | string | No | Call direction: inbound, outbound-dial, or outbound-api | | `phoneNumber` | string | No | ExoPhone(s) the calls used, up to 5 comma-separated | | `durationFilter` | string | No | Duration range, e.g. "gte:10s;lte:45s" or "eq:30s" | | `priceFilter` | string | No | Price range, e.g. "gte:0.10;lte:1.0" | | `pageSize` | number | No | Records per page (default 50, max 100) | | `sortBy` | string | No | Sort order: "DateCreated:asc" or "DateCreated:desc" (default) | | `after` | string | No | Cursor for the next page (nextCursor from a previous call) | | `before` | string | No | Cursor for the previous page (prevCursor from a previous call) | | `recordingUrlValidity` | number | No | Minutes the pre-signed recording URLs stay valid (5 to 60) | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------ | | `calls` | array | Matching calls, newest first unless sorted otherwise | | ↳ `callSid` | string | Call Sid | | ↳ `status` | string | Call status | | ↳ `from` | string | Calling number | | ↳ `to` | string | Called number | | ↳ `direction` | string | Call direction | | ↳ `dateCreated` | string | When the call was created | | ↳ `duration` | number | Duration in seconds | | ↳ `price` | string | Amount charged | | ↳ `recordingUrl` | string | Recording URL, if recorded | | `total` | number | Total calls matching the filters | | `pageSize` | number | Records per page | | `firstPageUri` | string | API path of the first page | | `prevPageUri` | string | API path of the previous page | | `nextPageUri` | string | API path of the next page | | `nextCursor` | string | Pass as After to fetch the next page (null on the last page) | | `prevCursor` | string | Pass as Before to fetch the previous page | ### Exotel Send SMS [#exotel-send-sms] Send one SMS from an ExoPhone or approved Sender ID. SMS to Indian numbers must carry the DLT Entity ID and match a DLT-approved template, or operators block it. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `from` | string | Yes | ExoPhone or DLT-registered Sender ID (header), e.g. EXOTEL | | `to` | string | Yes | Recipient mobile number, preferably in E.164 format | | `body` | string | Yes | Message text, max 2000 characters. For India it must match the approved DLT template exactly, with only the \{#var#} positions filled in. | | `dltEntityId` | string | No | DLT entity registration ID. Mandatory for SMS to Indian numbers. | | `dltTemplateId` | string | No | DLT-approved template ID the body matches. If omitted, Exotel looks up the matching template on your dashboard. | | `smsType` | string | No | transactional (OTP or service implicit), transactional\_opt\_in (service explicit), or promotional. If omitted, Exotel uses the matching template. | | `encodingType` | string | No | "plain" (default, auto-detected) or "unicode" | | `priority` | string | No | "normal" (default) or "high". Use high only for OTP, bank, or delivery SMS. | | `shortenUrl` | boolean | No | Shorten URLs in the body. A paid feature that must be enabled on the account. | | `customField` | string | No | Your reference, e.g. an order ID, echoed back in the delivery callback | | `statusCallback` | string | No | URL Exotel posts delivery status to, such as an Exotel SMS Status trigger URL | | `bindingChainDetails` | string | No | Telemarketer aggregators in India only: comma-separated \,\ | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------- | | `smsSid` | string | Unique SMS identifier (Sid) | | `accountSid` | string | Exotel Account SID | | `from` | string | Sender, as \/\ | | `to` | string | Recipient number | | `body` | string | Message content | | `status` | string | High-level status: queued, sending, submitted, sent, failed-dnd, or failed | | `detailedStatus` | string | Human-readable status, e.g. DELIVERED\_TO\_HANDSET | | `detailedStatusCode` | string | Exotel numeric status code, e.g. 20005 | | `direction` | string | outbound-api, outbound-call, outbound-reply, or incoming | | `smsUnits` | number | SMS units consumed (null until the final state) | | `dateCreated` | string | When the request was received | | `dateUpdated` | string | Last status update time | | `dateSent` | string | When the SMS was delivered | | `price` | string | Amount charged, once final | | `uri` | string | API path of the SMS resource | ### Exotel Get SMS [#exotel-get-sms] Get the delivery status of one SMS by its Sid, including the detailed status code (e.g. DELIVERED\_TO\_HANDSET). #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `smsSid` | string | Yes | Sid of the SMS, as returned when it was sent | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------- | | `smsSid` | string | Unique SMS identifier (Sid) | | `accountSid` | string | Exotel Account SID | | `from` | string | Sender, as \/\ | | `to` | string | Recipient number | | `body` | string | Message content | | `status` | string | High-level status: queued, sending, submitted, sent, failed-dnd, or failed | | `detailedStatus` | string | Human-readable status, e.g. DELIVERED\_TO\_HANDSET | | `detailedStatusCode` | string | Exotel numeric status code, e.g. 20005 | | `direction` | string | outbound-api, outbound-call, outbound-reply, or incoming | | `smsUnits` | number | SMS units consumed (null until the final state) | | `dateCreated` | string | When the request was received | | `dateUpdated` | string | Last status update time | | `dateSent` | string | When the SMS was delivered | | `price` | string | Amount charged, once final | | `uri` | string | API path of the SMS resource | ### Exotel Get Number Metadata [#exotel-get-number-metadata] Look up the telecom circle, operator, number type (mobile or landline), and DND status of an Indian phone number. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Exotel API key (the Basic auth username), from Settings > API Settings | | `apiToken` | string | Yes | Exotel API token (the Basic auth password), from Settings > API Settings | | `accountSid` | string | Yes | Exotel Account SID, used in every API path | | `subdomain` | string | Yes | Regional API host of the account: "api.exotel.com" (Singapore) or "api.in.exotel.com" (Mumbai) | | `phoneNumber` | string | Yes | Indian phone number to look up, e.g. 09876543210 | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------- | | `phoneNumber` | string | The number, reformatted by Exotel | | `circle` | string | Two-character telecom circle code, e.g. MH | | `circleName` | string | Telecom circle name, e.g. Maharashtra | | `type` | string | Mobile or Landline | | `operator` | string | Operator code, e.g. A for Airtel | | `operatorName` | string | Operator name | | `dnd` | string | DND (Do Not Disturb) status: Yes, No, or Unavailable | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Exotel Call Status [#exotel-call-status] Trigger workflow when Exotel reports a call status (answered or ended) through a StatusCallback or Passthru applet #### Output [#output-7] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `callSid` | string | Unique call identifier (CallSid) | | `status` | string | Call status: completed, failed, busy, or no-answer (in-progress on answered events) | | `eventType` | string | terminal or answered. Sent only when Status Callback Events was set. | | `from` | string | Calling number (From, or CallFrom on a Passthru request) | | `to` | string | Called number (To, or CallTo on a Passthru request) | | `phoneNumberSid` | string | The ExoPhone used | | `direction` | string | inbound, outbound-dial, or outbound-api | | `dateCreated` | string | When the call request was created | | `dateUpdated` | string | Last status update (YYYY-MM-DD HH:mm:ss) | | `startTime` | string | When the call started | | `endTime` | string | When the call ended | | `duration` | number | Total call duration in seconds, when Exotel includes Duration | | `conversationDuration` | number | Seconds both parties were connected | | `recordingUrl` | string | Recording URL, when recording was enabled | | `customField` | string | The Custom Field sent with the original call, e.g. a lead or order ID | | `legs` | json | Per-leg attempts, each \{ onCallDuration, status, answeredBy }. status is completed, busy, failed, no-answer, canceled, or null; answeredBy is Human, Machine, NotSure, or NA. | | `currentTime` | string | Request time, sent only by the Passthru applet | | `raw` | json | The complete payload Exotel sent | *** ### Exotel SMS Status [#exotel-sms-status] Trigger workflow when Exotel reports a delivery status change for an outbound SMS #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------------- | | `smsSid` | string | Unique SMS identifier (SmsSid) | | `accountSid` | string | Exotel Account SID | | `from` | string | Sender ID or ExoPhone used | | `to` | string | Recipient number | | `status` | string | Delivery status, e.g. sent, delivered, or failed | | `detailedStatus` | string | Detailed status, e.g. DELIVERED\_TO\_HANDSET or FAILED\_DND | | `detailedStatusCode` | string | Exotel numeric status code, e.g. 20005 | | `smsUnits` | number | SMS units consumed | | `dateSent` | string | When the SMS was sent | | `dateUpdated` | string | When the status changed | | `customField` | string | The Custom Field sent with the SMS, e.g. an order ID | | `raw` | json | The complete payload Exotel sent | --- # Extend (/integrations/extend) {/* MANUAL-CONTENT-START:intro */} [Extend](https://www.extend.ai/) is a document processing platform that uses AI to parse and extract structured content from documents, turning unstructured files into usable data. In Agent Serve, the Extend integration allows your agents to submit a document for parsing and receive back the processed content as structured chunks and block-level elements, along with the page count and credits consumed by the run. This enables workflows to pull structured data out of documents—such as PDFs or other file references—for downstream steps to consume, without manually building document-parsing logic. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Extend AI into the workflow. Parse and extract structured content from documents or file references. ## Actions [#actions] ### Extend Document Parser [#extend-document-parser] Parse and extract content from documents using Extend AI #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `file` | file | Yes | Document to be processed | | `outputFormat` | string | No | Target output format (markdown or spatial). Defaults to markdown. | | `chunking` | string | No | Chunking strategy (page, document, or section). Defaults to page. | | `engine` | string | No | Parsing engine (parse\_performance or parse\_light). Defaults to parse\_performance. | | `apiKey` | string | Yes | Extend API key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------- | | `id` | string | Unique identifier for the parser run | | `status` | string | Processing status | | `chunks` | json | Parsed document content chunks | | `blocks` | json | Block-level document elements with type and content | | `pageCount` | number | Number of pages processed | | `creditsUsed` | number | API credits consumed | --- # Fathom (/integrations/fathom) {/* MANUAL-CONTENT-START:intro */} Use [Fathom](https://fathom.video/) to retrieve meeting summaries and transcripts and inspect team information. **How it works in Agent Serve:** Add a Fathom block to your workflow and select an operation. Provide your Fathom API key and any required parameters (such as a recording ID for summaries and transcripts). The block calls the Fathom API and returns structured data you can pass to downstream blocks — for example, sending a summary to Slack or extracting action items with an AI agent. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Fathom AI Notetaker into your workflow. List meetings, get transcripts and summaries, and manage team members and teams. Can also trigger workflows when new meeting content is ready. ## Actions [#actions] ### Fathom List Meetings [#fathom-list-meetings] List recent meetings recorded by the user or shared to their team. #### Input [#input] | Parameter | Type | Required | Description | | ----------------------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Fathom API Key | | `includeSummary` | string | No | Include meeting summary (true/false) | | `includeTranscript` | string | No | Include meeting transcript (true/false) | | `includeActionItems` | string | No | Include action items (true/false) | | `includeCrmMatches` | string | No | Include linked CRM matches (true/false) | | `includeHighlights` | string | No | Include meeting highlights (true/false) | | `createdAfter` | string | No | Filter meetings created after this ISO 8601 timestamp | | `createdBefore` | string | No | Filter meetings created before this ISO 8601 timestamp | | `recordedBy` | string | No | Filter by recorder email address | | `teams` | string | No | Filter by team name | | `meetingType` | string | No | Filter by meeting type name | | `calendarInviteesDomains` | string | No | Filter by calendar invitee company domain (exact match) | | `calendarInviteesDomainsType` | string | No | Filter by invitee domain type: all, only\_internal, or one\_or\_more\_external | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output] | Parameter | Type | Description | | ---------------------------------- | ------- | ---------------------------------------------------------------------- | | `meetings` | array | List of meetings | | ↳ `title` | string | Meeting title | | ↳ `meeting_title` | string | Calendar event title | | ↳ `meeting_type` | string | Meeting type name | | ↳ `recording_id` | number | Unique recording ID | | ↳ `url` | string | URL to view the meeting | | ↳ `meeting_url` | string | URL of the underlying video call (Zoom, Meet, Teams, etc.) | | ↳ `share_url` | string | Shareable URL | | ↳ `created_at` | string | Creation timestamp | | ↳ `scheduled_start_time` | string | Scheduled start time | | ↳ `scheduled_end_time` | string | Scheduled end time | | ↳ `recording_start_time` | string | Recording start time | | ↳ `recording_end_time` | string | Recording end time | | ↳ `transcript_language` | string | Transcript language | | ↳ `calendar_invitees_domains_type` | string | Invitee domain type: only\_internal or one\_or\_more\_external | | ↳ `shared_with` | string | Sharing scope: no\_teams, single\_team, multiple\_teams, or all\_teams | | ↳ `recorded_by` | object | Recorder details | | ↳ `name` | string | Name of the recorder | | ↳ `email` | string | Email of the recorder | | ↳ `email_domain` | string | Email domain of the recorder | | ↳ `team` | string | Recorder team name | | ↳ `calendar_invitees` | array | Calendar invitees for the meeting | | ↳ `name` | string | Invitee name | | ↳ `email` | string | Invitee email | | ↳ `email_domain` | string | Invitee email domain | | ↳ `is_external` | boolean | Whether the invitee is external | | ↳ `matched_speaker_display_name` | string | Matched transcript speaker display name | | ↳ `default_summary` | object | Meeting summary | | ↳ `template_name` | string | Summary template name | | ↳ `markdown_formatted` | string | Markdown-formatted summary | | ↳ `transcript` | array | Transcript entries with speaker, text, and timestamp | | ↳ `speaker` | object | Speaker information | | ↳ `display_name` | string | Speaker display name | | ↳ `matched_calendar_invitee_email` | string | Matched calendar invitee email | | ↳ `text` | string | Transcript text | | ↳ `timestamp` | string | Timestamp (HH:MM:SS) | | ↳ `action_items` | array | Action items extracted from the meeting | | ↳ `description` | string | Action item description | | ↳ `user_generated` | boolean | Whether the action item was user-generated | | ↳ `completed` | boolean | Whether the action item is completed | | ↳ `recording_timestamp` | string | Timestamp in the recording (HH:MM:SS) | | ↳ `recording_playback_url` | string | Playback URL for the action item moment | | ↳ `assignee` | object | Assignee details | | ↳ `name` | string | Assignee name | | ↳ `email` | string | Assignee email | | ↳ `team` | string | Assignee team | | ↳ `highlights` | array | Meeting highlights with type, summary, text, and start/end time | | ↳ `type` | string | Highlight type | | ↳ `summary` | string | Highlight summary | | ↳ `text` | string | Highlight text | | ↳ `start_time` | number | Start time in seconds | | ↳ `end_time` | number | End time in seconds | | ↳ `crm_matches` | object | Matched CRM contacts, companies, and deals | | ↳ `contacts` | array | Matched CRM contacts | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `record_url` | string | CRM record URL | | ↳ `companies` | array | Matched CRM companies | | ↳ `name` | string | Company name | | ↳ `record_url` | string | CRM record URL | | ↳ `deals` | array | Matched CRM deals | | ↳ `name` | string | Deal name | | ↳ `amount` | number | Deal amount | | ↳ `record_url` | string | CRM record URL | | ↳ `error` | string | CRM match error, if any | | `next_cursor` | string | Pagination cursor for next page | ### Fathom List Meeting Types [#fathom-list-meeting-types] List meeting types configured in your Fathom organization. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Fathom API Key | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `meetingTypes` | array | List of meeting types | | ↳ `name` | string | Meeting type name | | ↳ `status` | string | Meeting type status: active or inactive | | ↳ `created_at` | string | Date the meeting type was created | | `next_cursor` | string | Pagination cursor for next page | ### Fathom Get Summary [#fathom-get-summary] Get the call summary for a specific meeting recording. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Fathom API Key | | `recordingId` | string | Yes | The recording ID of the meeting | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `template_name` | string | Name of the summary template used | | `markdown_formatted` | string | Markdown-formatted summary text | ### Fathom Get Transcript [#fathom-get-transcript] Get the full transcript for a specific meeting recording. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Fathom API Key | | `recordingId` | string | Yes | The recording ID of the meeting | #### Output [#output-3] | Parameter | Type | Description | | ---------------------------------- | ------ | ------------------------------------------------------------- | | `transcript` | array | Array of transcript entries with speaker, text, and timestamp | | ↳ `speaker` | object | Speaker information | | ↳ `display_name` | string | Speaker display name | | ↳ `matched_calendar_invitee_email` | string | Matched calendar invitee email | | ↳ `text` | string | Transcript text | | ↳ `timestamp` | string | Timestamp (HH:MM:SS) | ### Fathom List Team Members [#fathom-list-team-members] List team members in your Fathom organization. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Fathom API Key | | `teams` | string | No | Team name to filter by | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `members` | array | List of team members | | ↳ `name` | string | Team member name | | ↳ `email` | string | Team member email | | ↳ `created_at` | string | Date the member was added | | `next_cursor` | string | Pagination cursor for next page | ### Fathom List Teams [#fathom-list-teams] List teams in your Fathom organization. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Fathom API Key | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `teams` | array | List of teams | | ↳ `name` | string | Team name | | ↳ `created_at` | string | Date the team was created | | `next_cursor` | string | Pagination cursor for next page | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Fathom New Meeting Content [#fathom-new-meeting-content] Trigger workflow when new meeting content is ready in Fathom #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Required to create the webhook in Fathom. | | `triggeredFor` | string | No | Which recording types should trigger this webhook. | | `includeSummary` | boolean | No | Include the meeting summary in the webhook payload. | | `includeTranscript` | boolean | No | Include the full transcript in the webhook payload. | | `includeActionItems` | boolean | No | Include action items extracted from the meeting. | | `includeCrmMatches` | boolean | No | Include matched CRM contacts, companies, and deals from your linked CRM. | #### Output [#output-6] | Parameter | Type | Description | | -------------------------------- | ------ | ------------------------------------------------------------- | | `title` | string | Meeting title | | `meeting_title` | string | Calendar event title | | `recording_id` | number | Unique recording ID | | `url` | string | URL to view the meeting in Fathom | | `share_url` | string | Shareable URL for the meeting | | `created_at` | string | ISO 8601 creation timestamp | | `scheduled_start_time` | string | Scheduled start time | | `scheduled_end_time` | string | Scheduled end time | | `recording_start_time` | string | Recording start time | | `recording_end_time` | string | Recording end time | | `transcript_language` | string | Language of the transcript | | `calendar_invitees_domains_type` | string | Domain type: only\_internal or one\_or\_more\_external | | `recorded_by` | object | Recorder details | | ↳ `name` | string | Name of the recorder | | ↳ `email` | string | Email of the recorder | | `calendar_invitees` | array | Array of calendar invitees with name and email | | `default_summary` | object | Meeting summary | | ↳ `template_name` | string | Summary template name | | ↳ `markdown_formatted` | string | Markdown-formatted summary | | `transcript` | array | Array of transcript entries with speaker, text, and timestamp | | `action_items` | array | Array of action items extracted from the meeting | | `crm_matches` | json | Matched CRM contacts, companies, and deals from linked CRM | *** ### Fathom Webhook [#fathom-webhook] Generic webhook trigger for all Fathom events #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Required to create the webhook in Fathom. | | `triggeredFor` | string | No | Which recording types should trigger this webhook. | | `includeSummary` | boolean | No | Include the meeting summary in the webhook payload. | | `includeTranscript` | boolean | No | Include the full transcript in the webhook payload. | | `includeActionItems` | boolean | No | Include action items extracted from the meeting. | | `includeCrmMatches` | boolean | No | Include matched CRM contacts, companies, and deals from your linked CRM. | #### Output [#output-7] | Parameter | Type | Description | | -------------------------------- | ------ | ------------------------------------------------------------- | | `title` | string | Meeting title | | `meeting_title` | string | Calendar event title | | `recording_id` | number | Unique recording ID | | `url` | string | URL to view the meeting in Fathom | | `share_url` | string | Shareable URL for the meeting | | `created_at` | string | ISO 8601 creation timestamp | | `scheduled_start_time` | string | Scheduled start time | | `scheduled_end_time` | string | Scheduled end time | | `recording_start_time` | string | Recording start time | | `recording_end_time` | string | Recording end time | | `transcript_language` | string | Language of the transcript | | `calendar_invitees_domains_type` | string | Domain type: only\_internal or one\_or\_more\_external | | `recorded_by` | object | Recorder details | | ↳ `name` | string | Name of the recorder | | ↳ `email` | string | Email of the recorder | | `calendar_invitees` | array | Array of calendar invitees with name and email | | `default_summary` | object | Meeting summary | | ↳ `template_name` | string | Summary template name | | ↳ `markdown_formatted` | string | Markdown-formatted summary | | `transcript` | array | Array of transcript entries with speaker, text, and timestamp | | `action_items` | array | Array of action items extracted from the meeting | | `crm_matches` | json | Matched CRM contacts, companies, and deals from linked CRM | --- # File (/integrations/file) {/* MANUAL-CONTENT-START:intro */} The File block is a built-in Agent Serve block for working with files stored in the workspace, or fetched from external URLs. It handles reading, searching, writing, appending, compressing, decompressing, and sharing files as part of a workflow. With the File block, you can: * **Read and extract content**: Load workspace file objects and extract their text content from selected files or one or more folders * **Search workspace content**: Match a regular expression, or an exact piece of text, across the workspace or selected folder scopes with bounded line-level results * **Fetch from URLs**: Retrieve and parse files from external URLs with custom headers * **Write and append**: Create new workspace files or append content to existing ones * **Compress and decompress**: Bundle files into a .zip archive or extract an archive into the workspace * **Manage sharing**: Enable or disable a public share link for a file, with public, password, email, or SSO access modes In Agent Serve, the File block allows your agents to search, read, and extract text from workspace files, fetch and parse files from URLs, write or append content to files, bundle files into or out of .zip archives, and control public sharing access for a file—all programmatically as steps in a workflow. Folder selection is optional and supports multiple folders. Pick them from the workspace, or switch the field to advanced mode and type comma-separated paths, including a value from an earlier block. When no folder is selected, search spans the workspace and file pickers are unscoped. Selected folders are expanded when the workflow runs, so newly added files are included automatically. This makes it possible to explore workspace content, move file content into and out of a workflow, package outputs for download or transfer, and expose files to external users through a managed share link. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Read workspace file objects, search indexed text across the workspace or selected folder scopes, extract the text content of files, fetch and parse files from URLs with optional headers, write new workspace files, append content to existing files, compress files into a .zip archive, extract a .zip archive into the workspace, or manage the public share link for a file. ## Actions [#actions] ### File Read [#file-read] Read workspace file objects from selected files, canonical workspace file IDs, or one or more workspace folders. #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. | | `fileInput` | file | No | Selected workspace file object. | | `folderPaths` | array | No | Folders whose files are included, as canonical percent-encoded paths, e.g. \["/Reports/Q3%20Results"]. Nested folders are included by default, and the folders are read at run time, so a file added later is picked up. | | `includeSubfolders` | boolean | No | Whether nested folders are read too. Defaults to true; set false to take only the folders’ direct files. | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ---------------------- | | `files` | file\[] | Workspace file objects | ### File Get Content [#file-get-content] Extract workspace file text using the same parser mode as File Search. Use the returned fileId and offset/limit to read the matching line and surrounding context. For documents and spreadsheets, line numbers refer to extracted text, not page numbers or worksheet row numbers. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. | | `fileInput` | file | No | Selected workspace file object, or an array of file objects. | | `folderPaths` | array | No | Folders whose files are included, as canonical percent-encoded paths, e.g. \["/Reports/Q3%20Results"]. Nested folders are included by default, and the folders are read at run time, so a file added later is picked up. | | `includeSubfolders` | boolean | No | Whether nested folders are read too. Defaults to true; set false to take only the folders’ direct files. | | `offset` | number | No | First line to return, 1-based. Applied to each selected file separately, so a multi-file selection returns the same window of each. Absent starts at the first line. | | `limit` | number | No | How many lines to return from the offset. Absent reads to the end. Use this to read part of a long file instead of all of it; the response reports the total line count alongside the window. | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ----- | ---------------------------------------------------------------------------------------------------------------------- | | `contents` | array | Array of file text contents, one entry per file in input order | | `lineRanges` | array | Present when a line range was requested: one entry per file, in the same order, with offset, lineCount, and totalLines | ### File Search [#file-search] Search the indexed text of active workspace files for lines matching a query, and return each matching line once with its file ID and line number. By default the query is a regular expression; in exact mode it is matched verbatim and metacharacters are literal. Coverage is what the index currently holds. A term that is not found is only authoritative when "complete" is true AND "indexStatus" reports no skipped files; otherwise it is unknown rather than absent, so re-check before creating something on the assumption it is missing. Narrow the search with folderPaths to confine it to one or more folder trees, which also narrows "indexStatus" to those trees. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | A regular expression matched against each line, 3-512 characters. Supports "." "\*" "+" "?" "\{n,m}" and their lazy forms, character classes such as "\[a-z]" and "\[^0-9]", the classes \d \w \s and \D \W \S, alternation "\|", groups "(...)" and "(?:...)", the anchors "^" and "$", and the word boundary \b. Lookahead, lookbehind, backreferences, named groups, inline flags such as "(?i)", \p\{...} and POSIX "\[\[:alpha:]]" classes are not supported, and a pattern cannot span a line break. The pattern must contain at least 3 consecutive literal characters that every match will include — write "error \d+" rather than "\w+ \d+". Escape any metacharacter you mean literally. Matching is case-insensitive until the pattern contains an uppercase letter you are searching for; uppercase inside an escape or a character class, such as \D or \[A-Z], does not make it case-sensitive. When the workflow builder sets Match to exact instead, the query is matched verbatim and no metacharacter needs escaping. | | `mode` | string | No | How the query is read, chosen by the workflow builder: "regex" (default) as a regular expression, or "exact" as verbatim text. | | `maxResults` | number | No | Hard result cap configured by the workflow builder (1-200, default 50). | | `folderPaths` | array | No | Folders the search is confined to, as canonical percent-encoded paths, e.g. \["/memory/user-a"]. Absent searches the whole workspace. Scoping also narrows the reported index coverage, so "complete" describes the folders searched. | | `includeSubfolders` | boolean | No | Whether the scope descends into nested folders. Defaults to true; set false to search only the folders’ direct files. | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `results` | array | Matching logical lines with their workspace file ID and 1-based line number. | | ↳ `fileId` | string | Canonical workspace file ID. | | ↳ `lineNumber` | number | 1-based logical line number. | | ↳ `text` | string | Matching line or bounded match-centered preview. | | `count` | number | Number of returned matching lines. | | `truncated` | boolean | Whether more matching lines exist beyond the configured hard cap. | | `complete` | boolean | Whether indexing has no pending or failed current revisions; excluded files are reported separately. | | `indexStatus` | object | Current workspace search-index coverage by file status. | | ↳ `readyFiles` | number | Files whose entire current extracted text is searchable. | | ↳ `pendingFiles` | number | Files still waiting to be indexed. | | ↳ `failedFiles` | number | Files whose current indexing attempt failed. | | ↳ `skippedFiles` | number | Files excluded in full because they are oversized, unsupported, or cannot be completely extracted. | | ↳ `partialFiles` | number | Always zero; retained for compatibility. Files are never partially indexed. | ### File Fetch [#file-fetch] Fetch and parse a file from a URL with optional custom headers. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `fileUrl` | string | Yes | URL of the file to fetch and parse. | | `headers` | object | No | HTTP headers to include when fetching URL-based files. | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `files` | file\[] | Fetched files as UserFile objects | | `combinedContent` | string | Combined content of all fetched files | ### File Write [#file-write] Create a new workspace file, either from text content or from an existing file. If a file with the same name already exists, a numeric suffix is added (e.g., "data (1).csv") unless overwrite is enabled. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fileName` | string | No | File name (e.g., "data.csv"). Required when writing text; optional when storing a file, which keeps its own name unless this overrides it. If the name already exists, a numeric suffix is added automatically unless overwrite is enabled. | | `folderPath` | string | No | Folder to create the file in. Omit for the workspace root. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | | `content` | string | No | The text content to write to the file. Provide exactly one of content or fileInput. | | `fileInput` | file | No | An existing file to store in the workspace, such as one produced by an earlier tool. Use this for anything that is not text — PDFs, images, audio, archives. Provide exactly one of content or fileInput. | | `contentType` | string | No | MIME type for new files (e.g., "text/plain"). Auto-detected from the file extension, or taken from the stored file, if omitted. | | `overwrite` | boolean | No | Replace the contents of an existing file at the exact target path (folder and name) instead of creating a suffixed copy. Creates the file when that path does not exist yet. | | `expectedRevision` | string | No | Refuse the write unless the file still holds the content this revision names, as returned by Get File or an earlier write. Use it so an edit computed from what you read cannot overwrite someone else’s change. | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | File ID | | `name` | string | File name | | `size` | number | File size in bytes | | `url` | string | URL to access the file | | `version` | number | Version number of the content this write recorded | | `revision` | string | Opaque token for the content this write produced. Pass it back as expectedRevision to make a later write conditional on nothing having changed since. | ### File Append [#file-append] Append content to an existing workspace file. The file must already exist. Content is added to the end of the file. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fileName` | string | Yes | Name of an existing workspace file to append to. | | `folderPath` | string | No | Single folder in which to resolve the file name. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". Use folderPaths for multiple folders; do not provide both fields. | | `folderPaths` | array | No | Folders to search for the named file. The name must resolve to exactly one file across the selected scopes. Do not provide folderPath as well. | | `includeSubfolders` | boolean | No | Whether the folder scope includes nested folders. Defaults to true; set false to target only files directly in the folder. | | `content` | string | Yes | The text content to append to the file. | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | File ID | | `name` | string | File name | | `size` | number | File size in bytes | | `url` | string | URL to access the file | | `version` | number | Version number of the content this write recorded | | `revision` | string | Opaque token for the content this write produced. Pass it back as expectedRevision to make a later write conditional on nothing having changed since. | ### Apply File Edit [#apply-file-edit] Apply one precise edit to an existing text file without rewriting it. Use search\_replace for verbatim replacement, optionally with replaceAll. Use replace\_between, insert\_after, or delete\_between for complete trimmed-line anchors that stay stable when line numbers move. Folder scope can disambiguate a name or constrain a file ID. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fileName` | string | Yes | Name or ID of the workspace file to edit. | | `folderPath` | string | No | Single folder in which to resolve the file name or validate the file ID. Canonical folder path, percent-encoded, e.g. "/memory/user-a/people". The workspace root is "/". Use folderPaths for multiple folders; do not provide both fields. | | `folderPaths` | array | No | Folders to search for the named file or validate the file ID against. The name must resolve to exactly one file across the selected scopes. Do not provide folderPath as well. | | `includeSubfolders` | boolean | No | Whether selected folders are searched recursively. Defaults to true; false matches only their direct contents. | | `mode` | string | Yes | Edit type: search\_replace, replace\_between, insert\_after, or delete\_between. | | `search` | string | No | For search\_replace, the exact text to replace, including whitespace and line breaks. It must be unique unless replaceAll is true. | | `content` | string | No | Replacement or inserted text. Pass an empty string to delete a search match or clear the text between anchors. Omit only for delete\_between. | | `replaceAll` | boolean | No | For search\_replace, replace every non-overlapping match. Defaults to false, which refuses an ambiguous match. | | `beforeAnchor` | string | No | For replace\_between, the complete line before the content to replace. Leading and trailing whitespace is ignored. | | `afterAnchor` | string | No | For replace\_between, the complete line after the content to replace. The anchor lines remain in the file. | | `anchor` | string | No | For insert\_after, the complete line after which content is inserted. | | `startAnchor` | string | No | For delete\_between, the complete first line to delete. The start anchor is removed. | | `endAnchor` | string | No | For delete\_between, the complete ending boundary line. The end anchor remains in the file. | | `occurrence` | number | No | For anchored edits, which matching anchor occurrence to use, starting at 1. Defaults to 1. | | `expectedRevision` | string | No | Refuse the edit unless the file still holds the content this revision names, as returned by Get File or an earlier write. Use it so an edit computed from what you read cannot overwrite someone else’s change. | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | File ID | | `name` | string | File name | | `size` | number | File size in bytes | | `lineCount` | number | Lines in the file after the edit | | `version` | number | Version number of the content this edit recorded | | `revision` | string | Opaque token for the content this edit produced. Pass it back as expectedRevision to make a later write conditional on nothing having changed since. | ### File Compress [#file-compress] Compress one or more workspace files into a single .zip archive stored in the workspace, for bundling files to download, transfer, or store. Preserves the workspace folder structure of the selected files. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fileId` | string | No | Canonical workspace file ID, or an array of canonical workspace file IDs. | | `fileInput` | file | No | Selected workspace file object, or an array of file objects. | | `folderPaths` | array | No | Folders whose files are included, as canonical percent-encoded paths, e.g. \["/Reports/Q3%20Results"]. Nested folders are included by default, and the folders are read at run time, so a file added later is picked up. | | `includeSubfolders` | boolean | No | Whether nested folders are read too. Defaults to true; set false to take only the folders’ direct files. | | `archiveName` | string | No | Name for the .zip archive (e.g., "documents.zip"). Defaults to the source file name when compressing a single file, otherwise "archive.zip". | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------ | | `id` | string | Compressed archive file ID | | `name` | string | Compressed archive file name | | `size` | number | Compressed archive size in bytes | | `url` | string | URL to access the compressed archive | | `files` | file\[] | Compressed archive file object, as a single-item array | ### File Decompress [#file-decompress] Extract the contents of a .zip archive into the workspace, preserving the archive folder structure. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `fileId` | string | No | Canonical workspace file ID of the .zip archive to extract. | | `fileInput` | file | No | Selected .zip archive file object. | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `files` | file\[] | Extracted workspace file objects | ### Manage Sharing [#manage-sharing] Enable or disable the public share link for a workspace file, and set its access mode (public, password, email, or SSO). Idempotent: the public link stays stable across changes. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `fileId` | string | No | Canonical ID of the workspace file to update sharing for. | | `fileInput` | file | No | Selected workspace file object (from the file picker). | | `isActive` | boolean | Yes | Whether the public link is enabled. Set to false to make the file private. | | `authType` | string | No | Access mode for the link: "public", "password", "email", or "sso". Defaults to "public". | | `password` | string | No | Password to protect the link. Required when authType is "password". | | `allowedEmails` | array | No | Allowed emails or "@domain" patterns. Required when authType is "email" or "sso". | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------- | | `url` | string | Public share URL for the file | | `isActive` | boolean | Whether the public link is enabled | | `authType` | string | Access mode: public, password, email, or sso | | `hasPassword` | boolean | Whether the share is password-protected | | `allowedEmails` | array | Allowed emails/domains for email or SSO access | ### List Files and Folders [#list-files-and-folders] List what is inside a workspace folder: its subfolders and its files together. Lists direct children by default; set Recursive to walk the whole subtree. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `path` | string | No | Folder to list. Omit to list from the workspace root. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | | `recursive` | boolean | No | List everything beneath the path rather than only its direct children. Each entry carries its depth below the listed folder. | | `depth` | number | No | Deepest level to include when recursive, counted from the listed folder. 1 is direct children. | | `search` | string | No | Case-insensitive substring match against an entry name. Filters the result, so a deep match is still reported even when its parent folders do not match. | | `limit` | number | No | Most entries to return, 200 by default. A listing cut short comes back with truncated set. | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `path` | string | The folder that was listed. | | `entries` | array | What the folder holds. Each entry has kind "folder" or "file", a name, and its depth below the listed folder. A folder carries its own canonical path; a file carries its id, size, type, and the canonical path of the folder holding it. | | `truncated` | boolean | True when the limit cut the listing short, so more entries exist. | ### Create File Folder [#create-file-folder] Create a workspace file folder at a path. Parent folders are created as needed. Fails if a folder already exists at the path. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `path` | string | Yes | Path of the folder to create. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------- | | `folder` | object | The created folder, with its name, canonical path, parent path, and timestamps. | ### Move File Folder [#move-file-folder] Move or rename a workspace file folder by giving its full destination path. Everything inside the folder moves with it. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `path` | string | Yes | Folder to move. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | | `destinationPath` | string | Yes | Full path the folder should have afterwards. Renaming is a destination whose parent is unchanged. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------- | | `folder` | object | The folder at its new path. | | `previousPath` | string | The path the folder had before the move. | ### Delete File Folder [#delete-file-folder] Delete a workspace file folder. It moves to Recently deleted and can be brought back with Restore File Folder. Deleting a folder that still has contents requires the recursive option. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `path` | string | Yes | Folder to delete. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | | `recursive` | boolean | No | Also delete the folder’s nested folders and files. Without it, deleting a non-empty folder fails. | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------- | | `path` | string | The folder that was deleted. | | `deleted` | boolean | Always true when the operation succeeded. | | `deletedItems` | object | Counts of the folders and files deleted alongside it. | ### Restore File Folder [#restore-file-folder] Restore a deleted workspace file folder and its contents from Recently deleted. Addressed by folder ID, because a deleted folder has no live path. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------ | | `folderId` | string | Yes | ID of the deleted folder to restore. | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------ | | `folder` | object | The restored folder at its live path. | | `restoredItems` | object | Counts of the folders and files restored alongside it. | ### Move File [#move-file] Move an existing workspace file into a folder. Moves the file itself; use Move File Folder to relocate a whole folder. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fileId` | string | Yes | Canonical workspace file ID of the file to move. | | `folderPath` | string | No | Destination folder. Omit to move the file to the workspace root. Canonical folder path, percent-encoded, e.g. "/Reports/Q3%20Results". The workspace root is "/". | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------ | --------------------------------- | | `fileId` | string | The file that was moved. | | `folderPath` | string | The folder the file now lives in. | {/* MANUAL-CONTENT-START:search_limits */} ## Search coverage and limits [#search-coverage-and-limits] Search indexes the complete extracted text of each eligible file. The source file and its extracted UTF-8 text must each be at most **25 MiB (26,214,400 bytes)**. Oversized files, unsupported binary formats, and documents that cannot be completely extracted within parser safety limits are excluded as whole files and counted in `skippedFiles`. Search never indexes only the first rows, lines, or characters. CSV search preserves decoded source text; spreadsheet search includes populated cells beyond the preview limits. Image-only documents require searchable text; search does not perform OCR. Existing parser safeguards also apply to complete extraction. PDFs allow at most 10,000 pages, 20 MiB of extracted text, 250,000 characters on one page, and 60 seconds of extraction. Office archives allow at most 150 MiB expanded in total, 64 MiB for one archive entry, and 10,000 entries; malformed archives and excessive compression ratios are rejected. Hitting any of these limits excludes the whole file from search. Updates are indexed asynchronously. `pendingFiles` and `failedFiles` indicate revisions that are not yet searchable; a new revision becomes searchable only when its full index is ready. An empty result proves absence only within the searched scope when `complete` is true and `skippedFiles` is zero. Regex is evaluated against complete logical lines, including long lines, and cannot span line breaks. Returned lines may use a shortened preview. The result limit (up to 200 lines) and a 10-second query deadline limit an individual request, not the amount of text indexed. An expensive query fails explicitly instead of returning an apparently complete subset; narrow its literal text or folder scope and retry. Search returns one result per matching logical line with `fileId`, 1-based `lineNumber`, and `text` (a bounded preview for long lines). An Agent can use **Search** to locate content, then **Get Content** with the returned `fileId`, `offset` near `lineNumber`, and a small `limit` to read surrounding context. These operations use the same complete-text parser mode. Line numbers for documents and spreadsheets refer to extracted text, not page numbers or worksheet row numbers. Re-run search if the file changes between calls. {/* MANUAL-CONTENT-END */} --- # Findymail (/integrations/findymail) {/* MANUAL-CONTENT-START:intro */} [Findymail](https://findymail.com/) is a B2B contact data platform for finding and verifying work emails, phone numbers, and enriched profile data on company employees. It combines real-time email finding, deliverability verification, reverse-lookup, and technology stack detection in a single API. With Findymail, you can: * **Find work emails by name and company:** Resolve a verified work email from a person's name plus a company domain or company name. * **Find emails from LinkedIn:** Look up the verified work email behind any LinkedIn profile URL. * **Find contacts by role:** Search a company domain for verified emails matching specific target roles (e.g., CEO, Founder). * **Verify deliverability:** Check whether an email is deliverable and identify the underlying mail provider. * **Reverse-lookup profiles:** Given an email, return the matching LinkedIn URL and an optional enriched profile (job, education, skills, certificates). * **Enrich companies and employees:** Look up company metadata by LinkedIn URL, domain, or name, and find employees by website and target job titles. * **Find phone numbers:** Retrieve a contact's phone number (US-only) from a LinkedIn profile URL. * **Detect technology stacks:** Search the technology catalog or look up the full tech stack of a company by domain. In Agent Serve, the Findymail integration lets your agents programmatically build verified contact lists, enrich CRMs, qualify leads, and gather technographic data without leaving your workflow. Use it to automate outbound prospecting, augment incoming form submissions, validate email captures before sending, and trigger downstream actions when a verified contact is found. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Findymail to find verified work emails by name, domain, or LinkedIn URL, verify deliverability, reverse-lookup profiles from emails, enrich company data, find employees by job title, look up phone numbers, search technology stacks, and check credit usage. ## Actions [#actions] ### Findymail Verify Email [#findymail-verify-email] Verifies the deliverability of an email address. Uses one verifier credit. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `email` | string | Yes | Email address to verify (e.g., [john@example.com](mailto:john@example.com)) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------ | | `email` | string | The verified email address | | `verified` | boolean | Whether the email is verified as deliverable | | `provider` | string | Email service provider (e.g., Google, Microsoft) | ### Findymail Find Email From Name [#findymail-find-email-from-name] Find someone's email from their name and a company domain or company name. Uses one finder credit when a verified email is found. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `name` | string | Yes | Person's full name (e.g., 'John Doe') | | `domain` | string | Yes | Company domain (preferred) or company name (e.g., stripe.com) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | --------------------- | | `contact` | object | Contact information | | ↳ `name` | string | Contact full name | | ↳ `email` | string | Contact email address | | ↳ `domain` | string | Email domain | ### Findymail Find Emails By Domain [#findymail-find-emails-by-domain] Find verified contacts at a given domain matching one or more target roles (max 3 roles). Limited to 5 concurrent synchronous requests. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `domain` | string | Yes | Company domain (e.g., stripe.com) | | `roles` | array | Yes | Target roles at the company (max 3, e.g., \["CEO", "Founder"]) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ---------------------- | | `contacts` | array | List of contacts found | | ↳ `name` | string | Contact full name | | ↳ `email` | string | Contact email address | | ↳ `domain` | string | Email domain | ### Findymail Find Email From LinkedIn [#findymail-find-email-from-linkedin] Find someone's email from a LinkedIn profile URL or username. Uses one finder credit when a verified email is found. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `linkedin_url` | string | Yes | Person's LinkedIn URL or username (e.g., '[https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)' or 'johndoe') | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | --------------------- | | `contact` | object | Contact information | | ↳ `name` | string | Contact full name | | ↳ `email` | string | Contact email address | | ↳ `domain` | string | Email domain | ### Findymail Reverse Email Lookup [#findymail-reverse-email-lookup] Find a business profile from an email address. Uses 1 finder credit if a profile is found, 2 credits if returning full profile data. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------ | | `email` | string | Yes | Work or personal email address to look up | | `with_profile` | boolean | No | Whether to return enriched profile metadata (default: false) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------- | | `email` | string | The email address that was looked up | | `linkedin_url` | string | LinkedIn profile URL | | `fullName` | string | Full name from profile | | `username` | string | LinkedIn username | | `headline` | string | Profile headline | | `jobTitle` | string | Current job title | | `summary` | string | Profile summary | | `city` | string | City | | `region` | string | Region or state | | `country` | string | Country | | `companyLinkedinUrl` | string | Current company LinkedIn URL | | `companyName` | string | Current company name | | `companyWebsite` | string | Current company website | | `isPremium` | boolean | Whether the profile has LinkedIn Premium | | `isOpenProfile` | boolean | Whether the profile is an Open Profile | | `skills` | array | List of profile skills | | `jobs` | array | Job history entries | | `educations` | array | Education history (school, degree, fieldOfStudy, startDate, endDate) | | `certificates` | array | Certifications (name, issuingOrganization, issueDate, expirationDate) | ### Findymail Get Company [#findymail-get-company] Retrieve company information from a LinkedIn URL, domain, or company name. Uses 1 finder credit per successful response. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `linkedin_url` | string | No | Company LinkedIn URL (e.g., [https://www.linkedin.com/company/stripe/](https://www.linkedin.com/company/stripe/)) | | `domain` | string | No | Company domain (e.g., stripe.com) | | `name` | string | No | Company name (e.g., Stripe) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------ | | `name` | string | Company name | | `domain` | string | Company domain | | `company_size` | string | Employee headcount range (e.g., 1001-5000) | | `industry` | string | Industry classification | | `linkedin_url` | string | Company LinkedIn URL | | `description` | string | Company description | ### Findymail Find Employees [#findymail-find-employees] Find employees at a company by website and target job titles. Uses 1 credit per found contact. Does not return email addresses. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------- | | `website` | string | Yes | Company website or domain (e.g., google.com) | | `job_titles` | array | Yes | Target job titles to search for (max 10, e.g., \["Software Engineer", "CEO"]) | | `count` | number | No | Number of contacts to return (max 5, default 1) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------- | | `employees` | array | List of employees matching the search criteria | | ↳ `name` | string | Employee full name | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `companyWebsite` | string | Company website | | ↳ `companyName` | string | Company name | | ↳ `jobTitle` | string | Job title | ### Findymail Find Phone [#findymail-find-phone] Find someone's phone number from a LinkedIn profile URL. Uses 10 finder credits if a phone is found. EU citizens are excluded for legal reasons. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `linkedin_url` | string | Yes | Person's LinkedIn URL or username (e.g., '[https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)' or 'johndoe') | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------------ | | `phone` | string | Phone number in E.164 format. Only available for US numbers. | | `line_type` | string | Phone line type (e.g., "Mobile", "Landline") | ### Findymail Search Technologies [#findymail-search-technologies] Search the technology catalog by name. Returns up to 25 technologies. Free endpoint, rate limited to 10 requests per minute. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------- | | `q` | string | Yes | Search term (min 2 characters, e.g., "React") | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------- | | `technologies` | array | List of technologies | | ↳ `name` | string | Technology name | | ↳ `category` | string | Technology category | | ↳ `subcategory` | string | Technology subcategory | | ↳ `last_detected_at` | string | Last detection timestamp (ISO 8601) | ### Findymail Lookup Technologies [#findymail-lookup-technologies] Get the technology stack for a company by domain. Optionally filter by technology names. 1 finder credit if technologies are found, free otherwise. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `domain` | string | Yes | Company domain to look up (e.g., stripe.com) | | `technologies` | array | No | Filter by technology names, case-insensitive (e.g., \["React", "TypeScript"]) | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------- | | `technologies` | array | List of technologies | | ↳ `name` | string | Technology name | | ↳ `category` | string | Technology category | | ↳ `subcategory` | string | Technology subcategory | | ↳ `last_detected_at` | string | Last detection timestamp (ISO 8601) | | `domain` | string | The resolved company domain | ### Findymail Get Credits [#findymail-get-credits] Retrieve the remaining finder and verifier credits for the authenticated account. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Findymail API Key | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------ | -------------------------- | | `credits` | number | Remaining finder credits | | `verifier_credits` | number | Remaining verifier credits | --- # Firecrawl (/integrations/firecrawl) {/* MANUAL-CONTENT-START:intro */} Use [Firecrawl](https://firecrawl.dev/) to scrape pages, search the web, crawl or map sites, and extract structured content. Configure a Firecrawl API key and the inputs for the selected operation. Status actions let a workflow follow asynchronous scrape, crawl, or extraction jobs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Firecrawl into the workflow. Scrape pages, search the web, crawl entire sites, map URL structures, and extract structured data with AI. ## Actions [#actions] ### Firecrawl Website Scraper [#firecrawl-website-scraper] Extract structured content from web pages with comprehensive metadata support. Converts content to markdown or HTML while capturing SEO metadata, Open Graph tags, and page information. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `url` | string | Yes | The URL to scrape content from (e.g., "[https://example.com/page](https://example.com/page)") | | `formats` | json | No | Output formats supplied by existing Firecrawl block configurations | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------ | | `markdown` | string | Page content in markdown format | | `html` | string | Raw HTML content of the page | | `metadata` | object | Page metadata including SEO and Open Graph information | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `language` | string | Page language code (e.g., "en") | | ↳ `sourceURL` | string | Original source URL that was scraped | | ↳ `statusCode` | number | HTTP status code of the response | | ↳ `keywords` | string | Page meta keywords | | ↳ `robots` | string | Robots meta directive (e.g., "follow, index") | | ↳ `ogTitle` | string | Open Graph title | | ↳ `ogDescription` | string | Open Graph description | | ↳ `ogUrl` | string | Open Graph URL | | ↳ `ogImage` | string | Open Graph image URL | | ↳ `ogLocaleAlternate` | array | Alternate locale versions for Open Graph | | ↳ `ogSiteName` | string | Open Graph site name | | ↳ `error` | string | Error message if scrape failed | ### Firecrawl Batch Scrape [#firecrawl-batch-scrape] Scrape multiple URLs in a single batch job and retrieve structured content from each page. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `urls` | json | Yes | Array of URLs to scrape (e.g., \["[https://example.com/page1](https://example.com/page1)", "[https://example.com/page2](https://example.com/page2)"]) | | `formats` | json | No | Output formats for scraped content (e.g., \["markdown"], \["markdown", "html"]) | | `onlyMainContent` | boolean | No | Extract only main content from pages | | `maxConcurrency` | number | No | Maximum number of concurrent scrapes | | `ignoreInvalidURLs` | boolean | No | Skip invalid URLs instead of failing the batch (default: true) | | `zeroDataRetention` | boolean | No | Enable zero data retention | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------ | | `pages` | array | Array of scraped pages with their content and metadata | | ↳ `markdown` | string | Page content in markdown format | | ↳ `html` | string | Processed HTML content of the page | | ↳ `rawHtml` | string | Unprocessed raw HTML content | | ↳ `links` | array | Array of links found on the page | | ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) | | ↳ `metadata` | object | Page metadata from crawl operation | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `language` | string | Page language code | | ↳ `sourceURL` | string | Original source URL | | ↳ `statusCode` | number | HTTP status code | | ↳ `ogLocaleAlternate` | array | Alternate locale versions | | `total` | number | Total number of pages attempted | | `completed` | number | Number of pages successfully scraped | | `invalidURLs` | array | URLs that were skipped because they were invalid | ### Firecrawl Batch Scrape Status [#firecrawl-batch-scrape-status] Check the status and retrieve results of a previously started Firecrawl batch scrape job by its job ID. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `jobId` | string | Yes | The ID of the batch scrape job to check | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------ | | `status` | string | Current batch scrape status (scraping, completed, or failed) | | `total` | number | Total number of pages attempted | | `completed` | number | Number of pages successfully scraped | | `creditsUsed` | number | Credits consumed by the batch scrape | | `expiresAt` | string | ISO timestamp when the batch scrape results expire | | `next` | string | URL to retrieve the next page of results when present | | `pages` | array | Array of scraped pages with their content and metadata | | ↳ `markdown` | string | Page content in markdown format | | ↳ `html` | string | Processed HTML content of the page | | ↳ `rawHtml` | string | Unprocessed raw HTML content | | ↳ `links` | array | Array of links found on the page | | ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) | | ↳ `metadata` | object | Page metadata from crawl operation | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `language` | string | Page language code | | ↳ `sourceURL` | string | Original source URL | | ↳ `statusCode` | number | HTTP status code | | ↳ `ogLocaleAlternate` | array | Alternate locale versions | ### Firecrawl Search [#firecrawl-search] Search for information on the web using Firecrawl #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `query` | string | Yes | The search query to use | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `data` | array | Search results data with scraped content and metadata | | ↳ `title` | string | Search result title from search engine | | ↳ `description` | string | Search result description/snippet from search engine | | ↳ `url` | string | URL of the search result | | ↳ `markdown` | string | Page content in markdown; returned only when scraping was requested via the hidden scrapeOptions input | | ↳ `html` | string | Processed HTML content; returned only when "html" is among the scrape formats requested via the hidden scrapeOptions input | | ↳ `rawHtml` | string | Unprocessed raw HTML; returned only when "rawHtml" is among the scrape formats requested via the hidden scrapeOptions input | | ↳ `links` | array | Links found on the page; returned only when "links" is among the scrape formats requested via the hidden scrapeOptions input | | ↳ `screenshot` | string | Screenshot URL (expires after 24 hours); returned only when "screenshot" is among the scrape formats requested via the hidden scrapeOptions input | | ↳ `metadata` | object | Metadata about the search result page | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `sourceURL` | string | Original source URL | | ↳ `statusCode` | number | HTTP status code | | ↳ `error` | string | Error message if scrape failed | ### Firecrawl Crawl [#firecrawl-crawl] Crawl entire websites and extract structured content from all accessible pages #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `url` | string | Yes | The website URL to crawl (e.g., "[https://example.com](https://example.com)" or "[https://docs.example.com/guide](https://docs.example.com/guide)") | | `limit` | number | No | Maximum number of pages to crawl (e.g., 50, 100, 500). Default: 100 | | `maxDepth` | number | No | Maximum depth to crawl from the starting URL (e.g., 1, 2, 3). Controls how many levels deep to follow links | | `formats` | json | No | Output formats for scraped content (e.g., \["markdown"], \["markdown", "html"], \["markdown", "links"]) | | `prompt` | string | No | Natural-language crawl guidance supplied by existing configurations | | `excludePaths` | json | No | URL paths to exclude from crawling (e.g., \["/blog/*", "/admin/*", "/\*.pdf"]) | | `includePaths` | json | No | URL paths to include in crawling (e.g., \["/docs/*", "/api/*"]). Only these paths will be crawled | | `onlyMainContent` | boolean | No | Extract only main content from pages | | `apiKey` | string | Yes | Firecrawl API Key | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------ | | `pages` | array | Array of crawled pages with their content and metadata | | ↳ `markdown` | string | Page content in markdown format | | ↳ `html` | string | Processed HTML content of the page | | ↳ `rawHtml` | string | Unprocessed raw HTML content | | ↳ `links` | array | Array of links found on the page | | ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) | | ↳ `metadata` | object | Page metadata from crawl operation | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `language` | string | Page language code | | ↳ `sourceURL` | string | Original source URL | | ↳ `statusCode` | number | HTTP status code | | ↳ `ogLocaleAlternate` | array | Alternate locale versions | | `total` | number | Total number of pages found during crawl | ### Firecrawl Crawl Status [#firecrawl-crawl-status] Check the status and retrieve results of a previously started Firecrawl crawl job by its job ID. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `jobId` | string | Yes | The ID of the crawl job to check | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-5] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------ | | `status` | string | Current crawl status (scraping, completed, or failed) | | `total` | number | Total number of pages attempted | | `completed` | number | Number of pages successfully crawled | | `creditsUsed` | number | Credits consumed by the crawl | | `expiresAt` | string | ISO timestamp when the crawl results expire | | `next` | string | URL to retrieve the next page of results when present | | `pages` | array | Array of crawled pages with their content and metadata | | ↳ `markdown` | string | Page content in markdown format | | ↳ `html` | string | Processed HTML content of the page | | ↳ `rawHtml` | string | Unprocessed raw HTML content | | ↳ `links` | array | Array of links found on the page | | ↳ `screenshot` | string | Screenshot URL (expires after 24 hours) | | ↳ `metadata` | object | Page metadata from crawl operation | | ↳ `title` | string | Page title | | ↳ `description` | string | Page meta description | | ↳ `language` | string | Page language code | | ↳ `sourceURL` | string | Original source URL | | ↳ `statusCode` | number | HTTP status code | | ↳ `ogLocaleAlternate` | array | Alternate locale versions | ### Firecrawl Cancel Crawl [#firecrawl-cancel-crawl] Cancel an in-progress Firecrawl crawl job by its job ID. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `jobId` | string | Yes | The ID of the crawl job to cancel | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `status` | string | Status of the cancelled crawl job (e.g., "cancelled") | ### Firecrawl Map [#firecrawl-map] Get a complete list of URLs from any website quickly and reliably. Useful for discovering all pages on a site without crawling them. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ | | `url` | string | Yes | The base URL to map and discover links from (e.g., "[https://example.com](https://example.com)") | | `search` | string | No | Filter results by relevance to a search term (e.g., "blog") | | `sitemap` | string | No | Controls sitemap usage: "skip", "include" (default), or "only" | | `includeSubdomains` | boolean | No | Whether to include URLs from subdomains (default: true) | | `ignoreQueryParameters` | boolean | No | Exclude URLs containing query strings (default: true) | | `limit` | number | No | Maximum number of links to return (e.g., 100, 1000, 5000). Max: 100,000, default: 5,000 | | `timeout` | number | No | Request timeout in milliseconds | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the mapping operation was successful | | `links` | array | Array of discovered URLs from the website | ### Firecrawl Extract [#firecrawl-extract] Extract structured data from entire webpages using natural language prompts and JSON schema. Powerful agentic feature for intelligent data extraction. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `urls` | json | Yes | Array of URLs to extract data from (e.g., \["[https://example.com/page1](https://example.com/page1)", "[https://example.com/page2](https://example.com/page2)"] or \["[https://example.com/](https://example.com/)\*"]) | | `prompt` | string | No | Natural language guidance for the extraction process | | `schema` | json | No | JSON Schema defining the structure of data to extract | | `enableWebSearch` | boolean | No | Enable web search to find supplementary information (default: false) | | `ignoreSitemap` | boolean | No | Ignore sitemap.xml files during scanning (default: false) | | `includeSubdomains` | boolean | No | Extend scanning to subdomains (default: true) | | `showSources` | boolean | No | Return data sources in the response (default: false) | | `ignoreInvalidURLs` | boolean | No | Skip invalid URLs in the array (default: true) | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------------- | | `success` | boolean | Whether the extraction operation was successful | | `data` | object | Extracted structured data according to the schema or prompt | ### Firecrawl Extract Status [#firecrawl-extract-status] Check the status and retrieve results of a previously started Firecrawl extract job by its job ID. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `jobId` | string | Yes | The ID of the extract job to check | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------- | | `status` | string | Current extract status (processing, completed, failed, or cancelled) | | `data` | json | Extracted structured data according to the schema or prompt | | `expiresAt` | string | ISO timestamp when the extract results expire | | `creditsUsed` | number | Number of credits used by the extract job | | `tokensUsed` | number | Number of tokens used by the extract job | ### Firecrawl Agent [#firecrawl-agent] Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `prompt` | string | Yes | Natural language description of the data to extract (max 10,000 characters) | | `urls` | json | No | Optional array of URLs to focus the agent on (e.g., \["[https://example.com](https://example.com)", "[https://docs.example.com](https://docs.example.com)"]) | | `schema` | json | No | JSON Schema defining the structure of data to extract | | `maxCredits` | number | No | Maximum credits to spend on this agent task | | `strictConstrainToURLs` | boolean | No | If true, agent will only visit URLs provided in the urls array | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------------------------- | | `success` | boolean | Whether the agent operation was successful | | `status` | string | Current status of the agent job (processing, completed, failed) | | `data` | object | Extracted data from the agent | | `expiresAt` | string | Timestamp when the results expire (24 hours) | | `sources` | object | Array of source URLs used by the agent | ### Firecrawl Document Parser [#firecrawl-document-parser] Parse uploaded documents (PDF, DOCX, HTML, etc.) into clean markdown using Firecrawl. Supports .html, .htm, .pdf, .docx, .doc, .odt, .rtf, .xlsx, .xls. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------- | | `file` | file | Yes | Document file to be parsed | | `formats` | array | No | Output formats to return (e.g., \["markdown"]). Defaults to markdown. | | `onlyMainContent` | boolean | No | Exclude headers, navs, footers. Defaults to true. | | `includeTags` | array | No | HTML tags to include | | `excludeTags` | array | No | HTML tags to exclude | | `timeout` | number | No | Timeout in milliseconds (max 300000). Defaults to 30000. | | `parsers` | array | No | Parser configuration (e.g., \[\{ "type": "pdf" }]) | | `removeBase64Images` | boolean | No | Remove base64 images, keep alt text. Defaults to true. | | `blockAds` | boolean | No | Block ads and popups. Defaults to true. | | `proxy` | string | No | Proxy mode: "basic" or "auto" | | `zeroDataRetention` | boolean | No | Enable zero data retention. Defaults to false. | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `markdown` | string | Parsed document content in markdown format | | `summary` | string | Generated summary of the document | | `html` | string | Processed HTML content | | `rawHtml` | string | Unprocessed raw HTML content | | `screenshot` | string | Screenshot URL or base64 (when requested) | | `links` | array | URLs discovered in the document | | `metadata` | object | Document metadata | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `language` | string | Document language code | | ↳ `sourceURL` | string | Source URL | | ↳ `url` | string | Final URL | | ↳ `keywords` | string | Document keywords | | ↳ `statusCode` | number | HTTP status code | | ↳ `contentType` | string | Document content type | | ↳ `error` | string | Error message if parse failed | | `warning` | string | Warning message from the parse operation | ### Firecrawl Credit Usage [#firecrawl-credit-usage] Retrieve the remaining and allocated Firecrawl credits for the team. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Firecrawl API key | #### Output [#output-12] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------- | | `remainingCredits` | number | Number of credits remaining for the team | | `planCredits` | number | Credits allocated in the current plan | | `billingPeriodStart` | string | Start of the current billing period | | `billingPeriodEnd` | string | End of the current billing period | --- # Fireflies (/integrations/fireflies) {/* MANUAL-CONTENT-START:intro */} [Fireflies.ai](https://fireflies.ai/) is a meeting transcription and intelligence platform that integrates with Agent Serve, allowing your agents to work directly with meeting recordings, transcripts, and insights through no-code automations. The Fireflies integration in Agent Serve provides tools to: * **List meeting transcripts:** Fetch multiple meetings and their summary information for your team or account. * **Retrieve full transcript details:** Access detailed transcripts, including summaries, action items, topics, and participant analytics for any meeting. * **Upload audio or video:** Upload audio/video files or provide URLs for transcription—optionally set language, title, attendees, and receive automated meeting notes. * **Search transcripts:** Find meetings by keyword, participant, host, or timeframe to quickly locate relevant discussions. * **Delete transcripts:** Remove specific meeting transcripts from your Fireflies workspace. * **Create soundbites (Bites):** Extract and highlight key moments from transcripts as audio or video clips. * **Trigger workflows on transcription completion:** Activate Agent Serve workflows automatically when a Fireflies meeting transcription finishes using the provided webhook trigger—enabling real-time automations and notifications based on new meeting data. By combining these capabilities, you can streamline post-meeting actions, extract structured insights, automate notifications, manage recordings, and orchestrate custom workflows around your organization’s calls—all securely using your API key and Fireflies credentials. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Fireflies.ai into the workflow. Manage meeting transcripts, add bot to live meetings, create soundbites, and more. Can also trigger workflows when transcriptions complete. ## Actions [#actions] ### Fireflies List Transcripts [#fireflies-list-transcripts] List meeting transcripts from Fireflies.ai with optional filtering #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Fireflies API key | | `keyword` | string | No | Search keyword in meeting title or transcript (e.g., "quarterly review") | | `fromDate` | string | No | Filter transcripts from this date (ISO 8601 format) | | `toDate` | string | No | Filter transcripts until this date (ISO 8601 format) | | `hostEmail` | string | No | Filter by meeting host email | | `participants` | string | No | Filter by participant emails (comma-separated) | | `limit` | number | No | Maximum number of transcripts to return (e.g., 10, max 50) | | `skip` | number | No | Number of transcripts to skip for pagination (e.g., 0, 10, 20) | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ------------------------------ | | `transcripts` | array | List of transcripts | | `count` | number | Number of transcripts returned | ### Fireflies Get Transcript [#fireflies-get-transcript] Get a single transcript with full details including summary, action items, and analytics #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `transcriptId` | string | Yes | The transcript ID to retrieve (e.g., "abc123def456") | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------- | | `transcript` | object | The transcript with full details | | ↳ `id` | string | Transcript ID | | ↳ `title` | string | Meeting title | | ↳ `date` | number | Meeting timestamp | | ↳ `duration` | number | Meeting duration in seconds | | ↳ `transcript_url` | string | URL to view transcript | | ↳ `audio_url` | string | URL to audio recording | | ↳ `host_email` | string | Host email address | | ↳ `participants` | array | List of participant emails | | ↳ `speakers` | array | List of speakers | | ↳ `sentences` | array | Transcript sentences | | ↳ `summary` | object | Meeting summary and action items | | ↳ `analytics` | object | Meeting analytics and sentiment | ### Fireflies Get User [#fireflies-get-user] Get user information from Fireflies.ai. Returns current user if no ID specified. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `userId` | string | No | User ID to retrieve (e.g., "user\_abc123", defaults to API key owner) | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------- | ------------------------- | | `user` | object | User information | | ↳ `user_id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `integrations` | array | Connected integrations | | ↳ `is_admin` | boolean | Whether user is admin | | ↳ `minutes_consumed` | number | Total minutes transcribed | | ↳ `num_transcripts` | number | Number of transcripts | | ↳ `recent_transcript` | string | Most recent transcript ID | | ↳ `recent_meeting` | string | Most recent meeting date | ### Fireflies List Users [#fireflies-list-users] List all users within your Fireflies.ai team #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Fireflies API key | #### Output [#output-3] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `users` | array | List of team users | ### Fireflies Upload Audio [#fireflies-upload-audio] Upload an audio file URL to Fireflies.ai for transcription #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `audioFile` | file | No | Audio/video file to upload for transcription | | `audioUrl` | string | No | Public HTTPS URL of the audio/video file (MP3, MP4, WAV, M4A, OGG) | | `title` | string | No | Title for the meeting/transcript | | `webhook` | string | No | Webhook URL to notify when transcription is complete | | `language` | string | No | Language code for transcription (e.g., "es" for Spanish, "de" for German) | | `attendees` | string | No | Attendees in JSON format: \[\{"displayName": "Name", "email": "[email@example.com](mailto:email@example.com)"}] | | `clientReferenceId` | string | No | Custom reference ID for tracking | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the upload was successful | | `title` | string | Title of the uploaded meeting | | `message` | string | Status message from Fireflies | ### Fireflies Delete Transcript [#fireflies-delete-transcript] Delete a transcript from Fireflies.ai #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `transcriptId` | string | Yes | The transcript ID to delete (e.g., "abc123def456") | #### Output [#output-5] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the transcript was successfully deleted | | `transcript` | object | The deleted transcript | | ↳ `id` | string | Transcript ID | | ↳ `title` | string | Meeting title | | ↳ `date` | number | Meeting timestamp | | ↳ `duration` | number | Meeting duration | | ↳ `host_email` | string | Host email address | | ↳ `organizer_email` | string | Organizer email address | ### Fireflies Add to Live Meeting [#fireflies-add-to-live-meeting] Add the Fireflies.ai bot to an ongoing meeting to record and transcribe #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Fireflies API key | | `meetingLink` | string | Yes | Valid meeting URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `title` | string | No | Title for the meeting (max 256 characters) | | `meetingPassword` | string | No | Password for the meeting if required (max 32 characters) | | `duration` | number | No | Meeting duration in minutes (15-120, default: 60) | | `language` | string | No | Language code for transcription (e.g., "en", "es", "de") | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the bot was successfully added to the meeting | ### Fireflies Create Bite [#fireflies-create-bite] Create a soundbite/highlight from a specific time range in a transcript #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `transcriptId` | string | Yes | ID of the transcript to create the bite from (e.g., "abc123def456") | | `startTime` | number | Yes | Start time of the bite in seconds | | `endTime` | number | Yes | End time of the bite in seconds | | `name` | string | No | Name for the bite (max 256 characters) | | `mediaType` | string | No | Media type: "video" or "audio" | | `summary` | string | No | Summary for the bite (max 500 characters) | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `bite` | object | Created bite details | | ↳ `id` | string | Bite ID | | ↳ `name` | string | Bite name | | ↳ `status` | string | Processing status | ### Fireflies List Bites [#fireflies-list-bites] List soundbites/highlights from Fireflies.ai #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Fireflies API key | | `transcriptId` | string | No | Filter bites for a specific transcript (e.g., "abc123def456") | | `mine` | boolean | No | Only return bites owned by the API key owner (default: true) | | `limit` | number | No | Maximum number of bites to return (e.g., 10, max 50) | | `skip` | number | No | Number of bites to skip for pagination (e.g., 0, 10, 20) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ----- | ------------------------ | | `bites` | array | List of bites/soundbites | ### Fireflies List Contacts [#fireflies-list-contacts] List all contacts from your Fireflies.ai meetings #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Fireflies API key | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ----- | ------------------------------ | | `contacts` | array | List of contacts from meetings | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Fireflies Transcription Complete [#fireflies-transcription-complete] Trigger workflow when a Fireflies meeting transcription is complete #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------- | | `webhookSecret` | string | No | Secret key for HMAC signature verification (set in Fireflies dashboard) | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------------------------------- | | `meetingId` | string | The ID of the transcribed meeting | | `eventType` | string | The type of event (e.g. Transcription completed, meeting.transcribed) | | `clientReferenceId` | string | Custom reference ID if set during upload | | `timestamp` | number | Unix timestamp in milliseconds when the event was fired (V2 webhooks) | --- # Fish Audio (/integrations/fish_audio) ## Usage Instructions [#usage-instructions] Integrate Fish Audio into the workflow. Turn text into natural, expressive speech with library voices or your own clones, tuned for phone calls with 8 kHz to 44.1 kHz WAV or PCM output and low-latency modes. Browse and manage voice models, create a voice clone from consented recordings, transcribe recordings with speaker turns, and check your API credit. ## Actions [#actions] ### Fish Audio Text to Speech [#fish-audio-text-to-speech] Generate speech with a Fish Audio library voice or your own voice clone, with control over model, format, sample rate, latency, speed, and volume #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `text` | string | Yes | The text to convert to speech (e.g., "Hi, this is Maya from Acme. Is now a good time?") | | `apiKey` | string | Yes | Fish Audio API key | | `referenceId` | string | No | Voice model ID from the Fish Audio library or your own clones (e.g., "9a9cf47702da476aa4629e2506d4a857"). Omit to use the default voice | | `model` | string | No | TTS model: s2.1-pro (default), s2-pro, s2.1-pro-free, drama-3, or s1 (deprecated) | | `format` | string | No | Output format: mp3 (default), wav, pcm (16-bit mono), or opus | | `sampleRate` | number | No | Sample rate in Hz. wav/pcm: 8000, 16000, 24000, 32000, 44100; mp3: 32000, 44100; opus: 48000. Defaults to 44100 (48000 for opus) | | `mp3Bitrate` | number | No | MP3 bitrate in kbps: 64, 128 (default), or 192 | | `latency` | string | No | Latency-quality trade-off: normal (best quality, default), balanced, or low | | `speed` | number | No | Speaking rate multiplier from 0.5 to 2.0 (1.0 is normal) | | `volume` | number | No | Volume adjustment in decibels (0 is unchanged, negative is quieter) | | `temperature` | number | No | Expressiveness from 0 to 1 (default 0.7). Lower is more consistent | | `topP` | number | No | Nucleus sampling diversity from 0 to 1 (default 0.7) | | `language` | string | No | BCP-47 language tag of the text (e.g., "en", "es-MX"), used to spell out numbers and dates | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------ | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file (UserFile) | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | | `voices` | array | Voice models on this page | | `total` | number | Total number of matching voices | | `hasMore` | boolean | Whether more pages are available | | `id` | string | Voice model ID, used as the TTS reference ID | | `title` | string | Voice name | | `description` | string | Voice description | | `type` | string | Model type | | `state` | string | Training state (created, training, trained, failed) | | `trainMode` | string | Training mode | | `visibility` | string | Visibility (public, unlist, private) | | `tags` | array | Voice tags | | `languages` | array | Languages the voice speaks | | `coverImage` | string | Cover image URL | | `samples` | array | Sample clips for previewing the voice | | `licensed` | boolean | Whether Fish Audio secured rights from the voice owner | | `likeCount` | number | Number of likes | | `taskCount` | number | Number of times the voice was used | | `authorId` | string | Author user ID | | `authorName` | string | Author nickname | | `createdAt` | string | Creation time (ISO 8601) | | `updatedAt` | string | Last update time (ISO 8601) | | `voiceId` | string | ID of the deleted voice model | | `deleted` | boolean | Whether the voice model was deleted | | `text` | string | Full transcript | | `duration` | number | Audio length in seconds | | `segments` | array | Word-level timestamps | | `speakerTurns` | array | Timed speaker turns | | `languageCode` | string | Detected ISO 639-1 language code | | `language` | string | Detected language name | | `credit` | string | Remaining API credit balance | | `cumulativeTopUp` | string | Total amount topped up | | `hasFreeCredit` | boolean | Whether the account has free credit | ### Fish Audio List Voices [#fish-audio-list-voices] List Fish Audio voice models: your own clones or the public voice library, filtered by name, tag, language, author, or licensing #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Fish Audio API key | | `self` | boolean | No | Return only voices owned by your workspace (default false, the public library) | | `title` | string | No | Filter voices by title (e.g., "narrator") | | `tags` | string | No | Comma-separated tags to filter by (e.g., "female,calm") | | `language` | string | No | Comma-separated language codes to filter by (e.g., "en,es") | | `authorId` | string | No | Only public voices by this author ID (ignored when self is true) | | `licensed` | boolean | No | Only voices Fish Audio licensed from the voice owner (ignored when self is true) | | `sortBy` | string | No | Sort order: score (default), task\_count, or created\_at | | `pageSize` | number | No | Voices per page, 1 to 100 (default 10) | | `pageNumber` | number | No | Page number, starting at 1 (default 1) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `voices` | array | Voice models on this page | | `total` | number | Total number of matching voices | | `hasMore` | boolean | Whether more pages are available | ### Fish Audio Get Voice [#fish-audio-get-voice] Get a Fish Audio voice model: its name, training state, languages, tags, and sample clips #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Fish Audio API key | | `voiceId` | string | Yes | Voice model ID (e.g., "9a9cf47702da476aa4629e2506d4a857") | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------ | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file (UserFile) | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | | `voices` | array | Voice models on this page | | `total` | number | Total number of matching voices | | `hasMore` | boolean | Whether more pages are available | | `id` | string | Voice model ID, used as the TTS reference ID | | `title` | string | Voice name | | `description` | string | Voice description | | `type` | string | Model type | | `state` | string | Training state (created, training, trained, failed) | | `trainMode` | string | Training mode | | `visibility` | string | Visibility (public, unlist, private) | | `tags` | array | Voice tags | | `languages` | array | Languages the voice speaks | | `coverImage` | string | Cover image URL | | `samples` | array | Sample clips for previewing the voice | | `licensed` | boolean | Whether Fish Audio secured rights from the voice owner | | `likeCount` | number | Number of likes | | `taskCount` | number | Number of times the voice was used | | `authorId` | string | Author user ID | | `authorName` | string | Author nickname | | `createdAt` | string | Creation time (ISO 8601) | | `updatedAt` | string | Last update time (ISO 8601) | | `voiceId` | string | ID of the deleted voice model | | `deleted` | boolean | Whether the voice model was deleted | | `text` | string | Full transcript | | `duration` | number | Audio length in seconds | | `segments` | array | Word-level timestamps | | `speakerTurns` | array | Timed speaker turns | | `languageCode` | string | Detected ISO 639-1 language code | | `language` | string | Detected language name | | `credit` | string | Remaining API credit balance | | `cumulativeTopUp` | string | Total amount topped up | | `hasFreeCredit` | boolean | Whether the account has free credit | ### Fish Audio Create Voice Clone [#fish-audio-create-voice-clone] Create a Fish Audio voice clone from 1 to 20 audio samples (10 to 30 seconds of clear speech each works best). Only clone a voice with the consent of the person it belongs to: your own voice, or someone who gave written permission. The clone is ready to use as a TTS reference ID as soon as it is created #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Fish Audio API key | | `title` | string | Yes | Name for the voice clone (e.g., "Acme support voice") | | `audioFiles` | file\[] | Yes | Audio samples of the voice (WAV, MP3, or FLAC), up to 20 files | | `consentConfirmed` | boolean | Yes | Confirms the person whose voice is in the samples consented to it being cloned. The clone is refused unless true | | `transcripts` | array | No | Exact transcript of each sample, in the same order. Omit to let Fish Audio transcribe them | | `description` | string | No | Description of the voice | | `tags` | array | No | Tags for the voice (e.g., \["brand", "support"]) | | `visibility` | string | No | private (default, only you) or unlist (anyone with the link) | | `enhanceAudioQuality` | boolean | No | Clean up the samples before cloning (default true) | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------ | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file (UserFile) | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | | `voices` | array | Voice models on this page | | `total` | number | Total number of matching voices | | `hasMore` | boolean | Whether more pages are available | | `id` | string | Voice model ID, used as the TTS reference ID | | `title` | string | Voice name | | `description` | string | Voice description | | `type` | string | Model type | | `state` | string | Training state (created, training, trained, failed) | | `trainMode` | string | Training mode | | `visibility` | string | Visibility (public, unlist, private) | | `tags` | array | Voice tags | | `languages` | array | Languages the voice speaks | | `coverImage` | string | Cover image URL | | `samples` | array | Sample clips for previewing the voice | | `licensed` | boolean | Whether Fish Audio secured rights from the voice owner | | `likeCount` | number | Number of likes | | `taskCount` | number | Number of times the voice was used | | `authorId` | string | Author user ID | | `authorName` | string | Author nickname | | `createdAt` | string | Creation time (ISO 8601) | | `updatedAt` | string | Last update time (ISO 8601) | | `voiceId` | string | ID of the deleted voice model | | `deleted` | boolean | Whether the voice model was deleted | | `text` | string | Full transcript | | `duration` | number | Audio length in seconds | | `segments` | array | Word-level timestamps | | `speakerTurns` | array | Timed speaker turns | | `languageCode` | string | Detected ISO 639-1 language code | | `language` | string | Detected language name | | `credit` | string | Remaining API credit balance | | `cumulativeTopUp` | string | Total amount topped up | | `hasFreeCredit` | boolean | Whether the account has free credit | ### Fish Audio Delete Voice [#fish-audio-delete-voice] Permanently delete a voice model you own from Fish Audio #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Fish Audio API key | | `voiceId` | string | Yes | ID of the voice model to delete (e.g., "9a9cf47702da476aa4629e2506d4a857") | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `voiceId` | string | ID of the deleted voice model | | `deleted` | boolean | Whether the voice model was deleted | ### Fish Audio Speech to Text [#fish-audio-speech-to-text] Transcribe a recording of up to 60 minutes with Fish Audio, with optional word timestamps and speaker turns #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Fish Audio API key | | `audioFile` | file | Yes | Recording to transcribe (e.g., MP3, WAV, M4A) | | `model` | string | No | transcribe-1-pro (default; long and multi-speaker recordings) or transcribe-1 (short recordings) | | `language` | string | No | Optional lowercase ISO 639-1 language hint (e.g., "en", "ja") | | `includeTimestamps` | boolean | No | Return word timestamps and, with transcribe-1-pro, speaker turns (default false; adds processing time) | | `numSpeakers` | number | No | Expected number of speakers, a best-effort hint for transcribe-1-pro | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------ | | `text` | string | Full transcript. With transcribe-1-pro it includes \<\|speaker:N\|> markers and bracketed cues such as \[laughter] | | `duration` | number | Audio length in seconds, including silence | | `segments` | array | Word-level timestamps (empty unless timestamps were requested) | | ↳ `text` | string | Word text | | ↳ `start` | number | Start time in seconds | | ↳ `end` | number | End time in seconds | | `speakerTurns` | array | Timed speaker turns (transcribe-1-pro with timestamps only) | | ↳ `speaker` | string | Speaker label, such as "speaker:0" | | ↳ `text` | string | What the speaker said in this turn | | ↳ `start` | number | Start time in seconds | | ↳ `end` | number | End time in seconds | | `languageCode` | string | Detected ISO 639-1 language code | | `language` | string | Detected language name | ### Fish Audio Get API Credit [#fish-audio-get-api-credit] Get the remaining Fish Audio API credit balance for the account behind the API key #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Fish Audio API key | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------- | | `credit` | string | Remaining API credit balance, as a decimal string | | `cumulativeTopUp` | string | Total amount topped up, as a decimal string | | `hasFreeCredit` | boolean | Whether the account has free credit | | `updatedAt` | string | When the balance last changed (ISO 8601) | --- # Fivetran (/integrations/fivetran) ## Usage Instructions [#usage-instructions] Integrate Fivetran into the workflow. List, create, update, pause, resume, and delete connections, trigger syncs and historical re-syncs, read sync history, warnings, and schema configs, enable or disable schemas and tables, run setup tests, generate Connect Card links, look up connector setup fields, create and inspect groups and destinations, run and cancel transformations, review users, and react to sync, connection, and transformation webhooks. ## Actions [#actions] ### Fivetran List Connections [#fivetran-list-connections] List Fivetran connections with their sync state, schedule, and last success or failure, optionally filtered by group or schema name. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `groupId` | string | No | Only return connections in this group | | `schema` | string | No | Only return the connection with this exact schema name | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `connections` | array | Connections | | ↳ `id` | string | Connection ID | | ↳ `groupId` | string | Destination group ID | | ↳ `service` | string | Connector type, e.g. okta | | ↳ `serviceVersion` | number | Connector type version | | ↳ `schema` | string | Connection name, also the destination schema name | | ↳ `paused` | boolean | Whether the connection is paused | | ↳ `pauseAfterTrial` | boolean | Whether the connection pauses when the free trial ends | | ↳ `connectedBy` | string | ID of the user who created the connection | | ↳ `createdAt` | string | When the connection was created | | ↳ `succeededAt` | string | Last successful sync time | | ↳ `failedAt` | string | Last failed sync time | | ↳ `syncFrequency` | number | Sync frequency in minutes | | ↳ `scheduleType` | string | Scheduling mode (auto or manual) | | ↳ `dailySyncTime` | string | Daily sync start time (HH:MM) for 24-hour frequency | | ↳ `dataDelaySensitivity` | string | Data delay notification level (LOW, NORMAL, HIGH, CUSTOM, SYNC\_FREQUENCY) | | ↳ `dataDelayThreshold` | number | Custom data delay threshold in minutes | | ↳ `networkingMethod` | string | Networking method, e.g. Directly or SshTunnel | | ↳ `privateLinkId` | string | Private link ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `dataChecks` | boolean | Whether automated data validation is enabled | | ↳ `destinationSchemaNames` | string | Destination schema naming (FIVETRAN\_NAMING or SOURCE\_NAMING) | | ↳ `status` | object | Current connection state | | ↳ `setupState` | string | Setup state (incomplete, connected, broken) | | ↳ `syncState` | string | Sync state (scheduled, syncing, paused, rescheduled) | | ↳ `updateState` | string | Data update state (on\_schedule, delayed) | | ↳ `isHistoricalSync` | boolean | Whether a historical re-sync is pending or running | | ↳ `schemaStatus` | string | Schema status | | ↳ `rescheduledFor` | string | Next sync attempt when the sync is rescheduled | | ↳ `tasks` | array | Tasks that need action | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `warnings` | array | Active warnings | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `schedule` | object | Sync schedule configuration | | ↳ `scheduleType` | string | Schedule type (TIME\_OF\_DAY, INTERVAL, CRON, MANUAL) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | string | Cron expression | | ↳ `daysOfWeek` | array | Days the connection can sync | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | | ↳ `config` | json | Connector-specific setup configuration | ### Fivetran Get Connection [#fivetran-get-connection] Get a Fivetran connection, including its setup, sync, and update state, open tasks and warnings, and schedule. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------- | | `connectionId` | string | Yes | ID of the connection | #### Output [#output-1] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `connection` | object | The connection | | ↳ `id` | string | Connection ID | | ↳ `groupId` | string | Destination group ID | | ↳ `service` | string | Connector type, e.g. okta | | ↳ `serviceVersion` | number | Connector type version | | ↳ `schema` | string | Connection name, also the destination schema name | | ↳ `paused` | boolean | Whether the connection is paused | | ↳ `pauseAfterTrial` | boolean | Whether the connection pauses when the free trial ends | | ↳ `connectedBy` | string | ID of the user who created the connection | | ↳ `createdAt` | string | When the connection was created | | ↳ `succeededAt` | string | Last successful sync time | | ↳ `failedAt` | string | Last failed sync time | | ↳ `syncFrequency` | number | Sync frequency in minutes | | ↳ `scheduleType` | string | Scheduling mode (auto or manual) | | ↳ `dailySyncTime` | string | Daily sync start time (HH:MM) for 24-hour frequency | | ↳ `dataDelaySensitivity` | string | Data delay notification level (LOW, NORMAL, HIGH, CUSTOM, SYNC\_FREQUENCY) | | ↳ `dataDelayThreshold` | number | Custom data delay threshold in minutes | | ↳ `networkingMethod` | string | Networking method, e.g. Directly or SshTunnel | | ↳ `privateLinkId` | string | Private link ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `dataChecks` | boolean | Whether automated data validation is enabled | | ↳ `destinationSchemaNames` | string | Destination schema naming (FIVETRAN\_NAMING or SOURCE\_NAMING) | | ↳ `status` | object | Current connection state | | ↳ `setupState` | string | Setup state (incomplete, connected, broken) | | ↳ `syncState` | string | Sync state (scheduled, syncing, paused, rescheduled) | | ↳ `updateState` | string | Data update state (on\_schedule, delayed) | | ↳ `isHistoricalSync` | boolean | Whether a historical re-sync is pending or running | | ↳ `schemaStatus` | string | Schema status | | ↳ `rescheduledFor` | string | Next sync attempt when the sync is rescheduled | | ↳ `tasks` | array | Tasks that need action | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `warnings` | array | Active warnings | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `schedule` | object | Sync schedule configuration | | ↳ `scheduleType` | string | Schedule type (TIME\_OF\_DAY, INTERVAL, CRON, MANUAL) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | string | Cron expression | | ↳ `daysOfWeek` | array | Days the connection can sync | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | | ↳ `config` | json | Connector-specific setup configuration | ### Fivetran Create Connection [#fivetran-create-connection] Create a Fivetran connection in a group. The config object holds the connector-specific settings and the destination naming: schema for most connectors, schema\_prefix for databases, or schema and table for file connectors. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `groupId` | string | Yes | ID of the destination group to create the connection in | | `service` | string | Yes | Connector type ID, e.g. okta or google\_sheets (see List Connector Types) | | `config` | json | Yes | Connector-specific setup configuration, including the destination name: schema (most connectors), schema\_prefix (databases), or schema and table (file connectors), e.g. \{"schema": "okta", "domain": "acme", "api\_token": "..."} | | `auth` | json | No | Connector-specific authorization settings, for connectors that take them | | `paused` | boolean | No | Create the connection paused | | `syncFrequency` | number | No | Sync frequency in minutes (1, 5, 15, 30, 60, 120, 180, 360, 480, 720, or 1440) | | `scheduleType` | string | No | auto lets Fivetran schedule syncs; manual runs syncs only on request | | `dailySyncTime` | string | No | Daily sync start time (HH:MM) when the sync frequency is 1440 | | `dataDelaySensitivity` | string | No | Data delay notification level: LOW, NORMAL, HIGH, CUSTOM, or SYNC\_FREQUENCY | | `dataDelayThreshold` | number | No | Custom data delay threshold in minutes, used with CUSTOM sensitivity | | `destinationSchemaNames` | string | No | Destination schema naming: FIVETRAN\_NAMING or SOURCE\_NAMING | | `pauseAfterTrial` | boolean | No | Pause the connection when its free trial ends | | `runSetupTests` | boolean | No | Run the setup tests after creating the connection | | `trustCertificates` | boolean | No | Automatically trust the source certificate during setup tests (default false) | | `trustFingerprints` | boolean | No | Automatically trust the SSH fingerprint during setup tests (default false) | #### Output [#output-2] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `connection` | object | The created connection, with setup test results when they ran | | ↳ `id` | string | Connection ID | | ↳ `groupId` | string | Destination group ID | | ↳ `service` | string | Connector type, e.g. okta | | ↳ `serviceVersion` | number | Connector type version | | ↳ `schema` | string | Connection name, also the destination schema name | | ↳ `paused` | boolean | Whether the connection is paused | | ↳ `pauseAfterTrial` | boolean | Whether the connection pauses when the free trial ends | | ↳ `connectedBy` | string | ID of the user who created the connection | | ↳ `createdAt` | string | When the connection was created | | ↳ `succeededAt` | string | Last successful sync time | | ↳ `failedAt` | string | Last failed sync time | | ↳ `syncFrequency` | number | Sync frequency in minutes | | ↳ `scheduleType` | string | Scheduling mode (auto or manual) | | ↳ `dailySyncTime` | string | Daily sync start time (HH:MM) for 24-hour frequency | | ↳ `dataDelaySensitivity` | string | Data delay notification level (LOW, NORMAL, HIGH, CUSTOM, SYNC\_FREQUENCY) | | ↳ `dataDelayThreshold` | number | Custom data delay threshold in minutes | | ↳ `networkingMethod` | string | Networking method, e.g. Directly or SshTunnel | | ↳ `privateLinkId` | string | Private link ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `dataChecks` | boolean | Whether automated data validation is enabled | | ↳ `destinationSchemaNames` | string | Destination schema naming (FIVETRAN\_NAMING or SOURCE\_NAMING) | | ↳ `status` | object | Current connection state | | ↳ `setupState` | string | Setup state (incomplete, connected, broken) | | ↳ `syncState` | string | Sync state (scheduled, syncing, paused, rescheduled) | | ↳ `updateState` | string | Data update state (on\_schedule, delayed) | | ↳ `isHistoricalSync` | boolean | Whether a historical re-sync is pending or running | | ↳ `schemaStatus` | string | Schema status | | ↳ `rescheduledFor` | string | Next sync attempt when the sync is rescheduled | | ↳ `tasks` | array | Tasks that need action | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `warnings` | array | Active warnings | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `schedule` | object | Sync schedule configuration | | ↳ `scheduleType` | string | Schedule type (TIME\_OF\_DAY, INTERVAL, CRON, MANUAL) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | string | Cron expression | | ↳ `daysOfWeek` | array | Days the connection can sync | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | | ↳ `config` | json | Connector-specific setup configuration | ### Fivetran Update Connection [#fivetran-update-connection] Update a Fivetran connection: pause or resume it, change its sync frequency or schedule, or update its configuration. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `connectionId` | string | Yes | ID of the connection | | `paused` | boolean | No | true pauses the connection, false resumes it | | `syncFrequency` | number | No | Sync frequency in minutes (1, 5, 15, 30, 60, 120, 180, 360, 480, 720, or 1440) | | `scheduleType` | string | No | auto lets Fivetran schedule syncs; manual runs syncs only on request | | `dailySyncTime` | string | No | Daily sync start time (HH:MM) when the sync frequency is 1440 | | `dataDelaySensitivity` | string | No | Data delay notification level: LOW, NORMAL, HIGH, CUSTOM, or SYNC\_FREQUENCY | | `dataDelayThreshold` | number | No | Custom data delay threshold in minutes, used with CUSTOM sensitivity | | `pauseAfterTrial` | boolean | No | Pause the connection when its free trial ends | | `isHistoricalSync` | boolean | No | true triggers a re-sync of all historical data | | `config` | json | No | Connector-specific configuration fields to change | | `auth` | json | No | Connector-specific authorization settings to change | | `runSetupTests` | boolean | No | Run the setup tests after the update | | `trustCertificates` | boolean | No | Automatically trust the source certificate during setup tests (default false) | | `trustFingerprints` | boolean | No | Automatically trust the SSH fingerprint during setup tests (default false) | #### Output [#output-3] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `connection` | object | The updated connection | | ↳ `id` | string | Connection ID | | ↳ `groupId` | string | Destination group ID | | ↳ `service` | string | Connector type, e.g. okta | | ↳ `serviceVersion` | number | Connector type version | | ↳ `schema` | string | Connection name, also the destination schema name | | ↳ `paused` | boolean | Whether the connection is paused | | ↳ `pauseAfterTrial` | boolean | Whether the connection pauses when the free trial ends | | ↳ `connectedBy` | string | ID of the user who created the connection | | ↳ `createdAt` | string | When the connection was created | | ↳ `succeededAt` | string | Last successful sync time | | ↳ `failedAt` | string | Last failed sync time | | ↳ `syncFrequency` | number | Sync frequency in minutes | | ↳ `scheduleType` | string | Scheduling mode (auto or manual) | | ↳ `dailySyncTime` | string | Daily sync start time (HH:MM) for 24-hour frequency | | ↳ `dataDelaySensitivity` | string | Data delay notification level (LOW, NORMAL, HIGH, CUSTOM, SYNC\_FREQUENCY) | | ↳ `dataDelayThreshold` | number | Custom data delay threshold in minutes | | ↳ `networkingMethod` | string | Networking method, e.g. Directly or SshTunnel | | ↳ `privateLinkId` | string | Private link ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `dataChecks` | boolean | Whether automated data validation is enabled | | ↳ `destinationSchemaNames` | string | Destination schema naming (FIVETRAN\_NAMING or SOURCE\_NAMING) | | ↳ `status` | object | Current connection state | | ↳ `setupState` | string | Setup state (incomplete, connected, broken) | | ↳ `syncState` | string | Sync state (scheduled, syncing, paused, rescheduled) | | ↳ `updateState` | string | Data update state (on\_schedule, delayed) | | ↳ `isHistoricalSync` | boolean | Whether a historical re-sync is pending or running | | ↳ `schemaStatus` | string | Schema status | | ↳ `rescheduledFor` | string | Next sync attempt when the sync is rescheduled | | ↳ `tasks` | array | Tasks that need action | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `warnings` | array | Active warnings | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `schedule` | object | Sync schedule configuration | | ↳ `scheduleType` | string | Schedule type (TIME\_OF\_DAY, INTERVAL, CRON, MANUAL) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | string | Cron expression | | ↳ `daysOfWeek` | array | Days the connection can sync | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | | ↳ `config` | json | Connector-specific setup configuration | ### Fivetran Delete Connection [#fivetran-delete-connection] Delete a Fivetran connection. This cannot be undone. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------- | | `connectionId` | string | Yes | ID of the connection | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `code` | string | Fivetran response code, e.g. Success | | `message` | string | Fivetran response message | ### Fivetran Sync Connection [#fivetran-sync-connection] Start an incremental sync of a Fivetran connection now, without changing its schedule. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `force` | boolean | No | Stop a sync that is already running and start again. By default a running sync is left alone. | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------- | | `result` | string | Sync start result (STARTED, PAUSED, INCOMPLETE, ALREADY\_RUNNING, NOT\_STARTED) | | `message` | string | Fivetran response message | ### Fivetran Re-sync Connection [#fivetran-re-sync-connection] Run a full historical re-sync of a Fivetran connection, or only of the tables listed in scope. Fivetran returns 409 if a running sync cannot finish first. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `scope` | json | No | Tables to re-sync, as a map of schema name to table names, e.g. \{"public": \["users", "orders"]}. Omit to re-sync every table. | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `code` | string | Fivetran response code, e.g. Success | | `message` | string | Fivetran response message | ### Fivetran Re-sync Tables [#fivetran-re-sync-tables] Run a historical re-sync of specific tables in a Fivetran connection without changing its schedule. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `tables` | json | Yes | Tables to re-sync, as a map of schema name to table names, e.g. \{"okta": \["system\_log", "user"]} | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `code` | string | Fivetran response code, e.g. Success | | `message` | string | Fivetran response message | ### Fivetran Run Connection Setup Tests [#fivetran-run-connection-setup-tests] Run the setup tests of a Fivetran connection without changing its configuration, and return each test result. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `trustCertificates` | boolean | No | Automatically trust the source certificate during setup tests (default false) | | `trustFingerprints` | boolean | No | Automatically trust the SSH fingerprint during setup tests (default false) | #### Output [#output-8] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `connection` | object | The connection with its setup test results in setupTests | | ↳ `id` | string | Connection ID | | ↳ `groupId` | string | Destination group ID | | ↳ `service` | string | Connector type, e.g. okta | | ↳ `serviceVersion` | number | Connector type version | | ↳ `schema` | string | Connection name, also the destination schema name | | ↳ `paused` | boolean | Whether the connection is paused | | ↳ `pauseAfterTrial` | boolean | Whether the connection pauses when the free trial ends | | ↳ `connectedBy` | string | ID of the user who created the connection | | ↳ `createdAt` | string | When the connection was created | | ↳ `succeededAt` | string | Last successful sync time | | ↳ `failedAt` | string | Last failed sync time | | ↳ `syncFrequency` | number | Sync frequency in minutes | | ↳ `scheduleType` | string | Scheduling mode (auto or manual) | | ↳ `dailySyncTime` | string | Daily sync start time (HH:MM) for 24-hour frequency | | ↳ `dataDelaySensitivity` | string | Data delay notification level (LOW, NORMAL, HIGH, CUSTOM, SYNC\_FREQUENCY) | | ↳ `dataDelayThreshold` | number | Custom data delay threshold in minutes | | ↳ `networkingMethod` | string | Networking method, e.g. Directly or SshTunnel | | ↳ `privateLinkId` | string | Private link ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `dataChecks` | boolean | Whether automated data validation is enabled | | ↳ `destinationSchemaNames` | string | Destination schema naming (FIVETRAN\_NAMING or SOURCE\_NAMING) | | ↳ `status` | object | Current connection state | | ↳ `setupState` | string | Setup state (incomplete, connected, broken) | | ↳ `syncState` | string | Sync state (scheduled, syncing, paused, rescheduled) | | ↳ `updateState` | string | Data update state (on\_schedule, delayed) | | ↳ `isHistoricalSync` | boolean | Whether a historical re-sync is pending or running | | ↳ `schemaStatus` | string | Schema status | | ↳ `rescheduledFor` | string | Next sync attempt when the sync is rescheduled | | ↳ `tasks` | array | Tasks that need action | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `warnings` | array | Active warnings | | ↳ `code` | string | Machine-readable condition code | | ↳ `message` | string | Human-readable label | | ↳ `details` | string | Additional context | | ↳ `schedule` | object | Sync schedule configuration | | ↳ `scheduleType` | string | Schedule type (TIME\_OF\_DAY, INTERVAL, CRON, MANUAL) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | string | Cron expression | | ↳ `daysOfWeek` | array | Days the connection can sync | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | | ↳ `config` | json | Connector-specific setup configuration | ### Fivetran Get Sync History [#fivetran-get-sync-history] List the recent syncs of a Fivetran connection with their outcome, failure reason, and data volume per stage. The time window is at most 7 days and defaults to the last hour. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `startTime` | string | No | Start of the time window, ISO 8601 (e.g. 2026-01-01T00:00:00Z) | | `endTime` | string | No | End of the time window, ISO 8601 (e.g. 2026-01-01T01:00:00Z) | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `syncs` | array | Syncs in the time window | | ↳ `syncId` | string | Sync ID | | ↳ `status` | string | Outcome (COMPLETED, FAILURE, CANCELED, INCOMPLETE, RESCHEDULED, PAUSED) | | ↳ `start` | string | When the sync started | | ↳ `end` | string | When the sync finished | | ↳ `reason` | string | Failure reason | | ↳ `extractVolumeMb` | number | Data extracted from the source, in MB | | ↳ `processVolumeMb` | number | Data processed, in MB | | ↳ `loadVolumeMb` | number | Data loaded into the destination, in MB | ### Fivetran Get Connection Warnings [#fivetran-get-connection-warnings] List the active warnings on a Fivetran connection, grouped by destination table. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------- | | `connectionId` | string | Yes | ID of the connection | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------- | | `warningGroups` | array | Warnings grouped by destination table | | ↳ `schema` | string | Destination schema; null when the warning is not table-specific | | ↳ `table` | string | Destination table; null when the warning is not table-specific | | ↳ `warnings` | array | Warnings on the table | | ↳ `code` | string | Warning code | | ↳ `message` | string | Warning label | | ↳ `errorMessage` | string | Additional error details | | ↳ `createdAt` | string | When the warning was raised | ### Fivetran Get Connection Schema Config [#fivetran-get-connection-schema-config] Get the schemas, tables, and columns a Fivetran connection syncs, and whether each is enabled. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------- | | `connectionId` | string | Yes | ID of the connection | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `schemas` | json | Schemas keyed by source schema name, each with name\_in\_destination, enabled, and tables keyed by table name (name\_in\_destination, enabled, sync\_mode, columns) | | `enableNewByDefault` | boolean | Whether new schemas, tables, and columns are enabled by default | | `schemaChangeHandling` | string | Schema change handling (ALLOW\_ALL, ALLOW\_COLUMNS, BLOCK\_ALL) | | `rowFilteringSupported` | boolean | Whether row filtering is available for the connection | ### Fivetran Reload Connection Schema [#fivetran-reload-connection-schema] Reload the schema config of a Fivetran connection from its source to pick up new schemas, tables, and columns. Large sources can take a long time. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `excludeMode` | string | No | PRESERVE (default) keeps the enabled state of every schema and table; EXCLUDE sets schemas and tables as disabled when the config is reloaded | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `schemas` | json | Schemas keyed by source schema name, each with name\_in\_destination, enabled, and tables keyed by table name (name\_in\_destination, enabled, sync\_mode, columns) | | `enableNewByDefault` | boolean | Whether new schemas, tables, and columns are enabled by default | | `schemaChangeHandling` | string | Schema change handling (ALLOW\_ALL, ALLOW\_COLUMNS, BLOCK\_ALL) | | `rowFilteringSupported` | boolean | Whether row filtering is available for the connection | ### Fivetran Update Connection Table [#fivetran-update-connection-table] Enable or disable syncing of one table in a Fivetran connection, and optionally change its sync mode. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `schemaName` | string | Yes | Schema name as stored in the connection schema config (case-sensitive) | | `tableName` | string | Yes | Table name as stored in the connection schema config (case-sensitive) | | `enabled` | boolean | Yes | Whether the table syncs to the destination | | `syncMode` | string | No | Sync mode: SOFT\_DELETE, HISTORY, or LIVE (only for connectors that support switching) | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `schemas` | json | Schemas keyed by source schema name, each with name\_in\_destination, enabled, and tables keyed by table name (name\_in\_destination, enabled, sync\_mode, columns) | | `enableNewByDefault` | boolean | Whether new schemas, tables, and columns are enabled by default | | `schemaChangeHandling` | string | Schema change handling (ALLOW\_ALL, ALLOW\_COLUMNS, BLOCK\_ALL) | | `rowFilteringSupported` | boolean | Whether row filtering is available for the connection | ### Fivetran Create Connect Card [#fivetran-create-connect-card] Generate a Connect Card link that lets someone authorize and finish setting up a Fivetran connection in a Fivetran-hosted form. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `redirectUri` | string | Yes | HTTPS URL to send the user to after they finish setup | | `hideSetupGuide` | boolean | No | Hide the embedded setup guide | | `allFields` | boolean | No | Show fields that are hidden by default | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------- | | `connectionId` | string | Connection ID | | `uri` | string | Connect Card URL to send the user to; it embeds a short-lived token | | `token` | string | Short-lived Connect Card token | | `redirectUri` | string | Where the user is sent after setup | ### Fivetran List Groups [#fivetran-list-groups] List the groups in the Fivetran account. Each group pairs with one destination, so the group ID is also the destination ID. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-15] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `groups` | array | Groups in the account | | ↳ `id` | string | Group ID | | ↳ `name` | string | Group name | | ↳ `createdAt` | string | When the group was created | ### Fivetran Get Group [#fivetran-get-group] Get a Fivetran group by ID. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------- | | `groupId` | string | Yes | ID of the group | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------ | -------------------------- | | `group` | object | The group | | ↳ `id` | string | Group ID | | ↳ `name` | string | Group name | | ↳ `createdAt` | string | When the group was created | ### Fivetran List Destinations [#fivetran-list-destinations] List the destinations in the Fivetran account, such as Databricks or Snowflake, with their region and setup status. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-17] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------ | | `nextCursor` | string | Cursor for the next page; null on the last page | | `destinations` | array | Destinations | | ↳ `id` | string | Destination ID | | ↳ `groupId` | string | Group ID | | ↳ `service` | string | Destination type, e.g. databricks | | ↳ `region` | string | Data processing region | | ↳ `timeZoneOffset` | string | UTC offset used for sync scheduling | | ↳ `setupStatus` | string | Setup status (INCOMPLETE, CONNECTED, BROKEN) | | ↳ `daylightSavingTimeEnabled` | boolean | Whether the offset shifts with daylight saving time | | ↳ `networkingMethod` | string | Networking method | | ↳ `privateLinkId` | string | Private link ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | ### Fivetran Get Destination [#fivetran-get-destination] Get a Fivetran destination with its region, time zone, and setup status. #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------ | | `destinationId` | string | Yes | ID of the destination (the same as its group ID) | #### Output [#output-18] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------ | | `destination` | object | The destination | | ↳ `id` | string | Destination ID | | ↳ `groupId` | string | Group ID | | ↳ `service` | string | Destination type, e.g. databricks | | ↳ `region` | string | Data processing region | | ↳ `timeZoneOffset` | string | UTC offset used for sync scheduling | | ↳ `setupStatus` | string | Setup status (INCOMPLETE, CONNECTED, BROKEN) | | ↳ `daylightSavingTimeEnabled` | boolean | Whether the offset shifts with daylight saving time | | ↳ `networkingMethod` | string | Networking method | | ↳ `privateLinkId` | string | Private link ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | ### Fivetran Run Destination Setup Tests [#fivetran-run-destination-setup-tests] Run the setup tests of a Fivetran destination, such as a Databricks workspace, and return each test result. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `destinationId` | string | Yes | ID of the destination (the same as its group ID) | | `trustCertificates` | boolean | No | Automatically trust the source certificate during setup tests (default false) | | `trustFingerprints` | boolean | No | Automatically trust the SSH fingerprint during setup tests (default false) | #### Output [#output-19] | Parameter | Type | Description | | ----------------------------- | ------- | --------------------------------------------------------- | | `destination` | object | The destination with its setup test results in setupTests | | ↳ `id` | string | Destination ID | | ↳ `groupId` | string | Group ID | | ↳ `service` | string | Destination type, e.g. databricks | | ↳ `region` | string | Data processing region | | ↳ `timeZoneOffset` | string | UTC offset used for sync scheduling | | ↳ `setupStatus` | string | Setup status (INCOMPLETE, CONNECTED, BROKEN) | | ↳ `daylightSavingTimeEnabled` | boolean | Whether the offset shifts with daylight saving time | | ↳ `networkingMethod` | string | Networking method | | ↳ `privateLinkId` | string | Private link ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | ### Fivetran List Transformations [#fivetran-list-transformations] List Fivetran transformations (dbt Core and Quickstart) with their status, schedule, and last run times. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `groupId` | string | No | Only return transformations in this group | | `projectId` | string | No | Only return transformations in this dbt project | | `transformationType` | string | No | Only return this type: DBT\_CORE or QUICKSTART | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-20] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `transformations` | array | Transformations | | ↳ `id` | string | Transformation ID | | ↳ `type` | string | Type (DBT\_CORE, QUICKSTART) | | ↳ `status` | string | Status (NEW, SCHEDULING, RUNNING, TERMINATING, SUCCEEDED, FAILED, BLOCKED, CANCELED, PARTIALLY\_SUCCEEDED) | | ↳ `paused` | boolean | Whether the transformation is paused | | ↳ `createdAt` | string | When it was created | | ↳ `createdById` | string | ID of the creating user or key | | ↳ `lastStartedAt` | string | Last run start time | | ↳ `lastEndedAt` | string | Last run end time | | ↳ `outputModelNames` | array | Output model names | | ↳ `schedule` | object | Transformation schedule | | ↳ `scheduleType` | string | Schedule type (INTEGRATED, TIME\_OF\_DAY, INTERVAL, CRON) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | array | Cron expressions | | ↳ `daysOfWeek` | array | Days of the week | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `connectionIds` | array | Connections an integrated schedule depends on | | ↳ `transformationIds` | array | Transformations used for integrated scheduling | | ↳ `smartSyncing` | boolean | Whether Smart Syncing is enabled | ### Fivetran Get Transformation [#fivetran-get-transformation] Get a Fivetran transformation with its status, schedule, and output models. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------ | | `transformationId` | string | Yes | ID of the transformation | #### Output [#output-21] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `transformation` | object | The transformation | | ↳ `id` | string | Transformation ID | | ↳ `type` | string | Type (DBT\_CORE, QUICKSTART) | | ↳ `status` | string | Status (NEW, SCHEDULING, RUNNING, TERMINATING, SUCCEEDED, FAILED, BLOCKED, CANCELED, PARTIALLY\_SUCCEEDED) | | ↳ `paused` | boolean | Whether the transformation is paused | | ↳ `createdAt` | string | When it was created | | ↳ `createdById` | string | ID of the creating user or key | | ↳ `lastStartedAt` | string | Last run start time | | ↳ `lastEndedAt` | string | Last run end time | | ↳ `outputModelNames` | array | Output model names | | ↳ `schedule` | object | Transformation schedule | | ↳ `scheduleType` | string | Schedule type (INTEGRATED, TIME\_OF\_DAY, INTERVAL, CRON) | | ↳ `interval` | number | Interval in minutes | | ↳ `cron` | array | Cron expressions | | ↳ `daysOfWeek` | array | Days of the week | | ↳ `timeOfDay` | string | Time of day (HH:MM) | | ↳ `connectionIds` | array | Connections an integrated schedule depends on | | ↳ `transformationIds` | array | Transformations used for integrated scheduling | | ↳ `smartSyncing` | boolean | Whether Smart Syncing is enabled | ### Fivetran Run Transformation [#fivetran-run-transformation] Start a run of a Fivetran transformation now. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------ | | `transformationId` | string | Yes | ID of the transformation | | `fullRefresh` | boolean | No | Rebuild incremental models from scratch (dbt --full-refresh) | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `code` | string | Fivetran response code, e.g. Success | | `message` | string | Fivetran response message | ### Fivetran Cancel Transformation [#fivetran-cancel-transformation] Cancel a running Fivetran transformation. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------ | | `transformationId` | string | Yes | ID of the transformation | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `code` | string | Fivetran response code, e.g. Success | | `message` | string | Fivetran response message | ### Fivetran Get Account Info [#fivetran-get-account-info] Get the Fivetran account and the user or system key that the API key belongs to. #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-24] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------- | | `accountId` | string | Fivetran account ID | | `accountName` | string | Account name | | `userId` | string | User ID, returned when a user API key is used | | `systemKeyId` | string | System key ID, returned when a system key is used | ### Fivetran List Users [#fivetran-list-users] List the users and service accounts in the Fivetran account with their role, status, and last login, for access reviews. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------- | | `active` | boolean | No | true returns only enabled users, false only suspended ones; omit for both | | `userType` | string | No | Only return this type: REGULAR\_USER or SERVICE\_ACCOUNT | | `hasApiKey` | boolean | No | Only return users with (true) or without (false) an API key | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `users` | array | Users | | ↳ `id` | string | User ID | | ↳ `email` | string | Email address | | ↳ `givenName` | string | First name | | ↳ `familyName` | string | Last name | | ↳ `role` | string | Account role | | ↳ `active` | boolean | Whether the user can log in | | ↳ `verified` | boolean | Whether the email address is verified | | ↳ `invited` | boolean | Whether the user was invited | | ↳ `userType` | string | REGULAR\_USER or SERVICE\_ACCOUNT | | ↳ `hasApiKey` | boolean | Whether the user has an API key, including expired keys | | ↳ `phone` | string | Phone number | | ↳ `loggedInAt` | string | Last login time | | ↳ `createdAt` | string | When the user was created | ### Fivetran List Connector Types [#fivetran-list-connector-types] List the source connector types available in Fivetran, with the service ID to use when creating a connection. #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `cursor` | string | No | Paging cursor from the nextCursor of a previous page | | `limit` | number | No | Number of records per page, from 1 to 1000 (default 100) | #### Output [#output-26] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------------------------------- | | `nextCursor` | string | Cursor for the next page; null on the last page | | `connectorTypes` | array | Connector types | | ↳ `id` | string | Service ID used when creating a connection | | ↳ `name` | string | Display name | | ↳ `type` | string | Category, e.g. Security or Database | | ↳ `description` | string | What the connector does | | ↳ `connectorClass` | string | Connector class (standard or lite) | | ↳ `serviceStatus` | string | Availability (general\_availability, beta, private\_preview, sunset, development) | | ↳ `iconUrl` | string | Icon URL | | ↳ `linkToDocs` | string | Documentation URL | | ↳ `linkToErd` | string | ERD URL | | ↳ `supportsSchemaReload` | boolean | Whether schema reload is supported | | ↳ `supportedFeatures` | array | Supported feature IDs, e.g. RE\_SYNC or HISTORY | ### Fivetran Get Connector Type [#fivetran-get-connector-type] Get the configuration and authorization fields a Fivetran connector type takes, to build the config for Create Connection. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `service` | string | Yes | Connector type ID, e.g. okta (see List Connector Types) | #### Output [#output-27] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------------------------------- | | `connectorType` | object | The connector type | | ↳ `id` | string | Service ID used when creating a connection | | ↳ `name` | string | Display name | | ↳ `type` | string | Category, e.g. Security or Database | | ↳ `description` | string | What the connector does | | ↳ `connectorClass` | string | Connector class (standard or lite) | | ↳ `serviceStatus` | string | Availability (general\_availability, beta, private\_preview, sunset, development) | | ↳ `iconUrl` | string | Icon URL | | ↳ `linkToDocs` | string | Documentation URL | | ↳ `linkToErd` | string | ERD URL | | ↳ `supportsSchemaReload` | boolean | Whether schema reload is supported | | ↳ `supportedFeatures` | array | Supported feature IDs, e.g. RE\_SYNC or HISTORY | | `config` | json | JSON Schema of the configuration fields the connector takes in config | | `auth` | json | JSON Schema of the authorization fields the connector takes in auth, if any | ### Fivetran Update Schema Config [#fivetran-update-schema-config] Update how a Fivetran connection handles new schemas, tables, and columns, and enable or disable schemas and tables in one call. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `schemaChangeHandling` | string | No | How new source objects are handled: ALLOW\_ALL (sync new schemas, tables, and columns), ALLOW\_COLUMNS (only new columns), or BLOCK\_ALL | | `schemas` | json | No | Schemas to change, keyed by schema name, e.g. \{"public": \{"enabled": true, "tables": \{"orders": \{"enabled": false}}}} | #### Output [#output-28] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `schemas` | json | Schemas keyed by source schema name, each with name\_in\_destination, enabled, and tables keyed by table name (name\_in\_destination, enabled, sync\_mode, columns) | | `enableNewByDefault` | boolean | Whether new schemas, tables, and columns are enabled by default | | `schemaChangeHandling` | string | Schema change handling (ALLOW\_ALL, ALLOW\_COLUMNS, BLOCK\_ALL) | | `rowFilteringSupported` | boolean | Whether row filtering is available for the connection | ### Fivetran Update Connection Schema [#fivetran-update-connection-schema] Enable or disable syncing of one schema in a Fivetran connection, optionally changing several of its tables at once. #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------- | | `connectionId` | string | Yes | ID of the connection | | `schemaName` | string | Yes | Schema name as stored in the connection schema config (case-sensitive) | | `enabled` | boolean | Yes | Whether the schema syncs to the destination | | `tables` | json | No | Tables to change in this schema, keyed by table name, e.g. \{"orders": \{"enabled": false}} | #### Output [#output-29] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `schemas` | json | Schemas keyed by source schema name, each with name\_in\_destination, enabled, and tables keyed by table name (name\_in\_destination, enabled, sync\_mode, columns) | | `enableNewByDefault` | boolean | Whether new schemas, tables, and columns are enabled by default | | `schemaChangeHandling` | string | Schema change handling (ALLOW\_ALL, ALLOW\_COLUMNS, BLOCK\_ALL) | | `rowFilteringSupported` | boolean | Whether row filtering is available for the connection | ### Fivetran Create Group [#fivetran-create-group] Create a Fivetran group. Each group holds one destination, so create the group first, then its destination. #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `name` | string | Yes | Name of the group | #### Output [#output-30] | Parameter | Type | Description | | ------------- | ------ | -------------------------- | | `group` | object | The created group | | ↳ `id` | string | Group ID | | ↳ `name` | string | Group name | | ↳ `createdAt` | string | When the group was created | ### Fivetran Create Destination [#fivetran-create-destination] Create the destination for a Fivetran group, such as a Databricks workspace. The config object holds the destination-specific connection settings. #### Input [#input-31] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `groupId` | string | Yes | ID of the group the destination belongs to (each group has one destination) | | `service` | string | Yes | Destination type, e.g. databricks, snowflake, or big\_query | | `timeZoneOffset` | string | Yes | UTC offset used for sync scheduling, from -11 to +12, e.g. -5 or 0 | | `region` | string | No | Data processing region, e.g. AWS\_US\_EAST\_1 or GCP\_US\_EAST4 | | `config` | json | No | Destination-specific settings, e.g. for Databricks \{"server\_host\_name": "...", "http\_path": "...", "catalog": "...", "auth\_type": "PERSONAL\_ACCESS\_TOKEN", "personal\_access\_token": "..."} | | `daylightSavingTimeEnabled` | boolean | No | Shift the UTC offset with daylight saving time (US only) | | `runSetupTests` | boolean | No | Run the setup tests after creating the destination | | `trustCertificates` | boolean | No | Automatically trust the source certificate during setup tests (default false) | | `trustFingerprints` | boolean | No | Automatically trust the SSH fingerprint during setup tests (default false) | #### Output [#output-31] | Parameter | Type | Description | | ----------------------------- | ------- | -------------------------------------------------------------- | | `destination` | object | The created destination, with setup test results when they ran | | ↳ `id` | string | Destination ID | | ↳ `groupId` | string | Group ID | | ↳ `service` | string | Destination type, e.g. databricks | | ↳ `region` | string | Data processing region | | ↳ `timeZoneOffset` | string | UTC offset used for sync scheduling | | ↳ `setupStatus` | string | Setup status (INCOMPLETE, CONNECTED, BROKEN) | | ↳ `daylightSavingTimeEnabled` | boolean | Whether the offset shifts with daylight saving time | | ↳ `networkingMethod` | string | Networking method | | ↳ `privateLinkId` | string | Private link ID | | ↳ `hybridDeploymentAgentId` | string | Hybrid deployment agent ID | | ↳ `proxyAgentId` | string | Proxy agent ID | | ↳ `setupTests` | array | Setup test results | | ↳ `title` | string | Setup test step name | | ↳ `status` | string | Result (PASSED, SKIPPED, WARNING, FAILED, JOB\_FAILED) | | ↳ `message` | string | Result message | | ↳ `details` | json | Additional diagnostic details | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Fivetran All Events [#fivetran-all-events] Trigger workflow on any Fivetran sync, connection, or transformation event #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-32] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | json | Event-specific payload; its fields depend on the event | *** ### Fivetran Connection Created [#fivetran-connection-created] Trigger workflow when a connection is created #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-33] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | *** ### Fivetran Connection Deleted [#fivetran-connection-deleted] Trigger workflow when a connection is deleted #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | *** ### Fivetran Connection Edited [#fivetran-connection-edited] Trigger workflow when connection credentials, sync frequency, or other settings change #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-35] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | | ↳ `editType` | string | What was edited, e.g. CREDENTIALS | | ↳ `oldProperties` | json | Connector-specific properties before the edit, with secrets masked | *** ### Fivetran Connection Failed [#fivetran-connection-failed] Trigger workflow when Fivetran fails to connect to a source #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-36] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | | ↳ `testName` | string | Name of the setup test | | ↳ `message` | string | Test result message | *** ### Fivetran Connection Paused [#fivetran-connection-paused] Trigger workflow when a connection is paused, by a user or automatically #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-37] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | | ↳ `reason` | string | Why the connection was paused automatically | *** ### Fivetran Connection Re-sync Triggered [#fivetran-connection-re-sync-triggered] Trigger workflow when a historical re-sync of a connection is triggered #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-38] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | *** ### Fivetran Connection Resumed [#fivetran-connection-resumed] Trigger workflow when a connection is resumed #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-39] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | *** ### Fivetran Connection Succeeded [#fivetran-connection-succeeded] Trigger workflow when Fivetran connects to a source successfully #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-40] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | | ↳ `testName` | string | Name of the setup test | | ↳ `message` | string | Test result message | *** ### Fivetran Manual Sync Triggered [#fivetran-manual-sync-triggered] Trigger workflow when someone triggers a manual sync of a connection #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-41] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | *** ### Fivetran Sync Ended [#fivetran-sync-ended] Trigger workflow when a connection sync finishes, succeeds, fails, or is rescheduled #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-42] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------- | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `status` | string | Sync status (SUCCESSFUL, FAILURE, FAILURE\_WITH\_TASK, RESCHEDULED) | | ↳ `sync_type` | string | HISTORICAL or INCREMENTAL | | ↳ `load_volume_b` | number | Bytes loaded into the destination, on successful syncs that report it | | ↳ `reason` | string | Why the sync failed or was rescheduled | | ↳ `taskType` | string | Error type behind a FAILURE\_WITH\_TASK or RESCHEDULED status, e.g. reconnect | | ↳ `rescheduledAt` | string | When a rescheduled sync resumes | | ↳ `isRoutine` | boolean | Whether a reschedule is routine rather than error-driven | *** ### Fivetran Sync Started [#fivetran-sync-started] Trigger workflow when a connection starts syncing #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-43] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------- | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `sync_type` | string | HISTORICAL or INCREMENTAL | *** ### Fivetran Table Re-sync Triggered [#fivetran-table-re-sync-triggered] Trigger workflow when a historical re-sync of a table is triggered #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | | `triggerConnectionId` | string | No | Connection ID | #### Output [#output-44] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `actor` | string | Internal ID of the user who acted, or \_fivetran\_system for automatic actions | | ↳ `id` | string | Connection ID | | ↳ `schema` | string | Schema name | | ↳ `table` | string | Table name | *** ### Fivetran Transformation Failed [#fivetran-transformation-failed] Trigger workflow when a transformation run fails #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | #### Output [#output-45] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------- | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `id` | string | Transformation job ID | | ↳ `name` | string | Transformation job name | | ↳ `startTime` | string | When the run started | | ↳ `transformationType` | string | Job type (DBT\_CORE, QUICKSTART, DBT\_CLOUD, COALESCE) | | ↳ `schedule` | json | Job schedule (type and entries) | | ↳ `endTime` | string | When the run ended | | ↳ `result` | json | Run result with stepResults (step, success, start and end times, commandResult) | *** ### Fivetran Transformation Started [#fivetran-transformation-started] Trigger workflow when a transformation run starts #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | #### Output [#output-46] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------ | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `id` | string | Transformation job ID | | ↳ `name` | string | Transformation job name | | ↳ `startTime` | string | When the run started | | ↳ `transformationType` | string | Job type (DBT\_CORE, QUICKSTART, DBT\_CLOUD, COALESCE) | | ↳ `schedule` | json | Job schedule (type and entries) | *** ### Fivetran Transformation Succeeded [#fivetran-transformation-succeeded] Trigger workflow when a transformation run succeeds #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `apiSecret` | string | Yes | API Secret | | `triggerGroupId` | string | No | Group ID | #### Output [#output-47] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------- | | `event` | string | Event type, e.g. sync\_end | | `createdAt` | string | When the event was generated (ISO 8601) | | `connectorType` | string | Connector type of the connection, e.g. okta | | `connectorId` | string | Connection ID | | `connectorName` | string | Connection name (its destination schema) | | `syncId` | string | ID of the sync the event belongs to | | `destinationGroupId` | string | Group ID of the destination | | `data` | object | data output from the tool | | ↳ `id` | string | Transformation job ID | | ↳ `name` | string | Transformation job name | | ↳ `startTime` | string | When the run started | | ↳ `transformationType` | string | Job type (DBT\_CORE, QUICKSTART, DBT\_CLOUD, COALESCE) | | ↳ `schedule` | json | Job schedule (type and entries) | | ↳ `endTime` | string | When the run ended | | ↳ `result` | json | Run result with stepResults (step, success, start and end times, commandResult) | --- # Flint (/integrations/flint) {/* MANUAL-CONTENT-START:intro */} Use [Flint](https://www.flint.com/) in Agent Serve to start site changes from a natural-language prompt, generate up to 10 pages from a template, and check task status. Create an API key in your Flint team settings. Leave publishing off when changes need review, then use **Get Task** to collect preview URLs and the list of created, modified, or deleted pages. Poll the task until it finishes and inspect its error if it fails. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Create background agent tasks that modify your Flint sites from natural-language prompts, generate batches of pages from a template, and check task status and results. ## Actions [#actions] ### Flint Create Task [#flint-create-task] Start a background Flint agent task that modifies a site from a natural-language prompt. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Flint API key (found in Flint team settings, starts with ak\_) | | `siteId` | string | Yes | ID of the Flint site the agent should modify | | `prompt` | string | Yes | Natural-language instructions for the agent (e.g., "Add a new About page with a team section") | | `callbackUrl` | string | No | HTTPS webhook URL that Flint will POST to when the task completes or fails | | `publish` | boolean | No | Whether to automatically publish the changes when the task completes | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------- | | `taskId` | string | Identifier of the created background task | | `status` | string | Initial task status (running) | | `createdAt` | string | ISO 8601 timestamp when the task was created | ### Flint Generate Pages [#flint-generate-pages] Start a background Flint agent task that generates up to 10 pages from a template page. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Flint API key (found in Flint team settings, starts with ak\_) | | `siteId` | string | Yes | ID of the Flint site the agent should modify | | `templatePageSlug` | string | Yes | Slug of the existing template page to generate from (e.g., /case-studies/template) | | `items` | json | Yes | JSON array of 1-10 pages to generate. Each item requires targetPageSlug (slug for the new page) and context (content details the agent should use). | | `callbackUrl` | string | No | HTTPS webhook URL that Flint will POST to when the task completes or fails | | `publish` | boolean | No | Whether to automatically publish the generated pages when the task completes | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------- | | `taskId` | string | Identifier of the created background task | | `status` | string | Initial task status (running) | | `createdAt` | string | ISO 8601 timestamp when the task was created | ### Flint Get Task [#flint-get-task] Get the status and results of a background Flint agent task. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Flint API key (found in Flint team settings, starts with ak\_) | | `taskId` | string | Yes | Identifier of the task returned when it was created (e.g., bg-...) | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------- | | `taskId` | string | Identifier of the task | | `status` | string | Task status: running, completed, or failed | | `pagesCreated` | array | Pages created by the task (populated when completed) | | `pagesModified` | array | Pages modified by the task (populated when completed) | | `pagesDeleted` | array | Pages deleted by the task (populated when completed) | | `errorMessage` | string | Error message when the task failed | --- # Freshdesk (/integrations/freshdesk) ## Usage Instructions [#usage-instructions] Integrate Freshdesk into the workflow. Create, update, look up, and search support tickets, send public replies, add private or public notes, create and find contacts, and list agents to route work. Can also run workflows when a Freshdesk automation rule posts a webhook for a new or updated ticket. Requires your Freshdesk subdomain and an agent API key. ## Actions [#actions] ### Freshdesk Create Ticket [#freshdesk-create-ticket] Create a support ticket in Freshdesk for a requester email, requester ID, or phone. Status defaults to Open and priority to Low. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `email` | string | No | Requester email. A new contact is created if none exists. Creating a ticket needs an email, requester ID, or phone. | | `requesterId` | string | No | ID of an existing requester contact, instead of the email | | `phone` | string | No | Requester phone. Without an email, the requester name is also required. | | `name` | string | No | Requester name | | `subject` | string | No | Ticket subject | | `description` | string | No | Ticket description, HTML allowed | | `status` | number | No | Status: 2 Open (default on create), 3 Pending, 4 Resolved, 5 Closed | | `priority` | number | No | Priority: 1 Low (default on create), 2 Medium, 3 High, 4 Urgent | | `source` | number | No | Channel: 1 Email, 2 Portal (default), 3 Phone, 7 Chat, 9 Feedback widget, 10 Outbound email | | `type` | string | No | Ticket type, e.g. "Question", "Incident", or "Problem" | | `responderId` | string | No | ID of the agent to assign | | `groupId` | string | No | ID of the group to assign | | `companyId` | string | No | Company ID of the requester (Multiple Companies feature) | | `productId` | string | No | ID of the product | | `tags` | string | No | Comma-separated tags. On update this replaces the existing tags. | | `ccEmails` | string | No | Comma-separated CC email addresses (create only) | | `dueBy` | string | No | Resolution due time, ISO 8601 | | `frDueBy` | string | No | First response due time, ISO 8601 | | `customFields` | json | No | Custom field values keyed by name, e.g. \{"cf\_order\_id": "A-1001"} | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `ticket` | object | The created ticket | | ↳ `customFields` | json | Custom field values keyed by name | | ↳ `requester` | object | Requester details, when requested with Include Requester | ### Freshdesk Update Ticket [#freshdesk-update-ticket] Update a Freshdesk ticket by ID: change status, priority, assigned agent or group, type, tags, or custom fields. Only the fields you set change. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `ticketId` | string | Yes | ID of the ticket to update | | `email` | string | No | Requester email. A new contact is created if none exists. Creating a ticket needs an email, requester ID, or phone. | | `requesterId` | string | No | ID of an existing requester contact, instead of the email | | `phone` | string | No | Requester phone. Without an email, the requester name is also required. | | `name` | string | No | Requester name | | `subject` | string | No | Ticket subject | | `description` | string | No | Ticket description, HTML allowed | | `status` | number | No | Status: 2 Open (default on create), 3 Pending, 4 Resolved, 5 Closed | | `priority` | number | No | Priority: 1 Low (default on create), 2 Medium, 3 High, 4 Urgent | | `source` | number | No | Channel: 1 Email, 2 Portal (default), 3 Phone, 7 Chat, 9 Feedback widget, 10 Outbound email | | `type` | string | No | Ticket type, e.g. "Question", "Incident", or "Problem" | | `responderId` | string | No | ID of the agent to assign | | `groupId` | string | No | ID of the group to assign | | `companyId` | string | No | Company ID of the requester (Multiple Companies feature) | | `productId` | string | No | ID of the product | | `tags` | string | No | Comma-separated tags. On update this replaces the existing tags. | | `ccEmails` | string | No | Comma-separated CC email addresses (create only) | | `dueBy` | string | No | Resolution due time, ISO 8601 | | `frDueBy` | string | No | First response due time, ISO 8601 | | `customFields` | json | No | Custom field values keyed by name, e.g. \{"cf\_order\_id": "A-1001"} | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `ticket` | object | The updated ticket | | ↳ `customFields` | json | Custom field values keyed by name | | ↳ `requester` | object | Requester details, when requested with Include Requester | ### Freshdesk Get Ticket [#freshdesk-get-ticket] Get a Freshdesk ticket by ID, including its description, status, priority, and assignment. Optionally embeds the requester (one extra API credit). #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `ticketId` | string | Yes | ID of the ticket | | `includeRequester` | boolean | No | Embed the requester's name, email, phone, and mobile | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `ticket` | object | The ticket | | ↳ `customFields` | json | Custom field values keyed by name | | ↳ `requester` | object | Requester details, when requested with Include Requester | ### Freshdesk List Tickets [#freshdesk-list-tickets] List Freshdesk tickets. "list" mode filters by requester, company, a predefined view, or update time (tickets from the last 30 days unless Updated Since is set). "search" mode runs a ticket query such as "status:2 AND priority:4" over ticket and custom fields. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `listMode` | string | No | "list" (default) to filter, or "search" to run a query | | `query` | string | No | Search query for search mode, e.g. "priority:4 AND status:2" or "tag:'refund'". Up to 512 characters. | | `filter` | string | No | Predefined filter: new\_and\_my\_open, watching, spam, or deleted | | `requesterId` | string | No | Only tickets from this requester contact ID | | `email` | string | No | Only tickets from this requester email | | `companyId` | string | No | Only tickets of this company ID | | `updatedSince` | string | No | Only tickets updated since this time, ISO 8601, e.g. 2026-10-01T00:00:00Z | | `orderBy` | string | No | Sort field: created\_at (default), due\_by, updated\_at, or status | | `orderType` | string | No | Sort direction: desc (default) or asc | | `includeRequester` | boolean | No | Embed each requester in list mode (two extra API credits) | | `page` | number | No | Page number, from 1 (search mode allows up to 10) | | `perPage` | number | No | Tickets per page in list mode (default 30, max 100). Search returns 30. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------- | | `tickets` | array | Matching tickets | | ↳ `customFields` | json | Custom field values keyed by name | | ↳ `requester` | object | Requester details, when requested with Include Requester | | `count` | number | Number of tickets returned | | `total` | number | Total matches reported by search mode | ### Freshdesk Reply to Ticket [#freshdesk-reply-to-ticket] Send a public reply on a Freshdesk ticket. The requester receives it by email from the support address. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `ticketId` | string | Yes | ID of the ticket to reply to | | `body` | string | Yes | Reply content, HTML allowed | | `fromEmail` | string | No | Support email address to send from. Defaults to the global support email. | | `ccEmails` | string | No | Comma-separated CC email addresses | | `bccEmails` | string | No | Comma-separated BCC email addresses | | `userId` | string | No | ID of the agent the reply is sent as | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ----------------------- | | `conversation` | object | The reply that was sent | ### Freshdesk Add Note [#freshdesk-add-note] Add a note to a Freshdesk ticket. Notes are private (agents only) by default; set Private to false for a public note. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `ticketId` | string | Yes | ID of the ticket | | `body` | string | Yes | Note content, HTML allowed | | `private` | boolean | No | Whether the note is private. Defaults to true. | | `notifyEmails` | string | No | Comma-separated emails of agents or users to notify | | `incoming` | boolean | No | Show the note as created from outside the helpdesk | | `userId` | string | No | ID of the agent or user adding the note | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ----------------------- | | `conversation` | object | The note that was added | ### Freshdesk Create Contact [#freshdesk-create-contact] Create a contact (customer) in Freshdesk. Needs a name plus an email, phone, mobile, or unique external ID; email must be unique. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `name` | string | Yes | Name | | `email` | string | No | Primary email address | | `phone` | string | No | Telephone number | | `mobile` | string | No | Mobile number | | `uniqueExternalId` | string | No | Your own unique ID for the contact, e.g. a CRM ID | | `companyId` | string | No | ID of the primary company | | `jobTitle` | string | No | Job title | | `description` | string | No | Short description of the contact | | `address` | string | No | Address | | `tags` | string | No | Comma-separated tags | | `otherEmails` | string | No | Comma-separated additional email addresses | | `customFields` | json | No | Custom field values keyed by name, e.g. \{"crm\_id": "C-42"} | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `contact` | object | The created contact | | ↳ `customFields` | json | Custom field values keyed by name | ### Freshdesk Get Contact [#freshdesk-get-contact] Get a Freshdesk contact by ID. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `contactId` | string | Yes | ID of the contact | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `contact` | object | The contact | | ↳ `customFields` | json | Custom field values keyed by name | ### Freshdesk Search Contacts [#freshdesk-search-contacts] Find Freshdesk contacts. "filter" matches an exact email, phone, mobile, company, or state; "query" runs a contact query such as "email:'[jane@example.com](mailto:jane@example.com)'" or "company\_id:42"; "name" autocompletes on the name and returns only id and name. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `searchMode` | string | No | "filter" (default), "query", or "name" | | `email` | string | No | Exact email to match (filter mode) | | `phone` | string | No | Exact phone number to match (filter mode) | | `mobile` | string | No | Exact mobile number to match (filter mode) | | `companyId` | string | No | Only contacts of this company ID (filter mode) | | `state` | string | No | Contact state: blocked, deleted, unverified, or verified (filter mode) | | `updatedSince` | string | No | Only contacts updated since this time, ISO 8601 (filter mode) | | `query` | string | No | Contact query for query mode, e.g. "active:true AND company\_id:42" | | `term` | string | No | Start of a name for name mode, e.g. "Jan" | | `page` | number | No | Page number, from 1 (query mode allows up to 10) | | `perPage` | number | No | Contacts per page in filter mode (default 30, max 100) | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------- | | `contacts` | array | Matching contacts. Name mode returns only id and name for each. | | ↳ `customFields` | json | Custom field values keyed by name | | `count` | number | Number of contacts returned | | `total` | number | Total matches reported by query mode | ### Freshdesk List Agents [#freshdesk-list-agents] List Freshdesk agents with their IDs, names, emails, groups, and availability, optionally filtered by email, phone, or full-time/occasional. Requires an admin API key. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `domain` | string | Yes | Freshdesk helpdesk subdomain, e.g. "acme" or "acme.freshdesk.com" | | `apiKey` | string | Yes | Freshdesk API key, from Profile Settings > View API Key | | `email` | string | No | Only the agent with this email | | `phone` | string | No | Only agents with this phone number | | `mobile` | string | No | Only agents with this mobile number | | `state` | string | No | fulltime or occasional | | `page` | number | No | Page number, from 1 | | `perPage` | number | No | Agents per page (default 30, max 100) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `agents` | array | Agents | | `count` | number | Number of agents returned | --- # Freshsales (/integrations/freshsales) ## Usage Instructions [#usage-instructions] Integrate Freshsales (Freshworks CRM) into the workflow. Create, update, look up, and search contacts, manage deals and accounts, create leads on Freshsales Classic accounts, and log the work around them: follow-up tasks, appointments, notes, and sales activities such as AI calls or WhatsApp chats. Requires your Freshsales bundle alias and API key. ## Actions [#actions] ### Freshsales Create Contact [#freshsales-create-contact] Create a contact in Freshsales. Needs an email or a mobile number; email and mobile number are unique, so a duplicate fails. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `email` | string | No | Primary email address. Creating needs an email or a mobile number. | | `mobileNumber` | string | No | Mobile number. Unique per record. | | `workNumber` | string | No | Work phone number | | `jobTitle` | string | No | Job title | | `ownerId` | string | No | ID of the user to assign as owner | | `lifecycleStageId` | string | No | ID of the lifecycle stage | | `contactStatusId` | string | No | ID of the contact status | | `salesAccountId` | string | No | ID of an existing account to set as the primary account of the contact | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `contact` | object | The created contact | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Update Contact [#freshsales-update-contact] Update fields of a Freshsales contact by ID, such as owner, lifecycle stage, phone, or custom fields. Only the fields you set change. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `contactId` | string | Yes | ID of the contact to update | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `email` | string | No | Primary email address. Creating needs an email or a mobile number. | | `mobileNumber` | string | No | Mobile number. Unique per record. | | `workNumber` | string | No | Work phone number | | `jobTitle` | string | No | Job title | | `ownerId` | string | No | ID of the user to assign as owner | | `lifecycleStageId` | string | No | ID of the lifecycle stage | | `contactStatusId` | string | No | ID of the contact status | | `salesAccountId` | string | No | ID of an existing account to set as the primary account of the contact | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `contact` | object | The updated contact | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Get Contact [#freshsales-get-contact] Get a Freshsales contact by ID. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `contactId` | string | Yes | ID of the contact | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `contact` | object | The contact | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Search Contacts [#freshsales-search-contacts] Find Freshsales contacts. "lookup" finds exact matches on one field (email by default, or name or a custom field); "search" runs a keyword search over names and emails; "filter" runs a filtered search with filter rules. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `searchMode` | string | Yes | How to search: "lookup", "search", or "filter" | | `query` | string | No | Value to look up or keywords to search for (lookup and search modes) | | `lookupField` | string | No | Field to match exactly in lookup mode: "email" (default), "name", or the internal name of a text, number, dropdown, or radio custom field | | `filterRule` | json | No | Filter rules for filter mode, e.g. \[\{"attribute": "contact\_email.email", "operator": "is\_in", "value": "[jane@example.com](mailto:jane@example.com)"}] | | `perPage` | number | No | Results per page for search and filter modes (default 10, max 100) | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------------------------------- | | `contacts` | array | Matching contacts. Keyword search returns only id, displayName, and email for each. | | ↳ `customFields` | json | Custom field values keyed by internal name | | `count` | number | Number of contacts returned | | `total` | number | Total matches reported by filter mode | ### Freshsales Create Lead [#freshsales-create-lead] Create a lead in a Freshsales Classic account (freshsales.io domain). Needs an email or a mobile number. Current Freshworks CRM accounts have no lead module; create a contact instead. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `email` | string | No | Primary email address. Creating needs an email or a mobile number. | | `mobileNumber` | string | No | Mobile number. Unique per record. | | `workNumber` | string | No | Work phone number | | `jobTitle` | string | No | Job title | | `ownerId` | string | No | ID of the user to assign as owner | | `companyName` | string | No | Name of the company the lead works for | | `leadStageId` | string | No | ID of the lead stage | | `leadSourceId` | string | No | ID of the lead source | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------ | ------------------- | | `lead` | object | The created lead | | ↳ `company` | object | Company of the lead | ### Freshsales Update Lead [#freshsales-update-lead] Update fields of a Freshsales Classic lead by ID, such as owner, lead stage, or custom fields. Only the fields you set change. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `leadId` | string | Yes | ID of the lead to update | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `email` | string | No | Primary email address. Creating needs an email or a mobile number. | | `mobileNumber` | string | No | Mobile number. Unique per record. | | `workNumber` | string | No | Work phone number | | `jobTitle` | string | No | Job title | | `ownerId` | string | No | ID of the user to assign as owner | | `companyName` | string | No | Name of the company the lead works for | | `leadStageId` | string | No | ID of the lead stage | | `leadSourceId` | string | No | ID of the lead source | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------ | ------------------- | | `lead` | object | The updated lead | | ↳ `company` | object | Company of the lead | ### Freshsales Get Lead [#freshsales-get-lead] Get a Freshsales Classic lead by ID. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `leadId` | string | Yes | ID of the lead | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | ------------------- | | `lead` | object | The lead | | ↳ `company` | object | Company of the lead | ### Freshsales Create Deal [#freshsales-create-deal] Create a deal in Freshsales. Name, amount, and the account ID are required by Freshsales. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `name` | string | Yes | Deal name | | `amount` | number | Yes | Deal value | | `salesAccountId` | string | Yes | ID of the account the deal belongs to. Freshsales requires an account on every deal. | | `dealStageId` | string | No | ID of the deal stage | | `dealPipelineId` | string | No | ID of the deal pipeline | | `ownerId` | string | No | ID of the user to assign as owner | | `expectedClose` | string | No | Expected close date, YYYY-MM-DD | | `contactIds` | string | No | Comma-separated contact IDs to link to the deal | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `deal` | object | The created deal | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Update Deal [#freshsales-update-deal] Update fields of a Freshsales deal by ID, such as stage, amount, owner, or expected close date. Only the fields you set change. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `dealId` | string | Yes | ID of the deal to update | | `name` | string | No | Deal name | | `amount` | number | No | Deal value | | `salesAccountId` | string | No | ID of the account the deal belongs to | | `dealStageId` | string | No | ID of the deal stage | | `dealPipelineId` | string | No | ID of the deal pipeline | | `ownerId` | string | No | ID of the user to assign as owner | | `expectedClose` | string | No | Expected close date, YYYY-MM-DD | | `contactIds` | string | No | Comma-separated contact IDs to link to the deal | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `deal` | object | The updated deal | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Get Deal [#freshsales-get-deal] Get a Freshsales deal by ID. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `dealId` | string | Yes | ID of the deal | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `deal` | object | The deal | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Create Account [#freshsales-create-account] Create an account (a company, called a sales account in the API) in Freshsales. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `name` | string | Yes | Account name | | `website` | string | No | Website of the account | | `phone` | string | No | Phone number of the account | | `city` | string | No | City of the account | | `country` | string | No | Country of the account | | `ownerId` | string | No | ID of the user to assign as owner | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_city": "Pune", "cf\_is\_active": true} | | `additionalFields` | json | No | Any other documented attributes in Freshsales API naming, e.g. \{"territory\_id": 3}. Explicit fields win over the same keys here. | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `account` | object | The created account | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Get Account [#freshsales-get-account] Get a Freshsales account (sales account) by ID. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `accountId` | string | Yes | ID of the account | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `account` | object | The account | | ↳ `customFields` | json | Custom field values keyed by internal name | ### Freshsales Create Task [#freshsales-create-task] Create a follow-up task in Freshsales on a contact, account, deal, or Freshsales Classic lead, assigned to a user with a due date. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `title` | string | Yes | Task title | | `dueDate` | string | Yes | When the task is due, ISO 8601, e.g. 2026-11-02T10:00:00Z | | `ownerId` | string | Yes | ID of the user the task is assigned to | | `targetType` | string | Yes | Type of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only) | | `targetId` | string | Yes | ID of the related record | | `description` | string | No | Task description | | `taskTypeId` | string | No | ID of the task type | | `outcomeId` | string | No | ID of the task outcome | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `task` | object | The created task | ### Freshsales Create Appointment [#freshsales-create-appointment] Book an appointment (meeting) in Freshsales on a contact, account, deal, or Freshsales Classic lead, with optional user and contact attendees. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `title` | string | Yes | Appointment title | | `fromDate` | string | Yes | Start time, ISO 8601, e.g. 2026-11-02T10:30:00+05:30 | | `endDate` | string | Yes | End time, ISO 8601 | | `targetType` | string | No | Type of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only) | | `targetId` | string | No | ID of the related record | | `description` | string | No | Appointment description | | `location` | string | No | Location or meeting link | | `timeZone` | string | No | Time zone name, e.g. "Chennai" | | `isAllDay` | boolean | No | Whether the appointment lasts all day | | `attendeeUserIds` | string | No | Comma-separated IDs of users to invite | | `attendeeContactIds` | string | No | Comma-separated IDs of contacts to invite | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `appointment` | object | The created appointment | | ↳ `attendeeIds` | array | IDs of the appointment attendee records | ### Freshsales Create Note [#freshsales-create-note] Add a note to a Freshsales contact, account, deal, or Freshsales Classic lead, such as a call summary or conversation recap. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `description` | string | Yes | Note text | | `targetType` | string | Yes | Type of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only) | | `targetId` | string | Yes | ID of the related record | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `note` | object | The created note | ### Freshsales Log Sales Activity [#freshsales-log-sales-activity] Log a sales activity in Freshsales, such as a call, WhatsApp chat, or demo, on a contact, account, deal, or Freshsales Classic lead. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Bundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account. | | `apiKey` | string | Yes | Freshsales API key, from Profile Settings > API Settings | | `title` | string | Yes | Title of the activity | | `salesActivityTypeId` | string | Yes | ID of the sales activity type, from Admin Settings > Sales Activities | | `startDate` | string | Yes | Start time, ISO 8601, e.g. 2026-11-02T17:00:00+05:30 | | `endDate` | string | Yes | End time, ISO 8601 | | `ownerId` | string | Yes | ID of the user who owns the activity | | `targetType` | string | Yes | Type of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only) | | `targetId` | string | Yes | ID of the related record | | `notes` | string | No | Notes about the activity, e.g. a call summary | | `outcomeId` | string | No | ID of the activity outcome | | `customFields` | json | No | Custom field values keyed by internal name, e.g. \{"cf\_call\_outcome": "Interested"} | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------ | ------------------------- | | `salesActivity` | object | The logged sales activity | --- # Gamma (/integrations/gamma) {/* MANUAL-CONTENT-START:intro */} Use [Gamma](https://gamma.app/) to generate presentations, documents, webpages, or social posts from text or an existing template. Poll Check Status for asynchronous jobs and use the returned Gamma URL when generation completes. Themes and folders control styling and organization. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Gamma into the workflow. Can generate presentations, documents, webpages, and social posts from text, create from templates, check generation status, and browse themes and folders. ## Actions [#actions] ### Gamma Generate [#gamma-generate] Generate a new Gamma presentation, document, webpage, or social post from text input. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gamma API key | | `inputText` | string | Yes | Text and image URLs used to generate your gamma (1-100,000 tokens) | | `textMode` | string | Yes | How to handle input text: generate (AI expands), condense (AI summarizes), or preserve (keep as-is) | | `format` | string | No | Output format: presentation, document, webpage, or social (default: presentation) | | `themeId` | string | No | Custom Gamma workspace theme ID (use List Themes to find available themes) | | `numCards` | number | No | Number of cards/slides to generate (1-60 for Pro, 1-75 for Ultra; default: 10) | | `cardSplit` | string | No | How to split content into cards: auto or inputTextBreaks (default: auto) | | `cardDimensions` | string | No | Card aspect ratio. Presentation: fluid, 16x9, 4x3. Document: fluid, pageless, letter, a4. Social: 1x1, 4x5, 9x16 | | `additionalInstructions` | string | No | Additional instructions for the AI generation (max 2000 chars) | | `exportAs` | string | No | Automatically export the generated gamma as pdf or pptx | | `folderIds` | string | No | Comma-separated folder IDs to store the generated gamma in | | `textAmount` | string | No | Amount of text per card: brief, medium, detailed, or extensive | | `textTone` | string | No | Tone of the generated text, e.g. "professional", "casual" (max 500 chars) | | `textAudience` | string | No | Target audience for the generated text, e.g. "executives", "students" (max 500 chars) | | `textLanguage` | string | No | Language code for the generated text (default: en) | | `imageSource` | string | No | Where to source images: aiGenerated, pictographic, unsplash, webAllImages, webFreeToUse, webFreeToUseCommercially, giphy, placeholder, or noImages | | `imageModel` | string | No | AI image generation model to use when imageSource is aiGenerated | | `imageStyle` | string | No | Style directive for AI-generated images, e.g. "watercolor", "photorealistic" (max 500 chars) | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------------------- | | `generationId` | string | The ID of the generation job. Use with Check Status to poll for completion. | ### Gamma Generate from Template [#gamma-generate-from-template] Generate a new Gamma by adapting an existing template with a prompt. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gamma API key | | `gammaId` | string | Yes | The ID of the template gamma to adapt | | `prompt` | string | Yes | Instructions for how to adapt the template (1-100,000 tokens) | | `themeId` | string | No | Custom Gamma workspace theme ID to apply | | `exportAs` | string | No | Automatically export the generated gamma as pdf or pptx | | `folderIds` | string | No | Comma-separated folder IDs to store the generated gamma in | | `imageModel` | string | No | AI image generation model to use when imageSource is aiGenerated | | `imageStyle` | string | No | Style directive for AI-generated images, e.g. "watercolor", "photorealistic" (max 500 chars) | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------------------- | | `generationId` | string | The ID of the generation job. Use with Check Status to poll for completion. | ### Gamma Check Status [#gamma-check-status] Check the status of a Gamma generation job. Returns the gamma URL when completed, or error details if failed. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gamma API key | | `generationId` | string | Yes | The generation ID returned by the Generate or Generate from Template tool | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------ | | `generationId` | string | The generation ID that was checked | | `status` | string | Generation status: pending, completed, or failed | | `gammaUrl` | string | URL of the generated gamma (only present when status is completed) | | `credits` | object | Credit usage information (only present when status is completed) | | ↳ `deducted` | number | Number of credits deducted for this generation | | ↳ `remaining` | number | Remaining credits in the account | | `error` | object | Error details (only present when status is failed) | | ↳ `message` | string | Human-readable error message | | ↳ `statusCode` | number | HTTP status code of the error | ### Gamma List Themes [#gamma-list-themes] List available themes in your Gamma workspace. Returns theme IDs, names, and keywords for styling. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Gamma API key | | `query` | string | No | Search query to filter themes by name (case-insensitive) | | `limit` | number | No | Maximum number of themes to return per page (max 50) | | `after` | string | No | Pagination cursor from a previous response (nextCursor) to fetch the next page | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------ | | `themes` | array | List of available themes | | ↳ `id` | string | Theme ID (use with themeId parameter) | | ↳ `name` | string | Theme display name | | ↳ `type` | string | Theme type: standard or custom | | ↳ `colorKeywords` | array | Color descriptors for this theme | | ↳ `toneKeywords` | array | Tone descriptors for this theme | | `hasMore` | boolean | Whether more results are available on the next page | | `nextCursor` | string | Pagination cursor to pass as the after parameter for the next page | ### Gamma List Folders [#gamma-list-folders] List available folders in your Gamma workspace. Returns folder IDs and names for organizing generated content. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Gamma API key | | `query` | string | No | Search query to filter folders by name (case-sensitive) | | `limit` | number | No | Maximum number of folders to return per page (max 50) | | `after` | string | No | Pagination cursor from a previous response (nextCursor) to fetch the next page | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------------ | | `folders` | array | List of available folders | | ↳ `id` | string | Folder ID (use with folderIds parameter) | | ↳ `name` | string | Folder display name | | `hasMore` | boolean | Whether more results are available on the next page | | `nextCursor` | string | Pagination cursor to pass as the after parameter for the next page | --- # GitHub (/integrations/github) {/* MANUAL-CONTENT-START:intro */} [GitHub](https://github.com/) hosts repositories and their pull requests, issues, and commit history. Use this integration to read repository content, automate code-review and issue workflows, and respond to GitHub events. Select an action below for its required repository identifiers, permissions, and inputs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Read and update GitHub repositories, pull requests, issues, and related records. Use trigger mode to start workflows from GitHub events. ## Actions [#actions] ### GitHub PR Reader [#github-pr-reader] Fetch PR details including diff and files changed #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `apiKey` | string | Yes | GitHub API token | | `includeFiles` | boolean | No | Whether to fetch changed-file details from the separate files endpoint | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `head` | object | Branch reference info | | ↳ `label` | string | Branch label (owner:branch) | | ↳ `ref` | string | Branch name | | ↳ `sha` | string | Commit SHA | | ↳ `repo_full_name` | string | Full name (owner/repo) of the branch's repository | | `base` | object | Branch reference info | | ↳ `label` | string | Branch label (owner:branch) | | ↳ `ref` | string | Branch name | | ↳ `sha` | string | Commit SHA | | ↳ `repo_full_name` | string | Full name (owner/repo) of the branch's repository | | `id` | number | Pull request ID | | `number` | number | Pull request number | | `title` | string | PR title | | `state` | string | PR state (open/closed) | | `html_url` | string | GitHub web URL | | `diff_url` | string | Raw diff URL | | `body` | string | PR description | | `merged` | boolean | Whether PR is merged | | `mergeable` | boolean | Whether PR is mergeable | | `merged_by` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `comments` | number | Number of comments | | `review_comments` | number | Number of review comments | | `commits` | number | Number of commits | | `additions` | number | Lines added | | `deletions` | number | Lines deleted | | `changed_files` | number | Number of changed files | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `merged_at` | string | Merge timestamp | | `files` | array | Array of changed file objects | | ↳ `sha` | string | Blob SHA | | ↳ `filename` | string | File path | | ↳ `status` | string | Change status (added/removed/modified/renamed/copied/changed/unchanged) | | ↳ `additions` | number | Lines added | | ↳ `deletions` | number | Lines deleted | | ↳ `changes` | number | Total line changes | | ↳ `blob_url` | string | Blob URL | | ↳ `raw_url` | string | Raw file URL | | ↳ `contents_url` | string | Contents API URL | | ↳ `patch` | string | Diff patch | | ↳ `previous_filename` | string | Previous filename (for renames) | ### GitHub PR Commenter [#github-pr-commenter] Create comments on GitHub PRs #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `body` | string | Yes | Comment content | | `pullNumber` | number | Yes | Pull request number | | `path` | string | No | File path for review comment | | `commentType` | string | No | Type of comment (pr\_comment or file\_comment) | | `line` | number | No | Line number for review comment | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Comment ID | | `body` | string | Comment body | | `html_url` | string | GitHub web URL | | `path` | string | File path (for file comments) | | `line` | number | Line number (for file comments) | | `side` | string | Side (LEFT/RIGHT for diff comments) | | `commit_id` | string | Commit SHA | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Repository Info [#github-repository-info] Retrieve comprehensive GitHub repository metadata including stars, forks, issues, and primary language. Supports both public and private repositories with optional authentication. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-2] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------- | | `id` | number | Repository ID | | `name` | string | Repository name | | `full_name` | string | Full repository name (owner/repo) | | `description` | string | Repository description | | `html_url` | string | GitHub web URL | | `homepage` | string | Homepage URL | | `language` | string | Primary programming language | | `default_branch` | string | Default branch name | | `visibility` | string | Repository visibility (public/private) | | `private` | boolean | Whether the repository is private | | `fork` | boolean | Whether this is a fork | | `archived` | boolean | Whether the repository is archived | | `disabled` | boolean | Whether the repository is disabled | | `stargazers_count` | number | Number of stars | | `watchers_count` | number | Number of watchers | | `forks_count` | number | Number of forks | | `open_issues_count` | number | Number of open issues | | `topics` | array | Repository topics | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `pushed_at` | string | Last push timestamp | | `owner` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `license` | object | License information | | ↳ `key` | string | License key (e.g., mit) | | ↳ `name` | string | License name | | ↳ `spdx_id` | string | SPDX identifier | ### GitHub Latest Commit [#github-latest-commit] Retrieve the latest commit from a GitHub repository #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | No | Branch name (defaults to the repository's default branch) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------- | | `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `committer` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `verification` | object | Signature verification | | ↳ `verified` | boolean | Whether signature is verified | | ↳ `reason` | string | Verification reason | | ↳ `signature` | string | GPG signature | | ↳ `payload` | string | Signed payload | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `committer` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `sha` | string | Commit SHA | | `html_url` | string | GitHub web URL | ### GitHub Issue Comment Creator [#github-issue-comment-creator] Create a comment on a GitHub issue #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `body` | string | Yes | Comment content | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Comment ID | | `body` | string | Comment body | | `html_url` | string | GitHub web URL | | `path` | string | File path (for file comments) | | `line` | number | Line number (for file comments) | | `side` | string | Side (LEFT/RIGHT for diff comments) | | `commit_id` | string | Commit SHA | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Issue Comments Lister [#github-issue-comments-lister] List all comments on a GitHub issue #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `since` | string | No | Only show comments updated after this ISO 8601 timestamp | | `per_page` | number | No | Number of results per page (max 100) | | `page` | number | No | Page number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `items` | array | Array of comment objects | | ↳ `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Comment ID | | ↳ `body` | string | Comment body | | ↳ `html_url` | string | GitHub web URL | | ↳ `path` | string | File path (for file comments) | | ↳ `line` | number | Line number (for file comments) | | ↳ `side` | string | Side (LEFT/RIGHT for diff comments) | | ↳ `commit_id` | string | Commit SHA | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `count` | number | Number of comments returned | ### GitHub Comment Updater [#github-comment-updater] Update an existing comment on a GitHub issue or pull request #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `comment_id` | number | Yes | Comment ID | | `body` | string | Yes | Updated comment content | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Comment ID | | `body` | string | Comment body | | `html_url` | string | GitHub web URL | | `path` | string | File path (for file comments) | | `line` | number | Line number (for file comments) | | `side` | string | Side (LEFT/RIGHT for diff comments) | | `commit_id` | string | Commit SHA | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Comment Deleter [#github-comment-deleter] Delete a comment on a GitHub issue or pull request #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `comment_id` | number | Yes | Comment ID | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------- | ------------------------------- | | `deleted` | boolean | Whether deletion was successful | | `comment_id` | number | Deleted comment ID | ### GitHub PR Review Comments Lister [#github-pr-review-comments-lister] List all review comments on a GitHub pull request #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `sort` | string | No | Sort by created or updated | | `direction` | string | No | Sort direction (asc or desc) | | `since` | string | No | Only show comments updated after this ISO 8601 timestamp | | `per_page` | number | No | Number of results per page (max 100) | | `page` | number | No | Page number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------- | | `items` | array | Array of review comment objects | | ↳ `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Comment ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `body` | string | Comment body | | ↳ `html_url` | string | GitHub web URL | | ↳ `path` | string | File path | | ↳ `position` | number | Position in diff | | ↳ `line` | number | Line number | | ↳ `side` | string | Side (LEFT/RIGHT) | | ↳ `commit_id` | string | Commit SHA | | ↳ `original_commit_id` | string | Original commit SHA | | ↳ `diff_hunk` | string | Diff hunk context | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `count` | number | Number of comments returned | ### GitHub Create Pull Request [#github-create-pull-request] Create a new pull request in a GitHub repository #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------- | -------- | --------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `title` | string | Yes | Pull request title | | `head` | string | Yes | The name of the branch where your changes are implemented | | `base` | string | Yes | The name of the branch you want the changes pulled into | | `body` | string | No | Pull request description (Markdown) | | `draft` | boolean | No | Create as draft pull request | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------- | ----------------------- | | `id` | number | Pull request ID | | `number` | number | Pull request number | | `title` | string | PR title | | `state` | string | PR state | | `html_url` | string | GitHub web URL | | `body` | string | PR description | | `user` | json | User who created the PR | | `head` | json | Head branch info | | `base` | json | Base branch info | | `draft` | boolean | Whether PR is a draft | | `merged` | boolean | Whether PR is merged | | `mergeable` | boolean | Whether PR is mergeable | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Update Pull Request [#github-update-pull-request] Update an existing pull request in a GitHub repository #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `title` | string | No | New pull request title | | `body` | string | No | New pull request description (Markdown) | | `state` | string | No | New state (open or closed) | | `base` | string | No | New base branch name | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------- | ----------------------- | | `id` | number | PR ID | | `number` | number | PR number | | `title` | string | PR title | | `state` | string | PR state | | `html_url` | string | GitHub web URL | | `body` | string | PR description | | `user` | json | User who created the PR | | `head` | json | Head branch info | | `base` | json | Base branch info | | `draft` | boolean | Whether PR is a draft | | `merged` | boolean | Whether PR is merged | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Merge Pull Request [#github-merge-pull-request] Merge a pull request in a GitHub repository #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `commit_title` | string | No | Title for the merge commit | | `commit_message` | string | No | Extra detail to append to merge commit message | | `merge_method` | string | No | Merge method: merge, squash, or rebase | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `sha` | string | Merge commit SHA | | `merged` | boolean | Whether merge was successful | | `message` | string | Response message | ### GitHub List Pull Requests [#github-list-pull-requests] List pull requests in a GitHub repository #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `state` | string | No | Filter by state: open, closed, or all | | `head` | string | No | Filter by head user or branch name (format: user:ref-name or organization:ref-name) | | `base` | string | No | Filter by base branch name | | `sort` | string | No | Sort by: created, updated, popularity, or long-running | | `direction` | string | No | Sort direction: asc or desc | | `per_page` | number | No | Results per page (max 100) | | `page` | number | No | Page number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `items` | array | Array of pull request objects | | ↳ `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `head` | object | Branch reference info | | ↳ `label` | string | Branch label (owner:branch) | | ↳ `ref` | string | Branch name | | ↳ `sha` | string | Commit SHA | | ↳ `base` | object | Branch reference info | | ↳ `label` | string | Branch label (owner:branch) | | ↳ `ref` | string | Branch name | | ↳ `sha` | string | Commit SHA | | ↳ `id` | number | Pull request ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Pull request number | | ↳ `title` | string | PR title | | ↳ `state` | string | PR state (open/closed) | | ↳ `html_url` | string | GitHub web URL | | ↳ `diff_url` | string | Diff URL | | ↳ `body` | string | PR description | | ↳ `locked` | boolean | Whether PR is locked | | ↳ `draft` | boolean | Whether PR is a draft | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | | ↳ `merged_at` | string | Merge timestamp | | `count` | number | Number of PRs returned | ### GitHub Get PR Files [#github-get-pr-files] Get the list of files changed in a pull request #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `per_page` | number | No | Results per page (max 100) | | `page` | number | No | Page number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-13] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------- | | `items` | array | Array of changed file objects | | ↳ `sha` | string | Blob SHA | | ↳ `filename` | string | File path | | ↳ `status` | string | Change status (added/removed/modified/renamed/copied/changed/unchanged) | | ↳ `additions` | number | Lines added | | ↳ `deletions` | number | Lines deleted | | ↳ `changes` | number | Total line changes | | ↳ `blob_url` | string | Blob URL | | ↳ `raw_url` | string | Raw file URL | | ↳ `contents_url` | string | Contents API URL | | ↳ `patch` | string | Diff patch | | ↳ `previous_filename` | string | Previous filename (for renames) | | `count` | number | Total number of files | ### GitHub Close Pull Request [#github-close-pull-request] Close a pull request in a GitHub repository #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | ----------------------- | | `id` | number | PR ID | | `number` | number | PR number | | `title` | string | PR title | | `state` | string | PR state (closed) | | `html_url` | string | GitHub web URL | | `body` | string | PR description | | `user` | json | User who created the PR | | `head` | json | Head branch info | | `base` | json | Base branch info | | `draft` | boolean | Whether PR is a draft | | `merged` | boolean | Whether PR is merged | | `closed_at` | string | Close timestamp | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Request Reviewers [#github-request-reviewers] Request reviewers for a pull request #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `reviewers` | string | No | Comma-separated list of user logins to request reviews from (at least one of reviewers or team\_reviewers is required) | | `team_reviewers` | string | No | Comma-separated list of team slugs to request reviews from | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------- | | `id` | number | PR ID | | `number` | number | PR number | | `title` | string | PR title | | `html_url` | string | GitHub web URL | | `requested_reviewers` | array | Array of requested reviewer objects | | `requested_teams` | array | Array of requested team objects | ### GitHub Create PR Review [#github-create-pr-review] Submit a review for a pull request. Use APPROVE, REQUEST\_CHANGES, or COMMENT. A body is required for REQUEST\_CHANGES and COMMENT reviews. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `pullNumber` | number | Yes | Pull request number | | `event` | string | Yes | The review action to perform: APPROVE, REQUEST\_CHANGES, or COMMENT | | `body` | string | No | The body text of the review (required for REQUEST\_CHANGES and COMMENT) | | `commit_id` | string | No | The SHA of the commit that needs a review (required when posting inline comments; defaults to the most recent commit otherwise) | | `comments` | array | No | Optional inline comments with required path, body, line, and side fields | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------- | | `id` | number | Review ID | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `body` | string | Review body text | | `state` | string | Review state (APPROVED/CHANGES\_REQUESTED/COMMENTED) | | `html_url` | string | GitHub web URL for the review | | `pull_request_url` | string | API URL of the reviewed pull request | | `commit_id` | string | SHA of the reviewed commit | | `submitted_at` | string | Review submission timestamp | ### GitHub Get File Content [#github-get-file-content] Get the content of a file from a GitHub repository. Supports files up to 1MB. Content is returned decoded and human-readable. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `path` | string | Yes | Path to the file in the repository (e.g., "src/index.ts") | | `ref` | string | No | Branch name, tag, or commit SHA (defaults to repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------- | | `name` | string | File name | | `path` | string | Full path in repository | | `sha` | string | Git blob SHA | | `size` | number | File size in bytes | | `type` | string | Content type (file/dir/symlink/submodule) | | `content` | string | Decoded file content | | `encoding` | string | Content encoding | | `html_url` | string | GitHub web URL | | `download_url` | string | Direct download URL | | `git_url` | string | Git blob API URL | | `_links` | json | Related links | | `file` | file | Downloaded file stored in execution files | ### GitHub Create File [#github-create-file] Create a new file in a GitHub repository. The file content will be automatically Base64 encoded. Supports files up to 1MB. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `path` | string | Yes | Path where the file will be created (e.g., "src/newfile.ts") | | `message` | string | Yes | Commit message for this file creation | | `content` | string | Yes | File content (plain text, will be Base64 encoded automatically) | | `branch` | string | No | Branch to create the file in (defaults to repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-18] | Parameter | Type | Description | | --------- | ---- | ------------------------- | | `content` | json | Created file content info | | `commit` | json | Commit information | ### GitHub Update File [#github-update-file] Update an existing file in a GitHub repository. Requires the file SHA. Content will be automatically Base64 encoded. Supports files up to 1MB. #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `path` | string | Yes | Path to the file to update (e.g., "src/index.ts") | | `message` | string | Yes | Commit message for this file update | | `content` | string | Yes | New file content (plain text, will be Base64 encoded automatically) | | `sha` | string | Yes | The blob SHA of the file being replaced (get from github\_get\_file\_content) | | `branch` | string | No | Branch to update the file in (defaults to repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-19] | Parameter | Type | Description | | --------- | ---- | ------------------------- | | `content` | json | Updated file content info | | `commit` | json | Commit information | ### GitHub Delete File [#github-delete-file] Delete a file from a GitHub repository. Requires the file SHA. This operation cannot be undone through the API. #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `path` | string | Yes | Path to the file to delete (e.g., "src/oldfile.ts") | | `message` | string | Yes | Commit message for this file deletion | | `sha` | string | Yes | The blob SHA of the file being deleted (get from github\_get\_file\_content) | | `branch` | string | No | Branch to delete the file from (defaults to repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-20] | Parameter | Type | Description | | --------- | ---- | ----------------------------------- | | `content` | json | File content info (null for delete) | | `commit` | json | Commit information | ### GitHub Get Repository Tree [#github-get-repository-tree] Get the contents of a directory in a GitHub repository. Returns a list of files and subdirectories. Use empty path or omit to get root directory contents. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `path` | string | No | Directory path (e.g., "src/components"). Leave empty for root directory. | | `ref` | string | No | Branch name, tag, or commit SHA (defaults to repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-21] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `items` | array | Array of file/directory objects | | ↳ `name` | string | File or directory name | | ↳ `path` | string | Full path in repository | | ↳ `sha` | string | Git object SHA | | ↳ `size` | number | Size in bytes | | ↳ `type` | string | Type (file/dir/symlink/submodule) | | ↳ `html_url` | string | GitHub web URL | | ↳ `download_url` | string | Direct download URL | | ↳ `git_url` | string | Git blob API URL | | ↳ `url` | string | API URL for this item | | ↳ `_links` | json | Related links | | `count` | number | Total number of items | ### GitHub Get README [#github-get-readme] Get the preferred README for a GitHub repository, with its content decoded to plain text. #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `ref` | string | No | The name of the commit/branch/tag to read the README from (defaults to the repository default branch) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-22] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------- | | `name` | string | README file name | | `path` | string | README file path | | `sha` | string | Blob SHA of the README | | `size` | number | File size in bytes | | `encoding` | string | Original content encoding from the API | | `html_url` | string | GitHub web URL for the README | | `download_url` | string | Raw download URL for the README | | `content` | string | Decoded README text content | ### GitHub List Tags [#github-list-tags] List tags for a GitHub repository. Returns tag names with their commit SHA and download URLs. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `per_page` | number | No | Number of results per page (max 100) | | `page` | number | No | Page number of the results to fetch | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `items` | array | Array of tag objects | | ↳ `name` | string | Tag name | | ↳ `zipball_url` | string | Zipball download URL | | ↳ `tarball_url` | string | Tarball download URL | | ↳ `node_id` | string | Node ID | | ↳ `commit` | object | Commit the tag points to | | ↳ `sha` | string | Commit SHA | | ↳ `url` | string | Commit API URL | | `count` | number | Number of tags returned | ### GitHub List Branches [#github-list-branches] List all branches in a GitHub repository. Optionally filter by protected status and control pagination. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------ | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `protected` | boolean | No | Filter branches by protection status | | `per_page` | number | No | Number of results per page (max 100, default 30) | | `page` | number | No | Page number for pagination (default 1) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-24] | Parameter | Type | Description | | ------------- | ------- | --------------------------- | | `items` | array | Array of branch objects | | ↳ `name` | string | Branch name | | ↳ `commit` | object | Commit reference info | | ↳ `sha` | string | Commit SHA | | ↳ `url` | string | Commit API URL | | ↳ `protected` | boolean | Whether branch is protected | | `count` | number | Number of branches returned | ### GitHub Get Branch [#github-get-branch] Get detailed information about a specific branch in a GitHub repository, including commit details and protection status. #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | Yes | Branch name | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-25] | Parameter | Type | Description | | ---------------- | ------- | --------------------------- | | `name` | string | Branch name | | `commit` | object | Commit reference info | | ↳ `sha` | string | Commit SHA | | ↳ `url` | string | Commit API URL | | `protected` | boolean | Whether branch is protected | | `protection` | json | Protection settings object | | `protection_url` | string | URL to protection settings | ### GitHub Create Branch [#github-create-branch] Create a new branch in a GitHub repository by creating a git reference pointing to a specific commit SHA. #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | Yes | Name of the branch to create | | `sha` | string | Yes | Commit SHA to point the branch to | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `ref` | string | Full reference name (refs/heads/branch) | | `node_id` | string | Git ref node ID | | `url` | string | API URL for the reference | | `object` | json | Git object with type and sha | ### GitHub Delete Branch [#github-delete-branch] Delete a branch from a GitHub repository by removing its git reference. Protected branches cannot be deleted. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | Yes | Name of the branch to delete | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the branch was deleted | | `branch` | string | Name of the deleted branch | ### GitHub Get Branch Protection [#github-get-branch-protection] Get the branch protection rules for a specific branch, including status checks, review requirements, and restrictions. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | Yes | Branch name | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-28] | Parameter | Type | Description | | ---------------------------------- | ------ | ----------------------------------- | | `url` | string | Protection settings URL | | `required_status_checks` | json | Status check requirements | | `enforce_admins` | json | Admin enforcement settings | | `required_pull_request_reviews` | json | PR review requirements | | `restrictions` | json | Push restrictions | | `required_linear_history` | json | Linear history requirement | | `allow_force_pushes` | json | Force push settings | | `allow_deletions` | json | Deletion settings | | `block_creations` | json | Creation blocking settings | | `required_conversation_resolution` | json | Conversation resolution requirement | | `required_signatures` | json | Signature requirements | ### GitHub Update Branch Protection [#github-update-branch-protection] Update branch protection rules for a specific branch, including status checks, review requirements, admin enforcement, and push restrictions. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `branch` | string | Yes | Branch name | | `required_status_checks` | object | No | Required status check configuration. Object with strict (boolean) and contexts (string array). Omit to disable status checks — GitHub receives an explicit null. | | `enforce_admins` | boolean | No | Whether to enforce restrictions for administrators. Omit to disable admin enforcement — GitHub receives an explicit null. | | `required_pull_request_reviews` | object | No | PR review requirements. Object with optional required\_approving\_review\_count, dismiss\_stale\_reviews, require\_code\_owner\_reviews. Omit to disable review requirements — GitHub receives an explicit null. | | `restrictions` | object | No | Push restrictions, available only for organization-owned repositories. Object with users (string array), teams (string array) and optional apps (string array). Omit to disable push restrictions — GitHub receives an explicit null. | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-29] | Parameter | Type | Description | | ---------------------------------- | ------ | ----------------------------------- | | `url` | string | Protection settings URL | | `required_status_checks` | json | Status check requirements | | `enforce_admins` | json | Admin enforcement settings | | `required_pull_request_reviews` | json | PR review requirements | | `restrictions` | json | Push restrictions | | `required_linear_history` | json | Linear history requirement | | `allow_force_pushes` | json | Force push settings | | `allow_deletions` | json | Deletion settings | | `block_creations` | json | Creation blocking settings | | `required_conversation_resolution` | json | Conversation resolution requirement | | `required_signatures` | json | Signature requirements | ### GitHub Create Issue [#github-create-issue] Create a new issue in a GitHub repository #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `title` | string | Yes | Issue title | | `body` | string | No | Issue description/body | | `assignees` | string | No | Comma-separated list of usernames to assign to this issue | | `labels` | string | No | Comma-separated list of label names to add to this issue | | `milestone` | number | No | Milestone number to associate with this issue | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-30] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Issue ID | | `number` | number | Issue number | | `title` | string | Issue title | | `state` | string | Issue state (open/closed) | | `html_url` | string | GitHub web URL | | `body` | string | Issue body/description | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `state_reason` | string | State reason (completed/not\_planned) | | `labels` | array | Array of label objects | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code (without #) | | ↳ `default` | boolean | Whether this is a default label | | `assignees` | array | Array of assignee objects | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `milestone` | object | GitHub milestone object | | ↳ `id` | number | Milestone ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Milestone number | | ↳ `title` | string | Milestone title | | ↳ `description` | string | Milestone description | | ↳ `state` | string | State (open or closed) | | ↳ `url` | string | API URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `labels_url` | string | Labels API URL | | ↳ `due_on` | string | Due date (ISO 8601) | | ↳ `open_issues` | number | Number of open issues | | ↳ `closed_issues` | number | Number of closed issues | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | ### GitHub Update Issue [#github-update-issue] Update an existing issue in a GitHub repository #### Input [#input-31] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `title` | string | No | New issue title | | `body` | string | No | New issue description/body | | `state` | string | No | Issue state (open or closed) | | `labels` | array | No | Array of label names (replaces all existing labels) | | `assignees` | array | No | Array of usernames (replaces all existing assignees) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-31] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Issue ID | | `number` | number | Issue number | | `title` | string | Issue title | | `state` | string | Issue state (open/closed) | | `html_url` | string | GitHub web URL | | `body` | string | Issue body/description | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `state_reason` | string | State reason (completed/not\_planned) | | `labels` | array | Array of label objects | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code (without #) | | ↳ `default` | boolean | Whether this is a default label | | `assignees` | array | Array of assignee objects | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `milestone` | object | GitHub milestone object | | ↳ `id` | number | Milestone ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Milestone number | | ↳ `title` | string | Milestone title | | ↳ `description` | string | Milestone description | | ↳ `state` | string | State (open or closed) | | ↳ `url` | string | API URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `labels_url` | string | Labels API URL | | ↳ `due_on` | string | Due date (ISO 8601) | | ↳ `open_issues` | number | Number of open issues | | ↳ `closed_issues` | number | Number of closed issues | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | ### GitHub List Issues [#github-list-issues] List issues in a GitHub repository. Note: This includes pull requests as PRs are considered issues in GitHub #### Input [#input-32] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `state` | string | No | Filter by state: open, closed, or all (default: open) | | `assignee` | string | No | Filter by assignee username | | `creator` | string | No | Filter by creator username | | `labels` | string | No | Comma-separated list of label names to filter by | | `sort` | string | No | Sort by: created, updated, or comments (default: created) | | `direction` | string | No | Sort direction: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------- | | `items` | array | Array of issue objects from GitHub API | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code (without #) | | ↳ `default` | boolean | Whether this is a default label | | `count` | number | Number of issues returned | ### GitHub Get Issue [#github-get-issue] Get detailed information about a specific issue in a GitHub repository #### Input [#input-33] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-33] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Issue ID | | `number` | number | Issue number | | `title` | string | Issue title | | `state` | string | Issue state (open/closed) | | `html_url` | string | GitHub web URL | | `body` | string | Issue body/description | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `state_reason` | string | State reason (completed/not\_planned) | | `labels` | array | Array of label objects | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code (without #) | | ↳ `default` | boolean | Whether this is a default label | | `assignees` | array | Array of assignee objects | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `milestone` | object | GitHub milestone object | | ↳ `id` | number | Milestone ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Milestone number | | ↳ `title` | string | Milestone title | | ↳ `description` | string | Milestone description | | ↳ `state` | string | State (open or closed) | | ↳ `url` | string | API URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `labels_url` | string | Labels API URL | | ↳ `due_on` | string | Due date (ISO 8601) | | ↳ `open_issues` | number | Number of open issues | | ↳ `closed_issues` | number | Number of closed issues | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | | `closed_by` | object | User who closed the issue | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | ### GitHub Close Issue [#github-close-issue] Close an issue in a GitHub repository #### Input [#input-34] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `state_reason` | string | No | Reason for closing: completed or not\_planned | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-34] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------- | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Issue ID | | `number` | number | Issue number | | `title` | string | Issue title | | `state` | string | Issue state (open/closed) | | `html_url` | string | GitHub web URL | | `body` | string | Issue body/description | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `state_reason` | string | State reason (completed/not\_planned) | | `labels` | array | Array of label objects | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code (without #) | | ↳ `default` | boolean | Whether this is a default label | | `assignees` | array | Array of assignee objects | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | ### GitHub Add Labels [#github-add-labels] Add labels to an issue in a GitHub repository #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `labels` | string | Yes | Comma-separated list of label names to add to the issue | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-35] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `items` | array | Array of label objects on the issue | | ↳ `id` | number | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `description` | string | Label description | | `count` | number | Number of labels | ### GitHub Remove Label [#github-remove-label] Remove a label from an issue in a GitHub repository #### Input [#input-36] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `name` | string | Yes | Label name to remove | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-36] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `items` | array | Remaining labels on the issue | | ↳ `id` | number | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `description` | string | Label description | | `count` | number | Number of remaining labels | ### GitHub Add Assignees [#github-add-assignees] Add assignees to an issue in a GitHub repository #### Input [#input-37] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `assignees` | string | Yes | Comma-separated list of usernames to assign to the issue | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-37] | Parameter | Type | Description | | ------------ | ------ | ------------------------- | | `id` | number | Issue ID | | `number` | number | Issue number | | `title` | string | Issue title | | `state` | string | Issue state | | `html_url` | string | GitHub web URL | | `body` | string | Issue body | | `user` | json | Issue creator | | `labels` | array | Array of label objects | | `assignees` | array | Array of assignee objects | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub Create Release [#github-create-release] Create a new release for a GitHub repository. Specify tag name, target commit, title, description, and whether it should be a draft or prerelease. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `tag_name` | string | Yes | The name of the tag for this release | | `target_commitish` | string | No | Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Defaults to the repository default branch. | | `name` | string | No | The name of the release | | `body` | string | No | Text describing the contents of the release (markdown supported) | | `draft` | boolean | No | true to create a draft (unpublished) release, false to create a published one | | `prerelease` | boolean | No | true to identify the release as a prerelease, false to identify as a full release | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-38] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------- | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Release ID | | `node_id` | string | GraphQL node ID | | `tag_name` | string | Git tag name | | `name` | string | Release name | | `body` | string | Release notes (markdown) | | `html_url` | string | GitHub web URL | | `tarball_url` | string | Source tarball URL | | `zipball_url` | string | Source zipball URL | | `draft` | boolean | Whether this is a draft release | | `prerelease` | boolean | Whether this is a prerelease | | `target_commitish` | string | Target branch or commit SHA | | `created_at` | string | Creation timestamp | | `published_at` | string | Publication timestamp | | `assets` | array | Release assets | | ↳ `uploader` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Asset ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Asset filename | | ↳ `label` | string | Asset label | | ↳ `state` | string | Asset state (uploaded/open) | | ↳ `content_type` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `download_count` | number | Number of downloads | | ↳ `browser_download_url` | string | Direct download URL | | ↳ `created_at` | string | Upload timestamp | | ↳ `updated_at` | string | Last update timestamp | ### GitHub Update Release [#github-update-release] Update an existing GitHub release. Modify tag name, target commit, title, description, draft status, or prerelease status. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `release_id` | number | Yes | The unique identifier of the release | | `tag_name` | string | No | The name of the tag | | `target_commitish` | string | No | Specifies the commitish value for where the tag is created from | | `name` | string | No | The name of the release | | `body` | string | No | Text describing the contents of the release (markdown supported) | | `draft` | boolean | No | true to set as draft, false to publish | | `prerelease` | boolean | No | true to identify as a prerelease, false for a full release | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-39] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------- | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Release ID | | `node_id` | string | GraphQL node ID | | `tag_name` | string | Git tag name | | `name` | string | Release name | | `body` | string | Release notes (markdown) | | `html_url` | string | GitHub web URL | | `tarball_url` | string | Source tarball URL | | `zipball_url` | string | Source zipball URL | | `draft` | boolean | Whether this is a draft release | | `prerelease` | boolean | Whether this is a prerelease | | `target_commitish` | string | Target branch or commit SHA | | `created_at` | string | Creation timestamp | | `published_at` | string | Publication timestamp | | `assets` | array | Release assets | | ↳ `uploader` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Asset ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Asset filename | | ↳ `label` | string | Asset label | | ↳ `state` | string | Asset state (uploaded/open) | | ↳ `content_type` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `download_count` | number | Number of downloads | | ↳ `browser_download_url` | string | Direct download URL | | ↳ `created_at` | string | Upload timestamp | | ↳ `updated_at` | string | Last update timestamp | ### GitHub List Releases [#github-list-releases] List all releases for a GitHub repository. Returns release information including tags, names, and download URLs. #### Input [#input-40] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `per_page` | number | No | Number of results per page (max 100) | | `page` | number | No | Page number of the results to fetch | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-40] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------- | | `items` | array | Array of release objects | | ↳ `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Release ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `tag_name` | string | Git tag name | | ↳ `name` | string | Release name | | ↳ `body` | string | Release notes (markdown) | | ↳ `html_url` | string | GitHub web URL | | ↳ `tarball_url` | string | Source tarball URL | | ↳ `zipball_url` | string | Source zipball URL | | ↳ `draft` | boolean | Whether this is a draft release | | ↳ `prerelease` | boolean | Whether this is a prerelease | | ↳ `target_commitish` | string | Target branch or commit SHA | | ↳ `created_at` | string | Creation timestamp | | ↳ `published_at` | string | Publication timestamp | | ↳ `assets` | array | Release assets | | ↳ `uploader` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Asset ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Asset filename | | ↳ `label` | string | Asset label | | ↳ `state` | string | Asset state (uploaded/open) | | ↳ `content_type` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `download_count` | number | Number of downloads | | ↳ `browser_download_url` | string | Direct download URL | | ↳ `created_at` | string | Upload timestamp | | ↳ `updated_at` | string | Last update timestamp | | `count` | number | Number of releases returned | ### GitHub Get Release [#github-get-release] Get detailed information about a specific GitHub release by ID. Returns release metadata including assets and download URLs. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `release_id` | number | Yes | The unique identifier of the release | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-41] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------- | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Release ID | | `node_id` | string | GraphQL node ID | | `tag_name` | string | Git tag name | | `name` | string | Release name | | `body` | string | Release notes (markdown) | | `html_url` | string | GitHub web URL | | `tarball_url` | string | Source tarball URL | | `zipball_url` | string | Source zipball URL | | `draft` | boolean | Whether this is a draft release | | `prerelease` | boolean | Whether this is a prerelease | | `target_commitish` | string | Target branch or commit SHA | | `created_at` | string | Creation timestamp | | `published_at` | string | Publication timestamp | | `assets` | array | Release assets | | ↳ `uploader` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Asset ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Asset filename | | ↳ `label` | string | Asset label | | ↳ `state` | string | Asset state (uploaded/open) | | ↳ `content_type` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `download_count` | number | Number of downloads | | ↳ `browser_download_url` | string | Direct download URL | | ↳ `created_at` | string | Upload timestamp | | ↳ `updated_at` | string | Last update timestamp | ### GitHub Get Latest Release [#github-get-latest-release] Get the latest published, non-draft, non-prerelease release for a GitHub repository. Returns release metadata including assets and download URLs. #### Input [#input-42] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-42] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------- | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `id` | number | Release ID | | `node_id` | string | GraphQL node ID | | `tag_name` | string | Git tag name | | `name` | string | Release name | | `body` | string | Release notes (markdown) | | `html_url` | string | GitHub web URL | | `tarball_url` | string | Source tarball URL | | `zipball_url` | string | Source zipball URL | | `draft` | boolean | Whether this is a draft release | | `prerelease` | boolean | Whether this is a prerelease | | `target_commitish` | string | Target branch or commit SHA | | `created_at` | string | Creation timestamp | | `published_at` | string | Publication timestamp | | `assets` | array | Release assets | | ↳ `uploader` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | ↳ `id` | number | Asset ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Asset filename | | ↳ `label` | string | Asset label | | ↳ `state` | string | Asset state (uploaded/open) | | ↳ `content_type` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `download_count` | number | Number of downloads | | ↳ `browser_download_url` | string | Direct download URL | | ↳ `created_at` | string | Upload timestamp | | ↳ `updated_at` | string | Last update timestamp | ### GitHub Delete Release [#github-delete-release] Delete a GitHub release by ID. This permanently removes the release but does not delete the associated Git tag. #### Input [#input-43] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `release_id` | number | Yes | The unique identifier of the release to delete | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-43] | Parameter | Type | Description | | ------------ | ------- | ------------------------------- | | `deleted` | boolean | Whether the release was deleted | | `release_id` | number | ID of the deleted release | ### GitHub List Workflows [#github-list-workflows] List all workflows in a GitHub repository. Returns workflow details including ID, name, path, state, and badge URL. #### Input [#input-44] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `per_page` | number | No | Number of results per page (default: 30, max: 100) | | `page` | number | No | Page number of results to fetch (default: 1) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-44] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------- | | `total_count` | number | Total number of workflows | | `items` | array | Array of workflow objects | | ↳ `id` | number | Workflow ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Workflow name | | ↳ `path` | string | Path to workflow file | | ↳ `state` | string | Workflow state (active/disabled\_manually/disabled\_inactivity) | | ↳ `html_url` | string | GitHub web URL | | ↳ `badge_url` | string | Status badge URL | | ↳ `url` | string | API URL | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `deleted_at` | string | Deletion timestamp | ### GitHub Get Workflow [#github-get-workflow] Get details of a specific GitHub Actions workflow by ID or filename. Returns workflow information including name, path, state, and badge URL. #### Input [#input-45] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `workflow_id` | string | Yes | Workflow ID (number) or workflow filename (e.g., "main.yaml") | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-45] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------- | | `id` | number | Workflow ID | | `node_id` | string | GraphQL node ID | | `name` | string | Workflow name | | `path` | string | Path to workflow file | | `state` | string | Workflow state (active/disabled\_manually/disabled\_inactivity) | | `html_url` | string | GitHub web URL | | `badge_url` | string | Status badge URL | | `url` | string | API URL | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `deleted_at` | string | Deletion timestamp | ### GitHub Trigger Workflow [#github-trigger-workflow] Trigger a workflow dispatch event for a GitHub Actions workflow. The workflow must have a workflow\_dispatch trigger configured. Returns 204 No Content on success. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `workflow_id` | string | Yes | Workflow ID (number) or workflow filename (e.g., "main.yaml") | | `ref` | string | Yes | Git reference (branch or tag name) to run the workflow on | | `inputs` | object | No | Input keys and values configured in the workflow file | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-46] | Parameter | Type | Description | | ------------- | ------- | ------------------------------ | | `triggered` | boolean | Whether workflow was triggered | | `workflow_id` | string | Workflow ID or filename | | `ref` | string | Git reference used | ### GitHub List Workflow Runs [#github-list-workflow-runs] List workflow runs for a repository, or for a single workflow when a workflow ID or filename is given. Supports filtering by actor, branch, event, and status. Returns run details including status, conclusion, and links. #### Input [#input-47] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `workflow_id` | string | No | The ID of the workflow. You can also pass the workflow file name as a string (e.g., ci.yml). Omit to list runs across the whole repository. | | `actor` | string | No | Filter by user who triggered the workflow | | `branch` | string | No | Filter by branch name | | `event` | string | No | Filter by event type (e.g., push, pull\_request, workflow\_dispatch) | | `status` | string | No | Filter by status (queued, in\_progress, completed, waiting, requested, pending) | | `per_page` | number | No | Number of results per page (default: 30, max: 100) | | `page` | number | No | Page number of results to fetch (default: 1) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-47] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `total_count` | number | Total number of workflow runs | | `items` | array | Array of workflow run objects | | ↳ `id` | number | Pull request ID | | ↳ `number` | number | Pull request number | | ↳ `url` | string | API URL | ### GitHub Get Workflow Run [#github-get-workflow-run] Get detailed information about a specific workflow run by ID. Returns status, conclusion, timing, and links to the run. #### Input [#input-48] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `run_id` | number | Yes | Workflow run ID | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-48] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------- | | `triggering_actor` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | | `head_commit` | object | Head commit information | | ↳ `id` | string | Commit SHA | | ↳ `tree_id` | string | Tree SHA | | ↳ `message` | string | Commit message | | ↳ `timestamp` | string | Commit timestamp | | `id` | number | Workflow run ID | | `name` | string | Workflow name | | `head_branch` | string | Head branch name | | `head_sha` | string | Head commit SHA | | `run_number` | number | Run number | | `run_attempt` | number | Run attempt number | | `event` | string | Event that triggered the run | | `status` | string | Run status (queued/in\_progress/completed) | | `conclusion` | string | Run conclusion (success/failure/cancelled/etc) | | `workflow_id` | number | Associated workflow ID | | `html_url` | string | GitHub web URL | | `logs_url` | string | Logs download URL | | `jobs_url` | string | Jobs API URL | | `artifacts_url` | string | Artifacts API URL | | `run_started_at` | string | Run start timestamp | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `pull_requests` | array | Associated pull requests | | ↳ `id` | number | Pull request ID | | ↳ `number` | number | Pull request number | | ↳ `url` | string | API URL | | `referenced_workflows` | array | Referenced workflows | | ↳ `path` | string | Path to referenced workflow | | ↳ `sha` | string | Commit SHA of referenced workflow | | ↳ `ref` | string | Git ref of referenced workflow | ### GitHub Cancel Workflow Run [#github-cancel-workflow-run] Cancel a workflow run. Returns 202 Accepted if cancellation is initiated, or 409 Conflict if the run cannot be cancelled (already completed). #### Input [#input-49] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `run_id` | number | Yes | Workflow run ID to cancel | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-49] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------- | | `cancelled` | boolean | Whether cancellation was initiated | | `run_id` | number | Workflow run ID | ### GitHub Rerun Workflow [#github-rerun-workflow] Rerun a workflow run. Optionally enable debug logging for the rerun. Returns 201 Created on success. #### Input [#input-50] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------------------- | | `owner` | string | Yes | Repository owner (user or organization) | | `repo` | string | Yes | Repository name | | `run_id` | number | Yes | Workflow run ID to rerun | | `enable_debug_logging` | boolean | No | Enable debug logging for the rerun (default: false) | | `apiKey` | string | Yes | GitHub Personal Access Token | #### Output [#output-50] | Parameter | Type | Description | | ----------------- | ------- | --------------------------- | | `rerun_requested` | boolean | Whether rerun was requested | | `run_id` | number | Workflow run ID | ### GitHub List Projects [#github-list-projects] List GitHub Projects V2 for an organization or user. Returns up to 20 projects with their details including ID, title, number, URL, and status. #### Input [#input-51] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------- | | `owner_type` | string | Yes | Owner type: "org" for organization or "user" for user | | `owner_login` | string | Yes | Organization or user login name | | `apiKey` | string | Yes | GitHub Personal Access Token with project read permissions | #### Output [#output-51] | Parameter | Type | Description | | -------------------- | ------- | ------------------------- | | `items` | array | Array of project objects | | ↳ `id` | string | Project node ID | | ↳ `title` | string | Project title | | ↳ `number` | number | Project number | | ↳ `url` | string | Project URL | | ↳ `closed` | boolean | Whether project is closed | | ↳ `public` | boolean | Whether project is public | | ↳ `shortDescription` | string | Short description | | `totalCount` | number | Total number of projects | ### GitHub Get Project [#github-get-project] Get detailed information about a specific GitHub Project V2 by its number. Returns project details including ID, title, description, URL, and status. #### Input [#input-52] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------- | | `owner_type` | string | Yes | Owner type: "org" for organization or "user" for user | | `owner_login` | string | Yes | Organization or user login name | | `project_number` | number | Yes | Project number | | `apiKey` | string | Yes | GitHub Personal Access Token with project read permissions | #### Output [#output-52] | Parameter | Type | Description | | ------------------ | ------- | ------------------------- | | `id` | string | Project node ID | | `title` | string | Project title | | `number` | number | Project number | | `url` | string | Project URL | | `closed` | boolean | Whether project is closed | | `public` | boolean | Whether project is public | | `shortDescription` | string | Short description | | `readme` | string | Project readme | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | ### GitHub Create Project [#github-create-project] Create a new GitHub Project V2. Requires the owner Node ID (not login name). Returns the created project with ID, title, and URL. #### Input [#input-53] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `owner_id` | string | Yes | Owner Node ID (format: PVT\_... or MDQ6...). Use GitHub GraphQL API to get this ID from organization or user login. | | `title` | string | Yes | Project title | | `apiKey` | string | Yes | GitHub Personal Access Token with project write permissions | #### Output [#output-53] | Parameter | Type | Description | | ------------------ | ------- | ------------------------- | | `id` | string | Project node ID | | `title` | string | Project title | | `number` | number | Project number | | `url` | string | Project URL | | `closed` | boolean | Whether project is closed | | `public` | boolean | Whether project is public | | `shortDescription` | string | Short description | ### GitHub Update Project [#github-update-project] Update an existing GitHub Project V2. Can update title, description, visibility (public), or status (closed). Requires the project Node ID. #### Input [#input-54] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------- | | `project_id` | string | Yes | Project Node ID (format: PVT\_...) | | `title` | string | No | New project title | | `shortDescription` | string | No | New project short description | | `project_public` | boolean | No | Set project visibility (true = public, false = private) | | `closed` | boolean | No | Set project status (true = closed, false = open) | | `apiKey` | string | Yes | GitHub Personal Access Token with project write permissions | #### Output [#output-54] | Parameter | Type | Description | | ------------------ | ------- | ------------------------- | | `id` | string | Project node ID | | `title` | string | Project title | | `number` | number | Project number | | `url` | string | Project URL | | `closed` | boolean | Whether project is closed | | `public` | boolean | Whether project is public | | `shortDescription` | string | Short description | ### GitHub Delete Project [#github-delete-project] Delete a GitHub Project V2. This action is permanent and cannot be undone. Requires the project Node ID. #### Input [#input-55] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------- | | `project_id` | string | Yes | Project Node ID (format: PVT\_...) | | `apiKey` | string | Yes | GitHub Personal Access Token with project admin permissions | #### Output [#output-55] | Parameter | Type | Description | | --------- | ------ | ----------------------- | | `id` | string | Deleted project node ID | | `title` | string | Deleted project title | | `number` | number | Deleted project number | | `url` | string | Deleted project URL | ### GitHub Search Code [#github-search-code] Search for code across GitHub repositories. Use qualifiers like repo:owner/name, language:js, path:src, extension:py #### Input [#input-56] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `q` | string | Yes | Search query with optional qualifiers (repo:, language:, path:, extension:, user:, org:) | | `sort` | string | No | Sort by indexed date (default: best match) | | `order` | string | No | Sort order: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-56] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------- | | `total_count` | number | Total matching results | | `incomplete_results` | boolean | Whether results are incomplete | | `items` | array | Array of code matches from GitHub API | | ↳ `name` | string | File name | | ↳ `path` | string | File path | | ↳ `sha` | string | Blob SHA | | ↳ `url` | string | API URL | | ↳ `git_url` | string | Git blob URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `score` | number | Search relevance score | | ↳ `repository` | object | Repository containing the code | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Full name (owner/repo) | | ↳ `private` | boolean | Whether repository is private | | ↳ `html_url` | string | GitHub web URL | | ↳ `description` | string | Repository description | | ↳ `fork` | boolean | Whether this is a fork | | ↳ `url` | string | API URL | | ↳ `owner` | object | Repository owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `text_matches` | array | Text matches showing context | | ↳ `object_url` | string | Object URL | | ↳ `object_type` | string | Object type | | ↳ `property` | string | Property matched | | ↳ `fragment` | string | Text fragment with match | | ↳ `matches` | array | Match indices | | ↳ `text` | string | Matched text | | ↳ `indices` | array | Start and end indices | ### GitHub Search Commits [#github-search-commits] Search for commits across GitHub. Use qualifiers like repo:owner/name, author:user, committer:user, author-date:>2023-01-01 #### Input [#input-57] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `q` | string | Yes | Search query with optional qualifiers (repo:, author:, committer:, author-date:, committer-date:, merge:true/false) | | `sort` | string | No | Sort by: author-date or committer-date (default: best match) | | `order` | string | No | Sort order: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-57] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------- | | `total_count` | number | Total matching results | | `incomplete_results` | boolean | Whether results are incomplete | | `items` | array | Array of commit objects from GitHub API | | ↳ `sha` | string | Commit SHA | | ↳ `node_id` | string | GraphQL node ID | | ↳ `html_url` | string | Web URL | | ↳ `url` | string | API URL | | ↳ `comments_url` | string | Comments API URL | | ↳ `score` | number | Search relevance score | | ↳ `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git author | | ↳ `name` | string | Author name | | ↳ `email` | string | Author email | | ↳ `date` | string | Author date (ISO 8601) | | ↳ `committer` | object | Git committer | | ↳ `name` | string | Committer name | | ↳ `email` | string | Committer email | | ↳ `date` | string | Commit date (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `author` | object | GitHub user (author) | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `committer` | object | GitHub user (committer) | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `repository` | object | Repository containing the commit | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Full name (owner/repo) | | ↳ `private` | boolean | Whether repository is private | | ↳ `html_url` | string | GitHub web URL | | ↳ `description` | string | Repository description | | ↳ `owner` | object | Repository owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `parents` | array | Parent commits | | ↳ `sha` | string | Parent SHA | | ↳ `url` | string | Parent API URL | | ↳ `html_url` | string | Parent web URL | ### GitHub Search Issues [#github-search-issues] Search for issues and pull requests across GitHub. Use qualifiers like repo:owner/name, is:issue, is:pr, state:open, label:bug, author:user #### Input [#input-58] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `q` | string | Yes | Search query with optional qualifiers (repo:, is:issue, is:pr, state:, label:, author:, assignee:) | | `sort` | string | No | Sort by: comments, reactions, created, updated, interactions (default: best match) | | `order` | string | No | Sort order: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-58] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------- | | `total_count` | number | Total matching results | | `incomplete_results` | boolean | Whether results are incomplete | | `items` | array | Array of issue/PR objects from GitHub API | | ↳ `id` | number | Issue ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Issue number | | ↳ `title` | string | Title | | ↳ `state` | string | State (open or closed) | | ↳ `locked` | boolean | Whether issue is locked | | ↳ `html_url` | string | Web URL | | ↳ `url` | string | API URL | | ↳ `repository_url` | string | Repository API URL | | ↳ `comments_url` | string | Comments API URL | | ↳ `body` | string | Body text | | ↳ `comments` | number | Number of comments | | ↳ `score` | number | Search relevance score | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | | ↳ `user` | object | Issue author | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `labels` | array | Issue labels | | ↳ `id` | number | Label ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Hex color code | | ↳ `default` | boolean | Whether this is a default label | | ↳ `assignee` | object | Primary assignee | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `assignees` | array | All assignees | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `milestone` | object | Associated milestone | | ↳ `id` | number | Milestone ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Milestone number | | ↳ `title` | string | Milestone title | | ↳ `description` | string | Milestone description | | ↳ `state` | string | State (open or closed) | | ↳ `html_url` | string | Web URL | | ↳ `due_on` | string | Due date | | ↳ `pull_request` | object | Pull request details (if this is a PR) | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Web URL | | ↳ `diff_url` | string | Diff URL | | ↳ `patch_url` | string | Patch URL | ### GitHub Search Repositories [#github-search-repositories] Search for repositories across GitHub. Use qualifiers like language:python, stars:>1000, topic:react, user:owner, org:name #### Input [#input-59] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `q` | string | Yes | Search query with optional qualifiers (language:, stars:, forks:, topic:, user:, org:, in:name,description,readme) | | `sort` | string | No | Sort by: stars, forks, help-wanted-issues, updated (default: best match) | | `order` | string | No | Sort order: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-59] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------- | | `total_count` | number | Total matching results | | `incomplete_results` | boolean | Whether results are incomplete | | `items` | array | Array of repository objects from GitHub API | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Full name (owner/repo) | | ↳ `private` | boolean | Whether repository is private | | ↳ `description` | string | Repository description | | ↳ `html_url` | string | GitHub web URL | | ↳ `url` | string | API URL | | ↳ `fork` | boolean | Whether this is a fork | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `pushed_at` | string | Last push timestamp | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `language` | string | Primary programming language | | ↳ `default_branch` | string | Default branch name | | ↳ `visibility` | string | Repository visibility | | ↳ `archived` | boolean | Whether repository is archived | | ↳ `disabled` | boolean | Whether repository is disabled | | ↳ `score` | number | Search relevance score | | ↳ `topics` | array | Repository topics | | ↳ `license` | object | License information | | ↳ `key` | string | License key (e.g., mit) | | ↳ `name` | string | License name | | ↳ `spdx_id` | string | SPDX identifier | | ↳ `owner` | object | Repository owner | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | ### GitHub Search Users [#github-search-users] Search for users and organizations on GitHub. Use qualifiers like type:user, type:org, followers:>1000, repos:>10, location:city #### Input [#input-60] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `q` | string | Yes | Search query with optional qualifiers (type:user/org, followers:, repos:, location:, language:, created:) | | `sort` | string | No | Sort by: followers, repositories, joined (default: best match) | | `order` | string | No | Sort order: asc or desc (default: desc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-60] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------- | | `total_count` | number | Total matching results | | `incomplete_results` | boolean | Whether results are incomplete | | `items` | array | Array of user objects from GitHub API | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `login` | string | Username | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `gravatar_id` | string | Gravatar ID | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `followers_url` | string | Followers API URL | | ↳ `following_url` | string | Following API URL | | ↳ `gists_url` | string | Gists API URL | | ↳ `starred_url` | string | Starred API URL | | ↳ `repos_url` | string | Repos API URL | | ↳ `organizations_url` | string | Organizations API URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `score` | number | Search relevance score | ### GitHub List Commits [#github-list-commits] List commits in a repository with optional filtering by SHA, path, author, committer, or date range #### Input [#input-61] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `sha` | string | No | SHA or branch to start listing commits from | | `path` | string | No | Only commits containing this file path | | `author` | string | No | GitHub login or email address to filter by author | | `committer` | string | No | GitHub login or email address to filter by committer | | `since` | string | No | Only commits after this date (ISO 8601 format) | | `until` | string | No | Only commits before this date (ISO 8601 format) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-61] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------- | | `items` | array | Array of commit objects from GitHub API | | ↳ `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `committer` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `verification` | object | Signature verification | | ↳ `verified` | boolean | Whether signature is verified | | ↳ `reason` | string | Verification reason | | ↳ `signature` | string | GPG signature | | ↳ `payload` | string | Signed payload | | ↳ `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `committer` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `sha` | string | Commit SHA | | ↳ `node_id` | string | GraphQL node ID | | ↳ `html_url` | string | GitHub web URL | | ↳ `url` | string | API URL | | ↳ `comments_url` | string | Comments API URL | | ↳ `parents` | array | Parent commits | | ↳ `sha` | string | Parent SHA | | ↳ `url` | string | Parent API URL | | ↳ `html_url` | string | Parent web URL | | `count` | number | Number of commits returned | ### GitHub Get Commit [#github-get-commit] Get detailed information about a specific commit including files changed and stats #### Input [#input-62] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `ref` | string | Yes | Commit SHA, branch name, or tag name | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-62] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------- | | `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `committer` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `verification` | object | Signature verification | | ↳ `verified` | boolean | Whether signature is verified | | ↳ `reason` | string | Verification reason | | ↳ `signature` | string | GPG signature | | ↳ `payload` | string | Signed payload | | `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `committer` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `stats` | object | Change statistics | | ↳ `additions` | number | Lines added | | ↳ `deletions` | number | Lines deleted | | ↳ `total` | number | Total changes | | `sha` | string | Commit SHA | | `node_id` | string | GraphQL node ID | | `html_url` | string | GitHub web URL | | `url` | string | API URL | | `comments_url` | string | Comments API URL | | `files` | array | Changed files (diff entries) | | ↳ `sha` | string | Blob SHA | | ↳ `filename` | string | File path | | ↳ `status` | string | Change status (added, removed, modified, renamed, copied, changed, unchanged) | | ↳ `additions` | number | Lines added | | ↳ `deletions` | number | Lines deleted | | ↳ `changes` | number | Total changes | | ↳ `blob_url` | string | Blob URL | | ↳ `raw_url` | string | Raw file URL | | ↳ `contents_url` | string | Contents API URL | | ↳ `patch` | string | Diff patch | | ↳ `previous_filename` | string | Previous filename (for renames) | | `parents` | array | Parent commits | | ↳ `sha` | string | Parent SHA | | ↳ `url` | string | Parent API URL | | ↳ `html_url` | string | Parent web URL | ### GitHub Compare Commits [#github-compare-commits] Compare two commits or branches to see the diff, commits between them, and changed files #### Input [#input-63] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `base` | string | Yes | Base branch/tag/SHA for comparison | | `head` | string | Yes | Head branch/tag/SHA for comparison | | `per_page` | number | No | Results per page for files (max 100, default: 30) | | `page` | number | No | Page number for files (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-63] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------- | | `url` | string | API URL | | `html_url` | string | GitHub web URL | | `permalink_url` | string | Permanent link URL | | `diff_url` | string | Diff download URL | | `patch_url` | string | Patch download URL | | `status` | string | Comparison status (ahead, behind, identical, diverged) | | `ahead_by` | number | Commits head is ahead of base | | `behind_by` | number | Commits head is behind base | | `total_commits` | number | Total commits in comparison | | `base_commit` | object | Base commit object | | ↳ `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `committer` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `verification` | object | Signature verification | | ↳ `verified` | boolean | Whether signature is verified | | ↳ `reason` | string | Verification reason | | ↳ `signature` | string | GPG signature | | ↳ `payload` | string | Signed payload | | ↳ `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `committer` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `sha` | string | Commit SHA | | ↳ `html_url` | string | Web URL | | `merge_base_commit` | object | Merge base commit object | | ↳ `sha` | string | Commit SHA | | ↳ `html_url` | string | Web URL | | `commits` | array | Commits between base and head | | ↳ `commit` | object | Core commit data | | ↳ `url` | string | Commit API URL | | ↳ `message` | string | Commit message | | ↳ `comment_count` | number | Number of comments | | ↳ `author` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `committer` | object | Git actor (author/committer) | | ↳ `name` | string | Name | | ↳ `email` | string | Email address | | ↳ `date` | string | Timestamp (ISO 8601) | | ↳ `tree` | object | Tree object | | ↳ `sha` | string | Tree SHA | | ↳ `url` | string | Tree API URL | | ↳ `verification` | object | Signature verification | | ↳ `verified` | boolean | Whether signature is verified | | ↳ `reason` | string | Verification reason | | ↳ `signature` | string | GPG signature | | ↳ `payload` | string | Signed payload | | ↳ `author` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `committer` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `sha` | string | Commit SHA | | ↳ `html_url` | string | Web URL | | `files` | array | Changed files (diff entries) | | ↳ `sha` | string | Blob SHA | | ↳ `filename` | string | File path | | ↳ `status` | string | Change status (added, removed, modified, renamed, copied, changed, unchanged) | | ↳ `additions` | number | Lines added | | ↳ `deletions` | number | Lines deleted | | ↳ `changes` | number | Total changes | | ↳ `blob_url` | string | Blob URL | | ↳ `raw_url` | string | Raw file URL | | ↳ `contents_url` | string | Contents API URL | | ↳ `patch` | string | Diff patch | | ↳ `previous_filename` | string | Previous filename (for renames) | ### GitHub Create Gist [#github-create-gist] Create a new gist with one or more files #### Input [#input-64] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- | | `description` | string | No | Description of the gist | | `files` | json | Yes | JSON object with filenames as keys and content as values. Example: \{"file.txt": \{"content": "Hello"}} | | `public` | boolean | No | Whether the gist is public (default: false) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-64] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Gist ID | | `node_id` | string | GraphQL node ID | | `url` | string | API URL | | `html_url` | string | Web URL | | `forks_url` | string | Forks API URL | | `commits_url` | string | Commits API URL | | `git_pull_url` | string | Git pull URL | | `git_push_url` | string | Git push URL | | `description` | string | Gist description | | `public` | boolean | Whether gist is public | | `truncated` | boolean | Whether files are truncated | | `comments` | number | Number of comments | | `comments_url` | string | Comments API URL | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `files` | object | Files in the gist (object with filenames as keys, each containing filename, type, language, raw\_url, size, truncated, content) | | `owner` | object | Gist owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | ### GitHub Get Gist [#github-get-gist] Get a gist by ID including its file contents #### Input [#input-65] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `gist_id` | string | Yes | The gist ID | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-65] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------- | | `files` | object | Files in the gist (keyed by filename) | | `owner` | object | Gist owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `id` | string | Gist ID | | `node_id` | string | GraphQL node ID | | `url` | string | API URL | | `html_url` | string | GitHub web URL | | `forks_url` | string | Forks API URL | | `commits_url` | string | Commits API URL | | `git_pull_url` | string | Git clone URL | | `git_push_url` | string | Git push URL | | `description` | string | Gist description | | `public` | boolean | Whether gist is public | | `truncated` | boolean | Whether content is truncated | | `comments` | number | Number of comments | | `comments_url` | string | Comments API URL | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### GitHub List Gists [#github-list-gists] List gists for a user or the authenticated user #### Input [#input-66] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------- | | `username` | string | No | GitHub username (omit for authenticated user's gists) | | `since` | string | No | Only gists updated after this time (ISO 8601) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-66] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------- | | `items` | array | Array of gist objects from GitHub API | | ↳ `files` | object | Files in the gist (keyed by filename) | | ↳ `owner` | object | Gist owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `id` | string | Gist ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `url` | string | API URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `forks_url` | string | Forks API URL | | ↳ `commits_url` | string | Commits API URL | | ↳ `git_pull_url` | string | Git clone URL | | ↳ `git_push_url` | string | Git push URL | | ↳ `description` | string | Gist description | | ↳ `public` | boolean | Whether gist is public | | ↳ `truncated` | boolean | Whether content is truncated | | ↳ `comments` | number | Number of comments | | ↳ `comments_url` | string | Comments API URL | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `count` | number | Number of gists returned | ### GitHub Update Gist [#github-update-gist] Update a gist description or files. To delete a file, set its value to null in files object #### Input [#input-67] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `gist_id` | string | Yes | The gist ID to update | | `description` | string | No | New description for the gist | | `files` | json | No | JSON object with filenames as keys. Set to null to delete, or provide content to update/add | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-67] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Gist ID | | `node_id` | string | GraphQL node ID | | `url` | string | API URL | | `html_url` | string | Web URL | | `forks_url` | string | Forks API URL | | `commits_url` | string | Commits API URL | | `git_pull_url` | string | Git pull URL | | `git_push_url` | string | Git push URL | | `description` | string | Gist description | | `public` | boolean | Whether gist is public | | `truncated` | boolean | Whether files are truncated | | `comments` | number | Number of comments | | `comments_url` | string | Comments API URL | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `files` | object | Files in the gist (object with filenames as keys, each containing filename, type, language, raw\_url, size, truncated, content) | | `owner` | object | Gist owner | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | ### GitHub Delete Gist [#github-delete-gist] Delete a gist by ID #### Input [#input-68] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `gist_id` | string | Yes | The gist ID to delete | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-68] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `deleted` | boolean | Whether deletion succeeded | | `gist_id` | string | The deleted gist ID | ### GitHub Fork Gist [#github-fork-gist] Fork a gist to create your own copy #### Input [#input-69] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `gist_id` | string | Yes | The gist ID to fork | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-69] | Parameter | Type | Description | | ------------- | ------- | ------------- | | `id` | string | New gist ID | | `html_url` | string | Web URL | | `description` | string | Description | | `public` | boolean | Is public | | `created_at` | string | Creation date | | `owner` | object | Owner info | | `files` | object | Files | ### GitHub Star Gist [#github-star-gist] Star a gist #### Input [#input-70] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `gist_id` | string | Yes | The gist ID to star | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-70] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `starred` | boolean | Whether starring succeeded | | `gist_id` | string | The gist ID | ### GitHub Unstar Gist [#github-unstar-gist] Unstar a gist #### Input [#input-71] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `gist_id` | string | Yes | The gist ID to unstar | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-71] | Parameter | Type | Description | | ----------- | ------- | ---------------------------- | | `unstarred` | boolean | Whether unstarring succeeded | | `gist_id` | string | The gist ID | ### GitHub Fork Repository [#github-fork-repository] Fork a repository to your account or an organization #### Input [#input-72] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------- | | `owner` | string | Yes | Repository owner to fork from | | `repo` | string | Yes | Repository name to fork | | `organization` | string | No | Organization to fork into (omit to fork to your account) | | `name` | string | No | Custom name for the forked repository | | `default_branch_only` | boolean | No | Only fork the default branch (default: false) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-72] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------- | | `id` | number | Repository ID | | `node_id` | string | GraphQL node ID | | `name` | string | Repository name | | `full_name` | string | Full name (owner/repo) | | `private` | boolean | Whether repository is private | | `description` | string | Repository description | | `html_url` | string | GitHub web URL | | `url` | string | API URL | | `clone_url` | string | HTTPS clone URL | | `ssh_url` | string | SSH clone URL | | `git_url` | string | Git protocol URL | | `default_branch` | string | Default branch name | | `fork` | boolean | Whether this is a fork | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `pushed_at` | string | Last push timestamp | | `owner` | object | Fork owner | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `parent` | object | Parent repository (source of the fork) | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | `source` | object | Source repository (ultimate origin) | | ↳ `id` | number | Repository ID | | ↳ `full_name` | string | Full name | | ↳ `html_url` | string | Web URL | ### GitHub List Forks [#github-list-forks] List forks of a repository #### Input [#input-73] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `sort` | string | No | Sort by: newest, oldest, stargazers, watchers (default: newest) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-73] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `items` | array | Array of fork repository objects from GitHub API | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Full name (owner/repo) | | ↳ `private` | boolean | Whether repository is private | | ↳ `description` | string | Repository description | | ↳ `html_url` | string | GitHub web URL | | ↳ `url` | string | API URL | | ↳ `fork` | boolean | Whether this is a fork | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `pushed_at` | string | Last push timestamp | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `language` | string | Primary programming language | | ↳ `default_branch` | string | Default branch name | | ↳ `visibility` | string | Repository visibility | | ↳ `archived` | boolean | Whether repository is archived | | ↳ `disabled` | boolean | Whether repository is disabled | | ↳ `owner` | object | Fork owner | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `count` | number | Number of forks returned | ### GitHub Create Milestone [#github-create-milestone] Create a milestone in a repository #### Input [#input-74] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------ | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `title` | string | Yes | Milestone title | | `state` | string | No | State: open or closed (default: open) | | `description` | string | No | Milestone description | | `due_on` | string | No | Due date (ISO 8601 format, e.g., 2024-12-31T23:59:59Z) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-74] | Parameter | Type | Description | | --------------- | ------- | ----------------------- | | `creator` | object | Milestone creator | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `id` | number | Milestone ID | | `node_id` | string | GraphQL node ID | | `number` | number | Milestone number | | `title` | string | Milestone title | | `description` | string | Milestone description | | `state` | string | State (open or closed) | | `url` | string | API URL | | `html_url` | string | GitHub web URL | | `labels_url` | string | Labels API URL | | `due_on` | string | Due date (ISO 8601) | | `open_issues` | number | Number of open issues | | `closed_issues` | number | Number of closed issues | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | ### GitHub Get Milestone [#github-get-milestone] Get a specific milestone by number #### Input [#input-75] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `milestone_number` | number | Yes | Milestone number | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-75] | Parameter | Type | Description | | --------------- | ------- | ----------------------- | | `creator` | object | Milestone creator | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | `id` | number | Milestone ID | | `node_id` | string | GraphQL node ID | | `number` | number | Milestone number | | `title` | string | Milestone title | | `description` | string | Milestone description | | `state` | string | State (open or closed) | | `url` | string | API URL | | `html_url` | string | GitHub web URL | | `labels_url` | string | Labels API URL | | `due_on` | string | Due date (ISO 8601) | | `open_issues` | number | Number of open issues | | `closed_issues` | number | Number of closed issues | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | ### GitHub List Milestones [#github-list-milestones] List milestones in a repository #### Input [#input-76] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `state` | string | No | Filter by state: open, closed, all (default: open) | | `sort` | string | No | Sort by: due\_on or completeness (default: due\_on) | | `direction` | string | No | Sort direction: asc or desc (default: asc) | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-76] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------ | | `items` | array | Array of milestone objects from GitHub API | | ↳ `creator` | object | Milestone creator | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `id` | number | Milestone ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `number` | number | Milestone number | | ↳ `title` | string | Milestone title | | ↳ `description` | string | Milestone description | | ↳ `state` | string | State (open or closed) | | ↳ `url` | string | API URL | | ↳ `html_url` | string | GitHub web URL | | ↳ `labels_url` | string | Labels API URL | | ↳ `due_on` | string | Due date (ISO 8601) | | ↳ `open_issues` | number | Number of open issues | | ↳ `closed_issues` | number | Number of closed issues | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `closed_at` | string | Close timestamp | | `count` | number | Number of milestones returned | ### GitHub Update Milestone [#github-update-milestone] Update a milestone in a repository #### Input [#input-77] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------ | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `milestone_number` | number | Yes | Milestone number to update | | `title` | string | No | New milestone title | | `state` | string | No | New state: open or closed | | `description` | string | No | New description | | `due_on` | string | No | New due date (ISO 8601 format) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-77] | Parameter | Type | Description | | --------------- | ------- | ----------------------- | | `id` | number | Milestone ID | | `node_id` | string | GraphQL node ID | | `number` | number | Milestone number | | `title` | string | Milestone title | | `description` | string | Milestone description | | `state` | string | State (open or closed) | | `url` | string | API URL | | `html_url` | string | GitHub web URL | | `labels_url` | string | Labels API URL | | `due_on` | string | Due date (ISO 8601) | | `open_issues` | number | Number of open issues | | `closed_issues` | number | Number of closed issues | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `closed_at` | string | Close timestamp | | `creator` | object | Milestone creator | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | ### GitHub Delete Milestone [#github-delete-milestone] Delete a milestone from a repository #### Input [#input-78] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `milestone_number` | number | Yes | Milestone number to delete | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-78] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------- | | `deleted` | boolean | Whether deletion succeeded | | `milestone_number` | number | The deleted milestone number | ### GitHub Create Issue Reaction [#github-create-issue-reaction] Add a reaction to an issue #### Input [#input-79] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `content` | string | Yes | Reaction type: +1 (thumbs up), -1 (thumbs down), laugh, confused, heart, hooray, rocket, eyes | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-79] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------------------- | | `id` | number | Reaction ID | | `node_id` | string | GraphQL node ID | | `content` | string | Reaction type (+1, -1, laugh, confused, heart, hooray, rocket, eyes) | | `created_at` | string | Creation timestamp | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | ### GitHub Delete Issue Reaction [#github-delete-issue-reaction] Remove a reaction from an issue #### Input [#input-80] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `issue_number` | number | Yes | Issue number | | `reaction_id` | number | Yes | Reaction ID to delete | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-80] | Parameter | Type | Description | | ------------- | ------- | -------------------------- | | `deleted` | boolean | Whether deletion succeeded | | `reaction_id` | number | The deleted reaction ID | ### GitHub Create Comment Reaction [#github-create-comment-reaction] Add a reaction to an issue comment #### Input [#input-81] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `comment_id` | number | Yes | Comment ID | | `content` | string | Yes | Reaction type: +1 (thumbs up), -1 (thumbs down), laugh, confused, heart, hooray, rocket, eyes | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-81] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------------------- | | `id` | number | Reaction ID | | `node_id` | string | GraphQL node ID | | `content` | string | Reaction type (+1, -1, laugh, confused, heart, hooray, rocket, eyes) | | `created_at` | string | Creation timestamp | | `user` | object | GitHub user object | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `html_url` | string | Profile URL | | ↳ `type` | string | Account type (User or Organization) | ### GitHub Delete Comment Reaction [#github-delete-comment-reaction] Remove a reaction from an issue comment #### Input [#input-82] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `comment_id` | number | Yes | Comment ID | | `reaction_id` | number | Yes | Reaction ID to delete | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-82] | Parameter | Type | Description | | ------------- | ------- | -------------------------- | | `deleted` | boolean | Whether deletion succeeded | | `reaction_id` | number | The deleted reaction ID | ### GitHub Star Repository [#github-star-repository] Star a repository #### Input [#input-83] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-83] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `starred` | boolean | Whether starring succeeded | | `owner` | string | Repository owner | | `repo` | string | Repository name | ### GitHub Unstar Repository [#github-unstar-repository] Remove star from a repository #### Input [#input-84] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-84] | Parameter | Type | Description | | ----------- | ------- | ---------------------------- | | `unstarred` | boolean | Whether unstarring succeeded | | `owner` | string | Repository owner | | `repo` | string | Repository name | ### GitHub Check Star [#github-check-star] Check if you have starred a repository #### Input [#input-85] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-85] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `starred` | boolean | Whether you have starred the repo | | `owner` | string | Repository owner | | `repo` | string | Repository name | ### GitHub List Stargazers [#github-list-stargazers] List users who have starred a repository #### Input [#input-86] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------- | | `owner` | string | Yes | Repository owner | | `repo` | string | Yes | Repository name | | `per_page` | number | No | Results per page (max 100, default: 30) | | `page` | number | No | Page number (default: 1) | | `apiKey` | string | Yes | GitHub API token | #### Output [#output-86] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `items` | array | Array of user objects from GitHub API | | ↳ `login` | string | GitHub username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | GraphQL node ID | | ↳ `avatar_url` | string | Avatar image URL | | ↳ `url` | string | API URL | | ↳ `html_url` | string | Profile page URL | | ↳ `type` | string | User or Organization | | ↳ `site_admin` | boolean | GitHub staff indicator | | ↳ `gravatar_id` | string | Gravatar ID | | ↳ `followers_url` | string | Followers API URL | | ↳ `following_url` | string | Following API URL | | ↳ `gists_url` | string | Gists API URL | | ↳ `starred_url` | string | Starred API URL | | ↳ `repos_url` | string | Repos API URL | | `count` | number | Number of stargazers returned | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### GitHub Actions Workflow Run [#github-actions-workflow-run] Trigger workflow when a GitHub Actions workflow run is requested, in progress, or completed #### Configuration [#configuration] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-87] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., workflow\_run) | | `action` | string | Action performed (requested, in\_progress, completed) | | `workflow_run` | object | workflow\_run output from the tool | | ↳ `id` | number | Workflow run ID | | ↳ `node_id` | string | Workflow run node ID | | ↳ `name` | string | Workflow name | | ↳ `workflow_id` | number | Workflow ID | | ↳ `run_number` | number | Run number for this workflow | | ↳ `run_attempt` | number | Attempt number for this run | | ↳ `event` | string | Event that triggered the workflow (push, pull\_request, etc.) | | ↳ `status` | string | Current status (queued, in\_progress, completed) | | ↳ `conclusion` | string | Conclusion (success, failure, cancelled, skipped, timed\_out, action\_required) | | ↳ `head_branch` | string | Branch name | | ↳ `head_sha` | string | Commit SHA that triggered the workflow | | ↳ `path` | string | Path to the workflow file | | ↳ `display_title` | string | Display title for the run | | ↳ `run_started_at` | string | Timestamp when the run started | | ↳ `created_at` | string | Workflow run creation timestamp | | ↳ `updated_at` | string | Workflow run last update timestamp | | ↳ `html_url` | string | Workflow run HTML URL | | ↳ `check_suite_id` | number | Associated check suite ID | | ↳ `check_suite_node_id` | string | Associated check suite node ID | | ↳ `url` | string | Workflow run API URL | | ↳ `actor` | object | actor output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `triggering_actor` | object | triggering\_actor output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name | | ↳ `private` | boolean | Whether repository is private | | ↳ `head_repository` | object | head\_repository output from the tool | | ↳ `id` | number | Head repository ID | | ↳ `node_id` | string | Head repository node ID | | ↳ `name` | string | Head repository name | | ↳ `full_name` | string | Head repository full name | | ↳ `private` | boolean | Whether repository is private | | ↳ `head_commit` | object | head\_commit output from the tool | | ↳ `id` | string | Commit SHA | | ↳ `tree_id` | string | Tree ID | | ↳ `message` | string | Commit message | | ↳ `timestamp` | string | Commit timestamp | | ↳ `author` | object | author output from the tool | | ↳ `name` | string | Author name | | ↳ `email` | string | Author email | | ↳ `committer` | object | committer output from the tool | | ↳ `name` | string | Committer name | | ↳ `email` | string | Committer email | | ↳ `pull_requests` | array | Array of associated pull requests | | ↳ `referenced_workflows` | array | Array of referenced workflow runs | | `workflow` | object | workflow output from the tool | | ↳ `id` | number | Workflow ID | | ↳ `node_id` | string | Workflow node ID | | ↳ `name` | string | Workflow name | | ↳ `path` | string | Path to workflow file | | ↳ `state` | string | Workflow state (active, deleted, disabled\_fork, etc.) | | ↳ `created_at` | string | Workflow creation timestamp | | ↳ `updated_at` | string | Workflow last update timestamp | | ↳ `url` | string | Workflow API URL | | ↳ `html_url` | string | Workflow HTML URL | | ↳ `badge_url` | string | Workflow badge URL | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub Issue Closed [#github-issue-closed] Trigger workflow when an issue is closed in a GitHub repository #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-88] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issues, pull\_request, push) | | `action` | string | Action performed (opened, closed, reopened, edited, etc.) | | `issue` | object | issue output from the tool | | ↳ `id` | number | Issue ID | | ↳ `node_id` | string | Issue node ID | | ↳ `number` | number | Issue number | | ↳ `title` | string | Issue title | | ↳ `body` | string | Issue body/description | | ↳ `state` | string | Issue state (open, closed) | | ↳ `state_reason` | string | Reason for state (completed, not\_planned, reopened) | | ↳ `html_url` | string | Issue HTML URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `milestone` | object | Milestone object if assigned | | ↳ `created_at` | string | Issue creation timestamp | | ↳ `updated_at` | string | Issue last update timestamp | | ↳ `closed_at` | string | Issue closed timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub Issue Comment [#github-issue-comment] Trigger workflow when a comment is added to an issue (not pull requests) #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-89] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issue\_comment) | | `action` | string | Action performed (created, edited, deleted) | | `issue` | object | issue output from the tool | | ↳ `number` | number | Issue number | | ↳ `title` | string | Issue title | | ↳ `state` | string | Issue state (open, closed) | | ↳ `html_url` | string | Issue HTML URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | `comment` | object | comment output from the tool | | ↳ `id` | number | Comment ID | | ↳ `node_id` | string | Comment node ID | | ↳ `body` | string | Comment text | | ↳ `html_url` | string | Comment HTML URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `created_at` | string | Comment creation timestamp | | ↳ `updated_at` | string | Comment last update timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub Issue Opened [#github-issue-opened] Trigger workflow when a new issue is opened in a GitHub repository #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-90] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issues, pull\_request, push) | | `action` | string | Action performed (opened, closed, reopened, edited, etc.) | | `issue` | object | issue output from the tool | | ↳ `id` | number | Issue ID | | ↳ `node_id` | string | Issue node ID | | ↳ `number` | number | Issue number | | ↳ `title` | string | Issue title | | ↳ `body` | string | Issue body/description | | ↳ `state` | string | Issue state (open, closed) | | ↳ `state_reason` | string | Reason for state (completed, not\_planned, reopened) | | ↳ `html_url` | string | Issue HTML URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `milestone` | object | Milestone object if assigned | | ↳ `created_at` | string | Issue creation timestamp | | ↳ `updated_at` | string | Issue last update timestamp | | ↳ `closed_at` | string | Issue closed timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub PR Closed [#github-pr-closed] Trigger workflow when a pull request is closed without being merged (e.g., abandoned) in a GitHub repository #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-91] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) | | `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) | | `number` | number | Pull request number | | `pull_request` | object | pull\_request output from the tool | | ↳ `id` | number | Pull request ID | | ↳ `node_id` | string | Pull request node ID | | ↳ `number` | number | Pull request number | | ↳ `title` | string | Pull request title | | ↳ `body` | string | Pull request description | | ↳ `state` | string | Pull request state (open, closed) | | ↳ `merged` | boolean | Whether the PR was merged | | ↳ `merged_at` | string | Timestamp when PR was merged | | ↳ `merged_by` | object | merged\_by output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `draft` | boolean | Whether the PR is a draft | | ↳ `html_url` | string | Pull request HTML URL | | ↳ `diff_url` | string | Pull request diff URL | | ↳ `patch_url` | string | Pull request patch URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `head` | object | head output from the tool | | ↳ `ref` | string | Source branch name | | ↳ `sha` | string | Source branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Source repository name | | ↳ `full_name` | string | Source repository full name | | ↳ `base` | object | base output from the tool | | ↳ `ref` | string | Target branch name | | ↳ `sha` | string | Target branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Target repository name | | ↳ `full_name` | string | Target repository full name | | ↳ `additions` | number | Number of lines added | | ↳ `deletions` | number | Number of lines deleted | | ↳ `changed_files` | number | Number of files changed | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `requested_reviewers` | array | Array of requested reviewers | | ↳ `created_at` | string | Pull request creation timestamp | | ↳ `updated_at` | string | Pull request last update timestamp | | ↳ `closed_at` | string | Pull request closed timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub PR Comment [#github-pr-comment] Trigger workflow when a comment is added to a pull request in a GitHub repository #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-92] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., issue\_comment) | | `action` | string | Action performed (created, edited, deleted) | | `issue` | object | issue output from the tool | | ↳ `id` | number | Issue ID | | ↳ `node_id` | string | Issue node ID | | ↳ `number` | number | Issue/PR number | | ↳ `title` | string | Issue/PR title | | ↳ `body` | string | Issue/PR description | | ↳ `state` | string | Issue/PR state (open, closed) | | ↳ `html_url` | string | Issue/PR HTML URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `pull_request` | object | pull\_request output from the tool | | ↳ `url` | string | Pull request API URL (present only for PR comments) | | ↳ `html_url` | string | Pull request HTML URL | | ↳ `diff_url` | string | Pull request diff URL | | ↳ `patch_url` | string | Pull request patch URL | | ↳ `created_at` | string | Issue/PR creation timestamp | | ↳ `updated_at` | string | Issue/PR last update timestamp | | `comment` | object | comment output from the tool | | ↳ `id` | number | Comment ID | | ↳ `node_id` | string | Comment node ID | | ↳ `url` | string | Comment API URL | | ↳ `html_url` | string | Comment HTML URL | | ↳ `body` | string | Comment text | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `created_at` | string | Comment creation timestamp | | ↳ `updated_at` | string | Comment last update timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub PR Merged [#github-pr-merged] Trigger workflow when a pull request is successfully merged in a GitHub repository #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-93] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) | | `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) | | `number` | number | Pull request number | | `pull_request` | object | pull\_request output from the tool | | ↳ `id` | number | Pull request ID | | ↳ `node_id` | string | Pull request node ID | | ↳ `number` | number | Pull request number | | ↳ `title` | string | Pull request title | | ↳ `body` | string | Pull request description | | ↳ `state` | string | Pull request state (open, closed) | | ↳ `merged` | boolean | Whether the PR was merged | | ↳ `merged_at` | string | Timestamp when PR was merged | | ↳ `merged_by` | object | merged\_by output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `draft` | boolean | Whether the PR is a draft | | ↳ `html_url` | string | Pull request HTML URL | | ↳ `diff_url` | string | Pull request diff URL | | ↳ `patch_url` | string | Pull request patch URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `head` | object | head output from the tool | | ↳ `ref` | string | Source branch name | | ↳ `sha` | string | Source branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Source repository name | | ↳ `full_name` | string | Source repository full name | | ↳ `base` | object | base output from the tool | | ↳ `ref` | string | Target branch name | | ↳ `sha` | string | Target branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Target repository name | | ↳ `full_name` | string | Target repository full name | | ↳ `additions` | number | Number of lines added | | ↳ `deletions` | number | Number of lines deleted | | ↳ `changed_files` | number | Number of files changed | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `requested_reviewers` | array | Array of requested reviewers | | ↳ `created_at` | string | Pull request creation timestamp | | ↳ `updated_at` | string | Pull request last update timestamp | | ↳ `closed_at` | string | Pull request closed timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub PR Opened [#github-pr-opened] Trigger workflow when a new pull request is opened in a GitHub repository #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-94] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request) | | `action` | string | Action performed (opened, closed, synchronize, reopened, edited, etc.) | | `number` | number | Pull request number | | `pull_request` | object | pull\_request output from the tool | | ↳ `id` | number | Pull request ID | | ↳ `node_id` | string | Pull request node ID | | ↳ `number` | number | Pull request number | | ↳ `title` | string | Pull request title | | ↳ `body` | string | Pull request description | | ↳ `state` | string | Pull request state (open, closed) | | ↳ `merged` | boolean | Whether the PR was merged | | ↳ `merged_at` | string | Timestamp when PR was merged | | ↳ `merged_by` | object | merged\_by output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `draft` | boolean | Whether the PR is a draft | | ↳ `html_url` | string | Pull request HTML URL | | ↳ `diff_url` | string | Pull request diff URL | | ↳ `patch_url` | string | Pull request patch URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `head` | object | head output from the tool | | ↳ `ref` | string | Source branch name | | ↳ `sha` | string | Source branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Source repository name | | ↳ `full_name` | string | Source repository full name | | ↳ `base` | object | base output from the tool | | ↳ `ref` | string | Target branch name | | ↳ `sha` | string | Target branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Target repository name | | ↳ `full_name` | string | Target repository full name | | ↳ `additions` | number | Number of lines added | | ↳ `deletions` | number | Number of lines deleted | | ↳ `changed_files` | number | Number of files changed | | ↳ `labels` | array | Array of label objects | | ↳ `assignees` | array | Array of assigned users | | ↳ `requested_reviewers` | array | Array of requested reviewers | | ↳ `created_at` | string | Pull request creation timestamp | | ↳ `updated_at` | string | Pull request last update timestamp | | ↳ `closed_at` | string | Pull request closed timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub PR Reviewed [#github-pr-reviewed] Trigger workflow when a pull request review is submitted, edited, or dismissed in a GitHub repository #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-95] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., pull\_request\_review) | | `action` | string | Action performed (submitted, edited, dismissed) | | `review` | object | review output from the tool | | ↳ `id` | number | Review ID | | ↳ `node_id` | string | Review node ID | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | Reviewer username | | ↳ `id` | number | Reviewer user ID | | ↳ `node_id` | string | Reviewer node ID | | ↳ `avatar_url` | string | Reviewer avatar URL | | ↳ `html_url` | string | Reviewer profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `body` | string | Review comment text | | ↳ `state` | string | Review state (approved, changes\_requested, commented, dismissed) | | ↳ `html_url` | string | Review HTML URL | | ↳ `submitted_at` | string | Review submission timestamp | | ↳ `commit_id` | string | Commit SHA that was reviewed | | ↳ `author_association` | string | Author association (OWNER, MEMBER, COLLABORATOR, CONTRIBUTOR, etc.) | | `pull_request` | object | pull\_request output from the tool | | ↳ `id` | number | Pull request ID | | ↳ `node_id` | string | Pull request node ID | | ↳ `number` | number | Pull request number | | ↳ `title` | string | Pull request title | | ↳ `body` | string | Pull request description | | ↳ `state` | string | Pull request state (open, closed) | | ↳ `merged` | boolean | Whether the PR was merged | | ↳ `draft` | boolean | Whether the PR is a draft | | ↳ `html_url` | string | Pull request HTML URL | | ↳ `diff_url` | string | Pull request diff URL | | ↳ `patch_url` | string | Pull request patch URL | | ↳ `user` | object | user output from the tool | | ↳ `login` | string | PR author username | | ↳ `id` | number | PR author user ID | | ↳ `node_id` | string | PR author node ID | | ↳ `avatar_url` | string | PR author avatar URL | | ↳ `html_url` | string | PR author profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `head` | object | head output from the tool | | ↳ `ref` | string | Source branch name | | ↳ `sha` | string | Source branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Source repository name | | ↳ `full_name` | string | Source repository full name | | ↳ `base` | object | base output from the tool | | ↳ `ref` | string | Target branch name | | ↳ `sha` | string | Target branch commit SHA | | ↳ `repo` | object | repo output from the tool | | ↳ `name` | string | Target repository name | | ↳ `full_name` | string | Target repository full name | | ↳ `created_at` | string | Pull request creation timestamp | | ↳ `updated_at` | string | Pull request last update timestamp | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub Push [#github-push] Trigger workflow when code is pushed to a repository #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-96] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------- | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., push) | | `branch` | string | Branch name derived from ref (e.g., main from refs/heads/main) | | `ref` | string | Git reference that was pushed (e.g., refs/heads/main) | | `before` | string | SHA of the commit before the push | | `after` | string | SHA of the commit after the push | | `created` | boolean | Whether this push created a new branch or tag | | `deleted` | boolean | Whether this push deleted a branch or tag | | `forced` | boolean | Whether this was a force push | | `base_ref` | string | Base reference for the push | | `compare` | string | URL to compare the changes | | `commits` | array | Array of commit objects included in this push | | `head_commit` | object | head\_commit output from the tool | | ↳ `id` | string | Commit SHA of the most recent commit | | ↳ `tree_id` | string | Git tree SHA | | ↳ `distinct` | boolean | Whether this commit is distinct | | ↳ `message` | string | Commit message | | ↳ `timestamp` | string | Commit timestamp | | ↳ `url` | string | Commit URL | | ↳ `author` | object | author output from the tool | | ↳ `name` | string | Author name | | ↳ `email` | string | Author email | | ↳ `username` | string | Author GitHub username | | ↳ `committer` | object | committer output from the tool | | ↳ `name` | string | Committer name | | ↳ `email` | string | Committer email | | ↳ `username` | string | Committer GitHub username | | ↳ `added` | array | Array of file paths added in this commit | | ↳ `removed` | array | Array of file paths removed in this commit | | ↳ `modified` | array | Array of file paths modified in this commit | | `pusher` | object | pusher output from the tool | | ↳ `name` | string | Pusher name | | ↳ `email` | string | Pusher email | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `default_branch` | string | Default branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `html_url` | string | Profile URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | *** ### GitHub Release Published [#github-release-published] Trigger workflow when a new release is published in a GitHub repository #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-97] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------ | | `event_type` | string | GitHub event type from X-GitHub-Event header (e.g., release) | | `action` | string | Action performed (published, unpublished, created, edited, deleted, prereleased, released) | | `release` | object | release output from the tool | | ↳ `id` | number | Release ID | | ↳ `node_id` | string | Release node ID | | ↳ `tag_name` | string | Git tag name for the release | | ↳ `target_commitish` | string | Target branch or commit SHA | | ↳ `name` | string | Release name/title | | ↳ `body` | string | Release description/notes in markdown format | | ↳ `draft` | boolean | Whether the release is a draft | | ↳ `prerelease` | boolean | Whether the release is a pre-release | | ↳ `created_at` | string | Release creation timestamp | | ↳ `published_at` | string | Release publication timestamp | | ↳ `url` | string | Release API URL | | ↳ `html_url` | string | Release HTML URL | | ↳ `assets_url` | string | Release assets API URL | | ↳ `upload_url` | string | URL for uploading release assets | | ↳ `tarball_url` | string | Source code tarball download URL | | ↳ `zipball_url` | string | Source code zipball download URL | | ↳ `discussion_url` | string | Discussion URL if available | | ↳ `author` | object | author output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `gravatar_id` | string | Gravatar ID | | ↳ `url` | string | User API URL | | ↳ `html_url` | string | Profile URL | | ↳ `followers_url` | string | Followers API URL | | ↳ `following_url` | string | Following API URL | | ↳ `gists_url` | string | Gists API URL | | ↳ `starred_url` | string | Starred repositories API URL | | ↳ `subscriptions_url` | string | Subscriptions API URL | | ↳ `organizations_url` | string | Organizations API URL | | ↳ `repos_url` | string | Repositories API URL | | ↳ `events_url` | string | Events API URL | | ↳ `received_events_url` | string | Received events API URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `site_admin` | boolean | Whether user is a site administrator | | ↳ `assets` | array | Array of release asset objects with download URLs | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `repo_description` | string | Repository description | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `archive_url` | string | Archive API URL | | ↳ `assignees_url` | string | Assignees API URL | | ↳ `blobs_url` | string | Blobs API URL | | ↳ `branches_url` | string | Branches API URL | | ↳ `collaborators_url` | string | Collaborators API URL | | ↳ `comments_url` | string | Comments API URL | | ↳ `commits_url` | string | Commits API URL | | ↳ `compare_url` | string | Compare API URL | | ↳ `contents_url` | string | Contents API URL | | ↳ `contributors_url` | string | Contributors API URL | | ↳ `deployments_url` | string | Deployments API URL | | ↳ `downloads_url` | string | Downloads API URL | | ↳ `events_url` | string | Events API URL | | ↳ `forks_url` | string | Forks API URL | | ↳ `git_commits_url` | string | Git commits API URL | | ↳ `git_refs_url` | string | Git refs API URL | | ↳ `git_tags_url` | string | Git tags API URL | | ↳ `hooks_url` | string | Hooks API URL | | ↳ `issue_comment_url` | string | Issue comment API URL | | ↳ `issue_events_url` | string | Issue events API URL | | ↳ `issues_url` | string | Issues API URL | | ↳ `keys_url` | string | Keys API URL | | ↳ `labels_url` | string | Labels API URL | | ↳ `languages_url` | string | Languages API URL | | ↳ `merges_url` | string | Merges API URL | | ↳ `milestones_url` | string | Milestones API URL | | ↳ `notifications_url` | string | Notifications API URL | | ↳ `pulls_url` | string | Pull requests API URL | | ↳ `releases_url` | string | Releases API URL | | ↳ `stargazers_url` | string | Stargazers API URL | | ↳ `statuses_url` | string | Statuses API URL | | ↳ `subscribers_url` | string | Subscribers API URL | | ↳ `subscription_url` | string | Subscription API URL | | ↳ `tags_url` | string | Tags API URL | | ↳ `teams_url` | string | Teams API URL | | ↳ `trees_url` | string | Trees API URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size in KB | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `has_issues` | boolean | Whether issues are enabled | | ↳ `has_projects` | boolean | Whether projects are enabled | | ↳ `has_downloads` | boolean | Whether downloads are enabled | | ↳ `has_wiki` | boolean | Whether wiki is enabled | | ↳ `has_pages` | boolean | Whether GitHub Pages is enabled | | ↳ `forks_count` | number | Number of forks | | ↳ `mirror_url` | string | Mirror URL if repository is a mirror | | ↳ `archived` | boolean | Whether the repository is archived | | ↳ `disabled` | boolean | Whether the repository is disabled | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `license` | object | license output from the tool | | ↳ `key` | string | License key | | ↳ `name` | string | License name | | ↳ `spdx_id` | string | SPDX license identifier | | ↳ `url` | string | License API URL | | ↳ `node_id` | string | License node ID | | ↳ `allow_forking` | boolean | Whether forking is allowed | | ↳ `is_template` | boolean | Whether repository is a template | | ↳ `topics` | array | Array of repository topics | | ↳ `visibility` | string | Repository visibility (public, private, internal) | | ↳ `forks` | number | Number of forks | | ↳ `open_issues` | number | Number of open issues | | ↳ `watchers` | number | Number of watchers | | ↳ `default_branch` | string | Default branch name | | ↳ `created_at` | string | Repository creation timestamp | | ↳ `updated_at` | string | Repository last update timestamp | | ↳ `pushed_at` | string | Repository last push timestamp | | ↳ `owner` | object | owner output from the tool | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `gravatar_id` | string | Owner gravatar ID | | ↳ `url` | string | Owner API URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `followers_url` | string | Followers API URL | | ↳ `following_url` | string | Following API URL | | ↳ `gists_url` | string | Gists API URL | | ↳ `starred_url` | string | Starred repositories API URL | | ↳ `subscriptions_url` | string | Subscriptions API URL | | ↳ `organizations_url` | string | Organizations API URL | | ↳ `repos_url` | string | Repositories API URL | | ↳ `events_url` | string | Events API URL | | ↳ `received_events_url` | string | Received events API URL | | ↳ `owner_type` | string | Owner type (User, Organization) | | ↳ `site_admin` | boolean | Whether owner is a site administrator | | `sender` | object | sender output from the tool | | ↳ `login` | string | Username | | ↳ `id` | number | User ID | | ↳ `node_id` | string | User node ID | | ↳ `avatar_url` | string | Avatar URL | | ↳ `gravatar_id` | string | Gravatar ID | | ↳ `url` | string | User API URL | | ↳ `html_url` | string | Profile URL | | ↳ `followers_url` | string | Followers API URL | | ↳ `following_url` | string | Following API URL | | ↳ `gists_url` | string | Gists API URL | | ↳ `starred_url` | string | Starred repositories API URL | | ↳ `subscriptions_url` | string | Subscriptions API URL | | ↳ `organizations_url` | string | Organizations API URL | | ↳ `repos_url` | string | Repositories API URL | | ↳ `events_url` | string | Events API URL | | ↳ `received_events_url` | string | Received events API URL | | ↳ `user_type` | string | User type (User, Bot, Organization) | | ↳ `site_admin` | boolean | Whether user is a site administrator | *** ### GitHub Webhook [#github-webhook] Trigger workflow from GitHub events like push, pull requests, issues, and more #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `contentType` | string | Yes | Format GitHub will use when sending the webhook payload. | | `webhookSecret` | string | No | Validates that webhook deliveries originate from GitHub. | | `sslVerification` | string | Yes | GitHub verifies SSL certificates when delivering webhooks. | #### Output [#output-98] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------- | | `ref` | string | Git reference (e.g., refs/heads/fix/telegram-wh) | | `before` | string | SHA of the commit before the push | | `after` | string | SHA of the commit after the push | | `created` | boolean | Whether the push created the reference | | `deleted` | boolean | Whether the push deleted the reference | | `forced` | boolean | Whether the push was forced | | `base_ref` | string | Base reference for the push | | `compare` | string | URL to compare the changes | | `repository` | object | repository output from the tool | | ↳ `id` | number | Repository ID | | ↳ `node_id` | string | Repository node ID | | ↳ `name` | string | Repository name | | ↳ `full_name` | string | Repository full name (owner/repo) | | ↳ `private` | boolean | Whether the repository is private | | ↳ `html_url` | string | Repository HTML URL | | ↳ `fork` | boolean | Whether the repository is a fork | | ↳ `url` | string | Repository API URL | | ↳ `created_at` | number | Repository creation timestamp | | ↳ `updated_at` | string | Repository last updated time | | ↳ `pushed_at` | number | Repository last push timestamp | | ↳ `git_url` | string | Repository git URL | | ↳ `ssh_url` | string | Repository SSH URL | | ↳ `clone_url` | string | Repository clone URL | | ↳ `homepage` | string | Repository homepage URL | | ↳ `size` | number | Repository size | | ↳ `stargazers_count` | number | Number of stars | | ↳ `watchers_count` | number | Number of watchers | | ↳ `language` | string | Primary programming language | | ↳ `forks_count` | number | Number of forks | | ↳ `archived` | boolean | Whether the repository is archived | | ↳ `disabled` | boolean | Whether the repository is disabled | | ↳ `open_issues_count` | number | Number of open issues | | ↳ `topics` | array | Repository topics | | ↳ `visibility` | string | Repository visibility (public, private) | | ↳ `forks` | number | Number of forks | | ↳ `open_issues` | number | Number of open issues | | ↳ `watchers` | number | Number of watchers | | ↳ `default_branch` | string | Default branch name | | ↳ `stargazers` | number | Number of stargazers | | ↳ `master_branch` | string | Master branch name | | ↳ `owner` | object | owner output from the tool | | ↳ `name` | string | Owner name | | ↳ `email` | string | Owner email | | ↳ `login` | string | Owner username | | ↳ `id` | number | Owner ID | | ↳ `node_id` | string | Owner node ID | | ↳ `avatar_url` | string | Owner avatar URL | | ↳ `gravatar_id` | string | Owner gravatar ID | | ↳ `url` | string | Owner API URL | | ↳ `html_url` | string | Owner profile URL | | ↳ `user_view_type` | string | User view type | | ↳ `site_admin` | boolean | Whether the owner is a site admin | | ↳ `license` | object | Repository license information | | ↳ `key` | string | License key (e.g., apache-2.0) | | ↳ `name` | string | License name | | ↳ `spdx_id` | string | SPDX license identifier | | ↳ `url` | string | License URL | | ↳ `node_id` | string | License node ID | | `pusher` | object | Information about who pushed the changes | | ↳ `name` | string | Pusher name | | ↳ `email` | string | Pusher email | | `sender` | object | sender output from the tool | | ↳ `login` | string | Sender username | | ↳ `id` | number | Sender ID | | ↳ `node_id` | string | Sender node ID | | ↳ `avatar_url` | string | Sender avatar URL | | ↳ `gravatar_id` | string | Sender gravatar ID | | ↳ `url` | string | Sender API URL | | ↳ `html_url` | string | Sender profile URL | | ↳ `user_view_type` | string | User view type | | ↳ `site_admin` | boolean | Whether the sender is a site admin | | `commits` | array | Array of commit objects | | `head_commit` | object | Head commit object | | ↳ `id` | string | Commit SHA | | ↳ `tree_id` | string | Tree SHA | | ↳ `distinct` | boolean | Whether the commit is distinct | | ↳ `message` | string | Commit message | | ↳ `timestamp` | string | Commit timestamp | | ↳ `url` | string | Commit URL | | ↳ `author` | object | Commit author | | ↳ `name` | string | Author name | | ↳ `email` | string | Author email | | ↳ `committer` | object | Commit committer | | ↳ `name` | string | Committer name | | ↳ `email` | string | Committer email | | ↳ `added` | array | Array of added files | | ↳ `removed` | array | Array of removed files | | ↳ `modified` | array | Array of modified files | | `event_type` | string | Type of GitHub event (e.g., push, pull\_request, issues) | | `action` | string | The action that was performed (e.g., opened, closed, synchronize) | | `branch` | string | Branch name extracted from ref | --- # GitLab (/integrations/gitlab) {/* MANUAL-CONTENT-START:intro */} [GitLab](https://gitlab.com/) is a comprehensive DevOps platform that allows teams to manage, collaborate on, and automate their software development lifecycle. With GitLab, you can effortlessly handle source code management, CI/CD, reviews, and collaboration in a single application. With GitLab in Agent Serve, you can: * **Manage projects and repositories**: List and retrieve your GitLab projects, access details, and organize your repositories * **Work with issues**: List, create, and comment on issues to track work and collaborate effectively * **Handle merge requests**: Review, create, and manage merge requests for code changes and peer reviews * **Automate CI/CD pipelines**: Trigger, monitor, and interact with GitLab pipelines as part of your automation flows * **Collaborate with comments**: Add comments to issues or merge requests for efficient communication within your team Using Agent Serve’s GitLab integration, your agents can programmatically interact with your GitLab projects. Automate project management, issue tracking, code reviews, and pipeline operations seamlessly in your workflows, optimizing your software development process and enhancing collaboration across your team. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate GitLab into the workflow. Can manage projects, issues, merge requests, pipelines, and add comments, plus project/group membership, invitations, access requests, SAML group links, and instance user administration. Supports all core GitLab DevOps operations. ## Actions [#actions] ### GitLab List Projects [#gitlab-list-projects] List GitLab projects accessible to the authenticated user #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `owned` | boolean | No | Limit to projects owned by the current user | | `membership` | boolean | No | Limit to projects the current user is a member of | | `search` | string | No | Search projects by name | | `visibility` | string | No | Filter by visibility (public, internal, private) | | `orderBy` | string | No | Order by field (id, name, path, created\_at, updated\_at, last\_activity\_at) | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `projects` | array | List of GitLab projects | | `total` | number | Total number of projects | ### GitLab Get Project [#gitlab-get-project] Get details of a specific GitLab project #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) (e.g., "namespace/project") | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `project` | object | The GitLab project details | ### GitLab List Groups [#gitlab-list-groups] List GitLab groups accessible to the authenticated user #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `owned` | boolean | No | Limit to groups owned by the current user | | `search` | string | No | Search groups by name or path | | `topLevelOnly` | boolean | No | Limit to top-level groups, excluding subgroups | | `visibility` | string | No | Filter by visibility: public, internal, or private | | `minAccessLevel` | number | No | Only groups where the current user has at least this access level, as an integer (e.g. 30 for Developer). Valid values: 5, 10, 15, 20, 25, 30, 40, 50. | | `allAvailable` | boolean | No | Include all groups the user can access, not only groups they are a member of (ignored when owned or a minimum access level is set) | | `orderBy` | string | No | Order by field (name, path, id, similarity). similarity requires a search term. | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `groups` | array | List of GitLab groups | | `total` | number | Total number of groups | ### GitLab Get Group [#gitlab-get-group] Get details of a specific GitLab group #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `groupId` | string | Yes | Group ID or path (e.g. mygroup or parent/subgroup) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `group` | object | The GitLab group details | ### GitLab List User Memberships [#gitlab-list-user-memberships] List a user's project and group memberships. Requires an administrator access token (GET /users/:id/memberships is admin-only). For a non-admin path, iterate List Members on each project or group instead. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | string | Yes | The ID of the user whose memberships to list | | `membershipType` | string | No | Filter by source: 'Project' or 'Namespace' (group). Omit for all memberships. | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------- | | `memberships` | array | The user's project and group memberships | | `total` | number | Total number of memberships | ### GitLab List Issues [#gitlab-list-issues] List issues in a GitLab project #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `state` | string | No | Filter by state (opened, closed, all) | | `labels` | string | No | Comma-separated list of label names | | `assigneeId` | number | No | Filter by assignee user ID | | `milestoneTitle` | string | No | Filter by milestone title | | `search` | string | No | Search issues by title and description | | `orderBy` | string | No | Order by field (created\_at, updated\_at, priority, due\_date, relative\_position, label\_priority, milestone\_due, popularity, weight) | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `issues` | array | List of GitLab issues | | `total` | number | Total number of issues | ### GitLab Get Issue [#gitlab-get-issue] Get details of a specific GitLab issue #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `issueIid` | number | Yes | Issue number within the project (the # shown in GitLab UI) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `issue` | object | The GitLab issue details | ### GitLab Create Issue [#gitlab-create-issue] Create a new issue in a GitLab project #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `title` | string | Yes | Issue title | | `description` | string | No | Issue description (Markdown supported) | | `labels` | string | No | Comma-separated list of label names | | `assigneeIds` | array | No | Array of user IDs to assign | | `milestoneId` | number | No | Milestone ID to assign | | `dueDate` | string | No | Due date in YYYY-MM-DD format | | `confidential` | boolean | No | Whether the issue is confidential | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `issue` | object | The created GitLab issue | ### GitLab Update Issue [#gitlab-update-issue] Update an existing issue in a GitLab project #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `issueIid` | number | Yes | Issue internal ID (IID) | | `title` | string | No | New issue title | | `description` | string | No | New issue description (Markdown supported) | | `stateEvent` | string | No | State event (close or reopen) | | `labels` | string | No | Comma-separated list of label names | | `assigneeIds` | array | No | Array of user IDs to assign | | `milestoneId` | number | No | Milestone ID to assign | | `dueDate` | string | No | Due date in YYYY-MM-DD format | | `confidential` | boolean | No | Whether the issue is confidential | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `issue` | object | The updated GitLab issue | ### GitLab Delete Issue [#gitlab-delete-issue] Delete an issue from a GitLab project #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `issueIid` | number | Yes | Issue internal ID (IID) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the issue was deleted successfully | ### GitLab Create Issue Comment [#gitlab-create-issue-comment] Add a comment to a GitLab issue #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `issueIid` | number | Yes | Issue internal ID (IID) | | `body` | string | Yes | Comment body (Markdown supported) | | `internal` | boolean | No | Create the comment as an internal note visible only to project members | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `note` | object | The created comment | ### GitLab List Merge Requests [#gitlab-list-merge-requests] List merge requests in a GitLab project #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `state` | string | No | Filter by state (opened, closed, locked, merged, all) | | `labels` | string | No | Comma-separated list of label names | | `sourceBranch` | string | No | Filter by source branch | | `targetBranch` | string | No | Filter by target branch | | `orderBy` | string | No | Order by field (created\_at, updated\_at, merged\_at, priority, label\_priority, milestone\_due, popularity, title) | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `mergeRequests` | array | List of GitLab merge requests | | `total` | number | Total number of merge requests | ### GitLab Get Merge Request [#gitlab-get-merge-request] Get details of a specific GitLab merge request #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | -------------------------------- | | `mergeRequest` | object | The GitLab merge request details | ### GitLab Create Merge Request [#gitlab-create-merge-request] Create a new merge request in a GitLab project #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `sourceBranch` | string | Yes | Source branch name | | `targetBranch` | string | Yes | Target branch name | | `title` | string | Yes | Merge request title | | `description` | string | No | Merge request description (Markdown supported) | | `labels` | string | No | Comma-separated list of label names | | `assigneeIds` | array | No | Array of user IDs to assign | | `milestoneId` | number | No | Milestone ID to assign | | `removeSourceBranch` | boolean | No | Delete source branch after merge | | `squash` | boolean | No | Squash commits on merge | | `draft` | boolean | No | Mark as draft (applied via the "Draft:" title prefix) | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | -------------------------------- | | `mergeRequest` | object | The created GitLab merge request | ### GitLab Update Merge Request [#gitlab-update-merge-request] Update an existing merge request in a GitLab project #### Input [#input-14] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | | `title` | string | No | New merge request title | | `description` | string | No | New merge request description | | `stateEvent` | string | No | State event (close or reopen) | | `labels` | string | No | Comma-separated list of label names | | `assigneeIds` | array | No | Array of user IDs to assign | | `milestoneId` | number | No | Milestone ID to assign | | `targetBranch` | string | No | New target branch | | `removeSourceBranch` | boolean | No | Delete source branch after merge | | `squash` | boolean | No | Squash commits on merge | | `draft` | boolean | No | Mark as draft or remove draft status (applied via the "Draft:" title prefix; requires title to be set) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | -------------------------------- | | `mergeRequest` | object | The updated GitLab merge request | ### GitLab Merge Merge Request [#gitlab-merge-merge-request] Merge a merge request in a GitLab project #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | | `mergeCommitMessage` | string | No | Custom merge commit message | | `squashCommitMessage` | string | No | Custom squash commit message | | `squash` | boolean | No | Squash commits before merging | | `shouldRemoveSourceBranch` | boolean | No | Delete source branch after merge | | `mergeWhenPipelineSucceeds` | boolean | No | Merge when pipeline succeeds | #### Output [#output-15] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `mergeRequest` | object | The merged GitLab merge request | ### GitLab Create Merge Request Comment [#gitlab-create-merge-request-comment] Add a comment to a GitLab merge request #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | | `body` | string | Yes | Comment body (Markdown supported) | | `internal` | boolean | No | Create the comment as an internal note visible only to project members | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `note` | object | The created comment | ### GitLab List Pipelines [#gitlab-list-pipelines] List pipelines in a GitLab project #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `ref` | string | No | Filter by ref (branch or tag) | | `status` | string | No | Filter by status (created, waiting\_for\_resource, preparing, pending, running, success, failed, canceling, canceled, skipped, manual, scheduled, waiting\_for\_callback) | | `orderBy` | string | No | Order by field (id, status, ref, updated\_at, user\_id) | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-17] | Parameter | Type | Description | | ----------- | ------ | ------------------------- | | `pipelines` | array | List of GitLab pipelines | | `total` | number | Total number of pipelines | ### GitLab Get Pipeline [#gitlab-get-pipeline] Get details of a specific GitLab pipeline #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `pipelineId` | number | Yes | Pipeline ID | #### Output [#output-18] | Parameter | Type | Description | | ---------- | ------ | --------------------------- | | `pipeline` | object | The GitLab pipeline details | ### GitLab Create Pipeline [#gitlab-create-pipeline] Trigger a new pipeline in a GitLab project #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `ref` | string | Yes | Branch or tag to run the pipeline on | | `variables` | array | No | Array of variables for the pipeline (each with key, value, and optional variable\_type) | | `inputs` | json | No | Pipeline inputs as a key/value object (for pipelines with spec:inputs) | #### Output [#output-19] | Parameter | Type | Description | | ---------- | ------ | --------------------------- | | `pipeline` | object | The created GitLab pipeline | ### GitLab Retry Pipeline [#gitlab-retry-pipeline] Retry a failed GitLab pipeline #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `pipelineId` | number | Yes | Pipeline ID | #### Output [#output-20] | Parameter | Type | Description | | ---------- | ------ | --------------------------- | | `pipeline` | object | The retried GitLab pipeline | ### GitLab Cancel Pipeline [#gitlab-cancel-pipeline] Cancel a running GitLab pipeline #### Input [#input-21] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `pipelineId` | number | Yes | Pipeline ID | #### Output [#output-21] | Parameter | Type | Description | | ---------- | ------ | ----------------------------- | | `pipeline` | object | The cancelled GitLab pipeline | ### GitLab List Repository Tree [#gitlab-list-repository-tree] List files and directories in a GitLab project repository #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `path` | string | No | Path inside the repository to list | | `ref` | string | No | Branch, tag, or commit SHA to list from | | `recursive` | boolean | No | Whether to list files recursively | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `tree` | array | List of repository tree entries | | `total` | number | Total number of tree entries | ### GitLab Get File [#gitlab-get-file] Get the contents of a file from a GitLab project repository #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `filePath` | string | Yes | Path to the file in the repository | | `ref` | string | Yes | Branch, tag, or commit SHA | #### Output [#output-23] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------------- | | `filePath` | string | The file path | | `fileName` | string | The file name | | `size` | number | The file size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `content` | string | The decoded file content, truncated to 1M characters | | `truncated` | boolean | Whether the content was truncated | ### GitLab Create File [#gitlab-create-file] Create a new file in a GitLab project repository #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `filePath` | string | Yes | Path to the file in the repository | | `branch` | string | Yes | Branch to commit the new file to | | `content` | string | Yes | File content | | `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist | | `authorName` | string | No | Commit author name (defaults to the token user) | | `authorEmail` | string | No | Commit author email (defaults to the token user) | | `executeFilemode` | boolean | No | Enable the execute flag on the file | | `commitMessage` | string | Yes | Commit message | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------ | | `filePath` | string | The created file path | | `branch` | string | The branch the file was committed to | ### GitLab Update File [#gitlab-update-file] Update an existing file in a GitLab project repository #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `filePath` | string | Yes | Path to the file in the repository | | `branch` | string | Yes | Branch to commit the update to | | `content` | string | Yes | New file content | | `startBranch` | string | No | Name of the base branch to create the target branch from, if it does not exist | | `authorName` | string | No | Commit author name (defaults to the token user) | | `authorEmail` | string | No | Commit author email (defaults to the token user) | | `executeFilemode` | boolean | No | Enable or disable the execute flag on the file | | `commitMessage` | string | Yes | Commit message | | `lastCommitId` | string | No | Last known commit ID for the file (optimistic locking) | #### Output [#output-25] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------- | | `filePath` | string | The updated file path | | `branch` | string | The branch the update was committed to | ### GitLab Create Branch [#gitlab-create-branch] Create a new branch in a GitLab project repository #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `branch` | string | Yes | Name of the new branch | | `ref` | string | Yes | Source branch/tag/SHA | #### Output [#output-26] | Parameter | Type | Description | | ----------- | ------- | ------------------------------- | | `name` | string | The created branch name | | `webUrl` | string | The web URL of the branch | | `protected` | boolean | Whether the branch is protected | | `commit` | object | The commit the branch points to | ### GitLab Delete Branch [#gitlab-delete-branch] Delete a branch from a GitLab project repository #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `branch` | string | Yes | Name of the branch to delete | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the branch was deleted successfully | ### GitLab Compare Branches [#gitlab-compare-branches] Compare two branches, tags, or commits in a GitLab project repository #### Input [#input-28] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `from` | string | Yes | Commit SHA or branch/tag name to compare from | | `to` | string | Yes | Commit SHA or branch/tag name to compare to | | `straight` | boolean | No | Compare directly from..to instead of using the merge base (defaults to false) | | `fromProjectId` | string | No | ID of the project to compare from (for cross-fork comparisons) | | `unidiff` | boolean | No | Return diffs in unified diff format (GitLab 16.5+) | #### Output [#output-28] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------- | | `commit` | object | The latest commit in the comparison | | `commits` | array | Commits between the two references | | `diffs` | array | File diffs between the two references | | `compareTimeout` | boolean | Whether the comparison exceeded size limits or timed out | | `compareSameRef` | boolean | Whether both references point to the same commit | | `webUrl` | string | The web URL for viewing the comparison | ### GitLab List Branches [#gitlab-list-branches] List branches in a GitLab project repository #### Input [#input-29] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `search` | string | No | Filter branches by name | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-29] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `branches` | array | List of branches | | `total` | number | Total number of branches | ### GitLab List Commits [#gitlab-list-commits] List commits in a GitLab project repository #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `refName` | string | No | Branch, tag, or revision range to list commits from | | `since` | string | No | Only commits after this ISO 8601 date | | `until` | string | No | Only commits before this ISO 8601 date | | `path` | string | No | Only commits affecting this file path | | `author` | string | No | Filter commits by author | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------ | | `commits` | array | List of commits | | `total` | number | Number of commits returned on this page (GitLab does not report a grand total for commits) | ### GitLab Get Merge Request Changes [#gitlab-get-merge-request-changes] Get the file changes (diffs) of a GitLab merge request #### Input [#input-31] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | #### Output [#output-31] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------- | | `mergeRequestIid` | number | The merge request internal ID (IID) | | `changes` | array | List of file changes (diffs) | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether the merge request has more than 100 changed files (results truncated) | ### GitLab Approve Merge Request [#gitlab-approve-merge-request] Approve a GitLab merge request #### Input [#input-32] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `mergeRequestIid` | number | Yes | Merge request internal ID (IID) | | `sha` | string | No | HEAD SHA of the merge request to approve | #### Output [#output-32] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------- | | `approvalsRequired` | number | Number of approvals required | | `approvalsLeft` | number | Number of approvals still needed | | `approvedBy` | array | List of approvers | ### GitLab List Pipeline Jobs [#gitlab-list-pipeline-jobs] List jobs for a GitLab pipeline #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `pipelineId` | number | Yes | Pipeline ID | | `scope` | string | No | Filter jobs by scope (e.g. created, running, success, failed) | | `includeRetried` | boolean | No | Whether to include retried jobs | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `jobs` | array | List of pipeline jobs | | `total` | number | Total number of jobs | ### GitLab Get Job Log [#gitlab-get-job-log] Get the log (trace) of a GitLab job #### Input [#input-34] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `jobId` | number | Yes | Job ID | #### Output [#output-34] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------------------- | | `log` | string | The job log (trace) output, truncated to 200k characters | | `truncated` | boolean | Whether the log was truncated | ### GitLab Play Job [#gitlab-play-job] Trigger (play) a manual GitLab job #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `jobId` | number | Yes | Job ID | | `jobVariables` | array | No | Variables for the manual job (array of objects with key and value) | #### Output [#output-35] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `id` | number | The job ID | | `name` | string | The job name | | `status` | string | The job status | | `webUrl` | string | The web URL of the job | ### GitLab List Releases [#gitlab-list-releases] List releases in a GitLab project #### Input [#input-36] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `orderBy` | string | No | Order by field (released\_at, created\_at) | | `sort` | string | No | Sort direction (asc, desc) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-36] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `releases` | array | List of GitLab releases | | `total` | number | Total number of releases | ### GitLab Create Release [#gitlab-create-release] Create a new release in a GitLab project #### Input [#input-37] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `projectId` | string | Yes | Project ID or path (e.g. mygroup/myproject) | | `tagName` | string | Yes | The Git tag for the release | | `name` | string | No | The release name | | `description` | string | No | Release description/notes (Markdown supported) | | `ref` | string | No | Commit SHA, branch, or tag to create the tag from if it does not already exist | | `releasedAt` | string | No | ISO 8601 date for an upcoming or historical release | | `tagMessage` | string | No | Annotation message to use if creating a new annotated tag | | `assetLinks` | array | No | Release asset links: array of objects with name, url, and optional link\_type (other, runbook, image, package) | | `milestones` | array | No | Array of milestone titles to associate with the release | #### Output [#output-37] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `release` | object | The created GitLab release | ### GitLab List Members [#gitlab-list-members] List members of a GitLab project or group. Includes members inherited from ancestor groups by default. #### Input [#input-38] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `directOnly` | boolean | No | When true, returns only direct members. Defaults to false, which also returns members inherited from ancestor groups. | | `query` | string | No | Filter members by name, email, or username | | `userIds` | string | No | Comma-separated user IDs to filter the results to | | `state` | string | No | Filter inherited-member results by state: 'awaiting' or 'active' (Premium/Ultimate; only applies when inherited members are included) | | `showSeatInfo` | boolean | No | Include seat information for each member | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-38] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `members` | array | List of project or group members | | `total` | number | Total number of members | ### GitLab Add Member [#gitlab-add-member] Add an existing GitLab user to a project or group at a given access level #### Input [#input-39] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `userId` | number | No | The ID of the user to add. Provide either userId or username. | | `username` | string | No | The username of the user to add. Provide either userId or username. | | `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) | | `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format | | `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) | #### Output [#output-39] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------- | | `member` | object | The added member | | `alreadyMember` | boolean | Whether the user was already a member (add was a no-op) | ### GitLab Update Member [#gitlab-update-member] Update a member's access level in a GitLab project or group #### Input [#input-40] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `userId` | number | Yes | The ID of the member to update | | `accessLevel` | number | Yes | New access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) | | `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format. Pass an empty string to clear an existing expiration. | | `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only). Warning: when omitted, GitLab removes any custom role the member currently holds. | #### Output [#output-40] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `member` | object | The updated member | ### GitLab Remove Member [#gitlab-remove-member] Remove a member from a GitLab project or group #### Input [#input-41] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `userId` | number | Yes | The ID of the member to remove | | `skipSubresources` | boolean | No | Skip deleting the member from subgroups and projects below the target (defaults to false) | | `unassignIssuables` | boolean | No | Unassign the member from all issues and merge requests in the target (defaults to false) | #### Output [#output-41] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the member was removed successfully | ### GitLab Invite Member [#gitlab-invite-member] Invite a person to a GitLab project or group by email address #### Input [#input-42] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `email` | string | Yes | Email address to invite (comma-separated for multiple) | | `accessLevel` | number | Yes | Access level: 0 (No access), 5 (Minimal), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) | | `expiresAt` | string | No | Access expiration date in YYYY-MM-DD format | | `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) | | `inviteSource` | string | No | Identifier recorded as the source of the invitation (for attribution) | #### Output [#output-42] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `status` | string | Invitation status returned by GitLab | | `message` | object | Per-email result detail, if any | ### GitLab List Invitations [#gitlab-list-invitations] List pending email invitations for a GitLab project or group #### Input [#input-43] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `query` | string | No | Filter invitations by invited email | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-43] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `invitations` | array | List of pending invitations | | `total` | number | Total number of invitations | ### GitLab Update Invitation [#gitlab-update-invitation] Update a pending invitation to a GitLab project or group #### Input [#input-44] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `email` | string | Yes | Email address of the invitation to update | | `accessLevel` | number | No | New access level: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) | | `expiresAt` | string | No | Access expiration date (ISO 8601, e.g. 2026-12-31T00:00:00Z; date-only also accepted). At least one of accessLevel or expiresAt must be provided. | #### Output [#output-44] | Parameter | Type | Description | | ------------ | ------ | ---------------------- | | `invitation` | object | The updated invitation | ### GitLab Revoke Invitation [#gitlab-revoke-invitation] Revoke a pending email invitation to a GitLab project or group #### Input [#input-45] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `email` | string | Yes | Email address of the invitation to revoke | #### Output [#output-45] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the invitation was revoked successfully | ### GitLab List Access Requests [#gitlab-list-access-requests] List pending access requests for a GitLab project or group #### Input [#input-46] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-46] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `accessRequests` | array | List of pending access requests | | `total` | number | Total number of access requests | ### GitLab Approve Access Request [#gitlab-approve-access-request] Approve a pending access request for a GitLab project or group #### Input [#input-47] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `userId` | number | Yes | The user ID of the access requester | | `accessLevel` | number | No | Access level to grant: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner). Defaults to 30 (Developer). | #### Output [#output-47] | Parameter | Type | Description | | --------------- | ------ | --------------------------- | | `accessRequest` | object | The approved access request | ### GitLab Deny Access Request [#gitlab-deny-access-request] Deny (delete) a pending access request for a GitLab project or group #### Input [#input-48] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `resourceType` | string | Yes | Whether the resource is a 'project' or a 'group' | | `resourceId` | string | Yes | Project or group ID or path (e.g. mygroup/myproject) | | `userId` | number | Yes | The user ID of the access requester | #### Output [#output-48] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------------- | | `success` | boolean | Whether the access request was denied successfully | ### GitLab List SAML Group Links [#gitlab-list-saml-group-links] List SAML group links for a GitLab group. Use this to detect whether a group is governed by SAML group sync before provisioning members. #### Input [#input-49] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) | #### Output [#output-49] | Parameter | Type | Description | | ---------------- | ------ | -------------------------- | | `samlGroupLinks` | array | List of SAML group links | | `total` | number | Number of SAML group links | ### GitLab Search Users [#gitlab-search-users] Search for GitLab users by name, username, or email. Email matches must be exact; private emails match only with an admin token. Use this to resolve an email to a user ID before adding a member. #### Input [#input-50] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `search` | string | Yes | Name, username, or email to search for | | `perPage` | number | No | Number of results per page (default 20, max 100) | | `page` | number | No | Page number for pagination | #### Output [#output-50] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `users` | array | List of matching users | | `total` | number | Total number of matching users | ### GitLab Create User [#gitlab-create-user] Create a new GitLab user. Requires an administrator token with admin\_mode on the instance. #### Input [#input-51] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `email` | string | Yes | The user's email address | | `username` | string | Yes | The user's username | | `name` | string | Yes | The user's display name | | `password` | string | No | The user's password. Omit and set resetPassword to email a reset link instead. | | `resetPassword` | boolean | No | Send the user a password reset link instead of setting a password | | `forceRandomPassword` | boolean | No | Set a random password without emailing a reset link (useful for SSO-only accounts). One of password, resetPassword, or forceRandomPassword is required. | | `admin` | boolean | No | Whether the new user is an administrator | | `skipConfirmation` | boolean | No | Skip email confirmation for the new user | #### Output [#output-51] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `user` | object | The created user | ### GitLab Update User [#gitlab-update-user] Modify an existing GitLab user. Requires an administrator token with admin\_mode on the instance. #### Input [#input-52] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to modify | | `email` | string | No | The user's new email address (GitLab only allows changing to one of the user's existing verified secondary emails) | | `username` | string | No | The user's new username | | `name` | string | No | The user's new display name | | `admin` | boolean | No | Whether the user is an administrator | #### Output [#output-52] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `user` | object | The updated user | ### GitLab Delete User [#gitlab-delete-user] Delete a GitLab user. Requires an administrator token with admin\_mode on the instance. #### Input [#input-53] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to delete | | `hardDelete` | boolean | No | When true, contributions, personal projects, AND groups owned solely by this user are deleted rather than moved to a Ghost User | #### Output [#output-53] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the user was deleted successfully | ### GitLab Block User [#gitlab-block-user] Block a GitLab user, preventing them from signing in or accessing the instance #### Input [#input-54] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-54] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Unblock User [#gitlab-unblock-user] Unblock a previously blocked GitLab user #### Input [#input-55] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-55] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Deactivate User [#gitlab-deactivate-user] Deactivate a dormant GitLab user #### Input [#input-56] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-56] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Activate User [#gitlab-activate-user] Reactivate a deactivated GitLab user #### Input [#input-57] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-57] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Ban User [#gitlab-ban-user] Ban a GitLab user #### Input [#input-58] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-58] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Unban User [#gitlab-unban-user] Unban a previously banned GitLab user #### Input [#input-59] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-59] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Approve User [#gitlab-approve-user] Approve a GitLab user whose signup is pending administrator approval #### Input [#input-60] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-60] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Reject User [#gitlab-reject-user] Reject a GitLab user whose signup is pending administrator approval #### Input [#input-61] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user to act on | #### Output [#output-61] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `projects` | json | List of projects | | `project` | json | Project details | | `groups` | json | List of groups | | `group` | json | Group details | | `memberships` | json | A user's project and group memberships | | `issues` | json | List of issues | | `issue` | json | Issue details | | `mergeRequests` | json | List of merge requests | | `mergeRequest` | json | Merge request details | | `mergeRequestIid` | number | Merge request internal ID (IID) | | `pipelines` | json | List of pipelines | | `pipeline` | json | Pipeline details | | `note` | json | Comment/note details | | `tree` | json | Repository tree entries | | `content` | string | File contents (decoded) | | `fileName` | string | File name | | `filePath` | string | Path to the file in the repository | | `branch` | string | Branch the file was committed to | | `branches` | json | List of branches | | `commits` | json | List of commits | | `commit` | json | A single commit (e.g. latest commit in a comparison) | | `name` | string | Created branch name | | `protected` | boolean | Whether the branch is protected | | `size` | number | File size in bytes | | `ref` | string | The branch, tag, or commit SHA | | `blobId` | string | The blob ID | | `lastCommitId` | string | The last commit ID that modified the file | | `webUrl` | string | Web URL | | `changes` | json | Merge request file changes/diffs | | `changesCount` | number | Number of changed files returned (first 100) | | `hasMore` | boolean | Whether more changed files exist beyond the first 100 | | `approvalsRequired` | number | Approvals required | | `approvalsLeft` | number | Approvals remaining | | `approvedBy` | json | List of approvers | | `jobs` | json | Pipeline jobs | | `log` | string | Job log output | | `id` | number | Job ID | | `status` | string | Job status | | `diffs` | json | File diffs between two compared references | | `compareTimeout` | boolean | Whether the comparison timed out | | `compareSameRef` | boolean | Whether both compared references match | | `releases` | json | List of releases | | `release` | json | Release details | | `members` | json | List of project or group members | | `member` | json | A single member | | `alreadyMember` | boolean | Whether the user was already a member | | `invitations` | json | List of pending invitations | | `invitation` | json | A single invitation | | `accessRequests` | json | List of pending access requests | | `accessRequest` | json | A single access request | | `samlGroupLinks` | json | List of SAML group links | | `samlGroupLink` | json | A single SAML group link | | `message` | json | Per-email invitation result detail | | `users` | json | List of matching users | | `user` | json | User details | | `total` | number | Total number of items available across all pages | | `truncated` | boolean | Whether returned content (file content or job log) was truncated | | `success` | boolean | Operation success status | ### GitLab Delete User Identity [#gitlab-delete-user-identity] Delete a user's authentication identity (e.g. SAML or LDAP). Requires an administrator token with admin\_mode on the instance. #### Input [#input-62] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `userId` | number | Yes | The ID of the user | | `provider` | string | Yes | The external identity provider name (e.g. saml, ldapmain) | #### Output [#output-62] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the identity was deleted successfully | ### GitLab Add SAML Group Link [#gitlab-add-saml-group-link] Add a SAML group link that maps an identity-provider group to a GitLab group at a given access level (GitLab Premium/Ultimate) #### Input [#input-63] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) | | `samlGroupName` | string | Yes | The name of the SAML group as sent by the identity provider | | `accessLevel` | number | Yes | Access level granted to members of the SAML group: 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner) | | `memberRoleId` | number | No | Custom member role ID (GitLab Ultimate only) | | `provider` | string | No | Unique provider name that must match for this group link to be applied (GitLab 18.2+) | #### Output [#output-63] | Parameter | Type | Description | | --------------- | ------ | --------------------------- | | `samlGroupLink` | object | The created SAML group link | ### GitLab Delete SAML Group Link [#gitlab-delete-saml-group-link] Delete a SAML group link from a GitLab group (GitLab Premium/Ultimate) #### Input [#input-64] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `host` | string | No | Self-managed GitLab host (e.g. gitlab.example.com). Defaults to gitlab.com. | | `groupId` | string | Yes | Group ID or path (e.g. my-org/my-group) | | `samlGroupName` | string | Yes | The name of the SAML group link to delete | | `provider` | string | No | Provider name of the link to delete. Required when multiple links share the same SAML group name. | #### Output [#output-64] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------------- | | `success` | boolean | Whether the SAML group link was deleted successfully | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### GitLab Comment [#gitlab-comment] Trigger workflow when a comment is added on a commit, merge request, or issue #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-65] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------- | | `object_kind` | string | Event kind (note) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `user` | object | user output from the tool | | ↳ `id` | number | User ID | | ↳ `name` | string | User display name | | ↳ `username` | string | Username | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `object_attributes` | object | object\_attributes output from the tool | | ↳ `id` | number | Comment ID | | ↳ `note` | string | Comment body | | ↳ `noteable_type` | string | What the comment is on (Commit, MergeRequest, Issue, Snippet) | | ↳ `action` | string | Action (create, update) | | ↳ `url` | string | Comment URL | *** ### GitLab Event [#gitlab-event] Trigger workflow from any GitLab webhook event #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-66] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------------------- | | `object_kind` | string | Event kind (push, merge\_request, issue, etc.) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `user` | json | Actor that triggered the event (when present) | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `object_attributes` | json | Event-specific attributes (varies by object\_kind) | *** ### GitLab Issue [#gitlab-issue] Trigger workflow when an issue is opened, updated, or closed in GitLab #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-67] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------- | | `object_kind` | string | Event kind (issue) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `user` | object | user output from the tool | | ↳ `id` | number | User ID | | ↳ `name` | string | User display name | | ↳ `username` | string | Username | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `object_attributes` | object | object\_attributes output from the tool | | ↳ `id` | number | Global issue ID | | ↳ `iid` | number | Project-scoped issue number | | ↳ `title` | string | Issue title | | ↳ `state` | string | State (opened, closed) | | ↳ `action` | string | Action (open, close, reopen, update) | | ↳ `description` | string | Issue description | | ↳ `confidential` | boolean | Whether the issue is confidential | | ↳ `url` | string | Issue URL | | ↳ `work_item_type` | string | Work item type (e.g. Issue, Incident, Task); GitLab 17.2+ only | *** ### GitLab Merge Request [#gitlab-merge-request] Trigger workflow when a merge request is opened, updated, or merged in GitLab #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-68] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------- | | `object_kind` | string | Event kind (merge\_request) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `user` | object | user output from the tool | | ↳ `id` | number | User ID | | ↳ `name` | string | User display name | | ↳ `username` | string | Username | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `object_attributes` | object | object\_attributes output from the tool | | ↳ `id` | number | Global merge request ID | | ↳ `iid` | number | Project-scoped merge request number | | ↳ `title` | string | Merge request title | | ↳ `state` | string | State (opened, closed, merged, locked) | | ↳ `action` | string | Action (open, close, reopen, update, merge, etc.) | | ↳ `source_branch` | string | Source branch | | ↳ `target_branch` | string | Target branch | | ↳ `merge_status` | string | Merge status (deprecated by GitLab) | | ↳ `detailed_merge_status` | string | Detailed merge status | | ↳ `draft` | boolean | Whether the merge request is a draft | | ↳ `url` | string | Merge request URL | *** ### GitLab Pipeline [#gitlab-pipeline] Trigger workflow when a pipeline status changes in GitLab #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-69] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------ | | `object_kind` | string | Event kind (pipeline) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `user` | object | user output from the tool | | ↳ `id` | number | User ID | | ↳ `name` | string | User display name | | ↳ `username` | string | Username | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `object_attributes` | object | object\_attributes output from the tool | | ↳ `id` | number | Pipeline ID | | ↳ `status` | string | Pipeline status (success, failed, running, etc.) | | ↳ `detailed_status` | string | Detailed pipeline status | | ↳ `ref` | string | Ref the pipeline ran on | | ↳ `sha` | string | Commit SHA | | ↳ `source` | string | Pipeline source (push, web, schedule, etc.) | | ↳ `duration` | number | Pipeline duration in seconds | | ↳ `url` | string | Pipeline URL | *** ### GitLab Push [#gitlab-push] Trigger workflow when commits are pushed to a GitLab project #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `accessToken` | string | Yes | Used to create the webhook in your project. Requires the Maintainer or Owner role. | | `projectId` | string | Yes | The GitLab project to register the webhook on. | | `host` | string | No | Self-managed GitLab host. Leave blank for gitlab.com. | #### Output [#output-70] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------ | | `object_kind` | string | Event kind (push) | | `event_type` | string | GitLab event type from the X-Gitlab-Event header | | `ref` | string | Git ref that was pushed (e.g. refs/heads/main) | | `branch` | string | Branch name derived from ref | | `before` | string | SHA before the push | | `after` | string | SHA after the push | | `checkout_sha` | string | SHA of the most recent commit | | `user_username` | string | Username of the pusher | | `user_name` | string | Display name of the pusher | | `user_email` | string | Email of the pusher | | `total_commits_count` | number | Number of commits in the push | | `project` | object | project output from the tool | | ↳ `id` | number | Project ID | | ↳ `name` | string | Project name | | ↳ `web_url` | string | Project web URL | | ↳ `path_with_namespace` | string | Full path (namespace/project) | | `commits` | json | Array of commit objects included in this push | --- # Gmail (/integrations/gmail) {/* MANUAL-CONTENT-START:intro */} Use [Gmail](https://mail.google.com/) to send or draft messages, read and search mail, and manage labels and read status. Gmail triggers can start a workflow when new mail arrives. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Gmail into the workflow. Can send, read, search, and move emails. Can be used in trigger mode to trigger a workflow when a new email is received. ## Actions [#actions] ### Gmail Send [#gmail-send] Send emails using Gmail. Returns API-aligned fields only. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `to` | string | Yes | Recipient email address | | `subject` | string | No | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type for the email body (text or html) | | `threadId` | string | No | Thread ID to reply to (for threading) | | `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `attachments` | file\[] | No | Files to attach to the email | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ---------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Email labels | ### Gmail Draft [#gmail-draft] Draft emails using Gmail. Returns API-aligned fields only. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `to` | string | Yes | Recipient email address | | `subject` | string | No | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type for the email body (text or html) | | `threadId` | string | No | Thread ID to reply to (for threading) | | `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `attachments` | file\[] | No | Files to attach to the email draft | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ------------------------------ | | `draftId` | string | Draft ID | | `messageId` | string | Gmail message ID for the draft | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Email labels | ### Gmail Edit Draft [#gmail-edit-draft] Update an existing Gmail draft in place without deleting and recreating it. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `draftId` | string | Yes | ID of the draft to update (from Gmail List Drafts or Gmail Get Draft) | | `to` | string | Yes | Recipient email address | | `subject` | string | No | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type for the email body (text or html) | | `threadId` | string | No | Thread ID to associate the draft with (for threading) | | `replyToMessageId` | string | No | Gmail message ID to reply to - use the "id" field from Gmail Read results (not the RFC "messageId") | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `attachments` | file\[] | No | Files to attach to the email draft | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | ------------------------------ | | `draftId` | string | Draft ID | | `messageId` | string | Gmail message ID for the draft | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Email labels | ### Gmail Read [#gmail-read] Read emails from Gmail. Returns API-aligned fields only. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `messageId` | string | No | Gmail message ID to read (e.g., 18f1a2b3c4d5e6f7) | | `folder` | string | No | Folder/label to read emails from (e.g., INBOX, SENT, DRAFT, TRASH, SPAM, or custom label name) | | `unreadOnly` | boolean | No | Set to true to only retrieve unread messages | | `maxResults` | number | No | Maximum number of messages to retrieve (default: 1, max: 10) | | `includeAttachments` | boolean | No | Set to true to download and include email attachments | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Email labels | | `from` | string | Sender email address | | `to` | string | Recipient email address | | `subject` | string | Email subject | | `date` | string | Email date | | `body` | string | Email body text (best-effort plain text) | | `hasAttachments` | boolean | Whether the email has attachments | | `attachmentCount` | number | Number of attachments | | `attachments` | file\[] | Downloaded attachments (if enabled) | | `results` | json | Summary results when reading multiple messages | ### Gmail Search [#gmail-search] Search emails in Gmail. Returns API-aligned fields only. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------ | | `query` | string | Yes | Search query for emails | | `maxResults` | number | No | Maximum number of results to return (e.g., 10, 25, 50) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ---- | ----------------------- | | `results` | json | Array of search results | ### Gmail Move [#gmail-move] Move emails between labels/folders in Gmail. Returns API-aligned fields only. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------- | | `messageId` | string | Yes | ID of the message to move | | `addLabelIds` | string | Yes | Comma-separated label IDs to add (e.g., INBOX, Label\_123) | | `removeLabelIds` | string | No | Comma-separated label IDs to remove (e.g., INBOX, SPAM) | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------ | ---------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Email labels | ### Gmail Mark as Read [#gmail-mark-as-read] Mark a Gmail message as read. Returns API-aligned fields only. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------- | | `messageId` | string | Yes | ID of the message to mark as read | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Mark as Unread [#gmail-mark-as-unread] Mark a Gmail message as unread. Returns API-aligned fields only. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `messageId` | string | Yes | ID of the message to mark as unread | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Archive [#gmail-archive] Archive a Gmail message (remove from inbox). Returns API-aligned fields only. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | `messageId` | string | Yes | ID of the message to archive | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Unarchive [#gmail-unarchive] Unarchive a Gmail message (move back to inbox). Returns API-aligned fields only. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------ | | `messageId` | string | Yes | ID of the message to unarchive | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Delete [#gmail-delete] Delete a Gmail message (move to trash). Returns API-aligned fields only. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------- | | `messageId` | string | Yes | ID of the message to delete | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Add Label [#gmail-add-label] Add label(s) to a Gmail message. Returns API-aligned fields only. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `messageId` | string | Yes | ID of the message to add labels to | | `labelIds` | string | Yes | Comma-separated label IDs to add (e.g., INBOX, Label\_123) | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ### Gmail Remove Label [#gmail-remove-label] Remove label(s) from a Gmail message. Returns API-aligned fields only. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------- | | `messageId` | string | Yes | ID of the message to remove labels from | | `labelIds` | string | Yes | Comma-separated label IDs to remove (e.g., INBOX, Label\_123) | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------ | -------------------- | | `id` | string | Gmail message ID | | `threadId` | string | Gmail thread ID | | `labelIds` | array | Updated email labels | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### Gmail Email Trigger [#gmail-email-trigger] Triggers when new emails are received in Gmail (requires Gmail credentials) #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | This trigger requires google email credentials to access your account. | | `labelIds` | string | No | Choose which Gmail labels to monitor. Leave empty to monitor all emails. | | `labelFilterBehavior` | string | Yes | Include only emails with selected labels, or exclude emails with selected labels | | `searchQuery` | string | No | Optional Gmail search query to filter emails. Use the same format as Gmail search box (e.g., "subject:invoice", "from:[boss@company.com](mailto:boss@company.com)", "has:attachment"). Leave empty to search all emails. | | `markAsRead` | boolean | No | Automatically mark emails as read after processing | | `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `email` | object | email output from the tool | | ↳ `id` | string | Gmail message ID | | ↳ `threadId` | string | Gmail thread ID | | ↳ `subject` | string | Email subject line | | ↳ `from` | string | Sender email address | | ↳ `to` | string | Recipient email address | | ↳ `cc` | string | CC recipients | | ↳ `date` | string | Email date in ISO format | | ↳ `bodyText` | string | Plain text email body | | ↳ `bodyHtml` | string | HTML email body | | ↳ `labels` | array | Email labels array | | ↳ `hasAttachments` | boolean | Whether email has attachments | | ↳ `attachments` | file\[] | Array of email attachments as files (if includeAttachments is enabled) | | `timestamp` | string | Event timestamp | --- # Gong (/integrations/gong) {/* MANUAL-CONTENT-START:intro */} [Gong](https://www.gong.io/) is a revenue intelligence platform that captures and analyzes customer interactions across calls, emails, and meetings. By integrating Gong with Agent Serve, your agents can access conversation data, user analytics, coaching metrics, and more through automated workflows. The Gong integration in Agent Serve provides tools to: * **List and retrieve calls:** Fetch calls by date range, get individual call details, or retrieve extensive call data including trackers, topics, interaction stats, and points of interest. * **Access call transcripts:** Retrieve full transcripts with speaker turns, topics, and sentence-level timestamps for any recorded call. * **Manage users:** List all Gong users in your account or retrieve detailed information for a specific user, including settings, spoken languages, and contact details. * **Analyze activity and performance:** Pull aggregated activity statistics, interaction stats (longest monologue, interactivity, patience, question rate), and answered scorecard data for your team. * **Work with scorecards and trackers:** List scorecard definitions and keyword tracker configurations to understand how your team's conversations are being evaluated and monitored. * **Browse the call library:** List library folders and retrieve their contents, including call snippets and notes curated by your team. * **Access coaching metrics:** Retrieve coaching data for managers and their direct reports to track team development. * **List Engage flows:** Fetch sales engagement sequences (flows) with visibility and ownership details. * **Look up contacts by email or phone:** Find all Gong references to a specific email address or phone number, including related calls, emails, meetings, CRM data, and customer engagement events. By combining these capabilities, you can automate sales coaching workflows, extract conversation insights, monitor team performance, sync Gong data with other systems, and build intelligent pipelines around your organization's revenue conversations -- all securely using your Gong API credentials. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Gong into your workflow. Access call recordings, transcripts, user data, activity stats, scorecards, trackers, library content, coaching metrics, and more via the Gong API. ## Actions [#actions] ### Gong List Calls [#gong-list-calls] Retrieve call data by date range from Gong. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `fromDateTime` | string | Yes | Start date/time in ISO-8601 format (e.g., 2024-01-01T00:00:00Z) | | `toDateTime` | string | No | End date/time in ISO-8601 format (e.g., 2024-01-31T23:59:59Z). Defaults to the current execution time when omitted. | | `cursor` | string | No | Pagination cursor from a previous response | | `workspaceId` | string | No | Gong workspace ID to filter calls | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `calls` | array | List of calls matching the date range | | ↳ `id` | string | Gong's unique numeric identifier for the call | | ↳ `title` | string | Call title | | ↳ `scheduled` | string | Scheduled call time in ISO-8601 format | | ↳ `started` | string | Recording start time in ISO-8601 format | | ↳ `duration` | number | Call duration in seconds | | ↳ `direction` | string | Call direction (Inbound/Outbound) | | ↳ `system` | string | Communication platform used (e.g., Outreach) | | ↳ `scope` | string | Call scope: 'Internal', 'External', or 'Unknown' | | ↳ `media` | string | Media type (e.g., Video) | | ↳ `language` | string | Language code in ISO-639-2B format | | ↳ `url` | string | URL to the call in the Gong web app | | ↳ `primaryUserId` | string | Host team member identifier | | ↳ `workspaceId` | string | Workspace identifier | | ↳ `sdrDisposition` | string | SDR disposition classification | | ↳ `clientUniqueId` | string | Call identifier from the origin recording system | | ↳ `customData` | string | Metadata provided during call creation | | ↳ `purpose` | string | Call purpose | | ↳ `meetingUrl` | string | Web conference provider URL | | ↳ `isPrivate` | boolean | Whether the call is private | | ↳ `calendarEventId` | string | Calendar event identifier | | `cursor` | string | Pagination cursor for the next page | | `totalRecords` | number | Total number of records matching the filter | | `currentPageSize` | number | Number of records in the current page | | `currentPageNumber` | number | Current page number | ### Gong Create Call [#gong-create-call] Upload call metadata to Gong and let Gong pull the media from a URL. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `clientUniqueId` | string | Yes | Unique call ID from the source telephony or recording system | | `actualStart` | string | Yes | Actual call start time in ISO-8601 format | | `primaryUser` | string | Yes | Gong user ID for the call's host or owner | | `parties` | json | Yes | Array of call parties, with at least the primary user included | | `direction` | string | Yes | Call direction: Inbound, Outbound, Conference, or Unknown | | `downloadMediaUrl` | string | No | URL where Gong can download the call media file. If omitted, the call is created without media and Gong waits for a separate media upload. | | `title` | string | No | Human-readable call title | | `workspaceId` | string | No | Optional Gong workspace ID | | `disposition` | string | No | Optional call disposition | | `purpose` | string | No | Optional call purpose | | `context` | json | No | Optional CRM context array for the call | | `callProviderCode` | string | No | Optional conferencing or telephony provider code | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------- | | `callId` | string | Gong's unique numeric identifier for the created call | | `requestId` | string | Gong request reference ID for troubleshooting | ### Gong Get Call [#gong-get-call] Retrieve detailed data for a specific call from Gong. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `callId` | string | Yes | The Gong call ID to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `id` | string | Gong's unique numeric identifier for the call | | `title` | string | Call title | | `url` | string | URL to the call in the Gong web app | | `scheduled` | string | Scheduled call time in ISO-8601 format | | `started` | string | Recording start time in ISO-8601 format | | `duration` | number | Call duration in seconds | | `direction` | string | Call direction (Inbound/Outbound) | | `system` | string | Communication platform used (e.g., Outreach) | | `scope` | string | Call scope: 'Internal', 'External', or 'Unknown' | | `media` | string | Media type (e.g., Video) | | `language` | string | Language code in ISO-639-2B format | | `primaryUserId` | string | Host team member identifier | | `workspaceId` | string | Workspace identifier | | `sdrDisposition` | string | SDR disposition classification | | `clientUniqueId` | string | Call identifier from the origin recording system | | `customData` | string | Metadata provided during call creation | | `purpose` | string | Call purpose | | `meetingUrl` | string | Web conference provider URL | | `isPrivate` | boolean | Whether the call is private | | `calendarEventId` | string | Calendar event identifier | ### Gong Get Call Transcript [#gong-get-call-transcript] Retrieve transcripts of calls from Gong by call IDs or date range. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------ | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `callIds` | string | No | Comma-separated list of call IDs to retrieve transcripts for | | `fromDateTime` | string | No | Start date/time filter in ISO-8601 format | | `toDateTime` | string | No | End date/time filter in ISO-8601 format | | `workspaceId` | string | No | Gong workspace ID to filter calls | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `callTranscripts` | array | List of call transcripts with speaker turns and sentences | | ↳ `callId` | string | Gong's unique numeric identifier for the call | | ↳ `transcript` | array | List of monologues in the call | | ↳ `speakerId` | string | Unique ID of the speaker, cross-reference with parties | | ↳ `topic` | string | Name of the topic being discussed | | ↳ `sentences` | array | List of sentences spoken in the monologue | | ↳ `start` | number | Start time of the sentence in milliseconds from call start | | ↳ `end` | number | End time of the sentence in milliseconds from call start | | ↳ `text` | string | The sentence text | | `cursor` | string | Pagination cursor for the next page | ### Gong Get Extensive Calls [#gong-get-extensive-calls] Retrieve detailed call data including trackers, topics, highlights, and AI spotlight content (brief, outline, key points, call outcome) from Gong. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `callIds` | string | No | Comma-separated list of call IDs to retrieve detailed data for | | `fromDateTime` | string | No | Start date/time filter in ISO-8601 format | | `toDateTime` | string | No | End date/time filter in ISO-8601 format | | `workspaceId` | string | No | Gong workspace ID to filter calls | | `primaryUserIds` | string | No | Comma-separated list of user IDs to filter calls by host | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `calls` | array | List of detailed call objects with metadata, content, interaction stats, and collaboration data | | ↳ `metaData` | object | Call metadata (same fields as CallBasicData) | | ↳ `id` | string | Call ID | | ↳ `title` | string | Call title | | ↳ `scheduled` | string | Scheduled time in ISO-8601 | | ↳ `started` | string | Start time in ISO-8601 | | ↳ `duration` | number | Duration in seconds | | ↳ `direction` | string | Call direction | | ↳ `system` | string | Communication platform | | ↳ `scope` | string | Internal/External/Unknown | | ↳ `media` | string | Media type | | ↳ `language` | string | Language code (ISO-639-2B) | | ↳ `url` | string | Gong web app URL | | ↳ `primaryUserId` | string | Host user ID | | ↳ `workspaceId` | string | Workspace ID | | ↳ `sdrDisposition` | string | SDR disposition | | ↳ `clientUniqueId` | string | Origin system call ID | | ↳ `customData` | string | Custom metadata | | ↳ `purpose` | string | Call purpose | | ↳ `meetingUrl` | string | Meeting URL | | ↳ `isPrivate` | boolean | Whether call is private | | ↳ `calendarEventId` | string | Calendar event ID | | ↳ `context` | array | Links to external systems (CRM, Dialer, etc.) | | ↳ `system` | string | External system name (e.g., Salesforce) | | ↳ `objects` | array | List of objects within the external system | | ↳ `parties` | array | List of call participants | | ↳ `id` | string | Unique participant ID in the call | | ↳ `name` | string | Participant name | | ↳ `emailAddress` | string | Email address | | ↳ `title` | string | Job title | | ↳ `phoneNumber` | string | Phone number | | ↳ `speakerId` | string | Speaker ID for transcript cross-reference | | ↳ `userId` | string | Gong user ID | | ↳ `affiliation` | string | Company or non-company | | ↳ `methods` | array | Whether invited or attended | | ↳ `context` | array | Links to external systems for this party | | ↳ `content` | object | Call content data | | ↳ `brief` | string | AI-generated brief summary of the call (Call Spotlight) | | ↳ `outline` | array | AI-generated call outline sections | | ↳ `section` | string | Outline section name | | ↳ `startTime` | number | Section start in seconds from call start | | ↳ `duration` | number | Section duration in seconds | | ↳ `items` | array | Bullet items within the section | | ↳ `keyPoints` | array | AI-generated key points of the call | | ↳ `text` | string | Key point text | | ↳ `callOutcome` | object | AI-determined call outcome (Call Spotlight) | | ↳ `id` | string | Outcome category ID | | ↳ `category` | string | Outcome category name | | ↳ `name` | string | Outcome name | | ↳ `structure` | array | Call agenda parts | | ↳ `name` | string | Agenda name | | ↳ `duration` | number | Duration of this part in seconds | | ↳ `topics` | array | Topics and their durations | | ↳ `name` | string | Topic name (e.g., Pricing) | | ↳ `duration` | number | Time spent on topic in seconds | | ↳ `trackers` | array | Trackers found in the call | | ↳ `id` | string | Tracker ID | | ↳ `name` | string | Tracker name | | ↳ `count` | number | Number of occurrences | | ↳ `type` | string | Keyword or Smart | | ↳ `occurrences` | array | Details for each occurrence | | ↳ `speakerId` | string | Speaker who said it | | ↳ `startTime` | number | Seconds from call start | | ↳ `phrases` | array | Per-phrase occurrence counts | | ↳ `phrase` | string | Specific phrase | | ↳ `count` | number | Occurrences of this phrase | | ↳ `occurrences` | array | Details per occurrence | | ↳ `highlights` | array | AI-generated highlights including next steps, action items, and key moments | | ↳ `title` | string | Title of the highlight | | ↳ `items` | array | Individual highlight items | | ↳ `text` | string | Text of the highlight item | | ↳ `startTimes` | array | Start times in seconds from call start | | ↳ `interaction` | object | Interaction statistics | | ↳ `interactionStats` | array | Interaction stat measurements (Longest Monologue, Interactivity, Patience, etc.) | | ↳ `name` | string | Stat name | | ↳ `value` | number | Stat value | | ↳ `speakers` | array | Talk duration per speaker | | ↳ `id` | string | Participant ID | | ↳ `userId` | string | Gong user ID | | ↳ `talkTime` | number | Talk duration in seconds | | ↳ `video` | array | Video statistics | | ↳ `name` | string | Segment type: Browser, Presentation, WebcamPrimaryUser, WebcamNonCompany, Webcam | | ↳ `duration` | number | Total segment duration in seconds | | ↳ `questions` | object | Question counts | | ↳ `companyCount` | number | Questions by company speakers | | ↳ `nonCompanyCount` | number | Questions by non-company speakers | | ↳ `collaboration` | object | Collaboration data | | ↳ `publicComments` | array | Public comments on the call | | ↳ `id` | string | Comment ID | | ↳ `commenterUserId` | string | Commenter user ID | | ↳ `comment` | string | Comment text | | ↳ `posted` | string | Posted time in ISO-8601 | | ↳ `audioStartTime` | number | Seconds from call start the comment refers to | | ↳ `audioEndTime` | number | Seconds from call start the comment end refers to | | ↳ `duringCall` | boolean | Whether the comment was posted during the call | | ↳ `inReplyTo` | string | ID of original comment if this is a reply | | ↳ `media` | object | Media download URLs (available for 8 hours) | | ↳ `audioUrl` | string | Audio download URL | | ↳ `videoUrl` | string | Video download URL | | `cursor` | string | Pagination cursor for the next page | ### Gong List Users [#gong-list-users] List all users in your Gong account. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `cursor` | string | No | Pagination cursor from a previous response | | `includeAvatars` | string | No | Whether to include avatar URLs (true/false) | #### Output [#output-5] | Parameter | Type | Description | | --------------------------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `users` | array | List of Gong users | | ↳ `id` | string | Unique numeric user ID (up to 20 digits) | | ↳ `emailAddress` | string | User email address | | ↳ `created` | string | User creation timestamp (ISO-8601) | | ↳ `active` | boolean | Whether the user is active | | ↳ `emailAliases` | array | Alternative email addresses for the user | | ↳ `trustedEmailAddress` | string | Trusted email address for the user | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `title` | string | Job title | | ↳ `phoneNumber` | string | Phone number | | ↳ `extension` | string | Phone extension number | | ↳ `personalMeetingUrls` | array | Personal meeting URLs | | ↳ `settings` | object | User settings | | ↳ `webConferencesRecorded` | boolean | Whether web conferences are recorded | | ↳ `preventWebConferenceRecording` | boolean | Whether web conference recording is prevented | | ↳ `telephonyCallsImported` | boolean | Whether telephony calls are imported | | ↳ `emailsImported` | boolean | Whether emails are imported | | ↳ `preventEmailImport` | boolean | Whether email import is prevented | | ↳ `nonRecordedMeetingsImported` | boolean | Whether non-recorded meetings are imported | | ↳ `gongConnectEnabled` | boolean | Whether Gong Connect is enabled | | ↳ `managerId` | string | Manager user ID | | ↳ `meetingConsentPageUrl` | string | Meeting consent page URL | | ↳ `spokenLanguages` | array | Languages spoken by the user | | ↳ `language` | string | Language code | | ↳ `primary` | boolean | Whether this is the primary language | | `cursor` | string | Pagination cursor for the next page | | `totalRecords` | number | Total number of user records | | `currentPageSize` | number | Number of records in the current page | | `currentPageNumber` | number | Current page number | ### Gong Get User [#gong-get-user] Retrieve details for a specific user from Gong. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `userId` | string | Yes | The Gong user ID to retrieve | #### Output [#output-6] | Parameter | Type | Description | | --------------------------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `id` | string | Unique numeric user ID (up to 20 digits) | | `emailAddress` | string | User email address | | `created` | string | User creation timestamp (ISO-8601) | | `active` | boolean | Whether the user is active | | `emailAliases` | array | Alternative email addresses for the user | | `trustedEmailAddress` | string | Trusted email address for the user | | `firstName` | string | First name | | `lastName` | string | Last name | | `title` | string | Job title | | `phoneNumber` | string | Phone number | | `extension` | string | Phone extension number | | `personalMeetingUrls` | array | Personal meeting URLs | | `settings` | object | User settings | | ↳ `webConferencesRecorded` | boolean | Whether web conferences are recorded | | ↳ `preventWebConferenceRecording` | boolean | Whether web conference recording is prevented | | ↳ `telephonyCallsImported` | boolean | Whether telephony calls are imported | | ↳ `emailsImported` | boolean | Whether emails are imported | | ↳ `preventEmailImport` | boolean | Whether email import is prevented | | ↳ `nonRecordedMeetingsImported` | boolean | Whether non-recorded meetings are imported | | ↳ `gongConnectEnabled` | boolean | Whether Gong Connect is enabled | | `managerId` | string | Manager user ID | | `meetingConsentPageUrl` | string | Meeting consent page URL | | `spokenLanguages` | array | Languages spoken by the user | | ↳ `language` | string | Language code | | ↳ `primary` | boolean | Whether this is the primary language | ### Gong Aggregate Activity [#gong-aggregate-activity] Retrieve aggregated activity statistics for users by date range from Gong. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) | | `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) | | `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-7] | Parameter | Type | Description | | --------------------------------- | ------ | -------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `usersActivity` | array | Aggregated activity statistics per user | | ↳ `userId` | string | Gong's unique numeric identifier for the user | | ↳ `userEmailAddress` | string | Email address of the Gong user | | ↳ `callsAsHost` | number | Number of recorded calls this user hosted | | ↳ `callsAttended` | number | Number of calls where this user was a participant (not host) | | ↳ `callsGaveFeedback` | number | Number of recorded calls the user gave feedback on | | ↳ `callsReceivedFeedback` | number | Number of recorded calls the user received feedback on | | ↳ `callsRequestedFeedback` | number | Number of recorded calls the user requested feedback on | | ↳ `callsScorecardsFilled` | number | Number of scorecards the user completed | | ↳ `callsScorecardsReceived` | number | Number of calls where someone filled a scorecard on the user's calls | | ↳ `ownCallsListenedTo` | number | Number of the user's own calls the user listened to | | ↳ `othersCallsListenedTo` | number | Number of other users' calls the user listened to | | ↳ `callsSharedInternally` | number | Number of calls the user shared internally | | ↳ `callsSharedExternally` | number | Number of calls the user shared externally | | ↳ `callsCommentsGiven` | number | Number of calls where the user provided at least one comment | | ↳ `callsCommentsReceived` | number | Number of calls where the user received at least one comment | | ↳ `callsMarkedAsFeedbackGiven` | number | Number of calls where the user selected Mark as reviewed | | ↳ `callsMarkedAsFeedbackReceived` | number | Number of calls where others selected Mark as reviewed on the user's calls | | `timeZone` | string | The company's defined timezone in Gong | | `fromDateTime` | string | Start of results in ISO-8601 format | | `toDateTime` | string | End of results in ISO-8601 format | | `cursor` | string | Pagination cursor for the next page | ### Gong Day-by-Day Activity [#gong-day-by-day-activity] Retrieve detailed day-by-day activity (call IDs per activity type) for users by date range from Gong. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) | | `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) | | `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-8] | Parameter | Type | Description | | --------------------------------- | ------ | -------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `usersDetailedActivities` | array | Day-by-day activity per user, with call IDs grouped by activity type | | ↳ `userId` | string | Gong's unique numeric identifier for the user | | ↳ `userEmailAddress` | string | Email address of the Gong user | | ↳ `userDailyActivityStats` | array | One record per day in the date range | | ↳ `fromDate` | string | Start of the day (ISO-8601) | | ↳ `toDate` | string | End of the day (ISO-8601) | | ↳ `callsAsHost` | array | IDs of calls the user hosted | | ↳ `callsAttended` | array | IDs of calls the user attended (not host) | | ↳ `callsGaveFeedback` | array | IDs of calls the user gave feedback on | | ↳ `callsReceivedFeedback` | array | IDs of calls the user received feedback on | | ↳ `callsRequestedFeedback` | array | IDs of calls the user requested feedback on | | ↳ `callsScorecardsFilled` | array | IDs of calls the user filled scorecards on | | ↳ `callsScorecardsReceived` | array | IDs of the user's calls that received a scorecard | | ↳ `ownCallsListenedTo` | array | IDs of the user's own calls the user listened to | | ↳ `othersCallsListenedTo` | array | IDs of other users' calls the user listened to | | ↳ `callsSharedInternally` | array | IDs of calls the user shared internally | | ↳ `callsSharedExternally` | array | IDs of calls the user shared externally | | ↳ `callsCommentsGiven` | array | IDs of calls the user commented on | | ↳ `callsCommentsReceived` | array | IDs of the user's calls that received a comment | | ↳ `callsMarkedAsFeedbackGiven` | array | IDs of calls the user marked as reviewed | | ↳ `callsMarkedAsFeedbackReceived` | array | IDs of the user's calls marked as reviewed by others | | `cursor` | string | Pagination cursor for the next page | ### Gong Aggregate by Period [#gong-aggregate-by-period] Retrieve aggregated user activity grouped into time periods (day, week, month, quarter, year) by date range from Gong. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `aggregationPeriod` | string | Yes | Calendar period to group activity by: DAY, WEEK, MONTH, QUARTER, or YEAR (week starts Monday) | | `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) | | `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) | | `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-9] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `usersAggregateActivity` | array | Aggregated activity per user, one item per consecutive time period in the range | | ↳ `userId` | string | Gong's unique numeric identifier for the user | | ↳ `userEmailAddress` | string | Email address of the Gong user | | ↳ `userAggregateActivity` | array | Activity counts per time period | | ↳ `fromDate` | string | Start of the period (ISO-8601) | | ↳ `toDate` | string | End of the period (ISO-8601) | | ↳ `callsAsHost` | number | Calls the user hosted | | ↳ `callsAttended` | number | Calls the user attended (not host) | | ↳ `callsGaveFeedback` | number | Calls the user gave feedback on | | ↳ `callsReceivedFeedback` | number | Calls the user received feedback on | | ↳ `callsRequestedFeedback` | number | Calls the user requested feedback on | | ↳ `callsScorecardsFilled` | number | Scorecards the user completed | | ↳ `callsScorecardsReceived` | number | Calls where someone filled a scorecard on the user's calls | | ↳ `ownCallsListenedTo` | number | The user's own calls the user listened to | | ↳ `othersCallsListenedTo` | number | Other users' calls the user listened to | | ↳ `callsSharedInternally` | number | Calls the user shared internally | | ↳ `callsSharedExternally` | number | Calls the user shared externally | | ↳ `callsCommentsGiven` | number | Calls the user commented on | | ↳ `callsCommentsReceived` | number | Calls where the user's calls received a comment | | ↳ `callsMarkedAsFeedbackGiven` | number | Calls the user marked as reviewed | | ↳ `callsMarkedAsFeedbackReceived` | number | The user's calls marked as reviewed by others | | `cursor` | string | Pagination cursor for the next page | ### Gong Interaction Stats [#gong-interaction-stats] Retrieve interaction statistics for users by date range from Gong. Only includes calls with Whisper enabled. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `userIds` | string | No | Comma-separated list of Gong user IDs (up to 20 digits each) | | `fromDate` | string | Yes | Start date in YYYY-MM-DD format (inclusive, in company timezone) | | `toDate` | string | Yes | End date in YYYY-MM-DD format (exclusive, in company timezone, cannot exceed current day) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-10] | Parameter | Type | Description | | -------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `peopleInteractionStats` | array | Interaction statistics per user. Applicable stat names: 'Longest Monologue', 'Longest Customer Story', 'Interactivity', 'Patience', 'Question Rate'. | | ↳ `userId` | string | Gong's unique numeric identifier for the user | | ↳ `userEmailAddress` | string | Email address of the Gong user | | ↳ `personInteractionStats` | array | List of interaction stat measurements for this user | | ↳ `name` | string | Stat name (e.g. Longest Monologue, Interactivity, Patience, Question Rate) | | ↳ `value` | number | Stat measurement value (can be double or integer) | | `timeZone` | string | The company's defined timezone in Gong | | `fromDateTime` | string | Start of results in ISO-8601 format | | `toDateTime` | string | End of results in ISO-8601 format | | `cursor` | string | Pagination cursor for the next page | ### Gong Answered Scorecards [#gong-answered-scorecards] Retrieve answered scorecards for reviewed users or by date range from Gong. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `callFromDate` | string | No | Start date for calls in YYYY-MM-DD format (inclusive, in company timezone). Defaults to earliest recorded call. | | `callToDate` | string | No | End date for calls in YYYY-MM-DD format (exclusive, in company timezone). Defaults to latest recorded call. | | `reviewFromDate` | string | No | Start date for reviews in YYYY-MM-DD format (inclusive, in company timezone). Defaults to earliest reviewed call. | | `reviewToDate` | string | No | End date for reviews in YYYY-MM-DD format (exclusive, in company timezone). Defaults to latest reviewed call. | | `scorecardIds` | string | No | Comma-separated list of scorecard IDs to filter by | | `reviewedUserIds` | string | No | Comma-separated list of reviewed user IDs to filter by | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `answeredScorecards` | array | List of answered scorecards with scores and answers | | ↳ `answeredScorecardId` | number | Identifier of the answered scorecard | | ↳ `scorecardId` | number | Identifier of the scorecard | | ↳ `scorecardName` | string | Scorecard name | | ↳ `callId` | number | Gong's unique numeric identifier for the call | | ↳ `callStartTime` | string | Date/time of the call in ISO-8601 format | | ↳ `reviewedUserId` | number | User ID of the team member being reviewed | | ↳ `reviewerUserId` | number | User ID of the team member who completed the scorecard | | ↳ `reviewTime` | string | Date/time when the review was completed in ISO-8601 format | | ↳ `visibilityType` | string | Visibility type of the scorecard answer | | ↳ `answers` | array | Answers in the answered scorecard | | ↳ `questionId` | number | Identifier of the question | | ↳ `questionRevisionId` | number | Identifier of the revision version of the question | | ↳ `isOverall` | boolean | Whether this is the overall question | | ↳ `score` | number | Score between 1 to 50 if answered, null otherwise | | ↳ `answerText` | string | The answer's text if answered, null otherwise | | ↳ `notApplicable` | boolean | Whether the question is not applicable to this call | | ↳ `selectedOptions` | array | Identifiers of the options selected for select-type questions, null otherwise | | `cursor` | string | Pagination cursor for the next page | ### Gong List Library Folders [#gong-list-library-folders] Retrieve library folders from Gong. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `workspaceId` | string | No | Gong workspace ID to filter folders | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `folders` | array | List of library folders with id, name, and parent relationships | | ↳ `id` | string | Gong unique numeric identifier for the folder | | ↳ `name` | string | Display name of the folder | | ↳ `parentFolderId` | string | Gong unique numeric identifier for the parent folder (null for root folder) | | ↳ `createdBy` | string | Gong unique numeric identifier for the user who added the folder | | ↳ `updated` | string | Folder's last update time in ISO-8601 format | ### Gong Get Folder Content [#gong-get-folder-content] Retrieve the list of calls in a specific library folder from Gong. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `folderId` | string | No | The library folder ID to retrieve content for (up to 20 digits) | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------ | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `folderId` | string | Gong's unique numeric identifier for the folder | | `folderName` | string | Display name of the folder | | `createdBy` | string | Gong's unique numeric identifier for the user who added the folder | | `updated` | string | Folder's last update time in ISO-8601 format | | `calls` | array | List of calls in the library folder | | ↳ `id` | string | Gong unique numeric identifier of the call | | ↳ `title` | string | The title of the call | | ↳ `note` | string | A note attached to the call in the folder | | ↳ `addedBy` | string | Gong unique numeric identifier for the user who added the call | | ↳ `created` | string | Date and time the call was added to folder in ISO-8601 format | | ↳ `url` | string | URL of the call | | ↳ `snippet` | object | Call snippet time range | | ↳ `fromSec` | number | Snippet start in seconds relative to call start | | ↳ `toSec` | number | Snippet end in seconds relative to call start | ### Gong List Scorecards [#gong-list-scorecards] Retrieve scorecard definitions from Gong settings. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | #### Output [#output-14] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `scorecards` | array | List of scorecard definitions with questions | | ↳ `scorecardId` | number | Unique identifier for the scorecard | | ↳ `scorecardName` | string | Display name of the scorecard | | ↳ `workspaceId` | number | Workspace identifier associated with this scorecard | | ↳ `enabled` | boolean | Whether the scorecard is active | | ↳ `updaterUserId` | number | ID of the user who last modified the scorecard | | ↳ `created` | string | Creation timestamp in ISO-8601 format | | ↳ `updated` | string | Last update timestamp in ISO-8601 format | | ↳ `reviewMethod` | string | Review method configured for the scorecard | | ↳ `questions` | array | List of questions in the scorecard | | ↳ `questionId` | number | Unique identifier for the question | | ↳ `questionRevisionId` | number | Identifier for the specific revision of the question | | ↳ `questionText` | string | The text content of the question | | ↳ `isOverall` | boolean | Whether this is the primary overall question | | ↳ `questionType` | string | The type of the question (e.g. range or select) | | ↳ `answerGuide` | string | Guidance text describing how to answer the question | | ↳ `minRange` | number | Minimum score for range-type questions | | ↳ `maxRange` | number | Maximum score for range-type questions | | ↳ `answerOptions` | array | Selectable options for select-type questions | | ↳ `id` | number | Identifier of the option | | ↳ `text` | string | Display text of the option | ### Gong List Trackers [#gong-list-trackers] Retrieve smart tracker and keyword tracker definitions from Gong settings. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `workspaceId` | string | No | The ID of the workspace the keyword trackers are in. When empty, all trackers in all workspaces are returned. | #### Output [#output-15] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `trackers` | array | List of keyword tracker definitions | | ↳ `trackerId` | string | Unique identifier for the tracker | | ↳ `trackerName` | string | Display name of the tracker | | ↳ `workspaceId` | string | ID of the workspace containing the tracker | | ↳ `languageKeywords` | array | Keywords organized by language | | ↳ `language` | string | ISO 639-2/B language code ("mul" means keywords apply across all languages) | | ↳ `keywords` | array | Words and phrases in the designated language | | ↳ `includeRelatedForms` | boolean | Whether to include different word forms | | ↳ `affiliation` | string | Speaker affiliation filter: "Anyone", "Company", or "NonCompany" | | ↳ `partOfQuestion` | boolean | Whether to track keywords only within questions | | ↳ `saidAt` | string | Position in call: "Anytime", "First", or "Last" | | ↳ `saidAtInterval` | number | Duration to search (in minutes or percentage) | | ↳ `saidAtUnit` | string | Unit for saidAtInterval | | ↳ `saidInTopics` | array | Topics where keywords should be detected | | ↳ `filterQuery` | string | JSON-formatted call filtering criteria | | ↳ `created` | string | Creation timestamp in ISO-8601 format | | ↳ `creatorUserId` | string | ID of the user who created the tracker (null for built-in trackers) | | ↳ `updated` | string | Last modification timestamp in ISO-8601 format | | ↳ `updaterUserId` | string | ID of the user who last modified the tracker | ### Gong List Workspaces [#gong-list-workspaces] List all company workspaces in Gong. #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `workspaces` | array | List of Gong workspaces | | ↳ `id` | string | Gong unique numeric identifier for the workspace | | ↳ `name` | string | Display name of the workspace | | ↳ `description` | string | Description of the workspace's purpose or content | ### Gong List Flows [#gong-list-flows] List Gong Engage flows (sales engagement sequences). #### Input [#input-17] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `flowOwnerEmail` | string | Yes | Email of a Gong user. The API will return 'PERSONAL' flows belonging to this user in addition to 'COMPANY' flows. | | `workspaceId` | string | No | Optional workspace ID to filter flows to a specific workspace | | `cursor` | string | No | Pagination cursor from a previous API call to retrieve the next page of records | #### Output [#output-17] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `flows` | array | List of Gong Engage flows | | ↳ `id` | string | The ID of the flow | | ↳ `name` | string | The name of the flow | | ↳ `folderId` | string | The ID of the folder this flow is under | | ↳ `folderName` | string | The name of the folder this flow is under | | ↳ `visibility` | string | The flow visibility type (COMPANY, PERSONAL, or SHARED) | | ↳ `creationDate` | string | Creation time of the flow in ISO-8601 format | | ↳ `exclusive` | boolean | Indicates whether a prospect in this flow can be added to other flows | | `totalRecords` | number | Total number of flow records available | | `currentPageSize` | number | Number of records returned in the current page | | `currentPageNumber` | number | Current page number | | `cursor` | string | Pagination cursor for retrieving the next page of records | ### Gong Assign Flow Prospects [#gong-assign-flow-prospects] Assign up to 200 CRM prospects (contacts or leads) to a Gong Engage flow. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `flowId` | string | Yes | The Gong Engage flow ID to assign the prospects to | | `crmProspectsIds` | string | Yes | Comma-separated list of CRM prospect IDs (contacts or leads) to assign | | `flowInstanceOwnerEmail` | string | Yes | Email of the Gong user who owns the flow instance and its to-dos | #### Output [#output-18] | Parameter | Type | Description | | ----------------------------- | ------- | ----------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `prospectsAssigned` | array | Prospects successfully assigned to the flow | | ↳ `flowId` | string | The flow ID | | ↳ `flowName` | string | The flow name | | ↳ `crmProspectId` | string | The CRM prospect ID | | ↳ `flowInstanceId` | string | The created flow instance ID | | ↳ `flowInstanceOwnerEmail` | string | Email of the flow instance owner | | ↳ `flowInstanceOwnerFullName` | string | Full name of the flow instance owner | | ↳ `flowInstanceCreateDate` | string | Creation time of the flow instance in ISO-8601 format | | ↳ `flowInstanceStatus` | string | Status of the flow instance | | ↳ `workspaceId` | string | Workspace ID | | ↳ `exclusive` | boolean | Whether this prospect can be added to other flows | | `prospectsNotAssigned` | array | Prospects that failed to be assigned to the flow | | ↳ `flowId` | string | The flow ID | | ↳ `crmProspectId` | string | The CRM prospect ID | | ↳ `errorCode` | string | Failure reason: InvalidArgument, InvalidState, or UnexpectedError | | ↳ `errorMessage` | string | Human-readable failure message | ### Gong Unassign Flow Prospects [#gong-unassign-flow-prospects] Remove a prospect from Gong Engage flows. Omit the flow ID to remove the prospect from all flows they are assigned to. #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `crmProspectId` | string | Yes | The CRM ID of the prospect to unassign | | `flowId` | string | No | The ID of the flow to unassign the prospect from. If omitted, the prospect is removed from all flows they are assigned to. | | `unassignedByUserEmail` | string | No | Email address of the Gong user requesting to remove the prospect from the flow | #### Output [#output-19] | Parameter | Type | Description | | --------------------------- | ------ | -------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `unassignedFlowInstanceIds` | array | IDs of the flow instances the prospect was successfully removed from | ### Gong Get Prospect Flows [#gong-get-prospect-flows] Get the Gong Engage flows currently assigned to the given CRM prospects. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `crmProspectsIds` | string | Yes | Comma-separated list of CRM prospect IDs (contacts or leads) to look up | #### Output [#output-20] | Parameter | Type | Description | | ----------------------------- | ------- | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `prospectsAssigned` | array | Flows currently assigned to the requested prospects | | ↳ `flowId` | string | The flow ID | | ↳ `flowName` | string | The flow name | | ↳ `crmProspectId` | string | The CRM prospect ID | | ↳ `flowInstanceId` | string | The flow instance ID | | ↳ `flowInstanceOwnerEmail` | string | Email of the flow instance owner | | ↳ `flowInstanceOwnerFullName` | string | Full name of the flow instance owner | | ↳ `flowInstanceCreateDate` | string | Creation time of the flow instance in ISO-8601 format | | ↳ `flowInstanceStatus` | string | Status of the flow instance | | ↳ `workspaceId` | string | Workspace ID | | ↳ `exclusive` | boolean | Whether this prospect can be added to other flows | ### Gong Get Coaching [#gong-get-coaching] Retrieve coaching metrics for a manager from Gong. #### Input [#input-21] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `managerId` | string | Yes | Gong user ID of the manager | | `workspaceId` | string | Yes | Gong workspace ID | | `fromDate` | string | Yes | Start date in ISO-8601 format | | `toDate` | string | Yes | End date in ISO-8601 format | #### Output [#output-21] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------------------------------------ | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `coachingData` | array | A list of coaching data entries, one per manager's team | | ↳ `manager` | object | The manager user information | | ↳ `id` | string | Gong unique numeric identifier for the user | | ↳ `emailAddress` | string | Email address of the Gong user | | ↳ `firstName` | string | First name of the Gong user | | ↳ `lastName` | string | Last name of the Gong user | | ↳ `title` | string | Job title of the Gong user | | ↳ `directReportsMetrics` | array | Coaching metrics for each direct report | | ↳ `report` | object | The direct report user information | | ↳ `id` | string | Gong unique numeric identifier for the user | | ↳ `emailAddress` | string | Email address of the Gong user | | ↳ `firstName` | string | First name of the Gong user | | ↳ `lastName` | string | Last name of the Gong user | | ↳ `title` | string | Job title of the Gong user | | ↳ `metrics` | json | A map of metric names to arrays of string values representing coaching metrics | ### Gong Ask Anything [#gong-ask-anything] Ask a natural-language question about a CRM account, deal, contact, or lead. Gong answers from up to 60 calls and 500 emails associated with the entity. Consumes Gong credits. #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `workspaceId` | string | Yes | Gong workspace ID the entity belongs to | | `crmEntityType` | string | Yes | Type of the CRM entity: ACCOUNT, CONTACT, DEAL, or LEAD | | `crmEntityId` | string | Yes | The CRM ID of the entity the question is asked about | | `question` | string | Yes | The natural-language question to ask about the entity | | `timePeriod` | string | Yes | Time period of conversations to consider: LAST\_7DAYS, LAST\_30DAYS, LAST\_90DAYS, LAST\_90\_DAYS\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR, THIS\_WEEK, THIS\_MONTH, THIS\_YEAR, THIS\_QUARTER, CUSTOM\_RANGE, or ALL\_CONVERSATIONS | | `fromDateTime` | string | No | Start date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. | | `toDateTime` | string | No | End date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. | #### Output [#output-22] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `numOfCallsSearched` | number | Number of calls used to generate the answer | | `numOfEmailsSearched` | number | Number of emails used to generate the answer | | `answer` | array | Sections of the generated answer with supporting evidence | | ↳ `answerItems` | array | Text items that make up this part of the answer | | ↳ `callFindings` | array | Evidence from calls used to generate this answer item | | ↳ `emailFindings` | array | Evidence from emails used to generate this answer item | ### Gong Get Brief [#gong-get-brief] Generate an AI brief (configured in Gong Agent Studio) for a CRM account, deal, contact, or lead. Consumes Gong credits. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `workspaceId` | string | Yes | Gong workspace ID the entity belongs to | | `briefName` | string | Yes | Name of the brief to generate, as configured in Gong Agent Studio > AI Briefer | | `crmEntityType` | string | Yes | Type of the CRM entity: ACCOUNT, CONTACT, DEAL, or LEAD | | `crmEntityId` | string | Yes | The CRM ID of the entity to generate the brief for | | `timePeriod` | string | Yes | Time period of conversations to consider: LAST\_7DAYS, LAST\_30DAYS, LAST\_90DAYS, LAST\_90\_DAYS\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR\_SINCE\_LAST\_ACTIVITY, LAST\_YEAR, THIS\_WEEK, THIS\_MONTH, THIS\_YEAR, THIS\_QUARTER, CUSTOM\_RANGE, or ALL\_CONVERSATIONS | | `fromDateTime` | string | No | Start date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. | | `toDateTime` | string | No | End date/time (UTC, ISO-8601) for calls and emails to include. Required when timePeriod is CUSTOM\_RANGE. | #### Output [#output-23] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `numOfCallsSearched` | number | Number of calls used to generate the brief | | `numOfEmailsSearched` | number | Number of emails used to generate the brief | | `briefSections` | array | Sections of the generated brief | | ↳ `title` | string | Section title | | ↳ `sectionSummary` | array | The content displayed for this section | | ↳ `briefSectionType` | string | The section type, which determines the source of the data | | ↳ `conversationFindings` | object | Evidence from calls and emails used to generate this section | | ↳ `webFindings` | array | Evidence from web search results used to generate this section | | ↳ `mcpResult` | object | Result from an MCP data source used to generate this section | ### Gong Get Logs [#gong-get-logs] Retrieve Gong log entries of a specific type within a time range. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `logType` | string | Yes | Type of logs requested: AccessLog, UserActivityLog, UserCallPlay, ExternallySharedCallAccess, or ExternallySharedCallPlay | | `fromDateTime` | string | Yes | Time from which to retrieve log records, in ISO-8601 format (e.g., '2024-01-01T00:00:00Z') | | `toDateTime` | string | No | Time until which to retrieve log records, in ISO-8601 format. Defaults to the latest available logs when omitted. | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-24] | Parameter | Type | Description | | ---------------------------- | ------ | --------------------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | | `logEntries` | array | Log entries matching the requested type and time range | | ↳ `userId` | string | Gong's unique numeric identifier for the user, if available | | ↳ `userEmailAddress` | string | Email address of the user, if available | | ↳ `userFullName` | string | Full name of the user, if available | | ↳ `impersonatorUserId` | string | Gong's unique numeric identifier for the impersonating user, if any | | ↳ `impersonatorEmailAddress` | string | Email address of the impersonating user, if any | | ↳ `impersonatorFullName` | string | Full name of the impersonating user, if any | | ↳ `impersonatorCompanyId` | string | Gong's unique numeric identifier for the impersonating user's company | | ↳ `eventTime` | string | Time of the event in ISO-8601 format | | ↳ `logRecord` | object | Log fields and associated values, populated dynamically per log type | | `cursor` | string | Pagination cursor for the next page | | `totalRecords` | number | Total number of records matching the filter | | `currentPageSize` | number | Number of records in the current page | | `currentPageNumber` | number | Current page number | ### Gong Lookup Email [#gong-lookup-email] Find all references to an email address in Gong (calls, email messages, meetings, CRM data, engagement). #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `emailAddress` | string | Yes | Email address to look up | #### Output [#output-25] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------ | | `requestId` | string | Gong request reference ID for troubleshooting | | `calls` | array | Related calls referencing this email address | | ↳ `id` | string | Gong's unique numeric identifier for the call (up to 20 digits) | | ↳ `status` | string | Call status | | ↳ `externalSystems` | array | Links to external systems such as CRM, Telephony System, etc. | | ↳ `system` | string | External system name | | ↳ `objects` | array | List of objects within the external system | | ↳ `objectType` | string | Object type | | ↳ `externalId` | string | External ID | | `emails` | array | Related email messages referencing this email address | | ↳ `id` | string | Gong's unique 32 character identifier for the email message | | ↳ `from` | string | The sender's email address | | ↳ `sentTime` | string | Date and time the email was sent in ISO-8601 format | | ↳ `mailbox` | string | The mailbox from which the email was retrieved | | ↳ `messageHash` | string | Hash code of the email message | | `meetings` | array | Related meetings referencing this email address | | ↳ `id` | string | Gong's unique identifier for the meeting | | `customerData` | array | Links to data from external systems (CRM, Telephony, etc.) that reference this email | | ↳ `system` | string | External system name | | ↳ `objects` | array | List of objects in the external system | | ↳ `id` | string | Gong's unique numeric identifier for the Lead or Contact (up to 20 digits) | | ↳ `objectType` | string | Object type | | ↳ `externalId` | string | External ID | | ↳ `mirrorId` | string | CRM Mirror ID | | ↳ `fields` | array | Object fields | | ↳ `name` | string | Field name | | ↳ `value` | json | Field value | | `customerEngagement` | array | Customer engagement events (such as viewing external shared calls) | | ↳ `eventType` | string | Event type | | ↳ `eventName` | string | Event name | | ↳ `timestamp` | string | Date and time the event occurred in ISO-8601 format | | ↳ `contentId` | string | Event content ID | | ↳ `contentUrl` | string | Event content URL | | ↳ `reportingSystem` | string | Event reporting system | | ↳ `sourceEventId` | string | Source event ID | ### Gong Lookup Phone [#gong-lookup-phone] Find all references to a phone number in Gong (calls, email messages, meetings, CRM data, and associated contacts). #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `phoneNumber` | string | Yes | Phone number to look up (must start with + followed by country code) | #### Output [#output-26] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------------------- | | `requestId` | string | Gong request reference ID for troubleshooting | | `suppliedPhoneNumber` | string | The phone number that was supplied in the request | | `matchingPhoneNumbers` | array | Phone numbers found in the system that match the supplied number | | `emailAddresses` | array | Email addresses associated with the phone number | | `calls` | array | Related calls referencing this phone number | | ↳ `id` | string | Gong's unique numeric identifier for the call (up to 20 digits) | | ↳ `status` | string | Call status | | ↳ `externalSystems` | array | Links to external systems such as CRM, Telephony System, etc. | | ↳ `system` | string | External system name | | ↳ `objects` | array | List of objects within the external system | | ↳ `objectType` | string | Object type | | ↳ `externalId` | string | External ID | | `emails` | array | Related email messages associated with contacts matching this phone number | | ↳ `id` | string | Gong's unique 32 character identifier for the email message | | ↳ `from` | string | The sender's email address | | ↳ `sentTime` | string | Date and time the email was sent in ISO-8601 format | | ↳ `mailbox` | string | The mailbox from which the email was retrieved | | ↳ `messageHash` | string | Hash code of the email message | | `meetings` | array | Related meetings associated with this phone number | | ↳ `id` | string | Gong's unique identifier for the meeting | | `customerData` | array | Links to data from external systems (CRM, Telephony, etc.) that reference this phone number | | ↳ `system` | string | External system name | | ↳ `objects` | array | List of objects in the external system | | ↳ `id` | string | Gong's unique numeric identifier for the Lead or Contact (up to 20 digits) | | ↳ `objectType` | string | Object type | | ↳ `externalId` | string | External ID | | ↳ `mirrorId` | string | CRM Mirror ID | | ↳ `fields` | array | Object fields | | ↳ `name` | string | Field name | | ↳ `value` | json | Field value | ### Gong Purge Email Address [#gong-purge-email-address] Erase all Gong data (calls, email messages, leads, contacts) referencing an email address. Asynchronous and irreversible. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `emailAddress` | string | Yes | Email address whose associated data should be permanently erased from Gong | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | ### Gong Purge Phone Number [#gong-purge-phone-number] Erase all Gong data (calls, leads, contacts) referencing a phone number. Asynchronous and irreversible. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `accessKey` | string | Yes | Gong API Access Key | | `accessKeySecret` | string | Yes | Gong API Access Key Secret | | `phoneNumber` | string | Yes | Phone number whose associated data should be permanently erased from Gong. Must include a leading "+" and country code (e.g., +14255552671) | #### Output [#output-28] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------- | | `requestId` | string | A Gong request reference ID for troubleshooting purposes | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Gong Call Completed [#gong-call-completed] Trigger workflow when a call is completed and processed in Gong #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Agent Serve verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. | #### Output [#output-29] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `eventType` | string | Constant identifier for automation-rule webhooks (`gong.automation_rule`). Gong does not send distinct event names in the payload. | | `callId` | string | Gong call ID (same value as metaData.id when present) | | `isTest` | boolean | Whether this is a test webhook from the Gong UI | | `callData` | json | Full call data object | | `metaData` | object | metaData output from the tool | | ↳ `id` | string | Gong call ID | | ↳ `url` | string | URL to the call in Gong | | ↳ `title` | string | Call title | | ↳ `scheduled` | string | Scheduled start time (ISO 8601) | | ↳ `started` | string | Actual start time (ISO 8601) | | ↳ `duration` | number | Call duration in seconds | | ↳ `primaryUserId` | string | Primary Gong user ID | | ↳ `workspaceId` | string | Gong workspace ID | | ↳ `direction` | string | Call direction (Inbound, Outbound, etc.) | | ↳ `system` | string | Communication platform used (e.g. Zoom, Teams) | | ↳ `scope` | string | Call scope (Internal, External, or Unknown) | | ↳ `media` | string | Media type (Video or Audio) | | ↳ `language` | string | Language code (ISO-639-2B) | | ↳ `sdrDisposition` | string | SDR disposition classification (when present) | | ↳ `clientUniqueId` | string | Call identifier from the origin recording system (when present) | | ↳ `customData` | string | Custom metadata from call creation (when present) | | ↳ `purpose` | string | Call purpose (when present) | | ↳ `meetingUrl` | string | Web conference provider URL (when present) | | ↳ `isPrivate` | boolean | Whether the call is private (when present) | | ↳ `calendarEventId` | string | Calendar event identifier (when present) | | `parties` | array | Array of call participants with name, email, title, and affiliation | | `context` | array | Array of CRM context objects (Salesforce opportunities, accounts, etc.) | | `trackers` | array | Keyword and smart trackers from call content (same shape as Gong extensive-calls `content.trackers`) | | `topics` | array | Topic segments with durations from call content (`content.topics`) | | `highlights` | array | AI-generated highlights from call content (`content.highlights`) | *** ### Gong Webhook [#gong-webhook] Generic webhook trigger for all Gong events #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Agent Serve verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. | #### Output [#output-30] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `eventType` | string | Constant identifier for automation-rule webhooks (`gong.automation_rule`). Gong does not send distinct event names in the payload. | | `callId` | string | Gong call ID (same value as metaData.id when present) | | `isTest` | boolean | Whether this is a test webhook from the Gong UI | | `callData` | json | Full call data object | | `metaData` | object | metaData output from the tool | | ↳ `id` | string | Gong call ID | | ↳ `url` | string | URL to the call in Gong | | ↳ `title` | string | Call title | | ↳ `scheduled` | string | Scheduled start time (ISO 8601) | | ↳ `started` | string | Actual start time (ISO 8601) | | ↳ `duration` | number | Call duration in seconds | | ↳ `primaryUserId` | string | Primary Gong user ID | | ↳ `workspaceId` | string | Gong workspace ID | | ↳ `direction` | string | Call direction (Inbound, Outbound, etc.) | | ↳ `system` | string | Communication platform used (e.g. Zoom, Teams) | | ↳ `scope` | string | Call scope (Internal, External, or Unknown) | | ↳ `media` | string | Media type (Video or Audio) | | ↳ `language` | string | Language code (ISO-639-2B) | | ↳ `sdrDisposition` | string | SDR disposition classification (when present) | | ↳ `clientUniqueId` | string | Call identifier from the origin recording system (when present) | | ↳ `customData` | string | Custom metadata from call creation (when present) | | ↳ `purpose` | string | Call purpose (when present) | | ↳ `meetingUrl` | string | Web conference provider URL (when present) | | ↳ `isPrivate` | boolean | Whether the call is private (when present) | | ↳ `calendarEventId` | string | Calendar event identifier (when present) | | `parties` | array | Array of call participants with name, email, title, and affiliation | | `context` | array | Array of CRM context objects (Salesforce opportunities, accounts, etc.) | | `trackers` | array | Keyword and smart trackers from call content (same shape as Gong extensive-calls `content.trackers`) | | `topics` | array | Topic segments with durations from call content (`content.topics`) | | `highlights` | array | AI-generated highlights from call content (`content.highlights`) | --- # Google Service Accounts (/integrations/google-service-account) Google service accounts can access shared resources directly or impersonate a Google Workspace user through domain-wide delegation. This guide covers the JSON key, required APIs, delegation scopes, and credential setup in Agent Serve. For example, you could build a workflow that iterates through a list of employees, impersonates each one to read their Google Docs, and uploads the contents to a shared knowledge base — all without requiring any of those users to sign in. ## Prerequisites [#prerequisites] Before adding a service account to Agent Serve, you need to configure it in the Google Cloud Console and Google Workspace Admin Console. ### 1. Create a Service Account in Google Cloud [#1-create-a-service-account-in-google-cloud] Go to the [Google Cloud Console](https://console.cloud.google.com/) and select your project (or create one) Navigate to **IAM & Admin** → **Service Accounts** Click **Create Service Account**, give it a name and description, then click **Create and Continue**
      Google Cloud Console — Create service account form
      Skip the optional role and user access steps and click **Done** Click on the newly created service account, go to the **Keys** tab, and click **Add Key** → **Create new key** Select **JSON** as the key type and click **Create**. A JSON key file will download — keep this safe
      Google Cloud Console — Create private key dialog with JSON selected
      The JSON key file contains your service account's private key. Treat it like a password — do not commit it to source control or share it publicly. ### 2. Enable the Required APIs [#2-enable-the-required-apis] In the Google Cloud Console, go to **APIs & Services** → **Library** and enable the APIs for the services your workflows will use. See the [scopes reference](#scopes-reference) below for the full list of APIs by service. ### 3. Set Up Domain-Wide Delegation [#3-set-up-domain-wide-delegation] In the Google Cloud Console, go to **IAM & Admin** → **Service Accounts**, click on your service account, and copy the **Client ID** (the numeric ID, not the email) Open the [Google Workspace Admin Console](https://admin.google.com/) and navigate to **Security** → **Access and data control** → **API controls** Click **Manage Domain Wide Delegation**, then click **Add new** Paste the **Client ID** from your service account, then add the OAuth scopes for the services your workflows need. Copy the full scope URLs from the [scopes reference](#scopes-reference) below — only authorize scopes for services you plan to use.
      Google Workspace Admin Console — Add a new client ID with OAuth scopes
      Click **Authorize**
      Domain-wide delegation must be configured by a Google Workspace admin. If you are not an admin, send the Client ID and required scopes to your admin. ### Scopes Reference [#scopes-reference] The table below lists every Google service that supports service account authentication in Agent Serve, the API to enable in Google Cloud Console, and the delegation scopes to authorize. Copy the scope string for each service you need and paste it into the Google Workspace Admin Console.
      Service API to Enable Delegation Scopes
      Gmail Gmail API {'https://www.googleapis.com/auth/gmail.send'}
      {'https://www.googleapis.com/auth/gmail.modify'}
      {'https://www.googleapis.com/auth/gmail.labels'}
      Google Sheets Google Sheets API, Google Drive API {'https://www.googleapis.com/auth/drive'}
      {'https://www.googleapis.com/auth/drive.file'}
      Google Drive Google Drive API {'https://www.googleapis.com/auth/drive'}
      {'https://www.googleapis.com/auth/drive.file'}
      Google Docs Google Docs API, Google Drive API {'https://www.googleapis.com/auth/drive'}
      {'https://www.googleapis.com/auth/drive.file'}
      Google Slides Google Slides API, Google Drive API {'https://www.googleapis.com/auth/drive'}
      {'https://www.googleapis.com/auth/drive.file'}
      Google Forms Google Forms API, Google Drive API {'https://www.googleapis.com/auth/drive'}
      {'https://www.googleapis.com/auth/forms.body'}
      {'https://www.googleapis.com/auth/forms.responses.readonly'}
      Google Calendar Google Calendar API {'https://www.googleapis.com/auth/calendar'}
      Google Contacts People API {'https://www.googleapis.com/auth/contacts'}
      BigQuery BigQuery API {'https://www.googleapis.com/auth/bigquery'}
      Google Tasks Tasks API {'https://www.googleapis.com/auth/tasks'}
      Google Vault Vault API, Cloud Storage API {'https://www.googleapis.com/auth/ediscovery'}
      {'https://www.googleapis.com/auth/devstorage.read_only'}
      Google Groups Admin SDK API {'https://www.googleapis.com/auth/admin.directory.group'}
      {'https://www.googleapis.com/auth/admin.directory.group.member'}
      Google Meet Google Meet API {'https://www.googleapis.com/auth/meetings.space.created'}
      {'https://www.googleapis.com/auth/meetings.space.readonly'}
      You only need to enable APIs and authorize scopes for the services you plan to use. When authorizing multiple services, combine their scope strings with commas into a single entry in the Admin Console. ## Adding the Service Account to Agent Serve [#adding-the-service-account-to-agent-serve] Once Google Cloud and Workspace are configured, add the service account as a credential in Agent Serve. Open **Integrations** from your workspace sidebar Search for "Gmail" or "Google Drive" and open it — any Google integration works, since they share one service account — then click **Add service account**. If the button opens a menu, choose the service-account option.
      Gmail integration page with the Add service account button in the top right
      Paste the full contents into **JSON key**, or use **Or upload a file** to select the JSON key file.
      Add Google service account dialog with JSON key, file upload, display name, and description fields
      Give the credential a display name (the service account email is used by default) Click **Add service account**
      The JSON key file is validated for the required fields (`type`, `client_email`, `private_key`, `project_id`) and encrypted before being stored. ## Using Delegated Access in Workflows [#using-delegated-access-in-workflows] When you use a Google block (Gmail, Sheets, Drive, etc.) in a workflow and select a service account credential, an **Impersonated Account** field appears below the credential selector. Enter the email address of the Google Workspace user you want the service account to act as. For example, if you enter `alice@yourcompany.com`, the workflow will send emails from Alice's account, read her spreadsheets, or access her calendar — depending on the scopes you authorized. The impersonated email must belong to a user in the Google Workspace domain where you configured domain-wide delegation. Impersonating external email addresses will fail. --- # Google Ads (/integrations/google_ads) {/* MANUAL-CONTENT-START:intro */} Use [Google Ads](https://ads.google.com) in Agent Serve to list accessible accounts and campaigns, retrieve ad groups and performance metrics, and run custom Google Ads Query Language (GAQL) queries. These read operations support campaign reporting and budget monitoring workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to Google Ads to list accounts, campaigns, and ad groups, get performance metrics, and run custom GAQL queries. Start a workflow when someone submits a lead form, and send qualified or won leads back to Google Ads as offline conversions so bidding favors better leads. Use Ingest Offline Conversions or Ingest Enhanced Conversions for Leads, which go through Google's Data Manager API; the older Upload operations only work for Google Cloud projects Google has allowlisted. ## Actions [#actions] ### List Google Ads Customers [#list-google-ads-customers] List all Google Ads customer accounts accessible by the authenticated user #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------- | | `customerIds` | array | List of accessible customer IDs | | `totalCount` | number | Total number of accessible customer accounts | ### Google Ads Search (GAQL) [#google-ads-search-gaql] Run a custom Google Ads Query Language (GAQL) query #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `query` | string | Yes | GAQL query to execute | | `pageToken` | string | No | Page token for pagination | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `results` | json | Array of result objects from the GAQL query | | `totalResultsCount` | number | Total number of matching results | | `nextPageToken` | string | Token for the next page of results | ### List Google Ads Campaigns [#list-google-ads-campaigns] List campaigns in a Google Ads account with optional status filtering #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `status` | string | No | Filter by campaign status (ENABLED, PAUSED, REMOVED) | | `limit` | number | No | Maximum number of campaigns to return | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------- | | `campaigns` | array | List of campaigns in the account | | ↳ `id` | string | Campaign ID | | ↳ `name` | string | Campaign name | | ↳ `status` | string | Campaign status (ENABLED, PAUSED, REMOVED) | | ↳ `channelType` | string | Advertising channel type (SEARCH, DISPLAY, SHOPPING, VIDEO, PERFORMANCE\_MAX) | | ↳ `startDate` | string | Campaign start date (YYYY-MM-DD) | | ↳ `endDate` | string | Campaign end date (YYYY-MM-DD) | | ↳ `budgetAmountMicros` | string | Daily budget in micros (divide by 1,000,000 for currency value) | | `totalCount` | number | Total number of campaigns returned | ### Google Ads Campaign Performance [#google-ads-campaign-performance] Get performance metrics for Google Ads campaigns over a date range #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `campaignId` | string | No | Filter by specific campaign ID | | `dateRange` | string | No | Predefined date range (LAST\_7\_DAYS, LAST\_30\_DAYS, THIS\_MONTH, LAST\_MONTH, TODAY, YESTERDAY) | | `startDate` | string | No | Custom start date in YYYY-MM-DD format | | `endDate` | string | No | Custom end date in YYYY-MM-DD format | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------- | | `campaigns` | array | Campaign performance data broken down by date | | ↳ `id` | string | Campaign ID | | ↳ `name` | string | Campaign name | | ↳ `status` | string | Campaign status | | ↳ `impressions` | string | Number of impressions | | ↳ `clicks` | string | Number of clicks | | ↳ `costMicros` | string | Cost in micros (divide by 1,000,000 for currency value) | | ↳ `ctr` | number | Click-through rate (0.0 to 1.0) | | ↳ `conversions` | number | Number of conversions | | ↳ `date` | string | Date for this row (YYYY-MM-DD) | | `totalCount` | number | Total number of result rows | ### List Google Ads Ad Groups [#list-google-ads-ad-groups] List ad groups in a Google Ads campaign #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `campaignId` | string | Yes | Campaign ID to list ad groups for | | `status` | string | No | Filter by ad group status (ENABLED, PAUSED, REMOVED) | | `limit` | number | No | Maximum number of ad groups to return | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------------------- | | `adGroups` | array | List of ad groups in the campaign | | ↳ `id` | string | Ad group ID | | ↳ `name` | string | Ad group name | | ↳ `status` | string | Ad group status (ENABLED, PAUSED, REMOVED) | | ↳ `type` | string | Ad group type (SEARCH\_STANDARD, DISPLAY\_STANDARD, SHOPPING\_PRODUCT\_ADS) | | ↳ `campaignId` | string | Parent campaign ID | | ↳ `campaignName` | string | Parent campaign name | | `totalCount` | number | Total number of ad groups returned | ### Google Ads Ad Performance [#google-ads-ad-performance] Get performance metrics for individual ads over a date range #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `campaignId` | string | No | Filter by campaign ID | | `adGroupId` | string | No | Filter by ad group ID | | `dateRange` | string | No | Predefined date range (LAST\_7\_DAYS, LAST\_30\_DAYS, THIS\_MONTH, LAST\_MONTH, TODAY, YESTERDAY) | | `startDate` | string | No | Custom start date in YYYY-MM-DD format | | `endDate` | string | No | Custom end date in YYYY-MM-DD format | | `limit` | number | No | Maximum number of results to return | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------- | | `ads` | array | Ad performance data broken down by date | | ↳ `adId` | string | Ad ID | | ↳ `adGroupId` | string | Parent ad group ID | | ↳ `adGroupName` | string | Parent ad group name | | ↳ `campaignId` | string | Parent campaign ID | | ↳ `campaignName` | string | Parent campaign name | | ↳ `adType` | string | Ad type (RESPONSIVE\_SEARCH\_AD, EXPANDED\_TEXT\_AD, etc.) | | ↳ `impressions` | string | Number of impressions | | ↳ `clicks` | string | Number of clicks | | ↳ `costMicros` | string | Cost in micros (divide by 1,000,000 for currency value) | | ↳ `ctr` | number | Click-through rate (0.0 to 1.0) | | ↳ `conversions` | number | Number of conversions | | ↳ `date` | string | Date for this row (YYYY-MM-DD) | | `totalCount` | number | Total number of result rows | ### List Google Ads Conversion Actions [#list-google-ads-conversion-actions] List conversion actions in a Google Ads account, with their resource names for conversion uploads #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `conversionActionType` | string | No | Only list actions of this type, e.g. UPLOAD\_CLICKS for actions that accept offline click conversion imports | | `limit` | number | No | Maximum number of conversion actions to return | #### Output [#output-6] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `conversionActions` | array | Conversion actions in the account (removed actions are excluded) | | ↳ `id` | string | Conversion action ID | | ↳ `name` | string | Conversion action name | | ↳ `resourceName` | string | Resource name (customers/\{customerId}/conversionActions/\{id}) to pass to conversion uploads | | ↳ `type` | string | Conversion action type, e.g. UPLOAD\_CLICKS for offline click imports | | ↳ `status` | string | Status (ENABLED or HIDDEN) | | ↳ `category` | string | Category, e.g. QUALIFIED\_LEAD or PURCHASE | | ↳ `primaryForGoal` | boolean | Whether the action is primary for its goal and used for bidding | | ↳ `defaultValue` | number | Default conversion value | | ↳ `defaultCurrencyCode` | string | Default currency code | | ↳ `alwaysUseDefaultValue` | boolean | Whether the default value always replaces uploaded values | | `totalCount` | number | Number of conversion actions returned | ### Ingest Google Ads Offline Conversions [#ingest-google-ads-offline-conversions] Send offline click conversions (for example qualified or won leads) to Google Ads by gclid, gbraid, or wbraid through the Data Manager API, so bidding learns which clicks turn into business. Recommended over Upload Click Conversions, which Google limits to allowlisted projects. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID that owns the conversion action (numeric, no dashes) | | `managerCustomerId` | string | No | Manager account customer ID, when the connected Google account reaches the customer through a manager | | `conversionAction` | string | Yes | Conversion action ID, or its resource name (customers/\{customerId}/conversionActions/\{id}). Must be an UPLOAD\_CLICKS action ("Website (Import from clicks)"). A row can override it. | | `eventSource` | string | No | Where the conversion happened: WEB, APP, IN\_STORE, PHONE, MESSAGE, OTHER. Defaults to WEB. A row can override it. | | `gclid` | string | No | Google click ID captured from the landing page URL (single-row upload) | | `gbraid` | string | No | gbraid URL parameter for iOS app clicks (single-row upload) | | `wbraid` | string | No | wbraid URL parameter for iOS web clicks (single-row upload) | | `conversionDateTime` | string | No | When the conversion happened, with a timezone: ISO 8601 such as "2026-06-01T14:30:00-04:00", or "2026-06-01 14:30:00-04:00" (single-row upload) | | `conversionValue` | number | No | Conversion value in currency units, not micros (single-row upload) | | `currencyCode` | string | No | ISO 4217 currency code for the value, e.g. USD (single-row upload) | | `orderId` | string | No | Unique order or lead ID, sent as the transaction ID; Google uses it to deduplicate (single-row upload) | | `adUserDataConsent` | string | No | Consent for ad user data for every row: GRANTED or DENIED. A row can override it. | | `adPersonalizationConsent` | string | No | Consent for ad personalization for every row: GRANTED or DENIED. A row can override it. | | `validateOnly` | boolean | No | Validate the rows with Google without importing them | | `conversions` | json | No | Up to 2,000 rows to send at once, replacing the single-row fields. Each row: \{ gclid \| gbraid \| wbraid, conversionDateTime, conversionValue?, currencyCode?, orderId?, conversionAction?, eventSource?, adUserDataConsent?, adPersonalizationConsent? } | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------------------------------------------------------- | | `customerIds` | json | List of accessible customer IDs (list\_customers) | | `results` | json | Query results (search), or rows Google accepted (conversion uploads and adjustments) | | `conversionActions` | json | Conversion actions with their resource names (list\_conversion\_actions) | | `uploadedCount` | number | Rows Google accepted (conversion uploads and adjustments) | | `failedCount` | number | Rows Google rejected (conversion uploads and adjustments) | | `errors` | json | Row-level errors: index, type, code, message, field (conversion uploads) | | `jobId` | string | Upload job ID for the offline diagnostics report (conversion uploads) | | `validateOnly` | boolean | Whether the upload was only validated (conversion uploads and ingests) | | `requestId` | string | Data Manager request ID to pass to Get Ingest Status (ingests, ingest status) | | `eventCount` | number | Conversion events sent (ingests) | | `destinationCount` | number | Conversion actions the events were sent to (ingests) | | `warnings` | json | Field warnings on accepted events: index, field, reason, description (ingests) | | `requestStatus` | string | PROCESSING, SUCCESS, PARTIAL\_SUCCESS, FAILED, or REQUEST\_STATUS\_UNKNOWN (get\_ingest\_status) | | `destinations` | json | Per conversion action: status, event count, and error and warning counts by reason (get\_ingest\_status) | | `campaigns` | json | Campaign data (list\_campaigns, campaign\_performance) | | `adGroups` | json | Ad group data (list\_ad\_groups) | | `ads` | json | Ad performance data (ad\_performance) | | `totalCount` | number | Total number of results | | `totalResultsCount` | number | Total results count (search) | | `nextPageToken` | string | Token for next page of results | ### Ingest Google Ads Enhanced Conversions for Leads [#ingest-google-ads-enhanced-conversions-for-leads] Send offline lead conversions matched by the lead's email or phone through the Data Manager API. Agent Serve normalizes and SHA-256 hashes them before sending, so raw contact data never leaves Agent Serve. Recommended over Upload Enhanced Conversions for Leads, which Google limits to allowlisted projects. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID that owns the conversion action (numeric, no dashes) | | `managerCustomerId` | string | No | Manager account customer ID, when the connected Google account reaches the customer through a manager | | `conversionAction` | string | Yes | Conversion action ID, or its resource name (customers/\{customerId}/conversionActions/\{id}). Must be an UPLOAD\_CLICKS action ("Website (Import from clicks)"). A row can override it. | | `eventSource` | string | No | Where the conversion happened: WEB, APP, IN\_STORE, PHONE, MESSAGE, OTHER. Defaults to WEB. A row can override it. | | `gclid` | string | No | Google click ID captured from the landing page URL (single-row upload) | | `gbraid` | string | No | gbraid URL parameter for iOS app clicks (single-row upload) | | `wbraid` | string | No | wbraid URL parameter for iOS web clicks (single-row upload) | | `conversionDateTime` | string | No | When the conversion happened, with a timezone: ISO 8601 such as "2026-06-01T14:30:00-04:00", or "2026-06-01 14:30:00-04:00" (single-row upload) | | `conversionValue` | number | No | Conversion value in currency units, not micros (single-row upload) | | `currencyCode` | string | No | ISO 4217 currency code for the value, e.g. USD (single-row upload) | | `orderId` | string | No | Unique order or lead ID, sent as the transaction ID; Google uses it to deduplicate (single-row upload) | | `adUserDataConsent` | string | No | Consent for ad user data for every row: GRANTED or DENIED. A row can override it. | | `adPersonalizationConsent` | string | No | Consent for ad personalization for every row: GRANTED or DENIED. A row can override it. | | `validateOnly` | boolean | No | Validate the rows with Google without importing them | | `email` | string | No | Lead's email address, hashed with SHA-256 before sending (single-row upload; email or phone required) | | `phoneNumber` | string | No | Lead's phone number with country code, e.g. +14155550123; hashed with SHA-256 before sending (single-row upload) | | `sessionAttributes` | string | No | Base64 session attributes string captured with the lead form submission, which Google recommends sending (single-row upload) | | `conversions` | json | No | Up to 2,000 rows to send at once, replacing the single-row fields. Each row: \{ email?, phoneNumber?, gclid?, sessionAttributes?, conversionDateTime, conversionValue?, currencyCode?, orderId?, conversionAction?, eventSource?, adUserDataConsent?, adPersonalizationConsent? } with an email or phone | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------------------------------------------------------- | | `customerIds` | json | List of accessible customer IDs (list\_customers) | | `results` | json | Query results (search), or rows Google accepted (conversion uploads and adjustments) | | `conversionActions` | json | Conversion actions with their resource names (list\_conversion\_actions) | | `uploadedCount` | number | Rows Google accepted (conversion uploads and adjustments) | | `failedCount` | number | Rows Google rejected (conversion uploads and adjustments) | | `errors` | json | Row-level errors: index, type, code, message, field (conversion uploads) | | `jobId` | string | Upload job ID for the offline diagnostics report (conversion uploads) | | `validateOnly` | boolean | Whether the upload was only validated (conversion uploads and ingests) | | `requestId` | string | Data Manager request ID to pass to Get Ingest Status (ingests, ingest status) | | `eventCount` | number | Conversion events sent (ingests) | | `destinationCount` | number | Conversion actions the events were sent to (ingests) | | `warnings` | json | Field warnings on accepted events: index, field, reason, description (ingests) | | `requestStatus` | string | PROCESSING, SUCCESS, PARTIAL\_SUCCESS, FAILED, or REQUEST\_STATUS\_UNKNOWN (get\_ingest\_status) | | `destinations` | json | Per conversion action: status, event count, and error and warning counts by reason (get\_ingest\_status) | | `campaigns` | json | Campaign data (list\_campaigns, campaign\_performance) | | `adGroups` | json | Ad group data (list\_ad\_groups) | | `ads` | json | Ad performance data (ad\_performance) | | `totalCount` | number | Total number of results | | `totalResultsCount` | number | Total results count (search) | | `nextPageToken` | string | Token for next page of results | ### Get Google Ads Ingest Status [#get-google-ads-ingest-status] Check how Google processed a Data Manager conversion request: success, partial success, failure, or still processing, with error and warning counts per reason. Statuses appear about 30 minutes after ingesting and can take up to 24 hours. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `requestId` | string | Yes | Request ID returned by an ingest operation | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------ | | `requestId` | string | Request ID that was checked | | `requestStatus` | string | Overall status: PROCESSING, SUCCESS, PARTIAL\_SUCCESS, FAILED, or REQUEST\_STATUS\_UNKNOWN | | `destinations` | array | Status per conversion action, in the order of the original request | ### Upload Google Ads Click Conversions [#upload-google-ads-click-conversions] Import offline click conversions (for example qualified or won leads) to Google Ads by gclid, gbraid, or wbraid, so bidding learns which clicks turn into business. Needs a Google Cloud project that Google allowlisted for offline conversion import; use Ingest Offline Conversions otherwise. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `conversionAction` | string | Yes | Conversion action resource name (customers/\{customerId}/conversionActions/\{id}) or numeric ID. Must be an enabled UPLOAD\_CLICKS action. A row can override it. | | `gclid` | string | No | Google click ID captured from the landing page URL (single-row upload) | | `gbraid` | string | No | gbraid URL parameter for clicks that led to an iOS app (single-row upload) | | `wbraid` | string | No | wbraid URL parameter for iOS app clicks that led to the web (single-row upload) | | `conversionDateTime` | string | No | When the conversion happened, after the click, with a timezone: "2026-06-01 14:30:00-04:00" or ISO 8601 (single-row upload) | | `conversionValue` | number | No | Conversion value (single-row upload) | | `currencyCode` | string | No | ISO 4217 currency code for the value, e.g. USD (single-row upload) | | `orderId` | string | No | Unique order or lead ID; prevents duplicate imports and is needed to retract or restate later (single-row upload) | | `adUserDataConsent` | string | No | Consent for ad user data: GRANTED or DENIED | | `validateOnly` | boolean | No | Validate the rows without importing them | | `conversions` | json | No | Up to 2,000 rows to upload at once, replacing the single-row fields. Each row: \{ gclid \| gbraid \| wbraid, conversionDateTime, conversionValue?, currencyCode?, orderId?, conversionAction?, adUserDataConsent? } | #### Output [#output-10] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------- | | `results` | array | Rows Google accepted | | ↳ `index` | number | Zero-based row index in the request | | ↳ `conversionAction` | string | Conversion action resource name | | ↳ `conversionDateTime` | string | Conversion date time | | ↳ `gclid` | string | Google click ID | | ↳ `gbraid` | string | gbraid URL parameter | | ↳ `wbraid` | string | wbraid URL parameter | ### Upload Google Ads Enhanced Conversions for Leads [#upload-google-ads-enhanced-conversions-for-leads] Import offline lead conversions matched by the lead's email or phone. Agent Serve normalizes and SHA-256 hashes them before sending, so raw contact data never leaves Agent Serve. Needs a Google Cloud project that Google allowlisted for offline conversion import; use Ingest Enhanced Conversions for Leads otherwise. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `conversionAction` | string | Yes | Conversion action resource name (customers/\{customerId}/conversionActions/\{id}) or numeric ID. Must be an enabled UPLOAD\_CLICKS action. A row can override it. | | `gclid` | string | No | Google click ID captured from the landing page URL (single-row upload) | | `gbraid` | string | No | gbraid URL parameter for clicks that led to an iOS app (single-row upload) | | `wbraid` | string | No | wbraid URL parameter for iOS app clicks that led to the web (single-row upload) | | `conversionDateTime` | string | No | When the conversion happened, after the click, with a timezone: "2026-06-01 14:30:00-04:00" or ISO 8601 (single-row upload) | | `conversionValue` | number | No | Conversion value (single-row upload) | | `currencyCode` | string | No | ISO 4217 currency code for the value, e.g. USD (single-row upload) | | `orderId` | string | No | Unique order or lead ID; prevents duplicate imports and is needed to retract or restate later (single-row upload) | | `adUserDataConsent` | string | No | Consent for ad user data: GRANTED or DENIED | | `validateOnly` | boolean | No | Validate the rows without importing them | | `email` | string | No | Lead's email address, hashed with SHA-256 before upload (single-row upload; email or phone required) | | `phoneNumber` | string | No | Lead's phone number with country code, e.g. +14155550123; hashed with SHA-256 before upload (single-row upload) | | `conversions` | json | No | Up to 2,000 rows to upload at once, replacing the single-row fields. Each row: \{ email?, phoneNumber?, gclid?, conversionDateTime, conversionValue?, currencyCode?, orderId?, conversionAction?, adUserDataConsent? } with an email or phone | #### Output [#output-11] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------- | | `results` | array | Rows Google accepted | | ↳ `index` | number | Zero-based row index in the request | | ↳ `conversionAction` | string | Conversion action resource name | | ↳ `conversionDateTime` | string | Conversion date time | | ↳ `gclid` | string | Google click ID, when supplied | | ↳ `gbraid` | string | gbraid URL parameter, when supplied | | ↳ `wbraid` | string | wbraid URL parameter, when supplied | ### Adjust Google Ads Conversions [#adjust-google-ads-conversions] Retract an uploaded conversion (for example a lead that turned out to be junk) or restate its value (for example the final deal size) #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Google Ads customer ID (numeric, no dashes) | | `developerToken` | string | No | Google Ads API developer token (optional: Google sunset developer tokens on September 9, 2026 and ignores them) | | `managerCustomerId` | string | No | Manager account customer ID (if accessing via manager account) | | `conversionAction` | string | Yes | Conversion action resource name or numeric ID of the original conversion. A row can override it. | | `adjustmentType` | string | No | RETRACTION zeroes the conversion; RESTATEMENT changes its value (single-row adjustment) | | `orderId` | string | No | Order ID the conversion was uploaded with; required if it had one (single-row adjustment) | | `gclid` | string | No | Google click ID of a conversion uploaded without an order ID (single-row adjustment) | | `conversionDateTime` | string | No | Original conversion date time, required with gclid: "2026-06-01 14:30:00-04:00" or ISO 8601 | | `adjustmentDateTime` | string | No | When the adjustment happened, after the conversion, with a timezone (single-row adjustment) | | `adjustedValue` | number | No | New conversion value; required for a restatement, not allowed for a retraction | | `currencyCode` | string | No | ISO 4217 currency code of the restated value, e.g. USD | | `adjustments` | json | No | Up to 2,000 rows to adjust at once, replacing the single-row fields. Each row: \{ adjustmentType, orderId \| (gclid + conversionDateTime), adjustmentDateTime, adjustedValue?, currencyCode?, conversionAction? } | | `validateOnly` | boolean | No | Validate the rows without applying them | #### Output [#output-12] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------ | | `results` | array | Adjustments Google accepted | | ↳ `index` | number | Zero-based row index in the request | | ↳ `adjustmentType` | string | RETRACTION or RESTATEMENT | | ↳ `conversionAction` | string | Conversion action resource name | | ↳ `adjustmentDateTime` | string | Adjustment date time | | ↳ `orderId` | string | Order ID of the adjusted conversion | | ↳ `gclid` | string | Google click ID of the adjusted conversion | | ↳ `conversionDateTime` | string | Date time of the adjusted conversion | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Google Ads Lead Form [#google-ads-lead-form] Trigger workflow when someone submits a Google Ads lead form, with their answers keyed by column ID #### Configuration [#configuration] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `googleKey` | string | Yes | The same key you enter in the lead form’s webhook settings in Google Ads. Deliveries with a different key are rejected. | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `leadId` | string | Unique lead ID; use it to deduplicate | | `fields` | json | Submitted answers keyed by column ID, e.g. \{ "FULL\_NAME": "Jane Doe", "EMAIL": "[jane@example.com](mailto:jane@example.com)", "PHONE\_NUMBER": "+14155550123" } | | `columns` | json | Submitted answers in form order, each \{ columnId, columnName, value }; columnName is the question text when Google sends it | | `fullName` | string | FULL\_NAME, or FIRST\_NAME and LAST\_NAME joined, when the form asked for them | | `email` | string | EMAIL, or WORK\_EMAIL when only that was asked | | `phoneNumber` | string | PHONE\_NUMBER, or WORK\_PHONE when only that was asked | | `isTest` | boolean | True for test leads sent from the Google Ads UI | | `gclid` | string | Google click ID of the lead; pass it to conversion uploads | | `formId` | string | Lead form ID | | `campaignId` | string | Campaign ID | | `adGroupId` | string | Ad group ID (video and discovery ads only) | | `creativeId` | string | Creative ID (video and discovery ads only) | | `assetGroupId` | string | Asset group ID (Performance Max campaigns only) | | `leadSubmitTime` | string | When the lead was submitted, ISO 8601 (e.g. 2024-09-26T12:30:00Z) | | `leadStage` | string | Lead stage at the time of delivery | | `leadSource` | string | Where the lead came from: LEAD\_FORM or CONVERSATIONAL\_AGENT | | `apiVersion` | string | Webhook payload version | | `payload` | json | Full lead payload as Google sent it, without the google\_key | --- # Google AppSheet (/integrations/google_appsheet) {/* MANUAL-CONTENT-START:intro */} Use [Google AppSheet](https://about.appsheet.com/) to find, add, edit, and delete table rows. Use Selector expressions to filter results, and identify existing rows by their key column. ## Getting Your Application Access Key [#getting-your-application-access-key] Google AppSheet authenticates with a static Application Access Key rather than OAuth: 1. Open your app in the [AppSheet editor](https://www.appsheet.com/) 2. Go to **Settings > Integrations** 3. Enable **IN: from cloud services to your app** 4. Under **Application Access Keys**, create a key (or use an existing one) and copy it 5. Use the Application Access Key, along with your App ID and table name, in the Agent Serve block configuration The AppSheet API requires an Enterprise plan. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google AppSheet into your workflow. Find, add, edit, and delete rows in an AppSheet table using the AppSheet API. Requires an AppSheet Enterprise plan with the API enabled and an Application Access Key. ## Actions [#actions] ### AppSheet Find Rows [#appsheet-find-rows] Read rows from an AppSheet table. Omit the selector to return every row, or provide a Selector expression (Filter/Select/OrderBy/Top) to narrow and shape the results. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | AppSheet Application Access Key | | `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) | | `tableName` | string | Yes | Name of the table to read from | | `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" | | `selector` | string | No | Optional AppSheet expression to filter/sort/limit rows, e.g. Filter(TableName, \[Age] >= 21) or Top(OrderBy(Filter(TableName, true), \[LastName], true), 10) | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------- | | `rows` | array | Matching rows returned by AppSheet | | `metadata` | json | Operation metadata | | ↳ `rowCount` | number | Number of rows returned | ### AppSheet Add Rows [#appsheet-add-rows] Add new rows to an AppSheet table. The key column value must be provided explicitly, or omitted when its Initial value expression generates it automatically (e.g. UNIQUEID()). #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | AppSheet Application Access Key | | `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) | | `tableName` | string | Yes | Name of the table to add rows to | | `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" | | `rows` | json | Yes | Array of row objects to add, each a column-name/value map, e.g. \[\{ "FirstName": "Jan", "LastName": "Jones" }] | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------- | | `rows` | array | Rows added by AppSheet, including any generated key values | | `metadata` | json | Operation metadata | | ↳ `rowCount` | number | Number of rows added | ### AppSheet Edit Rows [#appsheet-edit-rows] Update existing rows in an AppSheet table. Each row must explicitly include the key column name and value, plus any columns to change. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | AppSheet Application Access Key | | `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) | | `tableName` | string | Yes | Name of the table to update rows in | | `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" | | `rows` | json | Yes | Array of row objects to update, each including the key column and the columns to change, e.g. \[\{ "RowID": "123", "Status": "Done" }] | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | ------------------------ | | `rows` | array | Rows updated by AppSheet | | `metadata` | json | Operation metadata | | ↳ `rowCount` | number | Number of rows updated | ### AppSheet Delete Rows [#appsheet-delete-rows] Delete rows from an AppSheet table. Each row only needs to include the key column name and value. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | AppSheet Application Access Key | | `appId` | string | Yes | AppSheet app ID (found in App > Settings > Integrations > IN) | | `tableName` | string | Yes | Name of the table to delete rows from | | `region` | string | No | AppSheet region subdomain: "www" (global, default), "eu", or "asia-southeast" | | `rows` | json | Yes | Array of row objects identifying rows to delete by key column, e.g. \[\{ "RowID": "123" }] | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ------------------------ | | `rows` | array | Rows deleted by AppSheet | | `metadata` | json | Operation metadata | | ↳ `rowCount` | number | Number of rows deleted | --- # Google BigQuery (/integrations/google_bigquery) {/* MANUAL-CONTENT-START:intro */} [BigQuery](https://cloud.google.com/bigquery) stores and queries datasets with SQL. Use this integration to run queries, inspect datasets, tables, and schemas, and insert rows. Connect the Google credentials required by the selected operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to Google BigQuery to run SQL queries, list datasets and tables, get table metadata, and insert rows. ## Actions [#actions] ### BigQuery Run Query [#bigquery-run-query] Run a SQL query against Google BigQuery and return the results #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `query` | string | Yes | SQL query to execute | | `useLegacySql` | boolean | No | Whether to use legacy SQL syntax (default: false) | | `maxResults` | number | No | Maximum number of rows to return | | `defaultDatasetId` | string | No | Default dataset for unqualified table names | | `location` | string | No | Processing location (e.g., "US", "EU") | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `columns` | array | Array of column names from the query result | | `rows` | array | Array of row objects keyed by column name | | `totalRows` | string | Total number of rows in the complete result set | | `jobComplete` | boolean | Whether the query completed within the timeout | | `totalBytesProcessed` | string | Total bytes processed by the query | | `cacheHit` | boolean | Whether the query result was served from cache | | `jobReference` | object | Job reference (useful when jobComplete is false) | | ↳ `projectId` | string | Project ID containing the job | | ↳ `jobId` | string | Unique job identifier | | ↳ `location` | string | Geographic location of the job | | `pageToken` | string | Token for fetching additional result pages | ### BigQuery Get Query Results [#bigquery-get-query-results] Fetch results for a previously submitted BigQuery job, or the next page of a Run Query result #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `jobId` | string | Yes | ID of the BigQuery job to fetch results for | | `pageToken` | string | No | Token for pagination | | `maxResults` | number | No | Maximum number of rows to return | | `timeoutMs` | number | No | How long to wait for the job to complete, in milliseconds | | `location` | string | No | Processing location of the job (e.g., "US", "EU") | | `startIndex` | string | No | Zero-based index of the starting row | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `columns` | array | Array of column names from the query result | | `rows` | array | Array of row objects keyed by column name | | `totalRows` | string | Total number of rows in the complete result set | | `jobComplete` | boolean | Whether the job has completed | | `totalBytesProcessed` | string | Total bytes processed by the query | | `cacheHit` | boolean | Whether the query result was served from cache | | `jobReference` | object | Job reference (useful when jobComplete is false) | | ↳ `projectId` | string | Project ID containing the job | | ↳ `jobId` | string | Unique job identifier | | ↳ `location` | string | Geographic location of the job | | `pageToken` | string | Token for fetching additional result pages | ### BigQuery List Datasets [#bigquery-list-datasets] List all datasets in a Google BigQuery project #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------ | | `projectId` | string | Yes | Google Cloud project ID | | `maxResults` | number | No | Maximum number of datasets to return | | `pageToken` | string | No | Token for pagination | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `datasets` | array | Array of dataset objects | | ↳ `datasetId` | string | Unique dataset identifier | | ↳ `projectId` | string | Project ID containing this dataset | | ↳ `friendlyName` | string | Descriptive name for the dataset | | ↳ `location` | string | Geographic location where the data resides | | `nextPageToken` | string | Token for fetching next page of results | ### BigQuery Create Dataset [#bigquery-create-dataset] Create a new dataset in a Google BigQuery project #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | ID for the new BigQuery dataset | | `location` | string | No | Geographic location for the dataset (e.g., "US", "EU") | | `friendlyName` | string | No | Human-readable name for the dataset | | `description` | string | No | Description of the dataset | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `datasetId` | string | Unique dataset identifier | | `projectId` | string | Project ID containing this dataset | | `friendlyName` | string | Descriptive name for the dataset | | `description` | string | Dataset description | | `location` | string | Geographic location where the data resides | | `creationTime` | string | Dataset creation time (milliseconds since epoch) | ### BigQuery Delete Dataset [#bigquery-delete-dataset] Delete a dataset from a Google BigQuery project #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------ | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID to delete | | `deleteContents` | boolean | No | Whether to delete tables inside the dataset (default: false) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the dataset was deleted | ### BigQuery List Tables [#bigquery-list-tables] List all tables in a Google BigQuery dataset #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `maxResults` | number | No | Maximum number of tables to return | | `pageToken` | string | No | Token for pagination | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------- | | `tables` | array | Array of table objects | | ↳ `tableId` | string | Table identifier | | ↳ `datasetId` | string | Dataset ID containing this table | | ↳ `projectId` | string | Project ID containing this table | | ↳ `type` | string | Table type (TABLE, VIEW, EXTERNAL, etc.) | | ↳ `friendlyName` | string | User-friendly name for the table | | ↳ `creationTime` | string | Time when created, in milliseconds since epoch | | `totalItems` | number | Total number of tables in the dataset | | `nextPageToken` | string | Token for fetching next page of results | ### BigQuery Get Table [#bigquery-get-table] Get metadata and schema for a Google BigQuery table #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `tableId` | string | Yes | BigQuery table ID | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------- | | `tableId` | string | Table ID | | `datasetId` | string | Dataset ID | | `projectId` | string | Project ID | | `type` | string | Table type (TABLE, VIEW, SNAPSHOT, MATERIALIZED\_VIEW, EXTERNAL) | | `description` | string | Table description | | `numRows` | string | Total number of rows | | `numBytes` | string | Total size in bytes, excluding data in streaming buffer | | `schema` | array | Array of column definitions | | ↳ `name` | string | Column name | | ↳ `type` | string | Data type (STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, RECORD, etc.) | | ↳ `mode` | string | Column mode (NULLABLE, REQUIRED, or REPEATED) | | ↳ `description` | string | Column description | | `creationTime` | string | Table creation time (milliseconds since epoch) | | `lastModifiedTime` | string | Last modification time (milliseconds since epoch) | | `location` | string | Geographic location where the table resides | ### BigQuery Create Table [#bigquery-create-table] Create a new table in a Google BigQuery dataset #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `tableId` | string | Yes | ID for the new BigQuery table | | `schema` | string | Yes | JSON array of column field definitions, e.g. \[\{"name":"id","type":"STRING","mode":"REQUIRED"}] | | `description` | string | No | Description of the table | | `friendlyName` | string | No | Human-readable name for the table | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------- | | `tableId` | string | Table ID | | `datasetId` | string | Dataset ID | | `projectId` | string | Project ID | | `type` | string | Table type (usually TABLE) | | `description` | string | Table description | | `schema` | array | Array of column definitions | | ↳ `name` | string | Column name | | ↳ `type` | string | Data type | | ↳ `mode` | string | Column mode (NULLABLE, REQUIRED, or REPEATED) | | ↳ `description` | string | Column description | | `creationTime` | string | Table creation time (milliseconds since epoch) | | `location` | string | Geographic location where the table resides | ### BigQuery Delete Table [#bigquery-delete-table] Delete a table from a Google BigQuery dataset #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `tableId` | string | Yes | BigQuery table ID to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the table was deleted | ### BigQuery List Table Data [#bigquery-list-table-data] Preview rows from a Google BigQuery table without running a query. Pair with Get Table to know the column order. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `tableId` | string | Yes | BigQuery table ID | | `maxResults` | number | No | Maximum number of rows to return | | `pageToken` | string | No | Token for pagination | | `startIndex` | string | No | Zero-based index of the starting row | | `selectedFields` | string | No | Comma-separated list of column names to return | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------------------------------- | | `rows` | array | Array of rows, each a raw array of column values in schema order | | `totalRows` | string | Total number of rows in the table | | `pageToken` | string | Token for fetching the next page of results | ### BigQuery Insert Rows [#bigquery-insert-rows] Insert rows into a Google BigQuery table using streaming insert #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------- | | `projectId` | string | Yes | Google Cloud project ID | | `datasetId` | string | Yes | BigQuery dataset ID | | `tableId` | string | Yes | BigQuery table ID | | `rows` | string | Yes | JSON array of row objects to insert | | `skipInvalidRows` | boolean | No | Whether to insert valid rows even if some are invalid | | `ignoreUnknownValues` | boolean | No | Whether to ignore columns not in the table schema | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------------- | | `insertedRows` | number | Number of rows successfully inserted | | `errors` | array | Array of per-row insertion errors (empty if all succeeded) | | ↳ `index` | number | Zero-based index of the row that failed | | ↳ `errors` | array | Error details for this row | | ↳ `reason` | string | Short error code summarizing the error | | ↳ `location` | string | Where the error occurred | | ↳ `message` | string | Human-readable error description | --- # Google Books (/integrations/google_books) {/* MANUAL-CONTENT-START:intro */} Use [Google Books](https://books.google.com) in Agent Serve to search by title, author, ISBN, or keyword and retrieve a volume’s metadata, including its description, authors, ratings, and publication details. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Search for books using the Google Books API. Find volumes by title, author, ISBN, or keywords, and retrieve detailed information about specific books including descriptions, ratings, and publication details. ## Actions [#actions] ### Google Books Volume Search [#google-books-volume-search] Search for books using the Google Books API #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google Books API key | | `query` | string | Yes | Search query. Supports special keywords: intitle:, inauthor:, inpublisher:, subject:, isbn: | | `filter` | string | No | Filter results by availability (partial, full, free-ebooks, paid-ebooks, ebooks) | | `printType` | string | No | Restrict to print type (all, books, magazines) | | `orderBy` | string | No | Sort order (relevance, newest) | | `startIndex` | number | No | Index of the first result to return (for pagination) | | `maxResults` | number | No | Maximum number of results to return (1-40) | | `langRestrict` | string | No | Restrict results to a specific language (ISO 639-1 code) | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `totalItems` | number | Total number of matching results | | `volumes` | array | List of matching volumes | | ↳ `id` | string | Volume ID | | ↳ `title` | string | Book title | | ↳ `subtitle` | string | Book subtitle | | ↳ `authors` | array | List of authors | | ↳ `publisher` | string | Publisher name | | ↳ `publishedDate` | string | Publication date | | ↳ `description` | string | Book description | | ↳ `pageCount` | number | Number of pages | | ↳ `categories` | array | Book categories | | ↳ `averageRating` | number | Average rating (1-5) | | ↳ `ratingsCount` | number | Number of ratings | | ↳ `language` | string | Language code | | ↳ `previewLink` | string | Link to preview on Google Books | | ↳ `infoLink` | string | Link to info page | | ↳ `thumbnailUrl` | string | Book cover thumbnail URL | | ↳ `isbn10` | string | ISBN-10 identifier | | ↳ `isbn13` | string | ISBN-13 identifier | ### Google Books Volume Details [#google-books-volume-details] Get detailed information about a specific book volume #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Google Books API key | | `volumeId` | string | Yes | The ID of the volume to retrieve | | `projection` | string | No | Projection level (full, lite) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `id` | string | Volume ID | | `title` | string | Book title | | `subtitle` | string | Book subtitle | | `authors` | array | List of authors | | `publisher` | string | Publisher name | | `publishedDate` | string | Publication date | | `description` | string | Book description | | `pageCount` | number | Number of pages | | `categories` | array | Book categories | | `averageRating` | number | Average rating (1-5) | | `ratingsCount` | number | Number of ratings | | `language` | string | Language code | | `previewLink` | string | Link to preview on Google Books | | `infoLink` | string | Link to info page | | `thumbnailUrl` | string | Book cover thumbnail URL | | `isbn10` | string | ISBN-10 identifier | | `isbn13` | string | ISBN-13 identifier | --- # Google Calendar (/integrations/google_calendar) {/* MANUAL-CONTENT-START:intro */} Use [Google Calendar](https://calendar.google.com) to manage events and calendars, invite attendees, inspect availability, and configure sharing. Calendar event triggers can start workflows when events change. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events. ## Actions [#actions] ### Google Calendar Create Event [#google-calendar-create-event] Create a new event in Google Calendar. Returns API-aligned fields only. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `summary` | string | Yes | Event title/summary | | `description` | string | No | Event description | | `location` | string | No | Event location | | `startDateTime` | string | Yes | Start time. Use a datetime with timezone offset (2025-06-03T10:00:00-08:00) or a date (2025-06-03) for an all-day event | | `endDateTime` | string | Yes | End time. Use a datetime with timezone offset (2025-06-03T11:00:00-08:00) or a date (2025-06-04) for an all-day event | | `timeZone` | string | No | IANA time zone (e.g., America/Los\_Angeles). Used as-is when provided. For recurring events a time zone is required to expand the recurrence correctly; for one-off events it is only needed when the datetime omits a UTC offset (a naive datetime defaults to America/Los\_Angeles). | | `attendees` | array | No | Array of attendee email addresses | | `recurrence` | string | No | Recurrence rule(s) in RFC 5545 format (e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR). Separate multiple rules with newlines. | | `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `hangoutLink` | string | Google Meet link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `recurrence` | json | Recurrence rules | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar List Events [#google-calendar-list-events] List events from Google Calendar. Returns API-aligned fields only. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `timeMin` | string | No | Lower bound for events (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) | | `timeMax` | string | No | Upper bound for events (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) | | `q` | string | No | Free-text search across event summary, description, location, attendees, and organizer | | `maxResults` | number | No | Maximum number of events to return (max 2500) | | `pageToken` | string | No | Token for retrieving the next page of results | | `orderBy` | string | No | Order of events: startTime (chronological, the default) or updated (last-modified). startTime is always valid here because singleEvents is set. | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------ | | `nextPageToken` | string | Next page token | | `timeZone` | string | Calendar time zone | | `events` | json | List of events | ### Google Calendar Get Event [#google-calendar-get-event] Get a specific event from Google Calendar. Returns API-aligned fields only. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar Update Event [#google-calendar-update-event] Update an existing event in Google Calendar. Returns API-aligned fields only. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to update | | `summary` | string | No | New event title/summary | | `description` | string | No | New event description | | `location` | string | No | New event location | | `startDateTime` | string | No | New start time. Use a datetime with timezone offset (2025-06-03T10:00:00-08:00) or a date (2025-06-03) for an all-day event | | `endDateTime` | string | No | New end time. Use a datetime with timezone offset (2025-06-03T11:00:00-08:00) or a date (2025-06-04) for an all-day event | | `timeZone` | string | No | IANA time zone (e.g., America/Los\_Angeles) applied to the start/end times provided in this update. Provide a new start and/or end time to change the time zone; a time zone on its own is not applied. Required for recurring events to expand the recurrence correctly. | | `attendees` | array | No | Array of attendee email addresses. When one or more emails are provided, they replace the existing attendee list. Leaving this empty keeps the current attendees unchanged (it does not clear them). | | `recurrence` | string | No | Recurrence rule(s) in RFC 5545 format (e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR). Separate multiple rules with newlines. When provided, replaces the event's recurrence; leaving it empty keeps the existing recurrence unchanged. Requires a timeZone for timed events. | | `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `hangoutLink` | string | Google Meet link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `recurrence` | json | Recurrence rules | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar Delete Event [#google-calendar-delete-event] Delete an event from Google Calendar. Returns API-aligned fields only. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to delete | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `eventId` | string | Deleted event ID | | `deleted` | boolean | Whether deletion was successful | ### Google Calendar Move Event [#google-calendar-move-event] Move an event to a different calendar. Returns API-aligned fields only. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Source Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to move | | `destinationCalendarId` | string | Yes | Destination Google Calendar ID | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar Get Instances [#google-calendar-get-instances] Get instances of a recurring event from Google Calendar. Returns API-aligned fields only. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Recurring event ID to get instances of | | `timeMin` | string | No | Lower bound for instances (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) | | `timeMax` | string | No | Upper bound for instances (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) | | `maxResults` | number | No | Maximum number of instances to return (default 250, max 2500) | | `pageToken` | string | No | Token for retrieving subsequent pages of results | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | --------------------------------- | | `nextPageToken` | string | Next page token | | `timeZone` | string | Calendar time zone | | `instances` | json | List of recurring event instances | ### Google Calendar List Calendars [#google-calendar-list-calendars] List all calendars in the user's calendar list. Returns API-aligned fields only. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `minAccessRole` | string | No | Minimum access role for returned calendars: freeBusyReader, reader, writer, or owner | | `maxResults` | number | No | Maximum number of calendars to return (default 100, max 250) | | `pageToken` | string | No | Token for retrieving subsequent pages of results | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------ | | `nextPageToken` | string | Next page token | | `calendars` | array | List of calendars | | ↳ `id` | string | Calendar ID | | ↳ `summary` | string | Calendar title | | ↳ `description` | string | Calendar description | | ↳ `location` | string | Calendar location | | ↳ `timeZone` | string | Calendar time zone | | ↳ `accessRole` | string | Access role for the calendar | | ↳ `backgroundColor` | string | Calendar background color | | ↳ `foregroundColor` | string | Calendar foreground color | | ↳ `primary` | boolean | Whether this is the primary calendar | | ↳ `hidden` | boolean | Whether the calendar is hidden | | ↳ `selected` | boolean | Whether the calendar is selected | ### Google Calendar Quick Add [#google-calendar-quick-add] Create events from natural language text. Returns API-aligned fields only. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `text` | string | Yes | Natural language text describing the event (e.g., "Meeting with John tomorrow at 3pm") | | `attendees` | array | No | Array of attendee email addresses (comma-separated string also accepted) | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar Invite Attendees [#google-calendar-invite-attendees] Invite attendees to an existing Google Calendar event. Returns API-aligned fields only. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to invite attendees to | | `attendees` | array | Yes | Array of attendee email addresses to invite | | `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none (defaults to all) | | `replaceExisting` | boolean | No | Whether to replace existing attendees or add to them (defaults to false) | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------ | ----------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `status` | string | Event status | | `summary` | string | Event title | | `description` | string | Event description | | `location` | string | Event location | | `start` | json | Event start | | `end` | json | Event end | | `attendees` | json | Event attendees | | `creator` | json | Event creator | | `organizer` | json | Event organizer | ### Google Calendar Respond to Invitation [#google-calendar-respond-to-invitation] RSVP to a Google Calendar event (accept, decline, or tentative) as the connected account. Only your own response changes; other guests are left untouched. Returns API-aligned fields only. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Google Calendar ID the invitation appears on (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `eventId` | string | Yes | Google Calendar event ID to respond to. Use a recurring-event instance ID (as returned by List Events or Get Recurring Instances) to respond to a single occurrence; the series ID responds to every occurrence. | | `responseStatus` | string | Yes | Your response: accepted, declined, or tentative | | `comment` | string | No | Optional note to include with your response | | `sendUpdates` | string | No | Who to notify about your response: all, externalOnly, or none | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------- | | `id` | string | Event ID | | `htmlLink` | string | Event link | | `status` | string | Event status | | `summary` | string | Event title | | `start` | json | Event start | | `end` | json | Event end | | `responseStatus` | string | Your confirmed response (accepted, declined, or tentative) | | `comment` | string | Your response comment | | `attendees` | json | Event attendees | | `organizer` | json | Event organizer | ### Google Calendar Free/Busy [#google-calendar-freebusy] Query free/busy information for one or more Google Calendars. Returns API-aligned fields only. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `calendarIds` | string | Yes | Comma-separated calendar IDs to query (e.g., "primary,[other@example.com](mailto:other@example.com)") | | `timeMin` | string | Yes | Start of the time range (RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z) | | `timeMax` | string | Yes | End of the time range (RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z) | | `timeZone` | string | No | IANA time zone (e.g., "UTC", "America/New\_York"). Defaults to UTC. | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------------ | | `timeMin` | string | Start of the queried time range | | `timeMax` | string | End of the queried time range | | `calendars` | json | Per-calendar free/busy data with busy periods and any errors | ### Google Calendar Create Calendar [#google-calendar-create-calendar] Create a new secondary calendar. Returns API-aligned fields only. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------- | | `summary` | string | Yes | Title of the new calendar | | `description` | string | No | Description of the new calendar | | `location` | string | No | Geographic location of the calendar as free-form text | | `timeZone` | string | No | Time zone of the calendar as an IANA name (e.g., America/Los\_Angeles) | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | -------------------- | | `id` | string | Calendar ID | | `summary` | string | Calendar title | | `description` | string | Calendar description | | `location` | string | Calendar location | | `timeZone` | string | Calendar time zone | ### Google Calendar Update Calendar [#google-calendar-update-calendar] Update a secondary calendar's metadata. Returns API-aligned fields only. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `calendarId` | string | No | Calendar ID to update (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `summary` | string | No | New title for the calendar | | `description` | string | No | New description for the calendar | | `location` | string | No | New geographic location of the calendar as free-form text | | `timeZone` | string | No | New time zone of the calendar as an IANA name (e.g., America/Los\_Angeles) | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | -------------------- | | `id` | string | Calendar ID | | `summary` | string | Calendar title | | `description` | string | Calendar description | | `location` | string | Calendar location | | `timeZone` | string | Calendar time zone | ### Google Calendar Delete Calendar [#google-calendar-delete-calendar] Permanently delete a secondary calendar. Returns API-aligned fields only. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | Yes | Secondary calendar ID to delete (e.g., [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)). The primary calendar cannot be deleted. | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | ------------------------------- | | `calendarId` | string | Deleted calendar ID | | `deleted` | boolean | Whether deletion was successful | ### Google Calendar Share Calendar [#google-calendar-share-calendar] Grant a user, group, or domain access to a calendar. Returns API-aligned fields only. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Calendar ID to share (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `role` | string | Yes | Access role to grant: freeBusyReader, reader, writer, or owner | | `scopeType` | string | Yes | Type of grantee: user, group, domain, or default (public) | | `scopeValue` | string | No | Email (user/group), domain name (domain), or empty for default. Required unless scope type is default. | | `sendNotifications` | boolean | No | Whether to send a notification email about the change. Defaults to true. | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `id` | string | ACL rule ID | | `role` | string | Granted access role | | `scope` | json | Grantee scope (type and value) | ### Google Calendar Update Sharing [#google-calendar-update-sharing] Change the access role granted by an existing calendar sharing (ACL) rule. Returns API-aligned fields only. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `calendarId` | string | No | Calendar ID to modify (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `ruleId` | string | Yes | ACL rule ID to update (e.g., user:[person@example.com](mailto:person@example.com)) | | `role` | string | Yes | New access role to grant: freeBusyReader, reader, writer, or owner | | `sendNotifications` | boolean | No | Whether to send a notification email about the change. Defaults to true. | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `id` | string | ACL rule ID | | `role` | string | Granted access role | | `scope` | json | Grantee scope (type and value) | ### Google Calendar List Sharing [#google-calendar-list-sharing] List the access control rules (sharing) for a calendar. Returns API-aligned fields only. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | Calendar ID to inspect (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `maxResults` | number | No | Maximum number of ACL rules to return | | `pageToken` | string | No | Token for retrieving subsequent pages of results | | `showDeleted` | boolean | No | Include deleted ACL rules (with role "none") | #### Output [#output-17] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `nextPageToken` | string | Next page token | | `rules` | array | List of ACL rules | | ↳ `id` | string | ACL rule ID | | ↳ `role` | string | Access role | | ↳ `scope` | json | Grantee scope (type and value) | ### Google Calendar Remove Sharing [#google-calendar-remove-sharing] Revoke an access control rule (sharing) from a calendar. Returns API-aligned fields only. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `calendarId` | string | No | Calendar ID to modify (e.g., primary or [calendar@group.calendar.google.com](mailto:calendar@group.calendar.google.com)) | | `ruleId` | string | Yes | ACL rule ID to remove (e.g., user:[person@example.com](mailto:person@example.com)) | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `ruleId` | string | Removed ACL rule ID | | `deleted` | boolean | Whether removal was successful | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### Google Calendar Event Trigger [#google-calendar-event-trigger] Triggers when events are created, updated, or cancelled in Google Calendar #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------------- | -------- | ----------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect your Google account to access Google Calendar. | | `calendarId` | file-selector | No | The calendar to monitor for event changes. | | `manualCalendarId` | string | No | The calendar to monitor for event changes. | | `eventTypeFilter` | string | No | Only trigger for specific event types. Defaults to all events. | | `searchTerm` | string | No | Optional: Filter events by text match across title, description, location, and attendees. | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------- | | `event` | object | event output from the tool | | ↳ `id` | string | Calendar event ID | | ↳ `status` | string | Event status (confirmed, tentative, cancelled) | | ↳ `eventType` | string | Change type: "created", "updated", or "cancelled" | | ↳ `summary` | string | Event title | | ↳ `eventDescription` | string | Event description | | ↳ `location` | string | Event location | | ↳ `htmlLink` | string | Link to event in Google Calendar | | ↳ `start` | json | Event start time | | ↳ `end` | json | Event end time | | ↳ `created` | string | Event creation time | | ↳ `updated` | string | Event last updated time | | ↳ `attendees` | json | Event attendees | | ↳ `creator` | json | Event creator | | ↳ `organizer` | json | Event organizer | | `calendarId` | string | Calendar ID | | `timestamp` | string | Event processing timestamp in ISO format | --- # Google Contacts (/integrations/google_contacts) {/* MANUAL-CONTENT-START:intro */} [Google Contacts](https://contacts.google.com/) stores contact records for a Google account. Search or list contacts to obtain their resource names, then use those names to read, update, or delete records. Create contacts with the name, email, phone, and other fields needed by your workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Contacts into the workflow. Can create, read, update, delete, list, and search contacts. ## Actions [#actions] ### Google Contacts Create [#google-contacts-create] Create a new contact in Google Contacts #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------- | | `givenName` | string | Yes | First name of the contact | | `familyName` | string | No | Last name of the contact | | `email` | string | No | Email address of the contact | | `emailType` | string | No | Email type: home, work, or other | | `phone` | string | No | Phone number of the contact | | `phoneType` | string | No | Phone type: mobile, home, work, or other | | `organization` | string | No | Organization/company name | | `jobTitle` | string | No | Job title at the organization | | `notes` | string | No | Notes or biography for the contact | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------------------------ | | `content` | string | Contact creation confirmation message | | `metadata` | json | Created contact metadata including resource name and details | ### Google Contacts Get [#google-contacts-get] Get a specific contact from Google Contacts #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------- | | `resourceName` | string | Yes | Resource name of the contact (e.g., people/c1234567890) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `content` | string | Contact retrieval confirmation message | | `metadata` | json | Contact details including name, email, phone, and organization | ### Google Contacts List [#google-contacts-list] List contacts from Google Contacts #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `pageSize` | number | No | Number of contacts to return (1-1000, default 100) | | `pageToken` | string | No | Page token from a previous list request for pagination | | `sortOrder` | string | No | Sort order for contacts | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------- | | `content` | string | Summary of found contacts count | | `metadata` | json | List of contacts with pagination tokens | ### Google Contacts Search [#google-contacts-search] Search contacts in Google Contacts by name, email, phone, or organization #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------ | | `query` | string | Yes | Search query to match against contact names, emails, phones, and organizations | | `pageSize` | number | No | Number of results to return (default 10, max 30) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `content` | string | Summary of search results count | | `metadata` | json | Search results with matching contacts | ### Google Contacts Update [#google-contacts-update] Update an existing contact in Google Contacts #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `resourceName` | string | Yes | Resource name of the contact (e.g., people/c1234567890) | | `etag` | string | Yes | ETag from a previous get request (required for concurrency control) | | `givenName` | string | No | Updated first name | | `familyName` | string | No | Updated last name | | `email` | string | No | Updated email address | | `emailType` | string | No | Email type: home, work, or other | | `phone` | string | No | Updated phone number | | `phoneType` | string | No | Phone type: mobile, home, work, or other | | `organization` | string | No | Updated organization/company name | | `jobTitle` | string | No | Updated job title | | `notes` | string | No | Updated notes or biography | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------- | | `content` | string | Contact update confirmation message | | `metadata` | json | Updated contact metadata | ### Google Contacts Delete [#google-contacts-delete] Delete a contact from Google Contacts #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------- | | `resourceName` | string | Yes | Resource name of the contact to delete (e.g., people/c1234567890) | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------- | | `content` | string | Contact deletion confirmation message | | `metadata` | json | Deletion details including resource name | --- # Google Docs (/integrations/google_docs) {/* MANUAL-CONTENT-START:intro */} Use [Google Docs](https://docs.google.com) in Agent Serve to read, create, and update documents. Workflows can insert text, tables, images, and page breaks; find and replace text; and apply text styling. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Docs into the workflow. Read, write, and create documents, insert text, tables, images, and page breaks, find and replace text, and apply text styling. ## Actions [#actions] ### Read Google Docs Document [#read-google-docs-document] Read content from a Google Docs document #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------- | | `documentId` | string | Yes | Google Docs document ID | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------- | | `content` | string | Extracted document text content | | `metadata` | json | Document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Write to Google Docs Document [#write-to-google-docs-document] Append content to a Google Docs document. Content is inserted literally; Markdown is not interpreted. For formatted output from Markdown, use the Create operation with the markdown toggle enabled. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------ | | `documentId` | string | Yes | The ID of the document to write to | | `content` | string | Yes | The content to write to the document | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if document content was updated successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Create Google Docs Document [#create-google-docs-document] Create a new Google Docs document #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | string | Yes | The title of the document to create | | `content` | string | No | The content of the document to create | | `folderSelector` | string | No | Google Drive folder ID to create the document in (e.g., 1ABCxyz...) | | `folderId` | string | No | The ID of the folder to create the document in (internal use) | | `markdown` | boolean | No | When true, content is interpreted as Markdown and converted to formatted Google Docs content (headings, bold/italic, lists, tables, links, code blocks, blockquotes). Default: false (content inserted as plain text). | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------ | | `metadata` | json | Created document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Insert Text into Google Docs Document [#insert-text-into-google-docs-document] Insert text at a specific index in a Google Docs document. When no index is provided, text is appended to the end of the document. Text is inserted literally; Markdown is not interpreted. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to insert text into | | `text` | string | Yes | The text to insert | | `index` | number | No | The character index (the document body starts at index 1) at which to insert the text. When omitted, text is appended to the end of the document. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if text was inserted successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Find and Replace Text in Google Docs Document [#find-and-replace-text-in-google-docs-document] Replace all occurrences of a search string with new text across a Google Docs document. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------ | | `documentId` | string | Yes | The ID of the document to update | | `searchText` | string | Yes | The text to find | | `replaceText` | string | No | The text to replace matches with. Use an empty string to delete matches. | | `matchCase` | boolean | No | Whether the search should be case sensitive. Defaults to false. | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------ | | `occurrencesChanged` | number | The number of occurrences that were replaced | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Insert Table into Google Docs Document [#insert-table-into-google-docs-document] Insert an empty table with the given number of rows and columns into a Google Docs document. When no index is provided, the table is appended to the end of the document. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to insert the table into | | `rows` | number | Yes | The number of rows in the table | | `columns` | number | Yes | The number of columns in the table | | `index` | number | No | The character index (the document body starts at index 1) at which to insert the table. When omitted, the table is appended to the end of the document. | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if the table was inserted successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Insert Image into Google Docs Document [#insert-image-into-google-docs-document] Insert an inline image from a public URL into a Google Docs document. The image must be publicly accessible and under 50 MB. When no index is provided, the image is appended to the end of the document. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to insert the image into | | `imageUrl` | string | Yes | The publicly accessible URL of the image to insert | | `index` | number | No | The character index (the document body starts at index 1) at which to insert the image. When omitted, the image is appended to the end of the document. | | `width` | number | No | Optional image width in points (PT) | | `height` | number | No | Optional image height in points (PT) | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------ | | `objectId` | string | The ID of the inserted inline image object | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Insert Page Break into Google Docs Document [#insert-page-break-into-google-docs-document] Insert a page break into a Google Docs document. When no index is provided, the page break is appended to the end of the document. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to insert the page break into | | `index` | number | No | The character index (the document body starts at index 1) at which to insert the page break. When omitted, the page break is appended to the end of the document. | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if the page break was inserted successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Apply Text Style in Google Docs Document [#apply-text-style-in-google-docs-document] Apply bold, italic, underline, and/or font size to a range of text in a Google Docs document, identified by its start and end character index. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to update | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to style (inclusive) | | `endIndex` | number | Yes | The end character index of the range to style (exclusive) | | `bold` | boolean | No | Whether to make the text bold | | `italic` | boolean | No | Whether to make the text italic | | `underline` | boolean | No | Whether to underline the text | | `fontSize` | number | No | The font size to apply, in points (PT) | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if the text style was applied successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Update Paragraph Style in Google Docs Document [#update-paragraph-style-in-google-docs-document] Apply a named paragraph style (such as a heading or title) and/or alignment to the paragraphs overlapping a range of text in a Google Docs document, identified by its start and end character index. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to update | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to style (inclusive) | | `endIndex` | number | Yes | The end character index of the range to style (exclusive) | | `namedStyleType` | string | No | The named paragraph style to apply. One of: NORMAL\_TEXT, TITLE, SUBTITLE, HEADING\_1, HEADING\_2, HEADING\_3, HEADING\_4, HEADING\_5, HEADING\_6. | | `alignment` | string | No | The paragraph alignment to apply. One of: LEFT, CENTER, RIGHT, JUSTIFY. | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------- | | `updatedContent` | boolean | Indicates if the paragraph style was applied successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Create Paragraph Bullets in Google Docs Document [#create-paragraph-bullets-in-google-docs-document] Add bulleted or numbered list formatting to the paragraphs overlapping a range of text in a Google Docs document, using a chosen bullet glyph preset. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to update | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to bullet (inclusive) | | `endIndex` | number | Yes | The end character index of the range to bullet (exclusive) | | `bulletPreset` | string | No | The bullet glyph preset to apply. Defaults to BULLET\_DISC\_CIRCLE\_SQUARE. Examples: BULLET\_DISC\_CIRCLE\_SQUARE, BULLET\_CHECKBOX, NUMBERED\_DECIMAL\_ALPHA\_ROMAN, NUMBERED\_DECIMAL\_NESTED. | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if the bullets were applied successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Delete Paragraph Bullets in Google Docs Document [#delete-paragraph-bullets-in-google-docs-document] Remove bullet or numbered list formatting from the paragraphs overlapping a range of text in a Google Docs document, identified by its start and end character index. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to update | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to clear bullets from (inclusive) | | `endIndex` | number | Yes | The end character index of the range to clear bullets from (exclusive) | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------ | | `updatedContent` | boolean | Indicates if the bullets were removed successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Delete Content Range in Google Docs Document [#delete-content-range-in-google-docs-document] Delete all content between a start and end character index in a Google Docs document. The endIndex is exclusive and must be greater than the startIndex. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to delete content from | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range to delete (inclusive) | | `endIndex` | number | Yes | The end character index of the range to delete (exclusive) | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------- | | `updatedContent` | boolean | Indicates if the content range was deleted successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Create Named Range in Google Docs Document [#create-named-range-in-google-docs-document] Create a named range over a span of content in a Google Docs document so it can be referenced or deleted later. The name may be 1-256 characters and need not be unique. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The ID of the document to update | | `name` | string | Yes | The name of the range to create (1-256 characters) | | `startIndex` | number | Yes | The start character index (the document body starts at index 1) of the range (inclusive) | | `endIndex` | number | Yes | The end character index of the range (exclusive) | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------ | | `namedRangeId` | string | The ID of the created named range | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | ### Delete Named Range in Google Docs Document [#delete-named-range-in-google-docs-document] Delete one or more named ranges from a Google Docs document by their ID or by name. Provide exactly one of namedRangeId or name; deleting by name removes all ranges sharing that name. The content itself is not removed. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `documentId` | string | Yes | The ID of the document to update | | `namedRangeId` | string | No | The ID of the named range to delete. Provide exactly one of namedRangeId or namedRangeName. | | `namedRangeName` | string | No | The name of the named range(s) to delete. All ranges sharing this name are removed. Provide exactly one of namedRangeId or namedRangeName. | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------- | | `updatedContent` | boolean | Indicates if the named range(s) were deleted successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | | ↳ `documentId` | string | Google Docs document ID | | ↳ `title` | string | Document title | | ↳ `mimeType` | string | Document MIME type | | ↳ `url` | string | Document URL | --- # Google Drive (/integrations/google_drive) {/* MANUAL-CONTENT-START:intro */} Use [Google Drive](https://drive.google.com) to manage files, folders, metadata, and permissions. Download and content actions export Google Workspace files; the Export action lets you choose a supported output format. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Drive into the workflow. Can create, upload, download, copy, move, delete, share files and manage permissions. ## Actions [#actions] ### List Google Drive Files [#list-google-drive-files] List files and folders in Google Drive with complete metadata #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `folderSelector` | string | No | Google Drive folder ID to list files from (e.g., 1ABCxyz...) | | `folderId` | string | No | The ID of the folder to list files from (internal use) | | `query` | string | No | Search term to filter files by name (e.g. "budget" finds files with "budget" in the name). Do NOT use Google Drive query syntax here - just provide a plain search term. | | `pageSize` | number | No | The maximum number of files to return (default: 100) | | `pageToken` | string | No | The page token to use for pagination | #### Output [#output] | Parameter | Type | Description | | -------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------- | | `files` | array | Array of file metadata objects from Google Drive | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `originalFilename` | string | Original uploaded filename | | ↳ `fullFileExtension` | string | Full file extension | | ↳ `fileExtension` | string | File extension | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `permissionIds` | json | Permission IDs | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `writersCanShare` | boolean | Whether writers can share | | ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | | ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | | ↳ `sharingUser` | json | User who shared the file | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | | ↳ `appProperties` | json | App-specific properties | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `modifiedByMeTime` | string | When modified by current user | | ↳ `viewedByMeTime` | string | When last viewed by current user | | ↳ `sharedWithMeTime` | string | When shared with current user | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `viewedByMe` | boolean | Whether viewed by current user | | ↳ `modifiedByMe` | boolean | Whether modified by current user | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `exportLinks` | json | Export format links | | ↳ `size` | string | File size in bytes | | ↳ `quotaBytesUsed` | string | Storage quota used | | ↳ `md5Checksum` | string | MD5 hash | | ↳ `sha1Checksum` | string | SHA-1 hash | | ↳ `sha256Checksum` | string | SHA-256 hash | | ↳ `parents` | json | Parent folder IDs | | ↳ `spaces` | json | Spaces containing file | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on file | | ↳ `version` | string | Version number | | ↳ `headRevisionId` | string | Head revision ID | | ↳ `hasThumbnail` | boolean | Whether has thumbnail | | ↳ `thumbnailVersion` | string | Thumbnail version | | ↳ `imageMediaMetadata` | json | Image-specific metadata | | ↳ `videoMediaMetadata` | json | Video-specific metadata | | ↳ `isAppAuthorized` | boolean | Whether created by requesting app | | ↳ `contentRestrictions` | json | Content restrictions | | ↳ `linkShareMetadata` | json | Link share metadata | | `nextPageToken` | string | Page token for the next page of files; absent from the response when the end of the files list has been reached | ### Get Google Drive File [#get-google-drive-file] Get metadata for a specific file in Google Drive by its ID #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `fileId` | string | Yes | The ID of the file to retrieve | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------- | | `file` | json | The file metadata | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `size` | string | File size in bytes | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `parents` | json | Parent folder IDs | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `capabilities` | json | User capabilities on file | | ↳ `md5Checksum` | string | MD5 hash | | ↳ `version` | string | Version number | ### Get Content from Google Drive [#get-content-from-google-drive] Get content from a file in Google Drive with complete metadata (exports Google Workspace files automatically) #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------ | | `fileId` | string | Yes | The ID of the file to get content from | | `mimeType` | string | No | The MIME type to export Google Workspace files to (optional) | | `includeRevisions` | boolean | No | Whether to include revision history in the metadata (default: true, returns first 100 revisions) | #### Output [#output-2] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------- | | `content` | string | File content as text (Google Workspace files are exported) | | `metadata` | object | Complete file metadata from Google Drive | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `originalFilename` | string | Original uploaded filename | | ↳ `fullFileExtension` | string | Full file extension | | ↳ `fileExtension` | string | File extension | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `permissionIds` | json | Permission IDs | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `writersCanShare` | boolean | Whether writers can share | | ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | | ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | | ↳ `sharingUser` | json | User who shared the file | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | | ↳ `appProperties` | json | App-specific properties | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `modifiedByMeTime` | string | When modified by current user | | ↳ `viewedByMeTime` | string | When last viewed by current user | | ↳ `sharedWithMeTime` | string | When shared with current user | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `viewedByMe` | boolean | Whether viewed by current user | | ↳ `modifiedByMe` | boolean | Whether modified by current user | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `exportLinks` | json | Export format links | | ↳ `size` | string | File size in bytes | | ↳ `quotaBytesUsed` | string | Storage quota used | | ↳ `md5Checksum` | string | MD5 hash | | ↳ `sha1Checksum` | string | SHA-1 hash | | ↳ `sha256Checksum` | string | SHA-256 hash | | ↳ `parents` | json | Parent folder IDs | | ↳ `spaces` | json | Spaces containing file | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on file | | ↳ `version` | string | Version number | | ↳ `headRevisionId` | string | Head revision ID | | ↳ `hasThumbnail` | boolean | Whether has thumbnail | | ↳ `thumbnailVersion` | string | Thumbnail version | | ↳ `imageMediaMetadata` | json | Image-specific metadata | | ↳ `videoMediaMetadata` | json | Video-specific metadata | | ↳ `isAppAuthorized` | boolean | Whether created by requesting app | | ↳ `contentRestrictions` | json | Content restrictions | | ↳ `linkShareMetadata` | json | Link share metadata | | ↳ `revisions` | json | File revision history (first 100 revisions only) | ### Create Folder in Google Drive [#create-folder-in-google-drive] Create a new folder in Google Drive with complete metadata returned #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------ | | `fileName` | string | Yes | Name of the folder to create | | `folderSelector` | string | No | Google Drive parent folder ID to create the folder in (e.g., 1ABCxyz...) | | `folderId` | string | No | ID of the parent folder (internal use) | #### Output [#output-3] | Parameter | Type | Description | | -------------------------------- | ------- | -------------------------------------------------- | | `file` | object | Complete created folder metadata from Google Drive | | ↳ `id` | string | Google Drive folder ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | Folder name | | ↳ `mimeType` | string | MIME type (application/vnd.google-apps.folder) | | ↳ `description` | string | Folder description | | ↳ `owners` | json | List of folder owners | | ↳ `permissions` | json | Folder permissions | | ↳ `permissionIds` | json | Permission IDs | | ↳ `shared` | boolean | Whether folder is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `writersCanShare` | boolean | Whether writers can share | | ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | | ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | | ↳ `sharingUser` | json | User who shared the folder | | ↳ `starred` | boolean | Whether folder is starred | | ↳ `trashed` | boolean | Whether folder is in trash | | ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | | ↳ `appProperties` | json | App-specific properties | | ↳ `folderColorRgb` | string | Folder color | | ↳ `createdTime` | string | Folder creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `modifiedByMeTime` | string | When modified by current user | | ↳ `viewedByMeTime` | string | When last viewed by current user | | ↳ `sharedWithMeTime` | string | When shared with current user | | ↳ `lastModifyingUser` | json | User who last modified the folder | | ↳ `viewedByMe` | boolean | Whether viewed by current user | | ↳ `modifiedByMe` | boolean | Whether modified by current user | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `iconLink` | string | URL to folder icon | | ↳ `parents` | json | Parent folder IDs | | ↳ `spaces` | json | Spaces containing folder | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on folder | | ↳ `version` | string | Version number | | ↳ `isAppAuthorized` | boolean | Whether created by requesting app | | ↳ `contentRestrictions` | json | Content restrictions | | ↳ `linkShareMetadata` | json | Link share metadata | ### Upload to Google Drive [#upload-to-google-drive] Upload a file to Google Drive with complete metadata returned #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `fileName` | string | Yes | The name of the file to upload | | `file` | file | No | Binary file to upload (UserFile object) | | `content` | string | No | Text content to upload (use this OR file, not both) | | `mimeType` | string | No | The MIME type of the file to upload (auto-detected from file if not provided) | | `folderSelector` | string | No | Google Drive folder ID to upload the file to (e.g., 1ABCxyz...) | | `folderId` | string | No | The ID of the folder to upload the file to (internal use) | #### Output [#output-4] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------- | | `file` | object | Complete uploaded file metadata from Google Drive | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `originalFilename` | string | Original uploaded filename | | ↳ `fullFileExtension` | string | Full file extension | | ↳ `fileExtension` | string | File extension | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `permissionIds` | json | Permission IDs | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `writersCanShare` | boolean | Whether writers can share | | ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | | ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | | ↳ `sharingUser` | json | User who shared the file | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | | ↳ `appProperties` | json | App-specific properties | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `modifiedByMeTime` | string | When modified by current user | | ↳ `viewedByMeTime` | string | When last viewed by current user | | ↳ `sharedWithMeTime` | string | When shared with current user | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `viewedByMe` | boolean | Whether viewed by current user | | ↳ `modifiedByMe` | boolean | Whether modified by current user | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `exportLinks` | json | Export format links | | ↳ `size` | string | File size in bytes | | ↳ `quotaBytesUsed` | string | Storage quota used | | ↳ `md5Checksum` | string | MD5 hash | | ↳ `sha1Checksum` | string | SHA-1 hash | | ↳ `sha256Checksum` | string | SHA-256 hash | | ↳ `parents` | json | Parent folder IDs | | ↳ `spaces` | json | Spaces containing file | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on file | | ↳ `version` | string | Version number | | ↳ `headRevisionId` | string | Head revision ID | | ↳ `hasThumbnail` | boolean | Whether has thumbnail | | ↳ `thumbnailVersion` | string | Thumbnail version | | ↳ `imageMediaMetadata` | json | Image-specific metadata | | ↳ `videoMediaMetadata` | json | Video-specific metadata | | ↳ `isAppAuthorized` | boolean | Whether created by requesting app | | ↳ `contentRestrictions` | json | Content restrictions | | ↳ `linkShareMetadata` | json | Link share metadata | ### Download File from Google Drive [#download-file-from-google-drive] Download a file from Google Drive with complete metadata (exports Google Workspace files automatically) #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------ | | `fileId` | string | Yes | The ID of the file to download | | `mimeType` | string | No | The MIME type to export Google Workspace files to (optional) | | `fileName` | string | No | Optional filename override | | `includeRevisions` | boolean | No | Whether to include revision history in the metadata (default: true, returns first 100 revisions) | #### Output [#output-5] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------ | | `file` | file | Downloaded file stored in execution files | | `metadata` | object | Complete file metadata from Google Drive | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `originalFilename` | string | Original uploaded filename | | ↳ `fullFileExtension` | string | Full file extension | | ↳ `fileExtension` | string | File extension | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `permissionIds` | json | Permission IDs | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `writersCanShare` | boolean | Whether writers can share | | ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | | ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | | ↳ `sharingUser` | json | User who shared the file | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | | ↳ `appProperties` | json | App-specific properties | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `modifiedByMeTime` | string | When modified by current user | | ↳ `viewedByMeTime` | string | When last viewed by current user | | ↳ `sharedWithMeTime` | string | When shared with current user | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `viewedByMe` | boolean | Whether viewed by current user | | ↳ `modifiedByMe` | boolean | Whether modified by current user | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `exportLinks` | json | Export format links | | ↳ `size` | string | File size in bytes | | ↳ `quotaBytesUsed` | string | Storage quota used | | ↳ `md5Checksum` | string | MD5 hash | | ↳ `sha1Checksum` | string | SHA-1 hash | | ↳ `sha256Checksum` | string | SHA-256 hash | | ↳ `parents` | json | Parent folder IDs | | ↳ `spaces` | json | Spaces containing file | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on file | | ↳ `version` | string | Version number | | ↳ `headRevisionId` | string | Head revision ID | | ↳ `hasThumbnail` | boolean | Whether has thumbnail | | ↳ `thumbnailVersion` | string | Thumbnail version | | ↳ `imageMediaMetadata` | json | Image-specific metadata | | ↳ `videoMediaMetadata` | json | Video-specific metadata | | ↳ `isAppAuthorized` | boolean | Whether created by requesting app | | ↳ `contentRestrictions` | json | Content restrictions | | ↳ `linkShareMetadata` | json | Link share metadata | | ↳ `revisions` | json | File revision history (first 100 revisions only) | ### Copy Google Drive File [#copy-google-drive-file] Create a copy of a file in Google Drive #### Input [#input-6] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to copy | | `newName` | string | No | Name for the copied file (defaults to "Copy of \[original name]") | | `destinationFolderId` | string | No | ID of the folder to place the copy in (defaults to same location as original) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------- | | `file` | json | The copied file metadata | | ↳ `id` | string | Google Drive file ID of the copy | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `parents` | json | Parent folder IDs | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `owners` | json | List of file owners | | ↳ `size` | string | File size in bytes | ### Move Google Drive File [#move-google-drive-file] Move a file or folder to a different folder in Google Drive #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file or folder to move | | `destinationFolderId` | string | Yes | The ID of the destination folder | | `removeFromCurrent` | boolean | No | Whether to remove the file from its current parent folder (default: true). Set to false to add the file to the destination without removing it from the current location. | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | ------------------------ | | `file` | json | The moved file metadata | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `parents` | json | Parent folder IDs | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `owners` | json | List of file owners | | ↳ `size` | string | File size in bytes | ### Search Google Drive Files [#search-google-drive-files] Search for files in Google Drive using advanced query syntax (e.g., fullText contains, mimeType, modifiedTime, etc.) #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Google Drive query string using advanced search syntax (e.g., "fullText contains 'budget'", "mimeType = 'application/pdf'", "modifiedTime > '2024-01-01'") | | `pageSize` | number | No | Maximum number of files to return (default: 100) | | `pageToken` | string | No | Token for fetching the next page of results | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------------------------------------------------- | | `files` | array | Array of file metadata objects matching the search query | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `originalFilename` | string | Original uploaded filename | | ↳ `fullFileExtension` | string | Full file extension | | ↳ `fileExtension` | string | File extension | | ↳ `owners` | json | List of file owners | | ↳ `permissions` | json | File permissions | | ↳ `shared` | boolean | Whether file is shared | | ↳ `ownedByMe` | boolean | Whether owned by current user | | ↳ `starred` | boolean | Whether file is starred | | ↳ `trashed` | boolean | Whether file is in trash | | ↳ `createdTime` | string | File creation time | | ↳ `modifiedTime` | string | Last modification time | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `webContentLink` | string | Direct download URL | | ↳ `iconLink` | string | URL to file icon | | ↳ `thumbnailLink` | string | URL to thumbnail | | ↳ `size` | string | File size in bytes | | ↳ `parents` | json | Parent folder IDs | | ↳ `driveId` | string | Shared drive ID | | ↳ `capabilities` | json | User capabilities on file | | ↳ `version` | string | Version number | | `nextPageToken` | string | Page token for the next page of files; absent from the response when the end of the files list has been reached | ### Update Google Drive File [#update-google-drive-file] Update file metadata in Google Drive (rename, move, star, add description) #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `fileId` | string | Yes | The ID of the file to update | | `name` | string | No | New name for the file | | `description` | string | No | New description for the file | | `addParents` | string | No | Comma-separated list of parent folder IDs to add (moves file to these folders) | | `removeParents` | string | No | Comma-separated list of parent folder IDs to remove | | `starred` | boolean | No | Whether to star or unstar the file | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | ------------------------- | | `file` | json | The updated file metadata | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `description` | string | File description | | ↳ `starred` | boolean | Whether file is starred | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `parents` | json | Parent folder IDs | | ↳ `modifiedTime` | string | Last modification time | ### Trash Google Drive File [#trash-google-drive-file] Move a file to the trash in Google Drive (can be restored later) #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `fileId` | string | Yes | The ID of the file to move to trash | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------- | | `file` | json | The trashed file metadata | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `trashed` | boolean | Whether file is in trash (should be true) | | ↳ `trashedTime` | string | When file was trashed | | ↳ `webViewLink` | string | URL to view in browser | ### Restore Google Drive File [#restore-google-drive-file] Restore a file from the trash in Google Drive #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `fileId` | string | Yes | The ID of the file to restore from trash | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------ | | `file` | json | The restored file metadata | | ↳ `id` | string | Google Drive file ID | | ↳ `kind` | string | Resource type identifier | | ↳ `name` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `trashed` | boolean | Whether file is in trash (should be false) | | ↳ `webViewLink` | string | URL to view in browser | | ↳ `parents` | json | Parent folder IDs | ### Delete Google Drive File [#delete-google-drive-file] Permanently delete a file from Google Drive (bypasses trash) #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `fileId` | string | Yes | The ID of the file to permanently delete | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `deleted` | boolean | Whether the file was successfully deleted | | `fileId` | string | The ID of the deleted file | ### Share Google Drive File [#share-google-drive-file] Share a file with a user, group, domain, or make it public #### Input [#input-13] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `fileId` | string | Yes | The ID of the file to share | | `type` | string | Yes | Type of grantee: user, group, domain, or anyone | | `role` | string | Yes | Permission role: owner (transfer ownership), organizer (shared drive only), fileOrganizer (shared drive only), writer (edit), commenter (view and comment), reader (view only) | | `email` | string | No | Email address of the user or group (required for type=user or type=group) | | `domain` | string | No | Domain to share with (required for type=domain) | | `transferOwnership` | boolean | No | Required when role is owner. Transfers ownership to the specified user. | | `moveToNewOwnersRoot` | boolean | No | When transferring ownership, move the file to the new owner's My Drive root folder. | | `sendNotification` | boolean | No | Whether to send an email notification (default: true) | | `emailMessage` | string | No | Custom message to include in the notification email | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------ | | `permission` | json | The created permission details | | ↳ `id` | string | Permission ID | | ↳ `type` | string | Grantee type (user, group, domain, anyone) | | ↳ `role` | string | Permission role | | ↳ `emailAddress` | string | Email of the grantee | | ↳ `displayName` | string | Display name of the grantee | | ↳ `domain` | string | Domain of the grantee | | ↳ `expirationTime` | string | Expiration time | | ↳ `deleted` | boolean | Whether grantee is deleted | ### Unshare Google Drive File [#unshare-google-drive-file] Remove a permission from a file (revoke access) #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to modify permissions on | | `permissionId` | string | Yes | The ID of the permission to remove (use list\_permissions to find this) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------- | | `removed` | boolean | Whether the permission was successfully removed | | `fileId` | string | The ID of the file | | `permissionId` | string | The ID of the removed permission | ### List Google Drive Permissions [#list-google-drive-permissions] List all permissions (who has access) for a file in Google Drive #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `fileId` | string | Yes | The ID of the file to list permissions for | | `pageToken` | string | No | The page token to use for pagination | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- | | `permissions` | array | List of permissions on the file | | ↳ `id` | string | Permission ID (use to remove permission) | | ↳ `type` | string | Grantee type (user, group, domain, anyone) | | ↳ `role` | string | Permission role (owner, organizer, fileOrganizer, writer, commenter, reader) | | ↳ `emailAddress` | string | Email of the grantee | | ↳ `displayName` | string | Display name of the grantee | | ↳ `photoLink` | string | Photo URL of the grantee | | ↳ `domain` | string | Domain of the grantee | | ↳ `expirationTime` | string | When permission expires | | ↳ `deleted` | boolean | Whether grantee account is deleted | | ↳ `allowFileDiscovery` | boolean | Whether file is discoverable by grantee | | ↳ `pendingOwner` | boolean | Whether ownership transfer is pending | | ↳ `permissionDetails` | json | Details about inherited permissions | | `nextPageToken` | string | Page token for the next page of permissions; absent from the response when the end of the permissions list has been reached | ### Export Google Drive File [#export-google-drive-file] Export a Google Workspace file (Docs, Sheets, Slides, Drawings) to a chosen format such as PDF, DOCX, XLSX, or CSV #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------ | | `fileId` | string | Yes | The ID of the Google Workspace file to export | | `mimeType` | string | Yes | The target MIME type to export to (e.g. application/pdf, text/csv) | | `fileName` | string | No | Optional filename override for the exported file | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------- | | `file` | file | Exported file stored in execution files | | `exportedMimeType` | string | The MIME type the file was exported to | ### List Google Drive Revisions [#list-google-drive-revisions] List the revision history of a file in Google Drive #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to list revisions for | | `pageSize` | number | No | Maximum number of revisions to return (1-1000, default 200) | | `pageToken` | string | No | The page token to use for pagination | #### Output [#output-17] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------- | | `revisions` | array | List of revisions for the file (most recent last) | | ↳ `id` | string | Revision ID | | ↳ `mimeType` | string | MIME type of the revision | | ↳ `modifiedTime` | string | When this revision was created | | ↳ `keepForever` | boolean | Whether this revision is preserved forever | | ↳ `published` | boolean | Whether this revision is published | | ↳ `publishedLink` | string | Public link to the published revision | | ↳ `lastModifyingUser` | json | User who created this revision | | ↳ `originalFilename` | string | Original filename for binary revisions | | ↳ `md5Checksum` | string | MD5 checksum for binary revisions | | ↳ `size` | string | Size of the revision in bytes | | ↳ `exportLinks` | json | Export format links for the revision | | `nextPageToken` | string | Page token for the next page of revisions; absent from the response when the end of the revisions list has been reached | ### Get Google Drive Revision [#get-google-drive-revision] Get metadata for a specific revision of a file in Google Drive #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `fileId` | string | Yes | The ID of the file the revision belongs to | | `revisionId` | string | Yes | The ID of the revision to retrieve | #### Output [#output-18] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------ | | `revision` | json | The revision metadata | | ↳ `id` | string | Revision ID | | ↳ `mimeType` | string | MIME type of the revision | | ↳ `modifiedTime` | string | When this revision was created | | ↳ `keepForever` | boolean | Whether this revision is preserved forever | | ↳ `published` | boolean | Whether this revision is published | | ↳ `publishedLink` | string | Public link to the published revision | | ↳ `lastModifyingUser` | json | User who created this revision | | ↳ `originalFilename` | string | Original filename for binary revisions | | ↳ `md5Checksum` | string | MD5 checksum for binary revisions | | ↳ `size` | string | Size of the revision in bytes | | ↳ `exportLinks` | json | Export format links for the revision | ### List Google Drive Comments [#list-google-drive-comments] List comments on a file in Google Drive #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to list comments for | | `includeDeleted` | boolean | No | Whether to include deleted comments (their content is stripped) | | `pageSize` | number | No | Maximum number of comments to return (1-100, default 20) | | `startModifiedTime` | string | No | Only return comments modified after this RFC 3339 timestamp | | `pageToken` | string | No | The page token to use for pagination | #### Output [#output-19] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- | | `comments` | array | List of comments on the file | | ↳ `id` | string | Comment ID | | ↳ `content` | string | Plain text content of the comment | | ↳ `htmlContent` | string | HTML-formatted content of the comment | | ↳ `author` | json | User who authored the comment | | ↳ `createdTime` | string | When the comment was created | | ↳ `modifiedTime` | string | When the comment was last modified | | ↳ `resolved` | boolean | Whether the comment has been resolved | | ↳ `deleted` | boolean | Whether the comment has been deleted | | ↳ `anchor` | string | Region of the document the comment refers to | | ↳ `quotedFileContent` | json | The file content the comment quotes | | ↳ `replies` | json | Threaded replies to the comment | | `nextPageToken` | string | Page token for the next page of comments; absent from the response when the end of the comments list has been reached | ### Create Google Drive Comment [#create-google-drive-comment] Add a comment to a file in Google Drive #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to comment on | | `content` | string | Yes | The plain text content of the comment | | `anchor` | string | No | A region of the document the comment refers to (JSON anchor string) | #### Output [#output-20] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------- | | `comment` | json | The created comment | | ↳ `id` | string | Comment ID | | ↳ `content` | string | Plain text content of the comment | | ↳ `htmlContent` | string | HTML-formatted content of the comment | | ↳ `author` | json | User who authored the comment | | ↳ `createdTime` | string | When the comment was created | | ↳ `modifiedTime` | string | When the comment was last modified | | ↳ `resolved` | boolean | Whether the comment has been resolved | | ↳ `deleted` | boolean | Whether the comment has been deleted | | ↳ `anchor` | string | Region of the document the comment refers to | | ↳ `quotedFileContent` | json | The file content the comment quotes | | ↳ `replies` | json | Threaded replies to the comment | ### Delete Google Drive Comment [#delete-google-drive-comment] Delete a comment from a file in Google Drive #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `fileId` | string | Yes | The ID of the file the comment belongs to | | `commentId` | string | Yes | The ID of the comment to delete | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `deleted` | boolean | Whether the comment was successfully deleted | | `fileId` | string | The ID of the file | | `commentId` | string | The ID of the deleted comment | ### Get Google Drive Info [#get-google-drive-info] Get information about the user and their Google Drive (storage quota, capabilities) #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-22] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------- | | `user` | json | Information about the authenticated user | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `photoLink` | string | URL to user profile photo | | ↳ `permissionId` | string | User permission ID | | ↳ `me` | boolean | Whether this is the authenticated user | | `storageQuota` | json | Storage quota information in bytes | | ↳ `limit` | string | Total storage limit in bytes (null for unlimited) | | ↳ `usage` | string | Total storage used in bytes | | ↳ `usageInDrive` | string | Storage used by Drive files in bytes | | ↳ `usageInDriveTrash` | string | Storage used by trashed files in bytes | | `canCreateDrives` | boolean | Whether user can create shared drives | | `importFormats` | json | Map of MIME types that can be imported and their target formats | | `exportFormats` | json | Map of Google Workspace MIME types and their exportable formats | | `maxUploadSize` | string | Maximum upload size in bytes | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### Google Drive File Trigger [#google-drive-file-trigger] Triggers when files are created, modified, or deleted in Google Drive #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------------- | -------- | ----------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect your Google account to access Google Drive. | | `folderId` | file-selector | No | Optional: The folder to monitor. Leave empty to monitor all files in Drive. | | `manualFolderId` | string | No | Optional: The folder ID from the Google Drive URL to monitor. Leave empty to monitor all files. | | `mimeTypeFilter` | string | No | Optional: Only trigger for specific file types. | | `eventTypeFilter` | string | No | Only trigger for specific change types. Defaults to all changes. | | `includeSharedDrives` | boolean | No | Include files from shared (team) drives. | #### Output [#output-23] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `file` | object | file output from the tool | | ↳ `id` | string | Google Drive file ID | | ↳ `name` | string | File name | | ↳ `mimeType` | string | File MIME type | | ↳ `modifiedTime` | string | Last modified time (ISO) | | ↳ `createdTime` | string | File creation time (ISO) | | ↳ `size` | string | File size in bytes | | ↳ `webViewLink` | string | URL to view file in browser | | ↳ `parents` | json | Parent folder IDs | | ↳ `lastModifyingUser` | json | User who last modified the file | | ↳ `shared` | boolean | Whether file is shared | | ↳ `starred` | boolean | Whether file is starred | | `eventType` | string | Change type: "created", "modified", or "deleted" | | `timestamp` | string | Event timestamp in ISO format | --- # Google Forms (/integrations/google_forms) {/* MANUAL-CONTENT-START:intro */} [Google Forms](https://www.google.com/forms/about/) collects structured responses. Use this integration to read and update forms, retrieve responses, and manage watches. Its triggers can start workflows when forms receive responses or change. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Forms into your workflow. Read form structure, get responses, create forms, update content, and manage notification watches. ## Actions [#actions] ### Google Forms: Get Responses [#google-forms-get-responses] Retrieve a single response or list responses from a Google Form #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `formId` | string | Yes | Google Forms form ID | | `responseId` | string | No | Response ID - if provided, returns this specific response | | `pageSize` | number | No | Maximum number of responses to return (service may return fewer). Defaults to 5000. | | `pageToken` | string | No | Page token from a previous list response to fetch the next page of responses | | `filter` | string | No | Filter responses, e.g. "timestamp > 2024-01-01T00:00:00Z" (RFC3339 UTC). Only timestamp filters are supported. | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------- | | `responses` | array | Array of form responses (when no responseId provided) | | ↳ `responseId` | string | Unique response ID | | ↳ `createTime` | string | When the response was created | | ↳ `lastSubmittedTime` | string | When the response was last submitted | | ↳ `answers` | json | Map of question IDs to answer values | | `nextPageToken` | string | Token to fetch the next page of responses (null when no more pages) | | `response` | object | Single form response (when responseId is provided) | | ↳ `responseId` | string | Unique response ID | | ↳ `createTime` | string | When the response was created | | ↳ `lastSubmittedTime` | string | When the response was last submitted | | ↳ `answers` | json | Map of question IDs to answer values | | `raw` | json | Raw API response data | ### Google Forms: Get Form [#google-forms-get-form] Retrieve a form structure including its items, settings, and metadata #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `formId` | string | Yes | Google Forms form ID to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------ | | `formId` | string | The form ID | | `title` | string | The form title visible to responders | | `description` | string | The form description | | `documentTitle` | string | The document title visible in Drive | | `responderUri` | string | The URI to share with responders | | `linkedSheetId` | string | The ID of the linked Google Sheet | | `revisionId` | string | The revision ID of the form | | `items` | array | The form items (questions, sections, etc.) | | ↳ `itemId` | string | Item ID | | ↳ `title` | string | Item title | | ↳ `description` | string | Item description | | `settings` | json | Form settings | | `publishSettings` | json | Form publish settings | ### Google Forms: Create Form [#google-forms-create-form] Create a new Google Form with a title #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------ | | `title` | string | Yes | The title of the form visible to responders | | `documentTitle` | string | No | The document title visible in Drive (defaults to form title) | | `unpublished` | boolean | No | If true, create an unpublished form that does not accept responses | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `formId` | string | The ID of the created form | | `title` | string | The form title | | `documentTitle` | string | The document title in Drive | | `responderUri` | string | The URI to share with responders | | `revisionId` | string | The revision ID of the form | ### Google Forms: Batch Update [#google-forms-batch-update] Apply multiple updates to a form (add items, update info, change settings, etc.) #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- | | `formId` | string | Yes | Google Forms form ID | | `requests` | json | Yes | Array of update requests (updateFormInfo, updateSettings, createItem, updateItem, moveItem, deleteItem) | | `includeFormInResponse` | boolean | No | Whether to return the updated form in the response | #### Output [#output-3] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------- | | `replies` | array | The replies from each update request | | `writeControl` | object | Write control information with revision IDs | | ↳ `requiredRevisionId` | string | Required revision ID for conflict detection | | ↳ `targetRevisionId` | string | Target revision ID | | `form` | object | The updated form (if includeFormInResponse was true) | | ↳ `formId` | string | The form ID | | ↳ `info` | object | Form info containing title and description | | ↳ `title` | string | The form title visible to responders | | ↳ `description` | string | The form description | | ↳ `documentTitle` | string | The document title visible in Drive | | ↳ `settings` | object | Form settings | | ↳ `quizSettings` | object | Quiz settings | | ↳ `isQuiz` | boolean | Whether the form is a quiz | | ↳ `emailCollectionType` | string | Email collection type | | ↳ `items` | array | The form items (questions, sections, etc.) | | ↳ `itemId` | string | Item ID | | ↳ `title` | string | Item title | | ↳ `description` | string | Item description | | ↳ `questionItem` | json | Question item configuration | | ↳ `questionGroupItem` | json | Question group configuration | | ↳ `pageBreakItem` | json | Page break configuration | | ↳ `textItem` | json | Text item configuration | | ↳ `imageItem` | json | Image item configuration | | ↳ `videoItem` | json | Video item configuration | | ↳ `revisionId` | string | The revision ID of the form | | ↳ `responderUri` | string | The URI to share with responders | | ↳ `linkedSheetId` | string | The ID of the linked Google Sheet | | ↳ `publishSettings` | object | Form publish settings | | ↳ `publishState` | object | Current publish state | | ↳ `isPublished` | boolean | Whether the form is published | | ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses | ### Google Forms: Set Publish Settings [#google-forms-set-publish-settings] Update the publish settings of a form (publish/unpublish, accept responses) #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `formId` | string | Yes | Google Forms form ID | | `isPublished` | boolean | Yes | Whether the form is published and visible to others | | `isAcceptingResponses` | boolean | No | Whether the form accepts responses (forced to false if isPublished is false) | #### Output [#output-4] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------- | | `formId` | string | The form ID | | `publishSettings` | json | The updated publish settings | | ↳ `publishState` | object | The publish state | | ↳ `isPublished` | boolean | Whether the form is published | | ↳ `isAcceptingResponses` | boolean | Whether the form accepts responses | ### Google Forms: Create Watch [#google-forms-create-watch] Create a notification watch for form changes (schema changes or new responses) #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `formId` | string | Yes | Google Forms form ID to watch | | `eventType` | string | Yes | Event type to watch: SCHEMA (form changes) or RESPONSES (new submissions) | | `topicName` | string | Yes | The Cloud Pub/Sub topic name (format: projects/\{project}/topics/\{topic}) | | `watchId` | string | No | Custom watch ID (4-63 chars, lowercase letters, numbers, hyphens) | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------- | | `id` | string | The watch ID | | `eventType` | string | The event type being watched | | `topicName` | string | The Cloud Pub/Sub topic | | `createTime` | string | When the watch was created | | `expireTime` | string | When the watch expires (7 days after creation) | | `state` | string | The watch state (ACTIVE, SUSPENDED) | ### Google Forms: List Watches [#google-forms-list-watches] List all notification watches for a form #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `formId` | string | Yes | Google Forms form ID | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | -------------------------------- | | `watches` | array | List of watches for the form | | ↳ `id` | string | Watch ID | | ↳ `eventType` | string | Event type (SCHEMA or RESPONSES) | | ↳ `createTime` | string | When the watch was created | | ↳ `expireTime` | string | When the watch expires | | ↳ `state` | string | Watch state | ### Google Forms: Delete Watch [#google-forms-delete-watch] Delete a notification watch from a form #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `formId` | string | Yes | Google Forms form ID | | `watchId` | string | Yes | Watch ID to delete | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the watch was successfully deleted | ### Google Forms: Renew Watch [#google-forms-renew-watch] Renew a notification watch for another 7 days #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `formId` | string | Yes | Google Forms form ID | | `watchId` | string | Yes | Watch ID to renew | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------ | ---------------------------- | | `id` | string | The watch ID | | `eventType` | string | The event type being watched | | `expireTime` | string | The new expiration time | | `state` | string | The watch state | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Google Forms Webhook [#google-forms-webhook] Trigger workflow from Google Form submissions (via Apps Script forwarder) #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `token` | string | Yes | We validate requests using this secret. Send it as Authorization: Bearer \ or a custom header. | | `secretHeaderName` | string | No | If set, the webhook will validate this header equals your Shared Secret instead of Authorization. | | `triggerFormId` | string | No | Optional, for clarity and matching in workflows. Not required for webhook to work. | | `includeRawPayload` | boolean | No | Include the original payload from Apps Script in the workflow input. | | `setupScript` | string | No | Copy this code and paste it into your Google Forms Apps Script editor | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------- | | `responseId` | string | Unique response identifier (if available) | | `createTime` | string | Response creation timestamp | | `lastSubmittedTime` | string | Last submitted timestamp | | `formId` | string | Google Form ID | | `answers` | object | Normalized map of question -> answer | | `raw` | object | Original payload (when enabled) | --- # Google Groups (/integrations/google_groups) {/* MANUAL-CONTENT-START:intro */} [Google Groups](https://groups.google.com) is part of Google Workspace, providing email-based group communication, collaboration, and access control for teams and organizations. Google Groups lets you create mailing lists, manage membership, and control permissions for both internal and external users. This page explains how you can use Agent Serve to automate the management of Google Groups in your workflows. With Agent Serve, agents can create and configure groups, add or remove members, update group settings, and keep directory lists up-to-date automatically—ideal for onboarding workflows, syncing IT systems, or dynamically managing project teams. With Google Groups, you can: * **Centralize communications**: Create team or project mailing lists for group conversations * **Manage group membership**: Add, remove, or update members with granular roles (owner, manager, member) * **Control access**: Manage who can view, post, or join; set permissions for public/private visibility * **Collaborate across teams**: Streamline communication and document sharing via group-based access * **Automate IT tasks**: Use Agent Serve to keep group memberships current as teams change In Agent Serve, the Google Groups integration gives your agents API-driven control to automate common administrative tasks. Connect directly to your Google Workspace domain to add users to groups, manage lists, audit group settings, and ensure your organization’s access controls are always up-to-date—without manual overhead. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API. ## Actions [#actions] ### Google Groups List Groups [#google-groups-list-groups] List all groups in a Google Workspace domain #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------- | | `customer` | string | No | Customer ID or "my\_customer" for the authenticated user's domain | | `domain` | string | No | Domain name to filter groups by | | `maxResults` | number | No | Maximum number of results to return (1-200). Example: 50 | | `pageToken` | string | No | Token for fetching the next page of results | | `query` | string | No | Search query to filter groups (e.g., "email:admin\*") | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `groups` | json | Array of group objects | | `nextPageToken` | string | Token for fetching next page of results | ### Google Groups Get Group [#google-groups-get-group] Get details of a specific Google Group by email or group ID #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | #### Output [#output-1] | Parameter | Type | Description | | --------- | ---- | ------------ | | `group` | json | Group object | ### Google Groups Create Group [#google-groups-create-group] Create a new Google Group in the domain #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `email` | string | Yes | Email address for the new group (e.g., [team@example.com](mailto:team@example.com)) | | `name` | string | Yes | Display name for the group (e.g., Engineering Team) | | `description` | string | No | Description of the group | #### Output [#output-2] | Parameter | Type | Description | | --------- | ---- | -------------------- | | `group` | json | Created group object | ### Google Groups Update Group [#google-groups-update-group] Update an existing Google Group #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `name` | string | No | New display name for the group (e.g., Engineering Team) | | `description` | string | No | New description for the group | | `email` | string | No | New email address for the group (e.g., [newteam@example.com](mailto:newteam@example.com)) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ---- | -------------------- | | `group` | json | Updated group object | ### Google Groups Delete Group [#google-groups-delete-group] Delete a Google Group #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier to delete. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### Google Groups List Members [#google-groups-list-members] List all members of a Google Group #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `maxResults` | number | No | Maximum number of results to return (1-200). Example: 50 | | `pageToken` | string | No | Token for fetching the next page of results | | `roles` | string | No | Filter by roles (comma-separated: OWNER, MANAGER, MEMBER) | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `members` | json | Array of member objects | | `nextPageToken` | string | Token for fetching next page of results | ### Google Groups Get Member [#google-groups-get-member] Get details of a specific member in a Google Group #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `memberKey` | string | Yes | Member identifier. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID | #### Output [#output-6] | Parameter | Type | Description | | --------- | ---- | ------------- | | `member` | json | Member object | ### Google Groups Add Member [#google-groups-add-member] Add a new member to a Google Group #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `email` | string | Yes | Email address of the member to add (e.g., [user@example.com](mailto:user@example.com)) | | `role` | string | No | Role for the member: MEMBER, MANAGER, or OWNER. Defaults to MEMBER | #### Output [#output-7] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `member` | json | Added member object | ### Google Groups Remove Member [#google-groups-remove-member] Remove a member from a Google Group #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `memberKey` | string | Yes | Member identifier to remove. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### Google Groups Update Member [#google-groups-update-member] Update a member's role in a Google Group (promote or demote) #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `memberKey` | string | Yes | Member identifier. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID | | `role` | string | Yes | New role for the member: MEMBER, MANAGER, or OWNER | #### Output [#output-9] | Parameter | Type | Description | | --------- | ---- | --------------------- | | `member` | json | Updated member object | ### Google Groups Has Member [#google-groups-has-member] Check if a user is a member of a Google Group #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `memberKey` | string | Yes | Member identifier to check. Can be the member email address (e.g., [user@example.com](mailto:user@example.com)) or the unique member ID | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `isMember` | boolean | Whether the user is a member of the group | ### Google Groups List Aliases [#google-groups-list-aliases] List all email aliases for a Google Group #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------- | | `aliases` | array | List of email aliases for the group | | ↳ `id` | string | Unique group identifier | | ↳ `primaryEmail` | string | Group's primary email address | | ↳ `alias` | string | Alias email address | | ↳ `kind` | string | API resource type | | ↳ `etag` | string | Resource version identifier | ### Google Groups Add Alias [#google-groups-add-alias] Add an email alias to a Google Group #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `alias` | string | Yes | The email alias to add to the group | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | ----------------------------- | | `id` | string | Unique group identifier | | `primaryEmail` | string | Group's primary email address | | `alias` | string | The alias that was added | | `kind` | string | API resource type | | `etag` | string | Resource version identifier | ### Google Groups Remove Alias [#google-groups-remove-alias] Remove an email alias from a Google Group #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `groupKey` | string | Yes | Group identifier. Can be the group email address (e.g., [team@example.com](mailto:team@example.com)) or the unique group ID | | `alias` | string | Yes | The email alias to remove from the group | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the alias was successfully deleted | ### Google Groups Get Settings [#google-groups-get-settings] Get the settings for a Google Group including access permissions, moderation, and posting options #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------- | | `groupEmail` | string | Yes | The email address of the group (e.g., [team@example.com](mailto:team@example.com)) | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------ | | `email` | string | The group's email address | | `name` | string | The group name (max 75 characters) | | `description` | string | The group description (max 4096 characters) | | `whoCanJoin` | string | Who can join the group (ANYONE\_CAN\_JOIN, ALL\_IN\_DOMAIN\_CAN\_JOIN, INVITED\_CAN\_JOIN, CAN\_REQUEST\_TO\_JOIN) | | `whoCanViewMembership` | string | Who can view group membership | | `whoCanViewGroup` | string | Who can view group messages | | `whoCanPostMessage` | string | Who can post messages to the group | | `allowExternalMembers` | string | Whether external users can be members | | `allowWebPosting` | string | Whether web posting is allowed | | `primaryLanguage` | string | The group's primary language | | `isArchived` | string | Whether messages are archived | | `archiveOnly` | string | Whether the group is archive-only (inactive) | | `messageModerationLevel` | string | Message moderation level | | `spamModerationLevel` | string | Spam handling level (ALLOW, MODERATE, SILENTLY\_MODERATE, REJECT) | | `replyTo` | string | Default reply destination | | `customReplyTo` | string | Custom email for replies | | `includeCustomFooter` | string | Whether to include custom footer | | `customFooterText` | string | Custom footer text (max 1000 characters) | | `sendMessageDenyNotification` | string | Whether to send rejection notifications | | `defaultMessageDenyNotificationText` | string | Default rejection message text | | `membersCanPostAsTheGroup` | string | Whether members can post as the group | | `includeInGlobalAddressList` | string | Whether included in Global Address List | | `whoCanLeaveGroup` | string | Who can leave the group | | `whoCanContactOwner` | string | Who can contact the group owner | | `favoriteRepliesOnTop` | string | Whether favorite replies appear at top | | `whoCanApproveMembers` | string | Who can approve new members | | `whoCanBanUsers` | string | Who can ban users | | `whoCanModerateMembers` | string | Who can manage members | | `whoCanModerateContent` | string | Who can moderate content | | `whoCanAssistContent` | string | Who can assist with content metadata | | `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled | | `whoCanDiscoverGroup` | string | Who can discover the group | | `defaultSender` | string | Default sender identity (DEFAULT\_SELF or GROUP) | ### Google Groups Update Settings [#google-groups-update-settings] Update the settings for a Google Group including access permissions, moderation, and posting options #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `groupEmail` | string | Yes | The email address of the group (e.g., [team@example.com](mailto:team@example.com)) | | `name` | string | No | The group name (max 75 characters) | | `description` | string | No | The group description (max 4096 characters) | | `whoCanJoin` | string | No | Who can join: ANYONE\_CAN\_JOIN, ALL\_IN\_DOMAIN\_CAN\_JOIN, INVITED\_CAN\_JOIN, CAN\_REQUEST\_TO\_JOIN | | `whoCanViewMembership` | string | No | Who can view membership: ALL\_IN\_DOMAIN\_CAN\_VIEW, ALL\_MEMBERS\_CAN\_VIEW, ALL\_MANAGERS\_CAN\_VIEW | | `whoCanViewGroup` | string | No | Who can view group messages: ANYONE\_CAN\_VIEW, ALL\_IN\_DOMAIN\_CAN\_VIEW, ALL\_MEMBERS\_CAN\_VIEW, ALL\_MANAGERS\_CAN\_VIEW, ALL\_OWNERS\_CAN\_VIEW | | `whoCanPostMessage` | string | No | Who can post: NONE\_CAN\_POST, ALL\_MANAGERS\_CAN\_POST, ALL\_MEMBERS\_CAN\_POST, ALL\_OWNERS\_CAN\_POST, ALL\_IN\_DOMAIN\_CAN\_POST, ANYONE\_CAN\_POST | | `allowExternalMembers` | string | No | Whether external users can be members: true or false | | `allowWebPosting` | string | No | Whether web posting is allowed: true or false | | `primaryLanguage` | string | No | The group's primary language (e.g., en) | | `isArchived` | string | No | Whether messages are archived: true or false | | `archiveOnly` | string | No | Whether the group is archive-only (inactive): true or false | | `messageModerationLevel` | string | No | Message moderation: MODERATE\_ALL\_MESSAGES, MODERATE\_NON\_MEMBERS, MODERATE\_NEW\_MEMBERS, MODERATE\_NONE | | `spamModerationLevel` | string | No | Spam handling: ALLOW, MODERATE, SILENTLY\_MODERATE, REJECT | | `replyTo` | string | No | Default reply: REPLY\_TO\_CUSTOM, REPLY\_TO\_SENDER, REPLY\_TO\_LIST, REPLY\_TO\_OWNER, REPLY\_TO\_IGNORE, REPLY\_TO\_MANAGERS | | `customReplyTo` | string | No | Custom email for replies (when replyTo is REPLY\_TO\_CUSTOM) | | `includeCustomFooter` | string | No | Whether to include custom footer: true or false | | `customFooterText` | string | No | Custom footer text (max 1000 characters) | | `sendMessageDenyNotification` | string | No | Whether to send rejection notifications: true or false | | `defaultMessageDenyNotificationText` | string | No | Default rejection message text | | `membersCanPostAsTheGroup` | string | No | Whether members can post as the group: true or false | | `includeInGlobalAddressList` | string | No | Whether included in Global Address List: true or false | | `whoCanLeaveGroup` | string | No | Who can leave: ALL\_MANAGERS\_CAN\_LEAVE, ALL\_MEMBERS\_CAN\_LEAVE, NONE\_CAN\_LEAVE | | `whoCanContactOwner` | string | No | Who can contact owner: ALL\_IN\_DOMAIN\_CAN\_CONTACT, ALL\_MANAGERS\_CAN\_CONTACT, ALL\_MEMBERS\_CAN\_CONTACT, ANYONE\_CAN\_CONTACT | | `favoriteRepliesOnTop` | string | No | Whether favorite replies appear at top: true or false | | `whoCanApproveMembers` | string | No | Who can approve members: ALL\_OWNERS\_CAN\_APPROVE, ALL\_MANAGERS\_CAN\_APPROVE, ALL\_MEMBERS\_CAN\_APPROVE, NONE\_CAN\_APPROVE | | `whoCanBanUsers` | string | No | Who can ban users: ALL\_MEMBERS, OWNERS\_AND\_MANAGERS, OWNERS\_ONLY, NONE | | `whoCanModerateMembers` | string | No | Who can manage members: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE | | `whoCanModerateContent` | string | No | Who can moderate content: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE | | `whoCanAssistContent` | string | No | Who can assist with content metadata: OWNERS\_ONLY, OWNERS\_AND\_MANAGERS, ALL\_MEMBERS, NONE | | `enableCollaborativeInbox` | string | No | Whether collaborative inbox is enabled: true or false | | `whoCanDiscoverGroup` | string | No | Who can discover: ANYONE\_CAN\_DISCOVER, ALL\_IN\_DOMAIN\_CAN\_DISCOVER, ALL\_MEMBERS\_CAN\_DISCOVER | | `defaultSender` | string | No | Default sender: DEFAULT\_SELF or GROUP | #### Output [#output-15] | Parameter | Type | Description | | ------------------------------------ | ------ | --------------------------------------- | | `email` | string | The group's email address | | `name` | string | The group name | | `description` | string | The group description | | `whoCanJoin` | string | Who can join the group | | `whoCanViewMembership` | string | Who can view group membership | | `whoCanViewGroup` | string | Who can view group messages | | `whoCanPostMessage` | string | Who can post messages to the group | | `allowExternalMembers` | string | Whether external users can be members | | `allowWebPosting` | string | Whether web posting is allowed | | `primaryLanguage` | string | The group's primary language | | `isArchived` | string | Whether messages are archived | | `archiveOnly` | string | Whether the group is archive-only | | `messageModerationLevel` | string | Message moderation level | | `spamModerationLevel` | string | Spam handling level | | `replyTo` | string | Default reply destination | | `customReplyTo` | string | Custom email for replies | | `includeCustomFooter` | string | Whether to include custom footer | | `customFooterText` | string | Custom footer text | | `sendMessageDenyNotification` | string | Whether to send rejection notifications | | `defaultMessageDenyNotificationText` | string | Default rejection message text | | `membersCanPostAsTheGroup` | string | Whether members can post as the group | | `includeInGlobalAddressList` | string | Whether included in Global Address List | | `whoCanLeaveGroup` | string | Who can leave the group | | `whoCanContactOwner` | string | Who can contact the group owner | | `favoriteRepliesOnTop` | string | Whether favorite replies appear at top | | `whoCanApproveMembers` | string | Who can approve new members | | `whoCanBanUsers` | string | Who can ban users | | `whoCanModerateMembers` | string | Who can manage members | | `whoCanModerateContent` | string | Who can moderate content | | `whoCanAssistContent` | string | Who can assist with content metadata | | `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled | | `whoCanDiscoverGroup` | string | Who can discover the group | | `defaultSender` | string | Default sender identity | --- # Google Maps (/integrations/google_maps) {/* MANUAL-CONTENT-START:intro */} Use [Google Maps](https://maps.google.com) APIs to look up coordinates and places, calculate routes and travel times, validate addresses, and retrieve location-based environmental data. Each action below documents its required location inputs and returned fields. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Maps Platform APIs into your workflow. Supports geocoding addresses to coordinates, reverse geocoding, getting directions between locations, calculating distance matrices, searching for places, retrieving place details, elevation data, and timezone information. ## Actions [#actions] ### Google Maps Air Quality [#google-maps-air-quality] Get current air quality data for a location #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key with Air Quality API enabled | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | | `languageCode` | string | No | Language code for the response (e.g., "en", "es") | #### Output [#output] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------ | | `dateTime` | string | Timestamp of the air quality data | | `regionCode` | string | Region code for the location | | `indexes` | array | Array of air quality indexes | | ↳ `code` | string | Index code (e.g., "uaqi", "usa\_epa") | | ↳ `displayName` | string | Display name of the index | | ↳ `aqi` | number | Air quality index value | | ↳ `aqiDisplay` | string | Formatted AQI display string | | ↳ `color` | object | RGB color for the AQI level | | ↳ `category` | string | Category description (e.g., "Good", "Moderate") | | ↳ `dominantPollutant` | string | The dominant pollutant | | `pollutants` | array | Array of pollutant concentrations | | ↳ `code` | string | Pollutant code (e.g., "pm25", "o3") | | ↳ `displayName` | string | Display name | | ↳ `fullName` | string | Full pollutant name | | ↳ `concentration` | object | Concentration info | | ↳ `value` | number | Concentration value | | ↳ `units` | string | Units (e.g., "PARTS\_PER\_BILLION") | | ↳ `additionalInfo` | object | Additional info about sources and effects | | `healthRecommendations` | object | Health recommendations for different populations | ### Google Maps Directions [#google-maps-directions] Get directions and route information between two locations #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `origin` | string | Yes | Starting location (address or lat,lng) | | `destination` | string | Yes | Destination location (address or lat,lng) | | `mode` | string | No | Travel mode: driving, walking, bicycling, or transit | | `avoid` | string | No | Features to avoid: tolls, highways, or ferries | | `waypoints` | json | No | Array of intermediate waypoints | | `units` | string | No | Unit system: metric or imperial | | `language` | string | No | Language code for results (e.g., en, es, fr) | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------- | | `routes` | array | All available routes | | ↳ `summary` | string | Route summary (main road names) | | ↳ `legs` | array | Route legs (segments between waypoints) | | ↳ `overviewPolyline` | string | Encoded polyline for the entire route | | ↳ `warnings` | array | Route warnings | | ↳ `waypointOrder` | array | Optimized waypoint order (if requested) | | `distanceText` | string | Total distance as human-readable text (e.g., "5.2 km") | | `distanceMeters` | number | Total distance in meters | | `durationText` | string | Total duration as human-readable text (e.g., "15 mins") | | `durationSeconds` | number | Total duration in seconds | | `startAddress` | string | Resolved starting address | | `endAddress` | string | Resolved ending address | | `steps` | array | Turn-by-turn navigation instructions | | ↳ `instruction` | string | Navigation instruction (HTML stripped) | | ↳ `distanceText` | string | Step distance as text | | ↳ `distanceMeters` | number | Step distance in meters | | ↳ `durationText` | string | Step duration as text | | ↳ `durationSeconds` | number | Step duration in seconds | | ↳ `startLocation` | object | Step start coordinates | | ↳ `endLocation` | object | Step end coordinates | | ↳ `travelMode` | string | Travel mode for this step | | ↳ `maneuver` | string | Maneuver type (turn-left, etc.) | | `polyline` | string | Encoded polyline for the primary route | ### Google Maps Distance Matrix [#google-maps-distance-matrix] Calculate travel distance and time between multiple origins and destinations #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `origin` | string | Yes | Origin location (address or lat,lng) | | `destinations` | json | Yes | Array of destination locations | | `mode` | string | No | Travel mode: driving, walking, bicycling, or transit | | `avoid` | string | No | Features to avoid: tolls, highways, or ferries | | `units` | string | No | Unit system: metric or imperial | | `language` | string | No | Language code for results (e.g., en, es, fr) | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------ | ---------------------------------------------- | | `originAddresses` | array | Resolved origin addresses | | `destinationAddresses` | array | Resolved destination addresses | | `rows` | array | Distance matrix rows (one per origin) | | ↳ `elements` | array | Elements (one per destination) | | ↳ `distanceText` | string | Distance as text (e.g., "5.2 km") | | ↳ `distanceMeters` | number | Distance in meters | | ↳ `durationText` | string | Duration as text (e.g., "15 mins") | | ↳ `durationSeconds` | number | Duration in seconds | | ↳ `durationInTrafficText` | string | Duration in traffic as text | | ↳ `durationInTrafficSeconds` | number | Duration in traffic in seconds | | ↳ `status` | string | Element status (OK, NOT\_FOUND, ZERO\_RESULTS) | ### Google Maps Elevation [#google-maps-elevation] Get elevation data for a location #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | `apiKey` | string | Yes | Google Maps API key | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------------------------------- | | `elevation` | number | Elevation in meters above sea level (negative for below) | | `lat` | number | Latitude of the elevation sample | | `lng` | number | Longitude of the elevation sample | | `resolution` | number | Maximum distance between data points (meters) from which elevation was interpolated | ### Google Maps Geocode [#google-maps-geocode] Convert an address into geographic coordinates (latitude and longitude) #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `address` | string | Yes | The address to geocode | | `language` | string | No | Language code for results (e.g., en, es, fr) | | `region` | string | No | Region bias as a ccTLD code (e.g., us, uk) | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------------------- | | `formattedAddress` | string | The formatted address string | | `lat` | number | Latitude coordinate | | `lng` | number | Longitude coordinate | | `location` | json | Location object with lat and lng | | `placeId` | string | Google Place ID for this location | | `addressComponents` | array | Detailed address components | | ↳ `longName` | string | Full name of the component | | ↳ `shortName` | string | Abbreviated name | | ↳ `types` | array | Component types | | `locationType` | string | Location accuracy type (ROOFTOP, RANGE\_INTERPOLATED, etc.) | ### Google Maps Geolocate [#google-maps-geolocate] Geolocate a device using WiFi access points, cell towers, or IP address #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key with Geolocation API enabled | | `homeMobileCountryCode` | number | No | Home mobile country code (MCC) | | `homeMobileNetworkCode` | number | No | Home mobile network code (MNC) | | `radioType` | string | No | Radio type: lte, gsm, cdma, wcdma, or nr | | `carrier` | string | No | Carrier name | | `considerIp` | boolean | No | Whether to use IP address for geolocation (default: true) | | `cellTowers` | array | No | Array of cell tower objects with cellId, locationAreaCode, mobileCountryCode, mobileNetworkCode | | `wifiAccessPoints` | array | No | Array of WiFi access point objects with macAddress (required), signalStrength, etc. | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------ | ------------------------- | | `lat` | number | Latitude coordinate | | `lng` | number | Longitude coordinate | | `accuracy` | number | Accuracy radius in meters | ### Google Maps Place Details [#google-maps-place-details] Get detailed information about a specific place #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `placeId` | string | Yes | Google Place ID | | `fields` | string | No | Comma-separated list of fields to return | | `language` | string | No | Language code for results (e.g., en, es, fr) | #### Output [#output-6] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------ | | `placeId` | string | Google Place ID | | `name` | string | Place name | | `formattedAddress` | string | Formatted street address | | `lat` | number | Latitude coordinate | | `lng` | number | Longitude coordinate | | `types` | array | Place types (e.g., restaurant, cafe) | | `rating` | number | Average rating (1.0 to 5.0) | | `userRatingsTotal` | number | Total number of user ratings | | `priceLevel` | number | Price level (0=Free, 1=Inexpensive, 2=Moderate, 3=Expensive, 4=Very Expensive) | | `website` | string | Place website URL | | `phoneNumber` | string | Local formatted phone number | | `internationalPhoneNumber` | string | International formatted phone number | | `openNow` | boolean | Whether the place is currently open | | `weekdayText` | array | Opening hours formatted by day of week | | `reviews` | array | User reviews (up to 5 most relevant) | | ↳ `authorName` | string | Reviewer name | | ↳ `authorUrl` | string | Reviewer profile URL | | ↳ `profilePhotoUrl` | string | Reviewer photo URL | | ↳ `rating` | number | Rating given (1-5) | | ↳ `text` | string | Review text | | ↳ `time` | number | Review timestamp (Unix epoch) | | ↳ `relativeTimeDescription` | string | Relative time (e.g., "a month ago") | | `photos` | array | Place photos | | ↳ `photoReference` | string | Photo reference for Place Photos API | | ↳ `height` | number | Photo height in pixels | | ↳ `width` | number | Photo width in pixels | | ↳ `htmlAttributions` | array | Required attributions | | `url` | string | Google Maps URL for the place | | `utcOffset` | number | UTC offset in minutes | | `vicinity` | string | Simplified address (neighborhood/street) | | `businessStatus` | string | Business status (OPERATIONAL, CLOSED\_TEMPORARILY, CLOSED\_PERMANENTLY) | ### Google Maps Places Nearby Search [#google-maps-places-nearby-search] Search for places of a given type within a radius of a location #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `lat` | number | Yes | Latitude of the center point to search around | | `lng` | number | Yes | Longitude of the center point to search around | | `radius` | number | Yes | Search radius in meters (up to 50000) | | `includedTypes` | array | No | Place types to include in the results (e.g., restaurant, cafe) | | `maxResultCount` | number | No | Maximum number of results to return (1-20, defaults to 20) | | `rankPreference` | string | No | How to rank results: POPULARITY (default) or DISTANCE | | `languageCode` | string | No | Language code for the response (e.g., en, es) | | `regionCode` | string | No | Region bias as a ccTLD code (e.g., us, uk) | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------- | | `places` | array | List of places found near the given location | | ↳ `placeId` | string | Google Place resource ID | | ↳ `name` | string | Place name | | ↳ `formattedAddress` | string | Formatted address | | ↳ `lat` | number | Latitude | | ↳ `lng` | number | Longitude | | ↳ `types` | array | Place types | | ↳ `rating` | number | Average rating (1-5) | | ↳ `userRatingsTotal` | number | Number of ratings | | ↳ `priceLevel` | string | Price level (e.g., PRICE\_LEVEL\_MODERATE) | | ↳ `openNow` | boolean | Whether currently open | | ↳ `businessStatus` | string | Business status | ### Google Maps Places Search [#google-maps-places-search] Search for places using a text query #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `query` | string | Yes | Search query (e.g., "restaurants in Times Square") | | `location` | json | No | Location to bias results towards (\{lat, lng}) | | `radius` | number | No | Search radius in meters | | `type` | string | No | Place type filter (e.g., restaurant, cafe, hotel) | | `language` | string | No | Language code for results (e.g., en, es, fr) | | `region` | string | No | Region bias as a ccTLD code (e.g., us, uk) | | `pageToken` | string | No | Token from a previous search response to fetch the next page of results. Wait a couple seconds after receiving the token before using it, or the API returns INVALID\_REQUEST | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------- | | `places` | array | List of places found | | ↳ `placeId` | string | Google Place ID | | ↳ `name` | string | Place name | | ↳ `formattedAddress` | string | Formatted address | | ↳ `lat` | number | Latitude | | ↳ `lng` | number | Longitude | | ↳ `types` | array | Place types | | ↳ `rating` | number | Average rating (1-5) | | ↳ `userRatingsTotal` | number | Number of ratings | | ↳ `priceLevel` | number | Price level (0-4) | | ↳ `openNow` | boolean | Whether currently open | | ↳ `photoReference` | string | Photo reference for Photos API | | ↳ `businessStatus` | string | Business status | | `nextPageToken` | string | Token for fetching the next page of results | ### Google Maps Pollen [#google-maps-pollen] Get a daily pollen forecast (grass, tree, weed) for a location #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Google Maps API key with Pollen API enabled | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | | `days` | number | No | Number of forecast days to return (1-5, defaults to 1) | | `languageCode` | string | No | Language code for the response (e.g., "en", "es") | | `plantsDescription` | boolean | No | Include detailed plant descriptions (defaults to true) | #### Output [#output-9] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------------------------- | | `regionCode` | string | Region code (ISO 3166-1 alpha-2) for the location | | `dailyInfo` | array | Daily pollen forecast entries | | ↳ `date` | object | Calendar date of the forecast entry | | ↳ `pollenTypeInfo` | array | Pollen type indices (grass, tree, weed) | | ↳ `code` | string | Pollen type code (GRASS, TREE, WEED) | | ↳ `displayName` | string | Display name | | ↳ `inSeason` | boolean | Whether the pollen type is in season | | ↳ `indexInfo` | object | Universal Pollen Index (UPI) info | | ↳ `healthRecommendations` | array | Health recommendations | | ↳ `plantInfo` | array | Per-plant forecast with descriptions | | ↳ `code` | string | Plant code (e.g., BIRCH, RAGWEED) | | ↳ `displayName` | string | Display name | | ↳ `inSeason` | boolean | Whether the plant is in season | | ↳ `indexInfo` | object | Universal Pollen Index (UPI) info | | ↳ `plantDescription` | object | Plant details (type, family, season, cross-reactions) | ### Google Maps Reverse Geocode [#google-maps-reverse-geocode] Convert geographic coordinates (latitude and longitude) into a human-readable address #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | | `language` | string | No | Language code for results (e.g., en, es, fr) | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------- | | `formattedAddress` | string | The formatted address string | | `placeId` | string | Google Place ID for this location | | `addressComponents` | array | Detailed address components | | ↳ `longName` | string | Full name of the component | | ↳ `shortName` | string | Abbreviated name | | ↳ `types` | array | Component types | | `types` | array | Address types (e.g., street\_address, route) | ### Google Maps Snap to Roads [#google-maps-snap-to-roads] Snap GPS coordinates to the nearest road segment #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key with Roads API enabled | | `path` | string | Yes | Pipe-separated list of lat,lng coordinates (e.g., "60.170880,24.942795\|60.170879,24.942796") | | `interpolate` | boolean | No | Whether to interpolate additional points along the road | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------- | | `snappedPoints` | array | Array of snapped points on roads | | ↳ `location` | object | Snapped location coordinates | | ↳ `lat` | number | Latitude | | ↳ `lng` | number | Longitude | | ↳ `originalIndex` | number | Index in the original path (if not interpolated) | | ↳ `placeId` | string | Place ID for this road segment | | `warningMessage` | string | Warning message if any (e.g., if points could not be snapped) | ### Google Maps Solar [#google-maps-solar] Get solar potential and panel insights for the building nearest a location #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key with Solar API enabled | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | | `requiredQuality` | string | No | Minimum imagery quality to accept (HIGH, MEDIUM, or BASE) | #### Output [#output-12] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------------------------------------- | | `name` | string | Resource name of the building (e.g., "buildings/ChIJ...") | | `center` | object | Center coordinate of the building | | ↳ `lat` | number | Latitude | | ↳ `lng` | number | Longitude | | `imageryDate` | object | Date the underlying imagery was captured | | `imageryQuality` | string | Quality of the imagery used (HIGH, MEDIUM, BASE) | | `regionCode` | string | Region code (ISO 3166-1 alpha-2) for the building | | `postalCode` | string | Postal code of the building | | `administrativeArea` | string | Administrative area (e.g., state or province) | | `solarPotential` | object | Solar potential: max panel count/area, sunshine hours, carbon offset, panel specs, and configs | ### Google Maps Speed Limits [#google-maps-speed-limits] Get speed limits for road segments. Requires either path coordinates or placeIds. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Google Maps API key with Roads API enabled | | `path` | string | No | Pipe-separated list of lat,lng coordinates (required if placeIds not provided) | | `placeIds` | array | No | Array of Place IDs for road segments (required if path not provided) | | `units` | string | No | Units for the returned speed limits: KPH (default) or MPH | #### Output [#output-13] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------- | | `speedLimits` | array | Array of speed limits for road segments | | ↳ `placeId` | string | Place ID for the road segment | | ↳ `speedLimit` | number | Speed limit value | | ↳ `units` | string | Speed limit units (KPH or MPH) | | `snappedPoints` | array | Array of snapped points corresponding to the speed limits | | ↳ `location` | object | Snapped location coordinates | | ↳ `lat` | number | Latitude | | ↳ `lng` | number | Longitude | | ↳ `originalIndex` | number | Index in the original path | | ↳ `placeId` | string | Place ID for this road segment | ### Google Maps Timezone [#google-maps-timezone] Get timezone information for a location #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key | | `lat` | number | Yes | Latitude coordinate | | `lng` | number | Yes | Longitude coordinate | | `timestamp` | number | No | Unix timestamp to determine DST offset (defaults to current time) | | `language` | string | No | Language code for timezone name (e.g., en, es, fr) | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------- | | `timeZoneId` | string | IANA timezone ID (e.g., "America/New\_York", "Europe/London") | | `timeZoneName` | string | Localized timezone name (e.g., "Eastern Daylight Time") | | `rawOffset` | number | UTC offset in seconds (without DST) | | `dstOffset` | number | Daylight Saving Time offset in seconds (0 if not in DST) | | `totalOffsetSeconds` | number | Total UTC offset in seconds (rawOffset + dstOffset) | | `totalOffsetHours` | number | Total UTC offset in hours (e.g., -5 for EST, -4 for EDT) | ### Google Maps Validate Address [#google-maps-validate-address] Validate and standardize a postal address #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Google Maps API key with Address Validation API enabled | | `address` | string | Yes | The address to validate (as a single string) | | `regionCode` | string | No | ISO 3166-1 alpha-2 country code (e.g., "US", "CA") | | `locality` | string | No | City or locality name | | `enableUspsCass` | boolean | No | Enable USPS CASS validation for US addresses | #### Output [#output-15] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------- | | `formattedAddress` | string | The standardized formatted address | | `lat` | number | Latitude coordinate | | `lng` | number | Longitude coordinate | | `placeId` | string | Google Place ID for this address | | `addressComplete` | boolean | Whether the address is complete and deliverable | | `hasUnconfirmedComponents` | boolean | Whether some address components could not be confirmed | | `hasInferredComponents` | boolean | Whether some components were inferred (not in input) | | `hasReplacedComponents` | boolean | Whether some components were replaced with canonical values | | `validationGranularity` | string | Granularity of validation (PREMISE, SUB\_PREMISE, ROUTE, etc.) | | `geocodeGranularity` | string | Granularity of the geocode result | | `addressComponents` | array | Detailed address components | | ↳ `longName` | string | Full name of the component | | ↳ `shortName` | string | Abbreviated name | | ↳ `types` | array | Component types | | `missingComponentTypes` | array | Types of address components that are missing | | `unconfirmedComponentTypes` | array | Types of components that could not be confirmed | | `unresolvedTokens` | array | Input tokens that could not be resolved | --- # Google Meet (/integrations/google_meet) {/* MANUAL-CONTENT-START:intro */} [Google Meet](https://meet.google.com/) provides meeting spaces and conference records. Create or configure a meeting space, inspect participants and past conferences, or end an active conference. Select the space or conference identifier required by the operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Meet into your workflow. Create meeting spaces, get space details, end conferences, list conference records, and view participants. ## Actions [#actions] ### Google Meet Create Space [#google-meet-create-space] Create a new Google Meet meeting space #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `accessType` | string | No | Who can join the meeting without knocking: OPEN (anyone with link), TRUSTED (org members), RESTRICTED (only invited) | | `entryPointAccess` | string | No | Entry points allowed: ALL (all entry points) or CREATOR\_APP\_ONLY (only via app) | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `name` | string | Resource name of the space (e.g., spaces/abc123) | | `meetingUri` | string | Meeting URL (e.g., [https://meet.google.com/abc-defg-hij](https://meet.google.com/abc-defg-hij)) | | `meetingCode` | string | Meeting code (e.g., abc-defg-hij) | | `accessType` | string | Access type configuration | | `entryPointAccess` | string | Entry point access configuration | ### Google Meet Get Space [#google-meet-get-space] Get details of a Google Meet meeting space by name or meeting code #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------ | | `spaceName` | string | Yes | Space resource name (spaces/abc123) or meeting code (abc-defg-hij) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------- | | `name` | string | Resource name of the space | | `meetingUri` | string | Meeting URL | | `meetingCode` | string | Meeting code | | `accessType` | string | Access type configuration | | `entryPointAccess` | string | Entry point access configuration | | `activeConference` | string | Active conference record name | ### Google Meet End Conference [#google-meet-end-conference] End the active conference in a Google Meet space #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `spaceName` | string | Yes | Space resource name (e.g., spaces/abc123) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `ended` | boolean | Whether the conference was ended successfully | ### Google Meet List Conference Records [#google-meet-list-conference-records] List conference records for meetings you organized #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `filter` | string | No | Filter by space name (e.g., space.name = "spaces/abc123") or time range (e.g., start\_time > "2024-01-01T00:00:00Z") | | `pageSize` | number | No | Maximum number of conference records to return (max 100) | | `pageToken` | string | No | Page token from a previous list request | #### Output [#output-3] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------- | | `conferenceRecords` | json | List of conference records with name, start/end times, and space | | `nextPageToken` | string | Token for next page of results | ### Google Meet Get Conference Record [#google-meet-get-conference-record] Get details of a specific conference record #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------- | | `conferenceName` | string | Yes | Conference record resource name (e.g., conferenceRecords/abc123) | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | --------------------------------- | | `name` | string | Conference record resource name | | `startTime` | string | Conference start time | | `endTime` | string | Conference end time | | `expireTime` | string | Conference record expiration time | | `space` | string | Associated space resource name | ### Google Meet List Participants [#google-meet-list-participants] List participants of a conference record #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------- | | `conferenceName` | string | Yes | Conference record resource name (e.g., conferenceRecords/abc123) | | `filter` | string | No | Filter participants (e.g., earliest\_start\_time > "2024-01-01T00:00:00Z") | | `pageSize` | number | No | Maximum number of participants to return (default 100, max 250) | | `pageToken` | string | No | Page token from a previous list request | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------ | | `participants` | json | List of participants with name, times, display name, and user type | | `nextPageToken` | string | Token for next page of results | | `totalSize` | number | Total number of participants | --- # Google PageSpeed (/integrations/google_pagespeed) {/* MANUAL-CONTENT-START:intro */} [Google PageSpeed Insights](https://pagespeed.web.dev/) is a web performance analysis tool powered by Lighthouse that evaluates the quality of web pages across multiple dimensions including performance, accessibility, SEO, and best practices. With the Google PageSpeed integration in Agent Serve, you can: * **Analyze webpage performance**: Get detailed performance scores and metrics for any public URL, including First Contentful Paint, Largest Contentful Paint, and Speed Index * **Evaluate accessibility**: Check how well a webpage meets accessibility standards and identify areas for improvement * **Audit SEO**: Assess a page's search engine optimization and discover opportunities to improve rankings * **Review best practices**: Verify that a webpage follows modern web development best practices * **Compare strategies**: Run analyses using either desktop or mobile strategies to understand performance across device types * **Localize results**: Retrieve analysis results in different locales for internationalized reporting In Agent Serve, the Google PageSpeed integration enables your agents to programmatically audit web pages as part of automated workflows. This is useful for monitoring site performance over time, triggering alerts when scores drop below thresholds, generating performance reports, and ensuring that deployed changes meet quality standards before release. ## Getting Your API Key [#getting-your-api-key] 1. Go to the [Google Cloud Console](https://console.cloud.google.com/) 2. Create or select a project 3. Enable the **PageSpeed Insights API** from the API Library 4. Navigate to **Credentials** and create an API key 5. Use the API key in the Agent Serve block configuration {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Analyze web pages for performance, accessibility, SEO, and best practices using Google PageSpeed Insights API powered by Lighthouse. ## Actions [#actions] ### Google PageSpeed Analyze [#google-pagespeed-analyze] Analyze a webpage for performance, accessibility, SEO, and best practices using Google PageSpeed Insights. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google PageSpeed Insights API Key | | `url` | string | Yes | The URL of the webpage to analyze | | `category` | string | No | Lighthouse categories to analyze (comma-separated): performance, accessibility, best-practices, seo | | `strategy` | string | No | Analysis strategy: desktop or mobile | | `locale` | string | No | Locale for results (e.g., en, fr, de) | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------------------------------------ | | `finalUrl` | string | The final URL after redirects | | `performanceScore` | number | Performance category score (0-1) | | `accessibilityScore` | number | Accessibility category score (0-1) | | `bestPracticesScore` | number | Best Practices category score (0-1) | | `seoScore` | number | SEO category score (0-1) | | `firstContentfulPaint` | string | Time to First Contentful Paint (display value) | | `firstContentfulPaintMs` | number | Time to First Contentful Paint in milliseconds | | `largestContentfulPaint` | string | Time to Largest Contentful Paint (display value) | | `largestContentfulPaintMs` | number | Time to Largest Contentful Paint in milliseconds | | `totalBlockingTime` | string | Total Blocking Time (display value) | | `totalBlockingTimeMs` | number | Total Blocking Time in milliseconds | | `cumulativeLayoutShift` | string | Cumulative Layout Shift (display value) | | `cumulativeLayoutShiftValue` | number | Cumulative Layout Shift numeric value | | `speedIndex` | string | Speed Index (display value) | | `speedIndexMs` | number | Speed Index in milliseconds | | `interactive` | string | Time to Interactive (display value) | | `interactiveMs` | number | Time to Interactive in milliseconds | | `overallCategory` | string | Overall loading experience category (FAST, AVERAGE, SLOW, or NONE) | | `analysisTimestamp` | string | UTC timestamp of the analysis | | `lighthouseVersion` | string | Version of Lighthouse used for the analysis | --- # Google Search (/integrations/google_search) {/* MANUAL-CONTENT-START:intro */} Use [Google Search](https://www.google.com)'s Custom Search API to retrieve search results with titles, snippets, and URLs for a query. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Search into the workflow. Can search the web. ## Actions [#actions] ### Google Search [#google-search] Search the web with the Custom Search API #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `query` | string | Yes | The search query to execute | | `searchEngineId` | string | Yes | Custom Search Engine ID | | `num` | string | No | Number of results to return (1-10, default 10) | | `start` | number | No | Index of the first result (1-based, for pagination; start + num must be \<= 100) | | `dateRestrict` | string | No | Restrict results by recency: d\[n] days, w\[n] weeks, m\[n] months, y\[n] years | | `fileType` | string | No | Restrict to a file extension (e.g., pdf, doc) | | `safe` | string | No | SafeSearch level: "active" or "off" (default off) | | `searchType` | string | No | Set to "image" to perform an image search | | `siteSearch` | string | No | A site to include or exclude from results | | `siteSearchFilter` | string | No | Whether to include ("i") or exclude ("e") the siteSearch site | | `lr` | string | No | Restrict to a language, e.g. "lang\_en" | | `gl` | string | No | Two-letter country code to boost geographically relevant results | | `sort` | string | No | Sort expression, e.g. "date" | | `apiKey` | string | Yes | Google API key | #### Output [#output] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------------------------------------- | | `items` | array | Array of search results from Google | | ↳ `title` | string | Title of the search result | | ↳ `htmlTitle` | string | Title of the search result with HTML markup | | ↳ `link` | string | URL of the search result | | ↳ `displayLink` | string | Display URL (abbreviated form) | | ↳ `snippet` | string | Snippet or description of the search result | | ↳ `htmlSnippet` | string | Snippet of the search result with HTML markup | | ↳ `formattedUrl` | string | Display URL shown beneath the result | | ↳ `mime` | string | MIME type of the result | | ↳ `fileFormat` | string | File format of the result | | ↳ `cacheId` | string | ID of Google's cached version | | ↳ `pagemap` | object | PageMap information for the result (structured data) | | ↳ `image` | object | Image metadata (present when searchType is image) | | ↳ `contextLink` | string | URL of the page hosting the image | | ↳ `height` | number | Image height in pixels | | ↳ `width` | number | Image width in pixels | | ↳ `byteSize` | number | Image file size in bytes | | ↳ `thumbnailLink` | string | Thumbnail image URL | | ↳ `thumbnailHeight` | number | Thumbnail height in pixels | | ↳ `thumbnailWidth` | number | Thumbnail width in pixels | | `searchInformation` | object | Information about the search query and results | | ↳ `totalResults` | string | Total number of search results available | | ↳ `searchTime` | number | Time taken to perform the search in seconds | | ↳ `formattedSearchTime` | string | Formatted search time for display | | ↳ `formattedTotalResults` | string | Formatted total results count for display | | `nextPageStartIndex` | number | Start index for the next page of results (null if no further results) | --- # Google Sheets (/integrations/google_sheets) {/* MANUAL-CONTENT-START:intro */} [Google Sheets](https://www.google.com/sheets/about/) is a cloud-based spreadsheet platform that allows teams and individuals to create, edit, and collaborate on spreadsheets in real-time. Widely used for data tracking, reporting, and lightweight database needs, Google Sheets integrates with many tools and services. With the Google Sheets integration in Agent Serve, you can: * **Read data**: Retrieve cell values from specific ranges in a spreadsheet * **Write data**: Write values to specific cell ranges * **Update data**: Modify existing cell values in a spreadsheet * **Append rows**: Add new rows of data to the end of a sheet * **Clear ranges**: Remove data from specific cell ranges * **Manage spreadsheets**: Create new spreadsheets or retrieve metadata about existing ones * **Batch operations**: Perform batch read, update, and clear operations across multiple ranges * **Copy sheets**: Duplicate sheets within or between spreadsheets In Agent Serve, the Google Sheets integration enables your agents to read from, write to, and manage spreadsheets as part of automated workflows. This is ideal for automated reporting, data synchronization, record-keeping, and building data pipelines that use spreadsheets as a collaborative data layer. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Sheets into the workflow with explicit sheet selection. Can read, write, append, update, clear data, create spreadsheets, get spreadsheet info, and copy sheets. ## Actions [#actions] ### Read from Google Sheets V2 [#read-from-google-sheets-v2] Read data from a specific sheet in a Google Sheets spreadsheet #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetName` | string | Yes | The name of the sheet/tab to read from | | `cellRange` | string | No | The cell range to read (e.g. "A1:D10"). Defaults to "A1:Z1000" if not specified. | | `filterColumn` | string | No | Column name (from the header row) to filter on. Filtering is applied to the rows returned by the read range (the default is A1:Z1000), not the entire sheet. If not provided, no filtering is applied. | | `filterValue` | string | No | Value to match against the filter column. | | `filterMatchType` | string | No | How to match the filter value. Text: "contains", "not\_contains", "exact", "not\_equals", "starts\_with", "ends\_with". Numeric/ordering: "gt", "gte", "lt", "lte" (numeric when both values are numbers, otherwise lexicographic). Defaults to "contains". | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `sheetName` | string | Name of the sheet that was read | | `range` | string | The range of cells that was read | | `values` | array | The cell values as a 2D array | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Write to Google Sheets V2 [#write-to-google-sheets-v2] Write data to a specific sheet in a Google Sheets spreadsheet #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetName` | string | Yes | The name of the sheet/tab to write to | | `cellRange` | string | No | The cell range to write to (e.g. "A1:D10", "A1"). Defaults to "A1" if not specified. | | `values` | array | Yes | The data to write as a 2D array (e.g. \[\["Name", "Age"], \["Alice", 30], \["Bob", 25]]) or array of objects. | | `valueInputOption` | string | No | The format of the data to write | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `updatedRange` | string | Range of cells that were updated | | `updatedRows` | number | Number of rows updated | | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Update Google Sheets V2 [#update-google-sheets-v2] Update data in a specific sheet in a Google Sheets spreadsheet #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetName` | string | Yes | The name of the sheet/tab to update | | `cellRange` | string | No | The cell range to update (e.g. "A1:D10", "A1"). Defaults to "A1" if not specified. | | `values` | array | Yes | The data to update as a 2D array (e.g. \[\["Name", "Age"], \["Alice", 30]]) or array of objects. | | `valueInputOption` | string | No | The format of the data to update | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `updatedRange` | string | Range of cells that were updated | | `updatedRows` | number | Number of rows updated | | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Append to Google Sheets V2 [#append-to-google-sheets-v2] Append data to the end of a specific sheet in a Google Sheets spreadsheet #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetName` | string | Yes | The name of the sheet/tab to append to | | `values` | array | Yes | The data to append as a 2D array (e.g. \[\["Alice", 30], \["Bob", 25]]) or array of objects. | | `valueInputOption` | string | No | The format of the data to append | | `insertDataOption` | string | No | How to insert the data (OVERWRITE or INSERT\_ROWS) | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------ | | `tableRange` | string | Range of the table where data was appended | | `updatedRange` | string | Range of cells that were updated | | `updatedRows` | number | Number of rows updated | | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Clear Google Sheets Range V2 [#clear-google-sheets-range-v2] Clear values from a specific range in a Google Sheets spreadsheet #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetName` | string | Yes | The name of the sheet/tab to clear | | `cellRange` | string | No | The cell range to clear (e.g. "A1:D10"). Clears entire sheet if not specified. | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `clearedRange` | string | The range that was cleared | | `sheetName` | string | Name of the sheet that was cleared | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Get Spreadsheet Info V2 [#get-spreadsheet-info-v2] Get metadata about a Google Sheets spreadsheet including title and sheet list #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `includeGridData` | boolean | No | Whether to include grid data (cell values). Defaults to false. | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------- | | `spreadsheetId` | string | The spreadsheet ID | | `title` | string | The title of the spreadsheet | | `locale` | string | The locale of the spreadsheet | | `timeZone` | string | The time zone of the spreadsheet | | `spreadsheetUrl` | string | URL to the spreadsheet | | `sheets` | array | List of sheets in the spreadsheet | | ↳ `sheetId` | number | The sheet ID | | ↳ `title` | string | The sheet title/name | | ↳ `index` | number | The sheet index (position) | | ↳ `rowCount` | number | Number of rows in the sheet | | ↳ `columnCount` | number | Number of columns in the sheet | | ↳ `hidden` | boolean | Whether the sheet is hidden | ### Create Spreadsheet V2 [#create-spreadsheet-v2] Create a new Google Sheets spreadsheet #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `title` | string | Yes | The title of the new spreadsheet | | `sheetTitles` | json | No | Array of sheet names to create (e.g., \["Sheet1", "Data", "Summary"]). Defaults to a single "Sheet1". | | `locale` | string | No | The locale of the spreadsheet (e.g., "en\_US") | | `timeZone` | string | No | The time zone of the spreadsheet (e.g., "America/New\_York") | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------- | | `spreadsheetId` | string | The ID of the created spreadsheet | | `title` | string | The title of the created spreadsheet | | `spreadsheetUrl` | string | URL to the created spreadsheet | | `sheets` | array | List of sheets created in the spreadsheet | | ↳ `sheetId` | number | The sheet ID | | ↳ `title` | string | The sheet title/name | | ↳ `index` | number | The sheet index (position) | ### Batch Read Google Sheets V2 [#batch-read-google-sheets-v2] Read multiple ranges from a Google Sheets spreadsheet in a single request #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `ranges` | json | Yes | Array of ranges to read (e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"]). Each range should include sheet name. | | `majorDimension` | string | No | The major dimension of values: "ROWS" (default) or "COLUMNS" | | `valueRenderOption` | string | No | How values should be rendered: "FORMATTED\_VALUE" (default), "UNFORMATTED\_VALUE", or "FORMULA" | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------- | | `spreadsheetId` | string | The spreadsheet ID | | `valueRanges` | array | Array of value ranges read from the spreadsheet | | ↳ `range` | string | The range that was read | | ↳ `majorDimension` | string | Major dimension (ROWS or COLUMNS) | | ↳ `values` | array | The cell values as a 2D array | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Batch Update Google Sheets V2 [#batch-update-google-sheets-v2] Update multiple ranges in a Google Sheets spreadsheet in a single request #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `data` | json | Yes | Array of value ranges to update. Each item should have "range" (e.g., "Sheet1!A1:D10") and "values" (2D array). | | `valueInputOption` | string | No | How input data should be interpreted: "RAW" or "USER\_ENTERED" (default). USER\_ENTERED parses formulas. | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------- | | `spreadsheetId` | string | The spreadsheet ID | | `totalUpdatedRows` | number | Total number of rows updated | | `totalUpdatedColumns` | number | Total number of columns updated | | `totalUpdatedCells` | number | Total number of cells updated | | `totalUpdatedSheets` | number | Total number of sheets updated | | `responses` | array | Array of update responses for each range | | ↳ `spreadsheetId` | string | The spreadsheet ID | | ↳ `updatedRange` | string | The range that was updated | | ↳ `updatedRows` | number | Number of rows updated in this range | | ↳ `updatedColumns` | number | Number of columns updated in this range | | ↳ `updatedCells` | number | Number of cells updated in this range | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Batch Clear Google Sheets V2 [#batch-clear-google-sheets-v2] Clear multiple ranges in a Google Sheets spreadsheet in a single request #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `ranges` | json | Yes | Array of ranges to clear (e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"]). Each range should include sheet name. | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `spreadsheetId` | string | The spreadsheet ID | | `clearedRanges` | array | Array of ranges that were cleared | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Copy Sheet V2 [#copy-sheet-v2] Copy a sheet from one spreadsheet to another #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `sourceSpreadsheetId` | string | Yes | Source Google Sheets spreadsheet ID | | `sheetId` | number | Yes | The ID of the sheet to copy (numeric ID, not the sheet name). Use Get Spreadsheet to find sheet IDs. | | `destinationSpreadsheetId` | string | Yes | The ID of the destination spreadsheet where the sheet will be copied | #### Output [#output-10] | Parameter | Type | Description | | --------------------------- | ------ | ---------------------------------------------------- | | `sheetId` | number | The ID of the newly created sheet in the destination | | `title` | string | The title of the copied sheet | | `index` | number | The index (position) of the copied sheet | | `sheetType` | string | The type of the sheet (GRID, CHART, etc.) | | `destinationSpreadsheetId` | string | The ID of the destination spreadsheet | | `destinationSpreadsheetUrl` | string | URL to the destination spreadsheet | ### Delete Rows from Google Sheets V2 [#delete-rows-from-google-sheets-v2] Delete rows from a sheet in a Google Sheets spreadsheet #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetId` | number | Yes | The numeric ID of the sheet/tab (not the sheet name). Use Get Spreadsheet to find sheet IDs. | | `startIndex` | number | Yes | The start row index (0-based, inclusive) of the rows to delete | | `endIndex` | number | Yes | The end row index (0-based, exclusive) of the rows to delete | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `spreadsheetId` | string | Google Sheets spreadsheet ID | | `sheetId` | number | The numeric ID of the sheet | | `deletedRowRange` | string | Description of the deleted row range | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Delete Sheet V2 [#delete-sheet-v2] Delete a sheet/tab from a Google Sheets spreadsheet #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID | | `sheetId` | number | Yes | The numeric ID of the sheet/tab to delete (not the sheet name). Use Get Spreadsheet to find sheet IDs. | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `spreadsheetId` | string | Google Sheets spreadsheet ID | | `deletedSheetId` | number | The numeric ID of the deleted sheet | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Delete Spreadsheet V2 [#delete-spreadsheet-v2] Permanently delete a Google Sheets spreadsheet using the Google Drive API #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `spreadsheetId` | string | Yes | The ID of the Google Sheets spreadsheet to delete | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------ | | `spreadsheetId` | string | The ID of the deleted spreadsheet | | `deleted` | boolean | Whether the spreadsheet was successfully deleted | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### Google Sheets New Row Trigger [#google-sheets-new-row-trigger] Triggers when new rows are added to a Google Sheet #### Configuration [#configuration] | Parameter | Type | Required | Description | | ---------------------- | -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect your Google account to access Google Sheets. | | `spreadsheetId` | file-selector | Yes | The spreadsheet to monitor for new rows. | | `manualSpreadsheetId` | string | Yes | The spreadsheet to monitor for new rows. | | `sheetName` | sheet-selector | Yes | The sheet tab to monitor for new rows. | | `manualSheetName` | string | Yes | The sheet tab to monitor for new rows. | | `valueRenderOption` | string | No | How values are rendered. Formatted returns display strings, Unformatted returns raw numbers/booleans, Formula returns the formula text. | | `dateTimeRenderOption` | string | No | How dates and times are rendered. Only applies when Value Render is not "Formatted Value". | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `row` | json | Row data mapped to column headers from row 1 | | `rawRow` | json | Raw row values as an array | | `headers` | json | Column headers from row 1 | | `rowNumber` | number | The 1-based row number of the new row | | `spreadsheetId` | string | The spreadsheet ID | | `sheetName` | string | The sheet tab name | | `timestamp` | string | Event timestamp in ISO format | --- # Google Slides (/integrations/google_slides) {/* MANUAL-CONTENT-START:intro */} Use [Google Slides](https://slides.google.com) in Agent Serve to build and update presentations from templates or workflow data. Copy a template, replace text and images, embed Sheets charts, style text and shapes, manage tables and layouts, apply batch updates, and export to PDF or PPTX. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Build, edit, and export branded Google Slides presentations end-to-end. Copy a template, replace text and image tokens, embed Sheets charts, style text and shapes with brand fonts and colors, manage tables and layouts, group elements, run atomic batch updates, and export to PDF or PPTX. ## Actions [#actions] ### Read Google Slides Presentation [#read-google-slides-presentation] Read content from a Google Slides presentation #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------- | | `slides` | json | Array of slides with their content | | `metadata` | json | Presentation metadata including ID, title, and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `title` | string | The presentation title | | ↳ `pageSize` | object | Presentation page size | | ↳ `width` | json | Page width as a Dimension object | | ↳ `height` | json | Page height as a Dimension object | | ↳ `mimeType` | string | The mime type of the presentation | | ↳ `url` | string | URL to open the presentation | ### Write to Google Slides Presentation [#write-to-google-slides-presentation] Write or update content in a Google Slides presentation #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `content` | string | Yes | The content to write to the slide | | `slideIndex` | number | No | The index of the slide to write to (defaults to first slide) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------- | | `updatedContent` | boolean | Indicates if presentation content was updated successfully | | `metadata` | json | Updated presentation metadata including ID, title, and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `title` | string | The presentation title | | ↳ `mimeType` | string | The mime type of the presentation | | ↳ `url` | string | URL to open the presentation | ### Create Google Slides Presentation [#create-google-slides-presentation] Create a new Google Slides presentation #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------- | | `title` | string | Yes | The title of the presentation to create | | `content` | string | No | The content to add to the first slide | | `folderSelector` | string | No | Google Drive folder ID to create the presentation in (e.g., 1ABCxyz...) | | `folderId` | string | No | The ID of the folder to create the presentation in (internal use) | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `metadata` | json | Created presentation metadata including ID, title, and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `title` | string | The presentation title | | ↳ `mimeType` | string | The mime type of the presentation | | ↳ `url` | string | URL to open the presentation | ### Replace All Text in Google Slides [#replace-all-text-in-google-slides] Find and replace all occurrences of text throughout a Google Slides presentation #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `findText` | string | Yes | The text to find (e.g., \{\{placeholder}}) | | `replaceText` | string | Yes | The text to replace with | | `matchCase` | boolean | No | Whether the search should be case-sensitive (default: true) | | `pageObjectIds` | string | No | Comma-separated list of slide object IDs to limit replacements to specific slides (leave empty for all slides) | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------- | | `occurrencesChanged` | number | Number of text occurrences that were replaced | | `metadata` | json | Operation metadata including presentation ID and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `findText` | string | The text that was searched for | | ↳ `replaceText` | string | The text that replaced the matches | | ↳ `url` | string | URL to open the presentation | ### Add Slide to Google Slides [#add-slide-to-google-slides] Add a new slide to a Google Slides presentation with a specified layout #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `layout` | string | No | The predefined layout for the slide (BLANK, TITLE, TITLE\_AND\_BODY, TITLE\_ONLY, SECTION\_HEADER, etc.). Defaults to BLANK. | | `insertionIndex` | number | No | The optional zero-based index indicating where to insert the slide. If not specified, the slide is added at the end. | | `placeholderIdMappings` | string | No | JSON array of placeholder mappings to assign custom object IDs to placeholders. Format: \[\{"layoutPlaceholder":\{"type":"TITLE"},"objectId":"custom\_title\_id"}] | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------- | | `slideId` | string | The object ID of the newly created slide | | `metadata` | json | Operation metadata including presentation ID, layout, and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `layout` | string | The layout used for the new slide | | ↳ `insertionIndex` | number | The zero-based index where the slide was inserted | | ↳ `url` | string | URL to open the presentation | ### Add Image to Google Slides [#add-image-to-google-slides] Insert an image into a specific slide in a Google Slides presentation #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | The object ID of the slide/page to add the image to | | `imageUrl` | string | Yes | The publicly accessible URL of the image (must be PNG, JPEG, or GIF, max 50MB) | | `width` | number | No | Width of the image in points (default: 300) | | `height` | number | No | Height of the image in points (default: 200) | | `positionX` | number | No | X position from the left edge in points (default: 100) | | `positionY` | number | No | Y position from the top edge in points (default: 100) | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `imageId` | string | The object ID of the newly created image | | `metadata` | json | Operation metadata including presentation ID and image URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The page object ID where the image was inserted | | ↳ `imageUrl` | string | The source image URL | | ↳ `url` | string | URL to open the presentation | ### Get Slide Thumbnail [#get-slide-thumbnail] Generate a thumbnail image of a specific slide in a Google Slides presentation #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | The object ID of the slide/page to get a thumbnail for | | `thumbnailSize` | string | No | The size of the thumbnail: SMALL (200px), MEDIUM (800px), or LARGE (1600px). Defaults to MEDIUM. | | `mimeType` | string | No | The MIME type of the thumbnail image: PNG. Defaults to PNG. | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------- | | `contentUrl` | string | URL to the thumbnail image (valid for 30 minutes) | | `width` | number | Width of the thumbnail in pixels | | `height` | number | Height of the thumbnail in pixels | | `metadata` | json | Operation metadata including presentation ID and page object ID | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The page object ID for the thumbnail | | ↳ `thumbnailSize` | string | The requested thumbnail size | | ↳ `mimeType` | string | The thumbnail MIME type | ### Get Slide Page [#get-slide-page] Get detailed information about a specific slide/page in a Google Slides presentation #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | The object ID of the slide/page to retrieve | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------ | | `objectId` | string | The object ID of the page | | `pageType` | string | The type of page (SLIDE, MASTER, LAYOUT, NOTES, NOTES\_MASTER) | | `pageElements` | array | Array of page elements (shapes, images, tables, etc.) on this page | | `slideProperties` | object | Properties specific to slides (layout, master, notes) | | ↳ `layoutObjectId` | string | Object ID of the layout this slide is based on | | ↳ `masterObjectId` | string | Object ID of the master this slide is based on | | ↳ `notesPage` | json | The notes page associated with the slide | | `metadata` | object | Operation metadata including presentation ID and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Delete Object from Google Slides [#delete-object-from-google-slides] Delete a page element (shape, image, table, etc.) or an entire slide from a Google Slides presentation #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | The object ID of the element or slide to delete | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------- | | `deleted` | boolean | Whether the object was successfully deleted | | `objectId` | string | The object ID that was deleted | | `metadata` | object | Operation metadata including presentation ID and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Duplicate Object in Google Slides [#duplicate-object-in-google-slides] Duplicate an object (slide, shape, image, table, etc.) in a Google Slides presentation #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | The object ID of the element or slide to duplicate | | `objectIds` | string | No | Optional JSON object mapping source object IDs (within the slide being duplicated) to new object IDs for the duplicates. Format: \{"sourceId1":"newId1","sourceId2":"newId2"} | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------------------- | | `duplicatedObjectId` | string | The object ID of the newly created duplicate | | `metadata` | object | Operation metadata including presentation ID and source object ID | | ↳ `presentationId` | string | The presentation ID | | ↳ `sourceObjectId` | string | The original object ID that was duplicated | | ↳ `url` | string | URL to the presentation | ### Reorder Slides in Google Slides [#reorder-slides-in-google-slides] Move one or more slides to a new position in a Google Slides presentation #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `slideObjectIds` | string | Yes | Comma-separated list of slide object IDs to move. The slides will maintain their relative order. | | `insertionIndex` | number | Yes | The zero-based index where the slides should be moved. All slides with indices greater than or equal to this will be shifted right. | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------- | | `moved` | boolean | Whether the slides were successfully moved | | `slideObjectIds` | array | The slide object IDs that were moved | | `insertionIndex` | number | The index where the slides were moved to | | `metadata` | object | Operation metadata including presentation ID and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Create Table in Google Slides [#create-table-in-google-slides] Create a new table on a slide in a Google Slides presentation #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | The object ID of the slide/page to add the table to | | `rows` | number | Yes | Number of rows in the table (minimum 1) | | `columns` | number | Yes | Number of columns in the table (minimum 1) | | `width` | number | No | Width of the table in points (default: 400) | | `height` | number | No | Height of the table in points (default: 200) | | `positionX` | number | No | X position from the left edge in points (default: 100) | | `positionY` | number | No | Y position from the top edge in points (default: 100) | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------- | | `tableId` | string | The object ID of the newly created table | | `rows` | number | Number of rows in the table | | `columns` | number | Number of columns in the table | | `metadata` | object | Operation metadata including presentation ID and page object ID | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The page object ID where the table was created | | ↳ `url` | string | URL to the presentation | ### Create Shape in Google Slides [#create-shape-in-google-slides] Create a shape (rectangle, ellipse, text box, arrow, etc.) on a slide in a Google Slides presentation #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | The object ID of the slide/page to add the shape to | | `shapeType` | string | Yes | The type of shape to create. Common types: TEXT\_BOX, RECTANGLE, ROUND\_RECTANGLE, ELLIPSE, TRIANGLE, DIAMOND, STAR\_5, ARROW\_EAST, HEART, CLOUD | | `width` | number | No | Width of the shape in points (default: 200) | | `height` | number | No | Height of the shape in points (default: 100) | | `positionX` | number | No | X position from the left edge in points (default: 100) | | `positionY` | number | No | Y position from the top edge in points (default: 100) | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------- | | `shapeId` | string | The object ID of the newly created shape | | `shapeType` | string | The type of shape that was created | | `metadata` | object | Operation metadata including presentation ID and page object ID | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The page object ID where the shape was created | | ↳ `url` | string | URL to the presentation | ### Insert Text in Google Slides [#insert-text-in-google-slides] Insert text into a shape or table cell in a Google Slides presentation. Use this to add text to text boxes, shapes, or table cells. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | The object ID of the shape or table cell to insert text into. For table cells, use the cell object ID. | | `text` | string | Yes | The text to insert | | `insertionIndex` | number | No | The zero-based index at which to insert the text. If not specified, text is inserted at the beginning (index 0). | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------- | | `inserted` | boolean | Whether the text was successfully inserted | | `objectId` | string | The object ID where text was inserted | | `text` | string | The text that was inserted | | `metadata` | object | Operation metadata including presentation ID and URL | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Text Style in Google Slides [#update-text-style-in-google-slides] Update the styling of text in a shape or table cell (bold, italic, font family, font size, foreground/background color, link, etc.). Only the fields you set are applied. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape or table containing the text | | `rowIndex` | number | No | When targeting a table cell, the zero-based row index | | `columnIndex` | number | No | When targeting a table cell, the zero-based column index | | `rangeType` | string | No | Range to style: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE | | `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE | | `endIndex` | number | No | End index for FIXED\_RANGE | | `bold` | boolean | No | Whether the text is bold | | `italic` | boolean | No | Whether the text is italic | | `underline` | boolean | No | Whether the text is underlined | | `strikethrough` | boolean | No | Whether the text has strikethrough | | `smallCaps` | boolean | No | Whether the text is rendered in small caps | | `fontFamily` | string | No | Font family name (must be a font available to Google Slides) | | `fontSize` | number | No | Font size in points | | `foregroundColor` | string | No | Text color as hex (e.g. #1A73E8) | | `backgroundColor` | string | No | Text background color as hex (e.g. #FFF8E1) | | `linkUrl` | string | No | Convert the range to a hyperlink with this URL | | `baselineOffset` | string | No | Baseline offset: NONE, SUPERSCRIPT, or SUBSCRIPT | | `styleJson` | string | No | Advanced: raw TextStyle JSON merged with the simple fields above (overrides them on conflict) | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, the mask is computed from the fields you provided (or "\*" when styleJson is used without explicit fields). | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------- | | `updated` | boolean | Whether the text style was updated | | `objectId` | string | The object whose text was styled | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Paragraph Style in Google Slides [#update-paragraph-style-in-google-slides] Update paragraph styling — alignment, line spacing, indents, space above/below — for text in a shape or table cell. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape or table containing the text | | `rowIndex` | number | No | When targeting a table cell, the zero-based row index | | `columnIndex` | number | No | When targeting a table cell, the zero-based column index | | `rangeType` | string | No | Range to style: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE | | `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE | | `endIndex` | number | No | End index for FIXED\_RANGE | | `alignment` | string | No | Text alignment: START, CENTER, END, or JUSTIFIED | | `lineSpacing` | number | No | Line spacing as a percentage (100 = single, 200 = double) | | `indentStart` | number | No | Start-edge indent in points | | `indentEnd` | number | No | End-edge indent in points | | `indentFirstLine` | number | No | First-line indent in points | | `spaceAbove` | number | No | Space above the paragraph in points | | `spaceBelow` | number | No | Space below the paragraph in points | | `direction` | string | No | Text direction: LEFT\_TO\_RIGHT or RIGHT\_TO\_LEFT | | `spacingMode` | string | No | Spacing mode: NEVER\_COLLAPSE or COLLAPSE\_LISTS | | `styleJson` | string | No | Advanced: raw ParagraphStyle JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------- | | `updated` | boolean | Whether the paragraph style was updated | | `objectId` | string | The object whose paragraph was styled | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Delete Text in Google Slides [#delete-text-in-google-slides] Delete text from a shape or table cell. Use range type ALL to clear all text, or FIXED\_RANGE / FROM\_START\_INDEX to delete a specific span. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape or table containing the text | | `rowIndex` | number | No | When targeting a table cell, the zero-based row index | | `columnIndex` | number | No | When targeting a table cell, the zero-based column index | | `rangeType` | string | No | Range to delete: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE | | `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE | | `endIndex` | number | No | End index for FIXED\_RANGE | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------- | | `deleted` | boolean | Whether the text was deleted | | `objectId` | string | The object whose text was deleted | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Create Paragraph Bullets in Google Slides [#create-paragraph-bullets-in-google-slides] Convert paragraphs in a shape or table cell into a bulleted or numbered list using a Google Slides bullet preset. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape or table containing the text | | `rowIndex` | number | No | When targeting a table cell, the zero-based row index | | `columnIndex` | number | No | When targeting a table cell, the zero-based column index | | `rangeType` | string | No | Range to apply bullets to: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE | | `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE | | `endIndex` | number | No | End index for FIXED\_RANGE | | `bulletPreset` | string | No | Bullet preset (e.g. BULLET\_DISC\_CIRCLE\_SQUARE, BULLET\_ARROW\_DIAMOND\_DISC, NUMBERED\_DIGIT\_ALPHA\_ROMAN, NUMBERED\_DIGIT\_ALPHA\_ROMAN\_PARENS, NUMBERED\_DIGIT\_NESTED). Defaults to BULLET\_DISC\_CIRCLE\_SQUARE. | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------- | | `created` | boolean | Whether bullets were created | | `objectId` | string | The object where bullets were created | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Delete Paragraph Bullets in Google Slides [#delete-paragraph-bullets-in-google-slides] Remove bullets/numbering from paragraphs in a shape or table cell. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape or table containing the text | | `rowIndex` | number | No | When targeting a table cell, the zero-based row index | | `columnIndex` | number | No | When targeting a table cell, the zero-based column index | | `rangeType` | string | No | Range to clear bullets from: ALL (default), FROM\_START\_INDEX, or FIXED\_RANGE | | `startIndex` | number | No | Start index for FROM\_START\_INDEX or FIXED\_RANGE | | `endIndex` | number | No | End index for FIXED\_RANGE | #### Output [#output-18] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------- | | `deleted` | boolean | Whether bullets were deleted | | `objectId` | string | The object whose bullets were deleted | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Replace All Shapes With Image in Google Slides [#replace-all-shapes-with-image-in-google-slides] Find every shape whose text matches the given token (e.g. \{\{cover-image}}) and replace it with an image, preserving the shape's position and bounds. #### Input [#input-19] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `imageUrl` | string | Yes | Publicly fetchable image URL (PNG, JPEG, or GIF; max 50 MB and accessible to Google's servers) | | `findText` | string | Yes | Text content of shapes to replace (e.g. \{\{cover-image}}) | | `matchCase` | boolean | No | Case-sensitive match (default: true) | | `imageReplaceMethod` | string | No | How the image fits the shape: CENTER\_INSIDE (preserve aspect, fit inside) or CENTER\_CROP (fill, crop overflow). Default: CENTER\_INSIDE. | | `pageObjectIds` | string | No | Comma-separated slide IDs to limit replacement to specific slides | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------- | | `occurrencesChanged` | number | Number of shapes that were replaced with the image | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | | ↳ `imageUrl` | string | The image URL inserted | | ↳ `findText` | string | The matched text token | ### Replace Image in Google Slides [#replace-image-in-google-slides] Replace the source of an existing image with a new image URL, preserving the image's position, size, and properties. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `imageObjectId` | string | Yes | Object ID of the existing image to replace | | `imageUrl` | string | Yes | New publicly fetchable image URL (PNG, JPEG, or GIF, max 50 MB) | | `imageReplaceMethod` | string | No | CENTER\_INSIDE (preserve aspect) or CENTER\_CROP (fill, crop overflow). Default: CENTER\_INSIDE. | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------- | | `replaced` | boolean | Whether the image was replaced | | `imageObjectId` | string | The image object that was replaced | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | | ↳ `imageUrl` | string | The new image URL | ### Update Image Properties in Google Slides [#update-image-properties-in-google-slides] Update image properties — brightness, contrast, transparency, crop, outline, link — on an existing image. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the image to update | | `brightness` | number | No | Brightness adjustment between -1.0 and 1.0 | | `contrast` | number | No | Contrast adjustment between -1.0 and 1.0 | | `transparency` | number | No | Transparency between 0.0 (opaque) and 1.0 (fully transparent) | | `linkUrl` | string | No | Make the image a hyperlink to this URL | | `outlineColor` | string | No | Outline color as hex (e.g. #1A73E8) | | `outlineWeight` | number | No | Outline weight in points | | `outlineDashStyle` | string | No | Outline dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT | | `cropLeftOffset` | number | No | Crop offset from left edge (0.0 to 1.0) | | `cropRightOffset` | number | No | Crop offset from right edge (0.0 to 1.0) | | `cropTopOffset` | number | No | Crop offset from top edge (0.0 to 1.0) | | `cropBottomOffset` | number | No | Crop offset from bottom edge (0.0 to 1.0) | | `cropAngle` | number | No | Crop rotation angle in radians (clockwise) | | `propertiesJson` | string | No | Advanced: raw ImageProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-21] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------- | | `updated` | boolean | Whether the image properties were updated | | `objectId` | string | The image object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Shape Properties in Google Slides [#update-shape-properties-in-google-slides] Update a shape's appearance — background fill color, outline, link, content alignment, autofit. Pass only the properties you want to change. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the shape to update | | `fillColor` | string | No | Solid background fill color as hex (e.g. #FF6F61) | | `fillAlpha` | number | No | Fill opacity between 0.0 (transparent) and 1.0 (opaque) | | `fillUnset` | boolean | No | When true, removes any fill so the shape inherits its layout/master fill | | `outlineColor` | string | No | Outline color as hex | | `outlineWeight` | number | No | Outline weight in points | | `outlineDashStyle` | string | No | Outline dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT | | `outlineUnset` | boolean | No | When true, removes any outline so the shape inherits its layout/master outline | | `linkUrl` | string | No | Make the shape a hyperlink to this URL | | `contentAlignment` | string | No | Vertical alignment of shape contents: TOP, MIDDLE, or BOTTOM | | `autofitType` | string | No | Autofit behavior: NONE, TEXT\_AUTOFIT, or SHAPE\_AUTOFIT | | `propertiesJson` | string | No | Advanced: raw ShapeProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------- | | `updated` | boolean | Whether the shape properties were updated | | `objectId` | string | The shape object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Page Properties in Google Slides [#update-page-properties-in-google-slides] Update slide/page background — solid color or stretched picture — and other page properties. #### Input [#input-23] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the slide/page to update | | `backgroundColor` | string | No | Solid background color as hex (e.g. #0B1F3A) | | `backgroundAlpha` | number | No | Background fill opacity between 0.0 and 1.0 | | `backgroundImageUrl` | string | No | Publicly fetchable image URL to use as a stretched picture background | | `backgroundUnset` | boolean | No | When true, removes the background so the slide inherits its layout background | | `propertiesJson` | string | No | Advanced: raw PageProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-23] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------- | | `updated` | boolean | Whether the page properties were updated | | `objectId` | string | The page object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Slide Properties in Google Slides [#update-slide-properties-in-google-slides] Update slide-specific properties such as whether the slide is skipped during presentation. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the slide to update | | `isSkipped` | boolean | No | Whether the slide is skipped in presentation mode | | `propertiesJson` | string | No | Advanced: raw SlideProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-24] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------- | | `updated` | boolean | Whether the slide properties were updated | | `objectId` | string | The slide object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Alt Text in Google Slides [#update-alt-text-in-google-slides] Set the accessibility title and/or description (alt text) of a page element such as an image, shape, or group. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the page element | | `title` | string | No | Accessibility title for the element | | `description` | string | No | Accessibility description (alt text) for the element | #### Output [#output-25] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------- | | `updated` | boolean | Whether alt text was updated | | `objectId` | string | The element updated | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Page Element Transform in Google Slides [#update-page-element-transform-in-google-slides] Move, resize, scale, or shear a page element. Translate is specified in points; applyMode controls whether the transform is absolute (default) or relative (multiplied with the current transform). #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the page element to transform | | `scaleX` | number | No | Horizontal scale factor (default 1) | | `scaleY` | number | No | Vertical scale factor (default 1) | | `shearX` | number | No | Horizontal shear factor (default 0) | | `shearY` | number | No | Vertical shear factor (default 0) | | `translateX` | number | No | X position in points (absolute) or delta (relative) | | `translateY` | number | No | Y position in points (absolute) or delta (relative) | | `applyMode` | string | No | ABSOLUTE replaces the current transform; RELATIVE multiplies with it. Default ABSOLUTE. | #### Output [#output-26] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------- | | `updated` | boolean | Whether the transform was updated | | `objectId` | string | The element transformed | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Z-Order in Google Slides [#update-z-order-in-google-slides] Bring elements to front, send to back, or step them one layer forward/backward. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectIds` | string | Yes | Comma-separated object IDs of the elements to reorder | | `operation` | string | Yes | BRING\_TO\_FRONT, BRING\_FORWARD, SEND\_BACKWARD, or SEND\_TO\_BACK | #### Output [#output-27] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------- | | `reordered` | boolean | Whether the z-order was changed | | `objectIds` | array | Elements reordered | | `operation` | string | Operation applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Group Objects in Google Slides [#group-objects-in-google-slides] Group two or more page elements on the same slide into a single object group. #### Input [#input-28] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `childrenObjectIds` | string | Yes | Comma-separated object IDs of the elements to group (must be on the same slide) | | `groupObjectId` | string | No | Optional object ID to assign to the new group | #### Output [#output-28] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------- | | `grouped` | boolean | Whether the objects were grouped | | `groupObjectId` | string | Object ID of the new group | | `childrenObjectIds` | array | IDs of the grouped children | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Ungroup Objects in Google Slides [#ungroup-objects-in-google-slides] Ungroup one or more object groups, releasing their children back to the slide. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectIds` | string | Yes | Comma-separated object IDs of the groups to ungroup | #### Output [#output-29] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------- | | `ungrouped` | boolean | Whether the objects were ungrouped | | `objectIds` | array | Group IDs that were ungrouped | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Create Line in Google Slides [#create-line-in-google-slides] Create a line or connector on a slide. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | Object ID of the slide to add the line to | | `lineCategory` | string | No | STRAIGHT (default), BENT, or CURVED | | `width` | number | No | Line width in points (default 200) | | `height` | number | No | Line height in points (default 0 — horizontal line) | | `positionX` | number | No | X position in points (default 100) | | `positionY` | number | No | Y position in points (default 100) | #### Output [#output-30] | Parameter | Type | Description | | ------------------ | ------ | ------------------------- | | `lineId` | string | Object ID of the new line | | `lineCategory` | string | Line category created | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The slide ID | | ↳ `url` | string | URL to the presentation | ### Update Line Properties in Google Slides [#update-line-properties-in-google-slides] Update line appearance — color, weight, dash style, arrows, link. #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the line | | `lineColor` | string | No | Line color as hex | | `lineWeight` | number | No | Line weight in points | | `dashStyle` | string | No | Dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT | | `startArrow` | string | No | Start arrow style: NONE, STEALTH\_ARROW, FILL\_ARROW, FILL\_CIRCLE, FILL\_SQUARE, FILL\_DIAMOND, OPEN\_ARROW, OPEN\_CIRCLE, OPEN\_SQUARE, OPEN\_DIAMOND | | `endArrow` | string | No | End arrow style (same values as startArrow) | | `linkUrl` | string | No | Hyperlink URL | | `propertiesJson` | string | No | Advanced: raw LineProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------- | | `updated` | boolean | Whether the line properties were updated | | `objectId` | string | The line object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Line Category in Google Slides [#update-line-category-in-google-slides] Change a connector line's category (STRAIGHT, BENT, or CURVED). #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the connector line | | `lineCategory` | string | Yes | New line category: STRAIGHT, BENT, or CURVED | #### Output [#output-32] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------- | | `updated` | boolean | Whether the line category was updated | | `objectId` | string | The line object updated | | `lineCategory` | string | New line category | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Reroute Line in Google Slides [#reroute-line-in-google-slides] Reroute a connector line so it efficiently connects its endpoint shapes — useful after moving the shapes the line connects. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the connector line to reroute | #### Output [#output-33] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------- | | `rerouted` | boolean | Whether the line was rerouted | | `objectId` | string | The line object rerouted | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Insert Table Rows in Google Slides [#insert-table-rows-in-google-slides] Insert one or more rows into a table, above or below a reference cell. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `tableObjectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the reference cell | | `columnIndex` | number | Yes | Zero-based column index of the reference cell | | `number` | number | Yes | Number of rows to insert (minimum 1) | | `insertBelow` | boolean | No | Insert below the reference row instead of above (default false) | #### Output [#output-34] | Parameter | Type | Description | | ------------------ | ------- | -------------------------- | | `inserted` | boolean | Whether rows were inserted | | `tableObjectId` | string | The table updated | | `number` | number | Number of rows inserted | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Insert Table Columns in Google Slides [#insert-table-columns-in-google-slides] Insert one or more columns into a table, left or right of a reference cell. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `tableObjectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the reference cell | | `columnIndex` | number | Yes | Zero-based column index of the reference cell | | `number` | number | Yes | Number of columns to insert (minimum 1) | | `insertRight` | boolean | No | Insert to the right of the reference column instead of left (default false) | #### Output [#output-35] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------- | | `inserted` | boolean | Whether columns were inserted | | `tableObjectId` | string | The table updated | | `number` | number | Number of columns inserted | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Delete Table Row in Google Slides [#delete-table-row-in-google-slides] Delete the row containing the reference cell from a table. #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `tableObjectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index identifying the row to delete | | `columnIndex` | number | Yes | Zero-based column index of any cell in the row | #### Output [#output-36] | Parameter | Type | Description | | ------------------ | ------- | --------------------------- | | `deleted` | boolean | Whether the row was deleted | | `tableObjectId` | string | The table updated | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Delete Table Column in Google Slides [#delete-table-column-in-google-slides] Delete the column containing the reference cell from a table. #### Input [#input-37] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `tableObjectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of any cell in the column | | `columnIndex` | number | Yes | Zero-based column index identifying the column to delete | #### Output [#output-37] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------ | | `deleted` | boolean | Whether the column was deleted | | `tableObjectId` | string | The table updated | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Merge Table Cells in Google Slides [#merge-table-cells-in-google-slides] Merge a rectangular range of table cells into a single cell. The range starts at (rowIndex, columnIndex) and covers rowSpan × columnSpan cells. #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the top-left cell | | `columnIndex` | number | Yes | Zero-based column index of the top-left cell | | `rowSpan` | number | Yes | Number of rows to merge (minimum 1) | | `columnSpan` | number | Yes | Number of columns to merge (minimum 1) | #### Output [#output-38] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------- | | `merged` | boolean | Whether the cells were merged | | `objectId` | string | The table updated | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Unmerge Table Cells in Google Slides [#unmerge-table-cells-in-google-slides] Unmerge any merged cells within the given table range. #### Input [#input-39] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range | | `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range | | `rowSpan` | number | Yes | Number of rows in the range (minimum 1) | | `columnSpan` | number | Yes | Number of columns in the range (minimum 1) | #### Output [#output-39] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------- | | `unmerged` | boolean | Whether the cells were unmerged | | `objectId` | string | The table updated | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Table Cell Properties in Google Slides [#update-table-cell-properties-in-google-slides] Update background fill and content alignment for a range of table cells. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range | | `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range | | `rowSpan` | number | Yes | Number of rows in the range (minimum 1) | | `columnSpan` | number | Yes | Number of columns in the range (minimum 1) | | `backgroundColor` | string | No | Cell background color as hex (e.g. #F1F3F4) | | `backgroundAlpha` | number | No | Background fill opacity between 0.0 and 1.0 | | `contentAlignment` | string | No | Vertical alignment of cell content: TOP, MIDDLE, or BOTTOM | | `propertiesJson` | string | No | Advanced: raw TableCellProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-40] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------- | | `updated` | boolean | Whether the cell properties were updated | | `objectId` | string | The table updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Table Border Properties in Google Slides [#update-table-border-properties-in-google-slides] Update border color, weight, and dash style for a position (e.g. ALL, INNER, OUTER) in a table range. #### Input [#input-41] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `rowIndex` | number | Yes | Zero-based row index of the top-left cell of the range | | `columnIndex` | number | Yes | Zero-based column index of the top-left cell of the range | | `rowSpan` | number | Yes | Number of rows in the range (minimum 1) | | `columnSpan` | number | Yes | Number of columns in the range (minimum 1) | | `borderPosition` | string | No | Which borders to update: ALL (default), BOTTOM, INNER, INNER\_HORIZONTAL, INNER\_VERTICAL, LEFT, OUTER, RIGHT, TOP | | `borderColor` | string | No | Border color as hex | | `borderWeight` | number | No | Border weight in points | | `dashStyle` | string | No | Dash style: SOLID, DOT, DASH, DASH\_DOT, LONG\_DASH, LONG\_DASH\_DOT | | `propertiesJson` | string | No | Advanced: raw TableBorderProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-41] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------ | | `updated` | boolean | Whether the border properties were updated | | `objectId` | string | The table updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Table Column Properties in Google Slides [#update-table-column-properties-in-google-slides] Update column widths and other column-level table properties. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `columnIndices` | string | Yes | Comma-separated zero-based column indices to update (e.g. "0,2,3") | | `columnWidth` | number | No | Column width in points | | `propertiesJson` | string | No | Advanced: raw TableColumnProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-42] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------ | | `updated` | boolean | Whether the column properties were updated | | `objectId` | string | The table updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Update Table Row Properties in Google Slides [#update-table-row-properties-in-google-slides] Update minimum row heights and other row-level table properties. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the table | | `rowIndices` | string | Yes | Comma-separated zero-based row indices to update (e.g. "0,2,3") | | `minRowHeight` | number | No | Minimum row height in points | | `propertiesJson` | string | No | Advanced: raw TableRowProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-43] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------- | | `updated` | boolean | Whether the row properties were updated | | `objectId` | string | The table updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Embed Google Sheets Chart in Slides [#embed-google-sheets-chart-in-slides] Embed a chart from a Google Sheets spreadsheet onto a slide. LINKED charts can be refreshed; NOT\_LINKED\_IMAGE inserts a static image of the chart. #### Input [#input-44] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | Object ID of the slide to add the chart to | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID containing the chart | | `chartId` | number | Yes | Numeric chart ID within the spreadsheet | | `linkingMode` | string | No | LINKED (default) or NOT\_LINKED\_IMAGE | | `width` | number | No | Width in points (default 400) | | `height` | number | No | Height in points (default 300) | | `positionX` | number | No | X position in points (default 100) | | `positionY` | number | No | Y position in points (default 100) | #### Output [#output-44] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------- | | `chartObjectId` | string | Object ID of the inserted chart | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The slide ID | | ↳ `url` | string | URL to the presentation | ### Refresh Sheets Chart in Slides [#refresh-sheets-chart-in-slides] Refresh an embedded linked Sheets chart so it reflects the latest spreadsheet data. #### Input [#input-45] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the embedded chart to refresh | #### Output [#output-45] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------- | | `refreshed` | boolean | Whether the chart was refreshed | | `objectId` | string | The chart object refreshed | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Replace All Shapes With Sheets Chart in Slides [#replace-all-shapes-with-sheets-chart-in-slides] Find every shape matching a text token (e.g. \{\{revenue-chart}}) and replace each with the same embedded Sheets chart, preserving the shape's position and bounds. #### Input [#input-46] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `spreadsheetId` | string | Yes | Google Sheets spreadsheet ID containing the chart | | `chartId` | number | Yes | Numeric chart ID within the spreadsheet | | `findText` | string | Yes | Text content of shapes to replace (e.g. \{\{revenue-chart}}) | | `matchCase` | boolean | No | Case-sensitive match (default true) | | `linkingMode` | string | No | LINKED (default) or NOT\_LINKED\_IMAGE | | `pageObjectIds` | string | No | Comma-separated slide IDs to limit replacement to specific slides | #### Output [#output-46] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------- | | `occurrencesChanged` | number | Number of shapes replaced with the chart | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | | ↳ `findText` | string | The matched text token | | ↳ `spreadsheetId` | string | Source spreadsheet ID | | ↳ `chartId` | number | Source chart ID | ### Embed Video in Google Slides [#embed-video-in-google-slides] Embed a YouTube or Google Drive video on a slide. #### Input [#input-47] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `pageObjectId` | string | Yes | Object ID of the slide to add the video to | | `source` | string | Yes | YOUTUBE or DRIVE | | `videoId` | string | Yes | YouTube video ID or Drive file ID | | `width` | number | No | Width in points (default 400) | | `height` | number | No | Height in points (default 225) | | `positionX` | number | No | X position in points (default 100) | | `positionY` | number | No | Y position in points (default 100) | #### Output [#output-47] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------- | | `videoObjectId` | string | Object ID of the inserted video | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `pageObjectId` | string | The slide ID | | ↳ `url` | string | URL to the presentation | ### Update Video Properties in Google Slides [#update-video-properties-in-google-slides] Update video playback options (autoPlay, mute, start/end) and outline. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------ | | `presentationId` | string | Yes | Google Slides presentation ID | | `objectId` | string | Yes | Object ID of the video | | `autoPlay` | boolean | No | Play the video automatically when the slide is shown | | `mute` | boolean | No | Mute the video | | `start` | number | No | Playback start time in seconds | | `end` | number | No | Playback end time in seconds | | `outlineColor` | string | No | Outline color as hex | | `outlineWeight` | number | No | Outline weight in points | | `outlineDashStyle` | string | No | Outline dash style | | `propertiesJson` | string | No | Advanced: raw VideoProperties JSON merged with the simple fields above | | `fields` | string | No | Advanced: explicit FieldMask. If omitted, computed from provided fields. | #### Output [#output-48] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------- | | `updated` | boolean | Whether the video properties were updated | | `objectId` | string | The video object updated | | `fields` | string | FieldMask applied | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | ### Batch Update Google Slides (Raw) [#batch-update-google-slides-raw] Run a raw Slides API batchUpdate with a list of Request objects. Use this when the higher-level tools do not cover an operation, or to bundle multiple operations into a single atomic batch (all-or-nothing). #### Input [#input-49] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `requests` | string | Yes | JSON array of Slides API Request objects. Example: \[\{"replaceAllText":\{"containsText":\{"text":"\{\{title}}"},"replaceText":"Q3 Review"}}, \{"updatePageProperties":\{"objectId":"slide\_1","pageProperties":\{"pageBackgroundFill":\{"solidFill":\{"color":\{"rgbColor":\{"red":0.043,"green":0.122,"blue":0.231}}}}},"fields":"pageBackgroundFill"}}] | | `writeControl` | string | No | Optional JSON WriteControl object for optimistic concurrency, e.g. \{"requiredRevisionId":"..."} | #### Output [#output-49] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `replies` | array | Array of reply objects, one per request (parallel-indexed) | | `writeControl` | json | WriteControl returned by the server (revision tracking) | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | | ↳ `requestCount` | number | Number of replies returned | ### Copy Google Slides Presentation [#copy-google-slides-presentation] Copy a template presentation in Drive to a new file. Use this before merging data so the original template is never modified. #### Input [#input-50] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `sourcePresentationId` | string | Yes | Drive file ID of the source/template presentation | | `title` | string | No | Title for the copy. Defaults to "Copy of \". | | `folderId` | string | No | Drive folder ID where the copy should be placed | #### Output [#output-50] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------- | | `presentationId` | string | ID of the new copied presentation | | `title` | string | Title of the new presentation | | `metadata` | object | Operation metadata | | ↳ `sourcePresentationId` | string | Source/template presentation ID | | ↳ `presentationId` | string | New presentation ID | | ↳ `title` | string | New presentation title | | ↳ `mimeType` | string | MIME type of the presentation | | ↳ `url` | string | URL to the new presentation | ### Export Google Slides Presentation [#export-google-slides-presentation] Export a presentation to PDF, PPTX, ODP, TXT, PNG, JPEG, or SVG via the Drive export endpoint. Stores the exported file as an execution file when execution context is available. #### Input [#input-51] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------- | | `presentationId` | string | Yes | Google Slides presentation ID | | `exportFormat` | string | No | Format: PDF (default), PPTX, ODP, TXT, PNG, JPEG, or SVG | #### Output [#output-51] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `file` | file | Stored exported presentation file | | `contentBase64` | string | Deprecated legacy inline content. New exports return file. | | `mimeType` | string | MIME type of the exported content | | `sizeBytes` | number | Size of the exported content in bytes | | `metadata` | object | Operation metadata | | ↳ `presentationId` | string | The presentation ID | | ↳ `url` | string | URL to the presentation | | ↳ `exportFormat` | string | Export format used | --- # Google Tasks (/integrations/google_tasks) {/* MANUAL-CONTENT-START:intro */} Use [Google Tasks](https://support.google.com/tasks) to create, list, update, and delete tasks, or list the task lists in a Google account. Task inputs include titles, notes, due dates, and completion status. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Google Tasks into your workflow. Create, read, update, delete, and list tasks and task lists. ## Actions [#actions] ### Google Tasks Create Task [#google-tasks-create-task] Create a new task in a Google Tasks list #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------- | | `taskListId` | string | No | Task list ID (defaults to primary task list "@default") | | `title` | string | Yes | Title of the task (max 1024 characters) | | `notes` | string | No | Notes/description for the task (max 8192 characters) | | `due` | string | No | Due date in RFC 3339 format (e.g., 2025-06-03T00:00:00.000Z) | | `status` | string | No | Task status: "needsAction" or "completed" | | `parent` | string | No | Parent task ID to create this task as a subtask. Omit for top-level tasks. | | `previous` | string | No | Previous sibling task ID to position after. Omit to place first among siblings. | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------- | | `id` | string | Task ID | | `title` | string | Task title | | `notes` | string | Task notes | | `status` | string | Task status (needsAction or completed) | | `due` | string | Due date | | `updated` | string | Last modification time | | `selfLink` | string | URL for the task | | `webViewLink` | string | Link to task in Google Tasks UI | | `parent` | string | Parent task ID | | `position` | string | Position among sibling tasks | | `completed` | string | Completion date | | `deleted` | boolean | Whether the task is deleted | ### Google Tasks List Tasks [#google-tasks-list-tasks] List all tasks in a Google Tasks list #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------- | | `taskListId` | string | No | Task list ID (defaults to primary task list "@default") | | `maxResults` | number | No | Maximum number of tasks to return (default 20, max 100) | | `pageToken` | string | No | Token for pagination | | `showCompleted` | boolean | No | Whether to show completed tasks (default true) | | `showDeleted` | boolean | No | Whether to show deleted tasks (default false) | | `showHidden` | boolean | No | Whether to show hidden tasks (default false) | | `dueMin` | string | No | Lower bound for due date filter (RFC 3339 timestamp) | | `dueMax` | string | No | Upper bound for due date filter (RFC 3339 timestamp) | | `completedMin` | string | No | Lower bound for task completion date (RFC 3339 timestamp) | | `completedMax` | string | No | Upper bound for task completion date (RFC 3339 timestamp) | | `updatedMin` | string | No | Lower bound for last modification time (RFC 3339 timestamp) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------- | | `tasks` | array | List of tasks | | ↳ `id` | string | Task identifier | | ↳ `title` | string | Title of the task | | ↳ `notes` | string | Notes/description for the task | | ↳ `status` | string | Task status: "needsAction" or "completed" | | ↳ `due` | string | Due date (RFC 3339 timestamp) | | ↳ `completed` | string | Completion date (RFC 3339 timestamp) | | ↳ `updated` | string | Last modification time (RFC 3339 timestamp) | | ↳ `selfLink` | string | URL pointing to this task | | ↳ `webViewLink` | string | Link to task in Google Tasks UI | | ↳ `parent` | string | Parent task identifier | | ↳ `position` | string | Position among sibling tasks (string-based ordering) | | ↳ `hidden` | boolean | Whether the task is hidden | | ↳ `deleted` | boolean | Whether the task is deleted | | ↳ `links` | array | Collection of links associated with the task | | ↳ `type` | string | Link type (e.g., "email", "generic", "chat\_message") | | ↳ `description` | string | Link description | | ↳ `link` | string | The URL | | `nextPageToken` | string | Token for retrieving the next page of results | ### Google Tasks Get Task [#google-tasks-get-task] Retrieve a specific task by ID from a Google Tasks list #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `taskListId` | string | No | Task list ID (defaults to primary task list "@default") | | `taskId` | string | Yes | The ID of the task to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------- | | `id` | string | Task ID | | `title` | string | Task title | | `notes` | string | Task notes | | `status` | string | Task status (needsAction or completed) | | `due` | string | Due date | | `updated` | string | Last modification time | | `selfLink` | string | URL for the task | | `webViewLink` | string | Link to task in Google Tasks UI | | `parent` | string | Parent task ID | | `position` | string | Position among sibling tasks | | `completed` | string | Completion date | | `deleted` | boolean | Whether the task is deleted | ### Google Tasks Update Task [#google-tasks-update-task] Update an existing task in a Google Tasks list #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `taskListId` | string | No | Task list ID (defaults to primary task list "@default") | | `taskId` | string | Yes | The ID of the task to update | | `title` | string | No | New title for the task | | `notes` | string | No | New notes for the task | | `due` | string | No | New due date in RFC 3339 format | | `status` | string | No | New status: "needsAction" or "completed" | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------- | | `id` | string | Task ID | | `title` | string | Task title | | `notes` | string | Task notes | | `status` | string | Task status (needsAction or completed) | | `due` | string | Due date | | `updated` | string | Last modification time | | `selfLink` | string | URL for the task | | `webViewLink` | string | Link to task in Google Tasks UI | | `parent` | string | Parent task ID | | `position` | string | Position among sibling tasks | | `completed` | string | Completion date | | `deleted` | boolean | Whether the task is deleted | ### Google Tasks Delete Task [#google-tasks-delete-task] Delete a task from a Google Tasks list #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `taskListId` | string | No | Task list ID (defaults to primary task list "@default") | | `taskId` | string | Yes | The ID of the task to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `taskId` | string | Deleted task ID | | `deleted` | boolean | Whether deletion was successful | ### Google Tasks List Task Lists [#google-tasks-list-task-lists] Retrieve all task lists for the authenticated user #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `maxResults` | number | No | Maximum number of task lists to return (default 20, max 100) | | `pageToken` | string | No | Token for pagination | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------- | | `taskLists` | array | List of task lists | | ↳ `id` | string | Task list identifier | | ↳ `title` | string | Title of the task list | | ↳ `updated` | string | Last modification time (RFC 3339 timestamp) | | ↳ `selfLink` | string | URL pointing to this task list | | `nextPageToken` | string | Token for retrieving the next page of results | --- # Google Translate (/integrations/google_translate) {/* MANUAL-CONTENT-START:intro */} [Google Cloud Translation](https://cloud.google.com/translate) translates text and detects its source language. Provide text and a target language for translation, or use language detection when the source language is unknown. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Translate and detect languages using the Google Cloud Translation API. Supports auto-detection of the source language. ## Actions [#actions] ### Google Translate [#google-translate] Translate text between languages using the Google Cloud Translation API. Supports auto-detection of the source language. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Google Cloud API key with Cloud Translation API enabled | | `text` | string | Yes | The text to translate | | `target` | string | Yes | Target language code (e.g., "es", "fr", "de", "ja") | | `source` | string | No | Source language code. If omitted, the API will auto-detect the source language. | | `format` | string | No | Format of the text: "text" for plain text, "html" for HTML content | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------- | | `translatedText` | string | The translated text | | `detectedSourceLanguage` | string | The detected source language code (if source was not specified) | ### Google Translate Detect Language [#google-translate-detect-language] Detect the language of text using the Google Cloud Translation API. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Google Cloud API key with Cloud Translation API enabled | | `text` | string | Yes | The text to detect the language of | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------- | | `language` | string | The detected language code (e.g., "en", "es", "fr") | | `confidence` | number | Confidence score of the detection | --- # Google Vault (/integrations/google_vault) {/* MANUAL-CONTENT-START:intro */} Use [Google Vault](https://workspace.google.com/products/vault/) in Agent Serve to manage matters, holds, exports, and saved queries. Workflows can create and update matters, manage held accounts and collaborators, start exports, and download exported files. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect Google Vault to manage the full matter lifecycle, create and manage holds and exports, and save reusable search queries for eDiscovery and compliance. ## Actions [#actions] ### Vault Create Export [#vault-create-export] Create an export in a matter #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `exportName` | string | Yes | Name for the export (avoid special characters) | | `corpus` | string | Yes | Data corpus to export (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) | | `accountEmails` | string | No | Comma-separated list of user emails to scope export (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") | | `orgUnitId` | string | No | Organization unit ID to scope export (e.g., "id:03ph8a2z1enx5q0", alternative to emails) | | `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z") | | `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z") | | `terms` | string | No | Search query terms to filter exported content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice") | #### Output [#output] | Parameter | Type | Description | | --------- | ---- | --------------------- | | `export` | json | Created export object | ### Vault List Exports [#vault-list-exports] List exports for a matter #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `pageSize` | number | No | Number of exports to return per page | | `pageToken` | string | No | Token for pagination | | `exportId` | string | No | Optional export ID to fetch a specific export (e.g., "exportId123456") | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------ | | `exports` | json | Array of export objects | | `export` | json | Single export object (when exportId is provided) | | `nextPageToken` | string | Token for fetching next page of results | ### Vault Delete Export [#vault-delete-export] Delete an export from a matter #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------ | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `exportId` | string | Yes | The export ID to delete (e.g., "exportId123456") | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `success` | boolean | Whether the export was deleted | ### Vault Download Export File [#vault-download-export-file] Download a single file from a Google Vault export (GCS object) #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------ | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `bucketName` | string | Yes | GCS bucket name from cloudStorageSink.files.bucketName | | `objectName` | string | Yes | GCS object name from cloudStorageSink.files.objectName | | `fileName` | string | No | Optional filename override for the downloaded file | #### Output [#output-3] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------------------ | | `file` | file | Downloaded Vault export file stored in execution files | ### Vault Create Hold [#vault-create-hold] Create a hold in a matter #### Input [#input-4] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `holdName` | string | Yes | Name for the hold | | `corpus` | string | Yes | Data corpus to hold (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) | | `accountEmails` | string | No | Comma-separated list of user emails to put on hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") | | `orgUnitId` | string | No | Organization unit ID to put on hold (e.g., "id:03ph8a2z1enx5q0", alternative to accounts) | | `terms` | string | No | Search terms to filter held content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice", for MAIL and GROUPS corpus) | | `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z", for MAIL and GROUPS corpus) | | `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z", for MAIL and GROUPS corpus) | | `includeSharedDrives` | boolean | No | Include files in shared drives (for DRIVE corpus) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `hold` | json | Created hold object | ### Vault List Holds [#vault-list-holds] List holds for a matter #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `pageSize` | number | No | Number of holds to return per page | | `pageToken` | string | No | Token for pagination | | `holdId` | string | No | Optional hold ID to fetch a specific hold (e.g., "holdId123456") | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `holds` | json | Array of hold objects | | `hold` | json | Single hold object (when holdId is provided) | | `nextPageToken` | string | Token for fetching next page of results | ### Vault Update Hold [#vault-update-hold] Replace the name, query, and scope of an existing hold. This is a full-resource update: fetch the current hold first (Vault List Holds) and resupply every field you want to keep — any field left blank is cleared, not left unchanged. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `holdId` | string | Yes | The hold ID to update (e.g., "holdId123456") | | `holdName` | string | Yes | Name for the hold | | `corpus` | string | Yes | Data corpus of the hold (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) | | `accountEmails` | string | No | Comma-separated list of user emails covered by the hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") | | `orgUnitId` | string | No | Organization unit ID covered by the hold (e.g., "id:03ph8a2z1enx5q0", alternative to accounts) | | `terms` | string | No | Search terms to filter held content (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice", for MAIL and GROUPS corpus). Resupply the hold's current terms to keep them — this replaces the hold, so leaving it blank clears any existing filter. | | `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z", for MAIL and GROUPS corpus). Resupply the hold's current value to keep it — leaving it blank clears any existing date filter. | | `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z", for MAIL and GROUPS corpus). Resupply the hold's current value to keep it — leaving it blank clears any existing date filter. | | `includeSharedDrives` | boolean | No | Include files in shared drives (for DRIVE corpus). Resupply true if the hold currently includes shared drives — leaving it false/blank clears that setting. | #### Output [#output-6] | Parameter | Type | Description | | --------- | ---- | ------------------- | | `hold` | json | Updated hold object | ### Vault Delete Hold [#vault-delete-hold] Delete a hold and release its covered accounts #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `holdId` | string | Yes | The hold ID to delete (e.g., "holdId123456") | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Whether the hold was deleted | ### Vault Add Held Accounts [#vault-add-held-accounts] Add accounts to an existing hold #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `holdId` | string | Yes | The hold ID to add accounts to (e.g., "holdId123456") | | `accountEmails` | string | Yes | Comma-separated list of user emails to add to the hold (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ----- | ---------------------------------------- | | `responses` | array | Per-account results of the add operation | | ↳ `account` | json | Held account (accountId, email) | | ↳ `status` | json | Status (code, message) if the add failed | ### Vault Remove Held Accounts [#vault-remove-held-accounts] Remove accounts from an existing hold #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `holdId` | string | Yes | The hold ID to remove accounts from (e.g., "holdId123456") | | `accountIds` | string | Yes | Comma-separated list of Admin SDK account IDs to remove from the hold (e.g., "accountId1, accountId2") | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ----- | -------------------------------------------- | | `statuses` | array | Per-account removal status, in request order | ### Vault Create Matter [#vault-create-matter] Create a new matter in Google Vault #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------- | | `name` | string | Yes | Name for the new matter | | `description` | string | No | Optional description for the matter | #### Output [#output-10] | Parameter | Type | Description | | --------- | ---- | --------------------- | | `matter` | json | Created matter object | ### Vault List Matters [#vault-list-matters] List matters, or get a specific matter if matterId is provided #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------- | | `pageSize` | number | No | Number of matters to return per page | | `pageToken` | string | No | Token for pagination | | `matterId` | string | No | Optional matter ID to fetch a specific matter (e.g., "12345678901234567890") | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------ | | `matters` | json | Array of matter objects | | `matter` | json | Single matter object (when matterId is provided) | | `nextPageToken` | string | Token for fetching next page of results | ### Vault Update Matter [#vault-update-matter] Update the name and/or description of a matter #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------ | | `matterId` | string | Yes | The matter ID to update (e.g., "12345678901234567890") | | `name` | string | Yes | New name for the matter | | `description` | string | No | New description for the matter | #### Output [#output-12] | Parameter | Type | Description | | --------- | ---- | --------------------- | | `matter` | json | Updated matter object | ### Vault Close Matter [#vault-close-matter] Close a matter #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------- | | `matterId` | string | Yes | The matter ID to close (e.g., "12345678901234567890") | #### Output [#output-13] | Parameter | Type | Description | | --------- | ---- | -------------------- | | `matter` | json | Closed matter object | ### Vault Reopen Matter [#vault-reopen-matter] Reopen a closed matter #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `matterId` | string | Yes | The matter ID to reopen (e.g., "12345678901234567890") | #### Output [#output-14] | Parameter | Type | Description | | --------- | ---- | ---------------------- | | `matter` | json | Reopened matter object | ### Vault Delete Matter [#vault-delete-matter] Permanently delete a matter (must be closed first) #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `matterId` | string | Yes | The matter ID to delete (e.g., "12345678901234567890") | #### Output [#output-15] | Parameter | Type | Description | | --------- | ---- | --------------------- | | `matter` | json | Deleted matter object | ### Vault Undelete Matter [#vault-undelete-matter] Restore a deleted matter #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------- | | `matterId` | string | Yes | The matter ID to restore (e.g., "12345678901234567890") | #### Output [#output-16] | Parameter | Type | Description | | --------- | ---- | ---------------------- | | `matter` | json | Restored matter object | ### Vault Add Matter Collaborator [#vault-add-matter-collaborator] Add a collaborator (or transfer ownership) to a matter #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `accountId` | string | Yes | Admin SDK account ID of the user to add as a collaborator/owner | | `role` | string | Yes | Permission level to grant: COLLABORATOR or OWNER | | `sendEmails` | boolean | No | Send a notification email to the added account | | `ccMe` | boolean | No | CC the requestor on the notification email (only relevant if sendEmails is true) | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ---- | ------------------------------------------- | | `permission` | json | Created matter permission (accountId, role) | ### Vault Remove Matter Collaborator [#vault-remove-matter-collaborator] Remove a collaborator from a matter #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `accountId` | string | Yes | Admin SDK account ID of the collaborator to remove | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the collaborator was removed | ### Vault Create Saved Query [#vault-create-saved-query] Save a reusable search query in a matter #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `displayName` | string | Yes | Name for the saved query | | `corpus` | string | Yes | Data corpus to search (MAIL, DRIVE, GROUPS, HANGOUTS\_CHAT, VOICE) | | `accountEmails` | string | No | Comma-separated list of user emails to scope the query (e.g., "[user1@example.com](mailto:user1@example.com), [user2@example.com](mailto:user2@example.com)") | | `orgUnitId` | string | No | Organization unit ID to scope the query (e.g., "id:03ph8a2z1enx5q0", alternative to emails) | | `startTime` | string | No | Start time for date filtering (ISO 8601 format, e.g., "2024-01-01T00:00:00Z") | | `endTime` | string | No | End time for date filtering (ISO 8601 format, e.g., "2024-12-31T23:59:59Z") | | `terms` | string | No | Search query terms (e.g., "from:[sender@example.com](mailto:sender@example.com) subject:invoice") | #### Output [#output-19] | Parameter | Type | Description | | ------------ | ---- | -------------------------- | | `savedQuery` | json | Created saved query object | ### Vault List Saved Queries [#vault-list-saved-queries] List saved queries in a matter, or get a specific one if savedQueryId is provided #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `pageSize` | number | No | Number of saved queries to return per page | | `pageToken` | string | No | Token for pagination | | `savedQueryId` | string | No | Optional saved query ID to fetch a specific saved query | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------- | | `savedQueries` | json | Array of saved query objects | | `savedQuery` | json | Single saved query object (when savedQueryId is provided) | | `nextPageToken` | string | Token for fetching next page of results | ### Vault Delete Saved Query [#vault-delete-saved-query] Delete a saved query from a matter #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------- | | `matterId` | string | Yes | The matter ID (e.g., "12345678901234567890") | | `savedQueryId` | string | Yes | The saved query ID to delete | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the saved query was deleted | --- # Grafana (/integrations/grafana) {/* MANUAL-CONTENT-START:intro */} Use [Grafana](https://grafana.com/) to manage dashboards, alert rules, contact points, annotations, and folders. Query data sources or check their health and the Grafana server's status from a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Grafana into workflows. Manage dashboards, alerts, annotations, data sources, folders, and monitor health status. ## Actions [#actions] ### Grafana Get Dashboard [#grafana-get-dashboard] Get a dashboard by its UID #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `dashboardUid` | string | Yes | The UID of the dashboard to retrieve (e.g., abc123def) | #### Output [#output] | Parameter | Type | Description | | ----------- | ---- | ----------------------------------------------- | | `dashboard` | json | The full dashboard JSON object | | `meta` | json | Dashboard metadata (version, permissions, etc.) | ### Grafana List Dashboards [#grafana-list-dashboards] Search and list all dashboards #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `query` | string | No | Search query to filter dashboards by title | | `tag` | string | No | Filter by tag (comma-separated for multiple tags) | | `folderUIDs` | string | No | Filter by folder UIDs (comma-separated, e.g., abc123,def456) | | `dashboardUIDs` | string | No | Filter by dashboard UIDs (comma-separated, e.g., abc123,def456) | | `starred` | boolean | No | Only return starred dashboards | | `limit` | number | No | Maximum number of dashboards to return (default 1000) | | `page` | number | No | Page number for pagination (1-based) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `dashboards` | array | List of dashboard search results | | ↳ `id` | number | Dashboard ID | | ↳ `uid` | string | Dashboard UID | | ↳ `title` | string | Dashboard title | | ↳ `url` | string | Dashboard URL path | | ↳ `tags` | array | Dashboard tags | | ↳ `folderTitle` | string | Parent folder title | ### Grafana Create Dashboard [#grafana-create-dashboard] Create a new dashboard #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `title` | string | Yes | The title of the new dashboard | | `folderUid` | string | No | The UID of the folder to create the dashboard in (e.g., folder-abc123) | | `tags` | string | No | Comma-separated list of tags | | `timezone` | string | No | Dashboard timezone (e.g., browser, utc) | | `refresh` | string | No | Auto-refresh interval (e.g., 5s, 1m, 5m) | | `panels` | string | No | JSON array of panel configurations | | `overwrite` | boolean | No | Overwrite existing dashboard with same title | | `message` | string | No | Commit message for the dashboard version | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `id` | number | The numeric ID of the created dashboard | | `uid` | string | The UID of the created dashboard | | `url` | string | The URL path to the dashboard | | `status` | string | Status of the operation (success) | | `version` | number | The version number of the dashboard | | `slug` | string | URL-friendly slug of the dashboard | ### Grafana Update Dashboard [#grafana-update-dashboard] Update an existing dashboard. Fetches the current dashboard and merges your changes. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `dashboardUid` | string | Yes | The UID of the dashboard to update (e.g., abc123def) | | `title` | string | No | New title for the dashboard | | `folderUid` | string | No | New folder UID to move the dashboard to (e.g., folder-abc123) | | `tags` | string | No | Comma-separated list of new tags | | `timezone` | string | No | Dashboard timezone (e.g., browser, utc) | | `refresh` | string | No | Auto-refresh interval (e.g., 5s, 1m, 5m) | | `panels` | string | No | JSON array of panel configurations | | `overwrite` | boolean | No | Overwrite even if there is a version conflict (defaults to false to surface 412 conflicts) | | `message` | string | No | Commit message for this version | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `id` | number | The numeric ID of the updated dashboard | | `uid` | string | The UID of the updated dashboard | | `url` | string | The URL path to the dashboard | | `status` | string | Status of the operation (success) | | `version` | number | The new version number of the dashboard | | `slug` | string | URL-friendly slug of the dashboard | ### Grafana Delete Dashboard [#grafana-delete-dashboard] Delete a dashboard by its UID #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `dashboardUid` | string | Yes | The UID of the dashboard to delete (e.g., abc123def) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `title` | string | The title of the deleted dashboard | | `message` | string | Confirmation message | | `id` | number | The ID of the deleted dashboard | ### Grafana List Alert Rules [#grafana-list-alert-rules] List all alert rules in the Grafana instance #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | #### Output [#output-5] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `rules` | array | List of alert rules | | ↳ `id` | number | Alert rule numeric ID | | ↳ `uid` | string | Alert rule UID | | ↳ `title` | string | Alert rule title | | ↳ `condition` | string | RefId of the query used as the alert condition | | ↳ `data` | json | Alert rule query/expression data array | | ↳ `updated` | string | Last update timestamp | | ↳ `noDataState` | string | State when no data is returned | | ↳ `execErrState` | string | State on execution error | | ↳ `for` | string | Duration the condition must hold before firing | | ↳ `keepFiringFor` | string | Duration to keep firing after condition stops | | ↳ `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving | | ↳ `annotations` | json | Alert annotations | | ↳ `labels` | json | Alert labels | | ↳ `isPaused` | boolean | Whether the rule is paused | | ↳ `folderUID` | string | Parent folder UID | | ↳ `ruleGroup` | string | Rule group name | | ↳ `orgID` | number | Organization ID | | ↳ `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | | ↳ `notification_settings` | json | Per-rule notification settings (overrides) | | ↳ `record` | json | Recording rule configuration (recording rules only) | ### Grafana Get Alert Rule [#grafana-get-alert-rule] Get a specific alert rule by its UID #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `alertRuleUid` | string | Yes | The UID of the alert rule to retrieve | #### Output [#output-6] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Alert rule numeric ID | | `uid` | string | Alert rule UID | | `title` | string | Alert rule title | | `condition` | string | RefId of the query used as the alert condition | | `data` | json | Alert rule query/expression data array | | `updated` | string | Last update timestamp | | `noDataState` | string | State when no data is returned | | `execErrState` | string | State on execution error | | `for` | string | Duration the condition must hold before firing | | `keepFiringFor` | string | Duration to keep firing after condition stops | | `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving | | `annotations` | json | Alert annotations | | `labels` | json | Alert labels | | `isPaused` | boolean | Whether the rule is paused | | `folderUID` | string | Parent folder UID | | `ruleGroup` | string | Rule group name | | `orgID` | number | Organization ID | | `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | | `notification_settings` | json | Per-rule notification settings (overrides) | | `record` | json | Recording rule configuration (recording rules only) | ### Grafana Create Alert Rule [#grafana-create-alert-rule] Create a new alert rule #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `title` | string | Yes | The title of the alert rule | | `folderUid` | string | Yes | The UID of the folder to create the alert in (e.g., folder-abc123) | | `ruleGroup` | string | Yes | The name of the rule group | | `condition` | string | No | The refId of the query or expression to use as the alert condition (required for alerting rules; omit for recording rules) | | `data` | string | Yes | JSON array of query/expression data objects | | `forDuration` | string | No | Duration to wait before firing (e.g., 5m, 1h) | | `noDataState` | string | No | State when no data is returned: NoData (default), Alerting, OK, or KeepLast. Ignored for recording rules | | `execErrState` | string | No | State on execution error: Error (default), Alerting, OK, or KeepLast. Ignored for recording rules | | `annotations` | string | No | JSON object of annotations | | `labels` | string | No | JSON object of labels | | `uid` | string | No | Optional custom UID for the alert rule | | `isPaused` | boolean | No | Whether the rule is paused on creation | | `keepFiringFor` | string | No | Duration to keep firing after the condition stops (e.g., 5m) | | `missingSeriesEvalsToResolve` | number | No | Number of missing series evaluations before resolving | | `notificationSettings` | string | No | JSON object of per-rule notification settings (overrides) | | `record` | string | No | JSON object configuring this as a recording rule (omit for alerting rules) | | `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the rule remains editable in the Grafana UI | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Alert rule numeric ID | | `uid` | string | Alert rule UID | | `title` | string | Alert rule title | | `condition` | string | RefId of the query used as the alert condition | | `data` | json | Alert rule query/expression data array | | `updated` | string | Last update timestamp | | `noDataState` | string | State when no data is returned | | `execErrState` | string | State on execution error | | `for` | string | Duration the condition must hold before firing | | `keepFiringFor` | string | Duration to keep firing after condition stops | | `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving | | `annotations` | json | Alert annotations | | `labels` | json | Alert labels | | `isPaused` | boolean | Whether the rule is paused | | `folderUID` | string | Parent folder UID | | `ruleGroup` | string | Rule group name | | `orgID` | number | Organization ID | | `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | | `notification_settings` | json | Per-rule notification settings (overrides) | | `record` | json | Recording rule configuration (recording rules only) | ### Grafana Update Alert Rule [#grafana-update-alert-rule] Update an existing alert rule. Fetches the current rule and merges your changes. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `alertRuleUid` | string | Yes | The UID of the alert rule to update | | `title` | string | No | New title for the alert rule | | `folderUid` | string | No | New folder UID to move the alert to (e.g., folder-abc123) | | `ruleGroup` | string | No | New rule group name | | `condition` | string | No | New condition refId | | `data` | string | No | New JSON array of query/expression data objects | | `forDuration` | string | No | Duration to wait before firing (e.g., 5m, 1h) | | `noDataState` | string | No | State when no data is returned (NoData, Alerting, OK) | | `execErrState` | string | No | State on execution error (Error, Alerting, OK) | | `annotations` | string | No | JSON object of annotations | | `labels` | string | No | JSON object of labels | | `isPaused` | boolean | No | Whether the rule is paused | | `keepFiringFor` | string | No | Duration to keep firing after the condition stops (e.g., 5m) | | `missingSeriesEvalsToResolve` | number | No | Number of missing series evaluations before resolving | | `notificationSettings` | string | No | JSON object of per-rule notification settings (overrides) | | `record` | string | No | JSON object configuring this as a recording rule | | `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the rule remains editable in the Grafana UI | #### Output [#output-8] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Alert rule numeric ID | | `uid` | string | Alert rule UID | | `title` | string | Alert rule title | | `condition` | string | RefId of the query used as the alert condition | | `data` | json | Alert rule query/expression data array | | `updated` | string | Last update timestamp | | `noDataState` | string | State when no data is returned | | `execErrState` | string | State on execution error | | `for` | string | Duration the condition must hold before firing | | `keepFiringFor` | string | Duration to keep firing after condition stops | | `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving | | `annotations` | json | Alert annotations | | `labels` | json | Alert labels | | `isPaused` | boolean | Whether the rule is paused | | `folderUID` | string | Parent folder UID | | `ruleGroup` | string | Rule group name | | `orgID` | number | Organization ID | | `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | | `notification_settings` | json | Per-rule notification settings (overrides) | | `record` | json | Recording rule configuration (recording rules only) | ### Grafana Delete Alert Rule [#grafana-delete-alert-rule] Delete an alert rule by its UID #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `alertRuleUid` | string | Yes | The UID of the alert rule to delete | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `message` | string | Confirmation message | ### Grafana List Contact Points [#grafana-list-contact-points] List all alert notification contact points #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `name` | string | No | Filter contact points by exact name match | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `contactPoints` | array | List of contact points | | ↳ `uid` | string | Contact point UID | | ↳ `name` | string | Contact point name | | ↳ `type` | string | Notification type (email, slack, etc.) | | ↳ `settings` | json | Type-specific settings | | ↳ `disableResolveMessage` | boolean | Whether resolve messages are disabled | | ↳ `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | ### Grafana Create Contact Point [#grafana-create-contact-point] Create a notification contact point (e.g., Slack, email, PagerDuty) #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `name` | string | Yes | Name of the contact point (groups receivers shown in the UI) | | `type` | string | Yes | Receiver type (e.g., slack, email, pagerduty, webhook) | | `settings` | string | Yes | JSON object of type-specific settings (e.g., \{"addresses":"[a@b.com](mailto:a@b.com)"} for email, \{"url":"..."} for slack) | | `disableResolveMessage` | boolean | No | Do not send a notification when the alert resolves | | `disableProvenance` | boolean | No | Set X-Disable-Provenance header so the contact point remains editable in the UI | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `uid` | string | UID of the created contact point | | `name` | string | Name of the contact point | | `type` | string | Receiver type | | `settings` | json | Type-specific settings | | `disableResolveMessage` | boolean | Whether resolve notifications are suppressed | | `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | ### Grafana Create Annotation [#grafana-create-annotation] Create an annotation on a dashboard or as a global annotation #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `text` | string | Yes | The text content of the annotation | | `tags` | string | No | Comma-separated list of tags | | `dashboardUid` | string | No | UID of the dashboard to add the annotation to (e.g., abc123def). Omit to create a global organization annotation. | | `panelId` | number | No | ID of the panel to add the annotation to (e.g., 1, 2) | | `time` | number | No | Start time in epoch milliseconds (e.g., 1704067200000, defaults to now) | | `timeEnd` | number | No | End time in epoch milliseconds for range annotations (e.g., 1704153600000) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `id` | number | The ID of the created annotation | | `message` | string | Confirmation message | ### Grafana List Annotations [#grafana-list-annotations] Query annotations by time range, dashboard, or tags #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `from` | number | No | Start time in epoch milliseconds (e.g., 1704067200000) | | `to` | number | No | End time in epoch milliseconds (e.g., 1704153600000) | | `dashboardUid` | string | No | Dashboard UID to query annotations from (e.g., abc123def). Omit to query annotations across the organization. | | `dashboardId` | number | No | Legacy numeric dashboard ID filter (prefer dashboardUid) | | `panelId` | number | No | Filter by panel ID (e.g., 1, 2) | | `alertId` | number | No | Filter by alert ID | | `userId` | number | No | Filter by ID of the user who created the annotation | | `tags` | string | No | Comma-separated list of tags to filter by | | `type` | string | No | Filter by type (alert or annotation) | | `limit` | number | No | Maximum number of annotations to return (Grafana defaults to 100) | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------- | | `annotations` | array | List of annotations | | ↳ `id` | number | Annotation ID | | ↳ `alertId` | number | Associated alert ID (0 if not alert-driven) | | ↳ `dashboardId` | number | Dashboard ID | | ↳ `dashboardUID` | string | Dashboard UID | | ↳ `panelId` | number | Panel ID within the dashboard | | ↳ `userId` | number | ID of the user who created the annotation | | ↳ `userName` | string | Username of the user who created the annotation | | ↳ `newState` | string | New alert state (alert annotations only) | | ↳ `prevState` | string | Previous alert state (alert annotations only) | | ↳ `time` | number | Start time in epoch ms | | ↳ `timeEnd` | number | End time in epoch ms | | ↳ `text` | string | Annotation text | | ↳ `metric` | string | Metric associated with the annotation | | ↳ `tags` | array | Annotation tags | | ↳ `data` | json | Additional annotation data object from Grafana | ### Grafana Update Annotation [#grafana-update-annotation] Update an existing annotation #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `annotationId` | number | Yes | The ID of the annotation to update | | `text` | string | No | New text content for the annotation (PATCH supports partial updates) | | `tags` | string | No | Comma-separated list of new tags | | `time` | number | No | New start time in epoch milliseconds (e.g., 1704067200000) | | `timeEnd` | number | No | New end time in epoch milliseconds (e.g., 1704153600000) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ | | `annotationId` | number | The annotation that was updated, echoed from the request — Grafana answers a patch with only a message and returns no id | | `message` | string | Confirmation message from Grafana, e.g. "Annotation patched" | ### Grafana Delete Annotation [#grafana-delete-annotation] Delete an annotation by its ID #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `annotationId` | number | Yes | The ID of the annotation to delete | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `message` | string | Confirmation message | ### Grafana List Data Sources [#grafana-list-data-sources] List all data sources configured in Grafana #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------- | | `dataSources` | array | List of data sources | | ↳ `id` | number | Data source ID | | ↳ `uid` | string | Data source UID | | ↳ `orgId` | number | Organization ID | | ↳ `name` | string | Data source name | | ↳ `type` | string | Data source type (prometheus, mysql, etc.) | | ↳ `typeLogoUrl` | string | Logo URL for the data source type | | ↳ `access` | string | Access mode (proxy or direct) | | ↳ `url` | string | Data source URL | | ↳ `user` | string | Username used to connect | | ↳ `database` | string | Database name (if applicable) | | ↳ `basicAuth` | boolean | Whether basic auth is enabled | | ↳ `basicAuthUser` | string | Basic auth username | | ↳ `withCredentials` | boolean | Whether to send credentials with cross-origin requests | | ↳ `isDefault` | boolean | Whether this is the default data source | | ↳ `jsonData` | object | Type-specific JSON configuration | | ↳ `secureJsonFields` | object | Map of secure fields that are set (values are not returned) | | ↳ `version` | number | Data source version | | ↳ `readOnly` | boolean | Whether the data source is read-only | ### Grafana Get Data Source [#grafana-get-data-source] Get a data source by its ID or UID #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `dataSourceId` | string | Yes | The UID of the data source to retrieve (e.g., P1234AB5678). Numeric ids are not supported — Grafana serves those only behind a disabled-by-default feature toggle | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------- | | `id` | number | Data source ID | | `uid` | string | Data source UID | | `orgId` | number | Organization ID | | `name` | string | Data source name | | `type` | string | Data source type | | `typeLogoUrl` | string | Logo URL for the data source type | | `access` | string | Access mode (proxy or direct) | | `url` | string | Data source connection URL | | `user` | string | Username used to connect | | `database` | string | Database name (if applicable) | | `basicAuth` | boolean | Whether basic auth is enabled | | `basicAuthUser` | string | Basic auth username | | `withCredentials` | boolean | Whether to send credentials with cross-origin requests | | `isDefault` | boolean | Whether this is the default data source | | `jsonData` | json | Additional data source configuration | | `secureJsonFields` | object | Map of secure fields that are set (values are not returned) | | `version` | number | Data source version | | `readOnly` | boolean | Whether the data source is read-only | ### Grafana Check Data Source Health [#grafana-check-data-source-health] Test connectivity to a data source by its UID #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `dataSourceUid` | string | Yes | The UID of the data source to health-check (e.g., P1234AB5678) | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- | | `status` | string | Verdict Grafana returned for the data source, e.g. OK or ERROR. An unhealthy source reports here rather than failing the tool | | `message` | string | The plugin's diagnostic detail, which carries the reason on a failed check | | `details` | json | Extra structured detail, when the data source plugin supplies any | ### Grafana List Folders [#grafana-list-folders] List all folders in Grafana #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `limit` | number | No | Maximum number of folders to return | | `page` | number | No | Page number for pagination | | `parentUid` | string | No | List children of this folder UID (requires nested folders enabled) | #### Output [#output-19] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------------------- | | `folders` | array | List of folders | | ↳ `id` | number | Folder ID | | ↳ `uid` | string | Folder UID | | ↳ `title` | string | Folder title | | ↳ `url` | string | Folder URL path | | ↳ `parentUid` | string | Parent folder UID (nested folders only) | | ↳ `parents` | array | Ancestor folder hierarchy (nested folders only) | | ↳ `hasAcl` | boolean | Whether the folder has custom ACL permissions | | ↳ `canSave` | boolean | Whether the current user can save the folder | | ↳ `canEdit` | boolean | Whether the current user can edit the folder | | ↳ `canAdmin` | boolean | Whether the current user has admin rights | | ↳ `createdBy` | string | Username of who created the folder | | ↳ `created` | string | Timestamp when the folder was created | | ↳ `updatedBy` | string | Username of who last updated the folder | | ↳ `updated` | string | Timestamp when the folder was last updated | | ↳ `version` | number | Folder version number | ### Grafana Create Folder [#grafana-create-folder] Create a new folder in Grafana #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `title` | string | Yes | The title of the new folder | | `uid` | string | No | Optional UID for the folder (auto-generated if not provided) | | `parentUid` | string | No | Parent folder UID for nested folders (requires nested folders enabled) | #### Output [#output-20] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `id` | number | The numeric ID of the created folder | | `uid` | string | The UID of the created folder | | `title` | string | The title of the created folder | | `url` | string | The URL path to the folder | | `parentUid` | string | Parent folder UID (nested folders only) | | `parents` | array | Ancestor folder hierarchy (nested folders only) | | `hasAcl` | boolean | Whether the folder has custom ACL permissions | | `canSave` | boolean | Whether the current user can save the folder | | `canEdit` | boolean | Whether the current user can edit the folder | | `canAdmin` | boolean | Whether the current user has admin rights on the folder | | `createdBy` | string | Username of who created the folder | | `created` | string | Timestamp when the folder was created | | `updatedBy` | string | Username of who last updated the folder | | `updated` | string | Timestamp when the folder was last updated | | `version` | number | Version number of the folder | ### Grafana Get Folder [#grafana-get-folder] Get a folder by its UID #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `folderUid` | string | Yes | The UID of the folder to retrieve (e.g., folder-abc123) | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `id` | number | The numeric ID of the folder | | `uid` | string | The UID of the folder | | `title` | string | The title of the folder | | `url` | string | The URL path to the folder | | `parentUid` | string | Parent folder UID (nested folders only) | | `parents` | array | Ancestor folder hierarchy (nested folders only) | | `hasAcl` | boolean | Whether the folder has custom ACL permissions | | `canSave` | boolean | Whether the current user can save the folder | | `canEdit` | boolean | Whether the current user can edit the folder | | `canAdmin` | boolean | Whether the current user has admin rights on the folder | | `createdBy` | string | Username of who created the folder | | `created` | string | Timestamp when the folder was created | | `updatedBy` | string | Username of who last updated the folder | | `updated` | string | Timestamp when the folder was last updated | | `version` | number | Version number of the folder | ### Grafana Update Folder [#grafana-update-folder] Update (rename) a folder. Fetches the current folder and merges your changes. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `folderUid` | string | Yes | The UID of the folder to update (e.g., folder-abc123) | | `title` | string | Yes | New title for the folder | #### Output [#output-22] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `id` | number | The numeric ID of the folder | | `uid` | string | The UID of the folder | | `title` | string | The updated title of the folder | | `url` | string | The URL path to the folder | | `parentUid` | string | Parent folder UID (nested folders only) | | `parents` | array | Ancestor folder hierarchy (nested folders only) | | `hasAcl` | boolean | Whether the folder has custom ACL permissions | | `canSave` | boolean | Whether the current user can save the folder | | `canEdit` | boolean | Whether the current user can edit the folder | | `canAdmin` | boolean | Whether the current user has admin rights on the folder | | `createdBy` | string | Username of who created the folder | | `created` | string | Timestamp when the folder was created | | `updatedBy` | string | Username of who last updated the folder | | `updated` | string | Timestamp when the folder was last updated | | `version` | number | Version number of the folder | ### Grafana Delete Folder [#grafana-delete-folder] Delete a folder by its UID #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `folderUid` | string | Yes | The UID of the folder to delete (e.g., folder-abc123) | | `forceDeleteRules` | boolean | No | Delete any alert rules stored in the folder along with it (default false) | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------- | | `id` | number | Numeric id of the deleted folder, as returned by Grafana | | `uid` | string | The UID that was deleted, echoed from the request | | `message` | string | Grafana's confirmation message | ### Grafana Get Health [#grafana-get-health] Check the health of the Grafana instance (version, database status) #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `commit` | string | Git commit hash of the running Grafana build | | `database` | string | Database health status (e.g., ok) | | `version` | string | Grafana version | ### Grafana Update Contact Point [#grafana-update-contact-point] Replace a contact point by its UID. Grafana has no partial update for contact points, so every field is rewritten — resend the name, type, and full settings, or the omitted ones are reset. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `contactPointUid` | string | Yes | UID of the contact point to replace | | `name` | string | Yes | Contact point name. Grafana groups receivers that share a name | | `type` | string | Yes | Receiver type, e.g. slack, email, pagerduty, webhook, opsgenie, teams, discord, telegram | | `settings` | string | Yes | JSON object of receiver settings for this type, e.g. \{ "url": "[https://hooks.slack.com/](https://hooks.slack.com/)..." } for slack | | `disableResolveMessage` | boolean | No | Suppress the resolved notification. Omitting this resets it to false | | `disableProvenance` | boolean | No | Send X-Disable-Provenance. Use only on a contact point whose provenance is already empty (UI-created, or created by Agent Serve with this on) — sending it against an API-provisioned contact point is rejected with 403 | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | | `uid` | string | The UID that was updated, echoed from the request — Grafana answers a contact point update with only a message and returns no object | | `message` | string | Confirmation message from Grafana, e.g. "contactpoint updated" | ### Grafana Delete Contact Point [#grafana-delete-contact-point] Permanently delete a contact point by its UID. Grafana refuses the delete while the contact point is still referenced by the notification policy tree or by an alert rule. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `contactPointUid` | string | Yes | UID of the contact point to delete | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------------- | | `uid` | string | The UID that was deleted, echoed from the request | | `message` | string | Confirmation message from Grafana, e.g. "contactpoint deleted" | ### Grafana Move Folder [#grafana-move-folder] Move a folder under a different parent folder, or to the root by leaving the parent empty. Returns the folder with its new ancestry. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `folderUid` | string | Yes | UID of the folder to move | | `parentUid` | string | No | UID of the new parent folder. Leave empty to move the folder to the root | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------------------ | | `id` | number | The numeric ID of the folder | | `uid` | string | The UID of the folder | | `title` | string | The title of the folder | | `url` | string | The URL path of the folder | | `parentUid` | string | UID of the new parent folder, absent once moved to the root | | `parents` | array | Folder ancestry from the root down to the parent (uid, title, url) | | `hasAcl` | boolean | Whether the folder has custom ACL permissions | | `canSave` | boolean | Whether the caller can save the folder | | `canEdit` | boolean | Whether the caller can edit the folder | | `canAdmin` | boolean | Whether the caller can administer the folder | | `createdBy` | string | Login that created the folder | | `created` | string | Creation timestamp | | `updatedBy` | string | Login that last updated the folder | | `updated` | string | Last update timestamp | | `version` | number | Folder revision number | ### Grafana Get Alert Rule Group [#grafana-get-alert-rule-group] Read an alert rule group: its evaluation interval and every rule in it. The interval is the group-level knob that decides how often those rules are evaluated, which the individual alert rule operations do not expose. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `folderUid` | string | Yes | UID of the folder holding the rule group | | `ruleGroup` | string | Yes | Name of the rule group | #### Output [#output-28] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `title` | string | Name of the rule group | | `folderUid` | string | UID of the folder holding the group | | `interval` | number | How often the group is evaluated, as an integer. Grafana returns seconds here rather than a duration string | | `rules` | array | Provisioned alert rules in the group | | ↳ `id` | number | Alert rule numeric ID | | ↳ `uid` | string | Alert rule UID | | ↳ `title` | string | Alert rule title | | ↳ `condition` | string | RefId of the query used as the alert condition | | ↳ `data` | json | Alert rule query/expression data array | | ↳ `updated` | string | Last update timestamp | | ↳ `noDataState` | string | State when no data is returned | | ↳ `execErrState` | string | State on execution error | | ↳ `for` | string | Duration the condition must hold before firing | | ↳ `keepFiringFor` | string | Duration to keep firing after condition stops | | ↳ `missingSeriesEvalsToResolve` | number | Number of missing series evaluations before resolving | | ↳ `annotations` | json | Alert annotations | | ↳ `labels` | json | Alert labels | | ↳ `isPaused` | boolean | Whether the rule is paused | | ↳ `folderUID` | string | Parent folder UID | | ↳ `ruleGroup` | string | Rule group name | | ↳ `orgID` | number | Organization ID | | ↳ `provenance` | string | Provisioning source — "api" for API-managed, empty when created with X-Disable-Provenance and therefore still editable in the Grafana UI | | ↳ `notification_settings` | json | Per-rule notification settings (overrides) | | ↳ `record` | json | Recording rule configuration (recording rules only) | ### Grafana Query Data Source [#grafana-query-data-source] Run one or more queries against a Grafana data source that has a backend implementation, and read the values back. This is how you get actual metric numbers out of Grafana rather than dashboard or alert configuration. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Grafana Service Account Token | | `baseUrl` | string | Yes | Grafana instance URL (e.g., [https://your-grafana.com](https://your-grafana.com)) | | `organizationId` | string | No | Organization ID for multi-org Grafana instances (e.g., 1, 2) | | `queries` | string | Yes | JSON array of at least one query. Each needs a datasource.uid and a refId, plus the fields that data source expects — expr for Prometheus, rawSql for SQL. Example: \[\{"refId":"A","datasource":\{"uid":"P123"},"expr":"up","format":"time\_series"}] | | `from` | string | No | Start of the time range, either epoch milliseconds or Grafana relative time (e.g., now-5m). Defaults to now-1h | | `to` | string | No | End of the time range, epoch milliseconds or relative (e.g., now) | #### Output [#output-29] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------------------------------------------- | | `results` | json | Raw Grafana response, keyed by each query refId, each holding the frames that query produced | | `series` | array | The same frames flattened into rows, so values can be read without walking the columnar layout | | ↳ `refId` | string | The query this frame came from | | ↳ `fields` | array | Field metadata in column order | | ↳ `name` | string | Field name, e.g. time or A-series | | ↳ `type` | string | Field type, e.g. time or number | | ↳ `rowCount` | number | Number of rows in the frame | | ↳ `rows` | array | Rows keyed by field name | --- # Grain (/integrations/grain) {/* MANUAL-CONTENT-START:intro */} [Grain](https://grain.com/) is a modern platform for capturing, storing, and sharing meeting recordings, transcripts, highlights, and AI-powered summaries. Grain enables teams to turn conversations into actionable insights and keep everyone aligned on key moments from meetings. With Grain, you can: * **Access searchable recordings and transcripts**: Find and review every meeting by keyword, participant, or topic. * **Share highlights and clips**: Capture important moments and share short video/audio highlights across your team or workflows. * **Get AI-generated summaries**: Automatically produce meeting summaries, action items, and key insights using Grain’s advanced AI. * **Organize meetings by team or type**: Tag and categorize recordings for easy access and reporting. The Agent Serve Grain integration empowers your agents to: * List, search, and retrieve meeting recordings and details by flexible filters (datetime, participant, team, etc). * Access AI summaries, participants, highlights, and other metadata for meetings to power automations or analysis. * Trigger workflows whenever new meetings are processed, summaries are generated, or highlights are created via Grain webhooks. * Easily bridge Grain data into other tools or notify teammates the moment something important happens in a meeting. Whether you want to automate follow-up actions, keep records of important conversations, or surface insights across your organization, Grain and Agent Serve make it easy to connect meeting intelligence to your workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events. ## Actions [#actions] ### Grain List Recordings [#grain-list-recordings] List recordings from Grain with optional filters and pagination #### Input [#input] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal Access Token) | | `cursor` | string | No | Pagination cursor for next page (returned from previous response) | | `beforeDatetime` | string | No | Only recordings before this ISO8601 timestamp (e.g., "2024-01-15T00:00:00Z") | | `afterDatetime` | string | No | Only recordings after this ISO8601 timestamp (e.g., "2024-01-01T00:00:00Z") | | `participantScope` | string | No | Filter: "internal" or "external" | | `titleSearch` | string | No | Search term to filter by recording title (e.g., "weekly standup") | | `teamId` | string | No | Filter by team UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") | | `meetingTypeId` | string | No | Filter by meeting type UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") | | `includeHighlights` | boolean | No | Include highlights/clips in response | | `includeParticipants` | boolean | No | Include participant list in response | | `includeAiSummary` | boolean | No | Include AI-generated summary | | `includeAiActionItems` | boolean | No | Include AI-detected action items | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------- | | `recordings` | array | Array of recording objects | | ↳ `id` | string | Recording UUID | | ↳ `title` | string | Recording title | | ↳ `start_datetime` | string | ISO8601 start timestamp | | ↳ `end_datetime` | string | ISO8601 end timestamp | | ↳ `duration_ms` | number | Duration in milliseconds | | ↳ `media_type` | string | audio, transcript, or video | | ↳ `source` | string | Recording source | | ↳ `url` | string | URL to view in Grain | | ↳ `thumbnail_url` | string | Thumbnail URL | | ↳ `tags` | array | Array of tags | | ↳ `teams` | array | Teams the recording belongs to | | ↳ `meeting_type` | object | Meeting type info | | `cursor` | string | Cursor for next page (null if no more) | ### Grain Get Recording [#grain-get-recording] Get details of a single recording by ID #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal Access Token) | | `recordingId` | string | Yes | The recording UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") | | `includeHighlights` | boolean | No | Include highlights/clips | | `includeParticipants` | boolean | No | Include participant list | | `includeAiSummary` | boolean | No | Include AI summary | | `includeAiActionItems` | boolean | No | Include AI-detected action items | | `includeCalendarEvent` | boolean | No | Include calendar event data | | `includeHubspot` | boolean | No | Include HubSpot associations | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------- | | `id` | string | Recording UUID | | `title` | string | Recording title | | `start_datetime` | string | ISO8601 start timestamp | | `end_datetime` | string | ISO8601 end timestamp | | `duration_ms` | number | Duration in milliseconds | | `media_type` | string | audio, transcript, or video | | `source` | string | Recording source (zoom, meet, teams, etc.) | | `url` | string | URL to view in Grain | | `thumbnail_url` | string | Thumbnail image URL | | `tags` | array | Array of tag strings | | `teams` | array | Teams the recording belongs to | | `meeting_type` | object | Meeting type info (id, name, scope) | | `highlights` | array | Highlights (if included) | | `participants` | array | Participants (if included) | | `ai_summary` | object | AI summary text (if included) | | `ai_action_items` | array | AI-detected action items with status, text, and assignee (if included) | | `calendar_event` | object | Calendar event data (if included) | | `hubspot` | object | HubSpot associations (if included) | ### Grain Get Transcript [#grain-get-transcript] Get the full transcript of a recording #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal Access Token) | | `recordingId` | string | Yes | The recording UUID (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `transcript` | array | Array of transcript sections | | ↳ `participant_id` | string | Participant UUID (nullable) | | ↳ `speaker` | string | Speaker name | | ↳ `start` | number | Start timestamp in ms | | ↳ `end` | number | End timestamp in ms | | ↳ `text` | string | Transcript text | ### Grain List Teams [#grain-list-teams] List all teams in the workspace #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal Access Token) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `teams` | array | Array of team objects | | ↳ `id` | string | Team UUID | | ↳ `name` | string | Team name | ### Grain List Meeting Types [#grain-list-meeting-types] List all meeting types in the workspace #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal Access Token) | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `meeting_types` | array | Array of meeting type objects | | ↳ `id` | string | Meeting type UUID | | ↳ `name` | string | Meeting type name | | ↳ `scope` | string | internal or external | ### Grain Create Webhook [#grain-create-webhook] Create a webhook for a specific Grain event type (v2 API) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) | | `hookUrl` | string | Yes | Webhook endpoint URL. Grain performs a reachability test on creation — the endpoint must respond 2xx. | | `hookType` | string | Yes | Event type the hook subscribes to. One of: recording\_added, recording\_updated, recording\_deleted, highlight\_added, highlight\_updated, highlight\_deleted, story\_added, story\_updated, story\_deleted, upload\_status | | `include` | json | No | Optional include object controlling payload richness. For recording hooks: \{"participants": true, "highlights": true, "ai\_summary": true}. For highlight hooks: \{"transcript": true, "speakers": true}. | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------- | | `id` | string | Hook UUID | | `enabled` | boolean | Whether hook is active | | `hook_url` | string | The webhook URL | | `hook_type` | string | Event type the hook subscribes to | | `include` | json | Include object the hook was created with | | `inserted_at` | string | ISO8601 creation timestamp | ### Grain List Webhooks [#grain-list-webhooks] List webhooks for the account (v2 API) #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) | | `hookType` | string | No | Only return hooks with this event type. One of: recording\_added, recording\_updated, recording\_deleted, highlight\_added, highlight\_updated, highlight\_deleted, story\_added, story\_updated, story\_deleted, upload\_status | | `state` | string | No | Only return hooks that are "enabled" or "disabled" | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------- | | `hooks` | array | Array of hook objects | | ↳ `id` | string | Hook UUID | | ↳ `enabled` | boolean | Whether hook is active | | ↳ `hook_url` | string | Webhook URL | | ↳ `hook_type` | string | Event type the hook subscribes to | | ↳ `include` | object | Include object the hook was created with | | ↳ `inserted_at` | string | Creation timestamp | ### Grain Delete Webhook [#grain-delete-webhook] Delete a webhook by ID (v2 API) #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Grain API key (Personal or Workspace Access Token) | | `hookId` | string | Yes | The hook UUID to delete (e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890") | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `success` | boolean | True when webhook was successfully deleted | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Grain All Events [#grain-all-events] Trigger on every Grain event (recordings, highlights, stories, uploads) #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `type` | string | Event type (e.g., recording\_added) | | `user_id` | string | User UUID who triggered the event | | `data` | object | Event data object (recording, highlight, etc.) | *** ### Grain Highlight Added [#grain-highlight-added] Trigger when a new highlight/clip is created in Grain #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Highlight UUID | | ↳ `recording_id` | string | Parent recording UUID | | ↳ `text` | string | Highlight title/description | | ↳ `transcript` | string | Transcript text of the clip | | ↳ `speakers` | array | Array of speaker names | | ↳ `timestamp` | number | Start timestamp in ms | | ↳ `duration` | number | Duration in ms | | ↳ `tags` | array | Array of tag strings | | ↳ `url` | string | URL to view in Grain | | ↳ `thumbnail_url` | string | Thumbnail URL | | ↳ `created_datetime` | string | ISO8601 creation timestamp | *** ### Grain Highlight Deleted [#grain-highlight-deleted] Trigger when a highlight/clip is deleted in Grain #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `type` | string | Event type (e.g., recording\_added) | | `user_id` | string | User UUID who triggered the event | | `data` | object | Event data object (recording, highlight, etc.) | *** ### Grain Highlight Updated [#grain-highlight-updated] Trigger when a highlight/clip is updated in Grain #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-11] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Highlight UUID | | ↳ `recording_id` | string | Parent recording UUID | | ↳ `text` | string | Highlight title/description | | ↳ `transcript` | string | Transcript text of the clip | | ↳ `speakers` | array | Array of speaker names | | ↳ `timestamp` | number | Start timestamp in ms | | ↳ `duration` | number | Duration in ms | | ↳ `tags` | array | Array of tag strings | | ↳ `url` | string | URL to view in Grain | | ↳ `thumbnail_url` | string | Thumbnail URL | | ↳ `created_datetime` | string | ISO8601 creation timestamp | *** ### Grain Recording Added [#grain-recording-added] Trigger when a new recording is added in Grain #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Recording UUID | | ↳ `title` | string | Recording title | | ↳ `start_datetime` | string | ISO8601 start timestamp | | ↳ `end_datetime` | string | ISO8601 end timestamp | | ↳ `duration_ms` | number | Duration in milliseconds | | ↳ `media_type` | string | audio, transcript, or video | | ↳ `source` | string | Recording source (zoom, meet, local\_capture, etc.) | | ↳ `url` | string | URL to view in Grain | | ↳ `thumbnail_url` | string | Thumbnail URL (nullable) | | ↳ `tags` | array | Array of tag strings | | ↳ `teams` | array | Array of team objects | | ↳ `meeting_type` | object | Meeting type info with id, name, scope (nullable) | *** ### Grain Recording Deleted [#grain-recording-deleted] Trigger when a recording is deleted in Grain #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `type` | string | Event type (e.g., recording\_added) | | `user_id` | string | User UUID who triggered the event | | `data` | object | Event data object (recording, highlight, etc.) | *** ### Grain Recording Updated [#grain-recording-updated] Trigger when a recording is updated in Grain #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Recording UUID | | ↳ `title` | string | Recording title | | ↳ `start_datetime` | string | ISO8601 start timestamp | | ↳ `end_datetime` | string | ISO8601 end timestamp | | ↳ `duration_ms` | number | Duration in milliseconds | | ↳ `media_type` | string | audio, transcript, or video | | ↳ `source` | string | Recording source (zoom, meet, local\_capture, etc.) | | ↳ `url` | string | URL to view in Grain | | ↳ `thumbnail_url` | string | Thumbnail URL (nullable) | | ↳ `tags` | array | Array of tag strings | | ↳ `teams` | array | Array of team objects | | ↳ `meeting_type` | object | Meeting type info with id, name, scope (nullable) | *** ### Grain Story Added [#grain-story-added] Trigger when a new story is created in Grain #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Story UUID | | ↳ `title` | string | Story title | | ↳ `url` | string | URL to view in Grain | | ↳ `created_datetime` | string | ISO8601 creation timestamp | *** ### Grain Story Deleted [#grain-story-deleted] Trigger when a story is deleted in Grain #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `type` | string | Event type (e.g., recording\_added) | | `user_id` | string | User UUID who triggered the event | | `data` | object | Event data object (recording, highlight, etc.) | *** ### Grain Story Updated [#grain-story-updated] Trigger when a story is updated in Grain #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------- | | `type` | string | Event type | | `user_id` | string | User UUID who triggered the event | | `data` | object | data output from the tool | | ↳ `id` | string | Story UUID | | ↳ `title` | string | Story title | | ↳ `url` | string | URL to view in Grain | | ↳ `created_datetime` | string | ISO8601 creation timestamp | *** ### Grain Upload Status [#grain-upload-status] Trigger on progress updates for recordings uploaded to Grain #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Grain. | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `type` | string | Event type (e.g., recording\_added) | | `user_id` | string | User UUID who triggered the event | | `data` | object | Event data object (recording, highlight, etc.) | --- # Granola (/integrations/granola) {/* MANUAL-CONTENT-START:intro */} [Granola](https://www.granola.ai/) is an AI notepad for meetings that automatically records and transcribes calls, then generates structured notes and summaries alongside your own typed notes. With Granola, you can: * **List meeting notes**: Browse notes with date filters, folder scoping, and pagination * **Retrieve full note details**: Get summaries, attendees, calendar event details, and transcripts for a specific note * **Organize by folders**: List and filter notes using Granola's folder structure In Agent Serve, the Granola integration allows your agents to pull meeting notes, summaries, and transcripts directly into a workflow. Agents can list recent notes with date or folder filters, fetch a specific note's summary text, attendees, and calendar details, retrieve the full transcript with speaker labels when needed, and browse folders to organize retrieval. This makes it possible to build workflows that surface meeting outcomes, route action items, or feed meeting context into downstream agent reasoning. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Granola into your workflow to retrieve meeting notes, summaries, attendees, and transcripts, review workspace audit events, and manage webhook endpoints. Granola can also trigger workflows when notes are generated, edited, or shared with you. ## Actions [#actions] ### Granola List Notes [#granola-list-notes] Lists meeting notes from Granola with optional date filters and pagination. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `createdBefore` | string | No | Return notes created before this date (ISO 8601) | | `createdAfter` | string | No | Return notes created after this date (ISO 8601) | | `updatedAfter` | string | No | Return notes updated after this date (ISO 8601) | | `folderId` | string | No | Return notes in this folder and its child folders (e.g., fol\_4y6LduVdwSKC27) | | `cursor` | string | No | Pagination cursor from a previous response | | `pageSize` | number | No | Number of notes per page (1-30, default 10) | #### Output [#output] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `notes` | array | List of meeting notes | | ↳ `id` | string | Note ID | | ↳ `title` | string | Note title | | ↳ `ownerName` | string | Note owner name | | ↳ `ownerEmail` | string | Note owner email | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `hasMore` | boolean | Whether more notes are available | | `cursor` | string | Pagination cursor for the next page | ### Granola Get Note [#granola-get-note] Retrieves a specific meeting note from Granola by ID, including summary, attendees, calendar event details, and optionally the transcript. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `noteId` | string | Yes | The note ID (e.g., not\_1d3tmYTlCICgjy) | | `includeTranscript` | string | No | Whether to include the meeting transcript | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Note ID | | `title` | string | Note title | | `ownerName` | string | Note owner name | | `ownerEmail` | string | Note owner email | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `webUrl` | string | URL to view the note in Granola | | `summaryText` | string | Plain text summary of the meeting | | `summaryMarkdown` | string | Markdown-formatted summary of the meeting | | `attendees` | array | Meeting attendees | | ↳ `name` | string | Attendee name | | ↳ `email` | string | Attendee email | | `folders` | array | Folders the note belongs to | | ↳ `id` | string | Folder ID | | ↳ `name` | string | Folder name | | `calendarEventTitle` | string | Calendar event title | | `calendarOrganiser` | string | Calendar event organiser email | | `calendarEventId` | string | Calendar event ID | | `scheduledStartTime` | string | Scheduled start time | | `scheduledEndTime` | string | Scheduled end time | | `invitees` | array | Calendar event invitee emails | | `transcript` | array | Meeting transcript entries (only if requested) | | ↳ `speaker` | string | Speaker source (microphone or speaker) | | ↳ `speakerAttribution` | string | Who spoke relative to the note owner: "me" for the note-taker, "them" for other participants. Null when attribution is unknown. | | ↳ `speakerLabel` | string | Diarization label for the speaker (e.g., Speaker A) | | ↳ `speakerName` | string | Resolved name of the identified speaker, when available | | ↳ `text` | string | Transcript text | | ↳ `startTime` | string | Segment start time | | ↳ `endTime` | string | Segment end time | ### Granola Get Transcript [#granola-get-transcript] Retrieves a meeting transcript from Granola one page at a time, including when Get Note reports the transcript is too large to return inline. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `noteId` | string | Yes | The note ID (e.g., not\_1d3tmYTlCICgjy) | | `cursor` | string | No | Pagination cursor from a previous response | | `pageSize` | number | No | Number of transcript items per page (1-100, default 50) | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | | `transcript` | array | Transcript items for this page | | ↳ `speaker` | string | Audio source of the speaker (microphone or speaker) | | ↳ `speakerAttribution` | string | Who spoke relative to the note owner: "me" for the note-taker, "them" for other participants. Null when attribution is unknown. | | ↳ `speakerLabel` | string | Anonymous diarization label for the speaker (e.g., Speaker A) | | ↳ `speakerName` | string | Resolved name of the identified speaker, when available | | ↳ `text` | string | Transcript text | | ↳ `startTime` | string | Segment start time | | ↳ `endTime` | string | Segment end time | | `hasMore` | boolean | Whether another page of transcript items is available | | `cursor` | string | Pagination cursor for the next page | ### Granola List Folders [#granola-list-folders] Lists folders from Granola, sorted alphabetically, with pagination. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `cursor` | string | No | Pagination cursor from a previous response | | `pageSize` | number | No | Number of folders per page (1-30, default 10) | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------- | | `folders` | array | List of folders | | ↳ `id` | string | Folder ID | | ↳ `name` | string | Folder name | | ↳ `parentFolderId` | string | Parent folder ID, or null for top-level folders | | `hasMore` | boolean | Whether more folders are available | | `cursor` | string | Pagination cursor for the next page | ### Granola List Audit Events [#granola-list-audit-events] Lists workspace audit events from Granola, with optional action and date filters. Events are returned in collection order and retained for one year. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `action` | string | No | Return only events with this exact action, or actions beginning with it followed by a dot (e.g., "workspace" matches workspace.member\_added). Lowercase. | | `occurredAfter` | string | No | Return events that occurred after this date (ISO 8601). Must fall within the one-year retention window. | | `occurredBefore` | string | No | Return events that occurred before this date (ISO 8601). Must fall within the one-year retention window. | | `cursor` | string | No | Pagination cursor from a previous response | | `pageSize` | number | No | Number of audit events per page (1-30, default 10) | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------ | | `events` | array | List of audit events | | ↳ `id` | string | Audit event ID | | ↳ `action` | string | The recorded action (e.g., workspace.member\_added). Treat as an open set — actions are added over time. | | ↳ `occurredAt` | string | When the action happened | | ↳ `collectedAt` | string | When Granola recorded the event. Events are returned in this order, so page on it rather than on occurredAt. | | ↳ `actorType` | string | Who performed the action: user, api\_key, system, or anonymous | | ↳ `actorId` | string | User ID of the actor, when the actor is a resolvable user | | ↳ `actorEmail` | string | Email of the acting user, when the account still exists | | ↳ `data` | json | Action-specific details. Field names are the ones Granola records internally, so they are camelCase. | | ↳ `ipAddress` | string | IP address the request came from, when recorded | | ↳ `userAgent` | string | User agent of the client that made the request, when recorded | | ↳ `clientVersion` | string | Granola client version that made the request, when recorded | | `hasMore` | boolean | Whether more audit events are available. A page can hold fewer than pageSize events and still not be the last one. | | `cursor` | string | Pagination cursor for the next page | ### Granola Create Webhook Endpoint [#granola-create-webhook-endpoint] Registers an HTTPS URL in Granola to receive note event deliveries. The signing secret is returned only by this operation and cannot be retrieved later. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `url` | string | Yes | The publicly reachable HTTPS URL to deliver events to. Private network addresses are rejected. | | `scopes` | string | Yes | Which notes to receive events for, comma-separated: personal, public. With a workspace API key pass exactly "workspace". | | `events` | string | No | Event names to subscribe to, comma-separated: note.generated, note.edited, note.access\_granted. Omit to subscribe to all events. | | `folderIds` | string | No | Restrict delivery to notes in these folders or their subfolders, comma-separated folder IDs (max 100). Omit for every note matching scopes. | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook endpoint ID | | `url` | string | The HTTPS URL deliveries are sent to | | `urlRedacted` | boolean | Whether the returned URL was reduced to its origin because the caller is not the endpoint creator | | `events` | array | Event names this endpoint is subscribed to | | `folderIds` | array | Folder IDs delivery is restricted to, or an empty array when unrestricted | | `scopes` | array | Which notes this endpoint receives events for | | `createdByName` | string | Name of the user who created the endpoint | | `createdByEmail` | string | Email of the user who created the endpoint | | `enabled` | boolean | Whether deliveries are active | | `createdAt` | string | Creation timestamp | | `signingSecret` | string | Secret for verifying delivery signatures (Standard Webhooks HMAC-SHA256). Returned only here — store it securely. | ### Granola List Webhook Endpoints [#granola-list-webhook-endpoints] Lists the Granola webhook endpoints the API key can manage. A personal key sees the endpoints it created; a workspace admin sees every endpoint in the workspace. Signing secrets are never included. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------- | | `apiKey` | string | Yes | Granola API key | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------------------------- | | `webhookEndpoints` | array | List of webhook endpoints | | ↳ `id` | string | Webhook endpoint ID | | ↳ `url` | string | The HTTPS URL deliveries are sent to, reduced to its origin when urlRedacted is true | | ↳ `urlRedacted` | boolean | Whether the URL was reduced to its origin because the caller is not the endpoint creator | | ↳ `events` | array | Event names this endpoint is subscribed to | | ↳ `folderIds` | array | Folder IDs delivery is restricted to, or an empty array when unrestricted | | ↳ `scopes` | array | Which notes this endpoint receives events for | | ↳ `createdByName` | string | Name of the user who created the endpoint | | ↳ `createdByEmail` | string | Email of the user who created the endpoint | | ↳ `enabled` | boolean | Whether deliveries are active | | ↳ `createdAt` | string | Creation timestamp | ### Granola Update Webhook Endpoint [#granola-update-webhook-endpoint] Updates a Granola webhook endpoint. Each supplied field replaces its current value; omitted fields are left unchanged. Use enabled to pause or resume deliveries. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `webhookEndpointId` | string | Yes | The webhook endpoint ID (e.g., whe\_2mKr8fQxLp7Ta3) | | `url` | string | No | New HTTPS URL to deliver events to. Omit to leave unchanged. | | `scopes` | string | No | Replacement scopes, comma-separated: personal, public. Omit to leave unchanged. A workspace-managed endpoint accepts only "workspace". | | `events` | string | No | Replacement event subscriptions, comma-separated: note.generated, note.edited, note.access\_granted. Omit to leave unchanged. | | `folderIds` | string | No | Replacement folder filter, comma-separated folder IDs (max 100). Pass "\[]" to remove the filter. Omit to leave unchanged. | | `enabled` | boolean | No | Pause (false) or resume (true) deliveries. Events that occur while paused are not delivered later. Omit to leave unchanged. | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------------------------------------------- | | `id` | string | Webhook endpoint ID | | `url` | string | The HTTPS URL deliveries are sent to | | `urlRedacted` | boolean | Whether the returned URL was reduced to its origin because the caller is not the endpoint creator | | `events` | array | Event names this endpoint is subscribed to | | `folderIds` | array | Folder IDs delivery is restricted to, or an empty array when unrestricted | | `scopes` | array | Which notes this endpoint receives events for | | `createdByName` | string | Name of the user who created the endpoint | | `createdByEmail` | string | Email of the user who created the endpoint | | `enabled` | boolean | Whether deliveries are active | | `createdAt` | string | Creation timestamp | ### Granola Delete Webhook Endpoint [#granola-delete-webhook-endpoint] Deletes a Granola webhook endpoint by ID, stopping its event deliveries immediately. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Granola API key | | `webhookEndpointId` | string | Yes | The webhook endpoint ID (e.g., whe\_2mKr8fQxLp7Ta3) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `id` | string | ID of the deleted webhook endpoint | | `deleted` | boolean | Whether the endpoint was deleted | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Granola Events [#granola-events] Trigger workflow on any Granola note event #### Configuration [#configuration] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Your Granola API key. Used to register the webhook endpoint on deploy and remove it on undeploy. | | `scopes` | string | No | Comma-separated scopes deciding which notes send events: personal, public. With a Workspace API key pass exactly "workspace". Defaults to "personal, public". | | `folderIds` | string | No | Optional comma-separated folder IDs (max 100). Deliveries are restricted to notes in these folders or their subfolders. Leave blank for every note matching the scopes. | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `event_id` | string | Unique ID for the event. Retries of the same delivery reuse it. | | `event_type` | string | Which event occurred: note.generated, note.edited, or note.access\_granted. | | `note_id` | string | ID of the note the event is about (e.g., not\_1d3tmYTlCICgjy). Fetch it with the Get Note operation. | | `occurred_at` | string | ISO 8601 timestamp of when the event occurred. | | `changed_fields` | json | Note fields that changed. Present on note.edited events (currently always \["summary"]); null otherwise. | | `payload` | json | Full raw webhook body as delivered by Granola. | *** ### Granola Note Access Granted [#granola-note-access-granted] Trigger workflow when a Granola note is shared with you, directly or via a folder #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Your Granola API key. Used to register the webhook endpoint on deploy and remove it on undeploy. | | `scopes` | string | No | Comma-separated scopes deciding which notes send events: personal, public. With a Workspace API key pass exactly "workspace". Defaults to "personal, public". | | `folderIds` | string | No | Optional comma-separated folder IDs (max 100). Deliveries are restricted to notes in these folders or their subfolders. Leave blank for every note matching the scopes. | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `event_id` | string | Unique ID for the event. Retries of the same delivery reuse it. | | `event_type` | string | Which event occurred: note.generated, note.edited, or note.access\_granted. | | `note_id` | string | ID of the note the event is about (e.g., not\_1d3tmYTlCICgjy). Fetch it with the Get Note operation. | | `occurred_at` | string | ISO 8601 timestamp of when the event occurred. | | `changed_fields` | json | Note fields that changed. Present on note.edited events (currently always \["summary"]); null otherwise. | | `payload` | json | Full raw webhook body as delivered by Granola. | *** ### Granola Note Edited [#granola-note-edited] Trigger workflow when a Granola note summary is edited or regenerated #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Your Granola API key. Used to register the webhook endpoint on deploy and remove it on undeploy. | | `scopes` | string | No | Comma-separated scopes deciding which notes send events: personal, public. With a Workspace API key pass exactly "workspace". Defaults to "personal, public". | | `folderIds` | string | No | Optional comma-separated folder IDs (max 100). Deliveries are restricted to notes in these folders or their subfolders. Leave blank for every note matching the scopes. | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `event_id` | string | Unique ID for the event. Retries of the same delivery reuse it. | | `event_type` | string | Which event occurred: note.generated, note.edited, or note.access\_granted. | | `note_id` | string | ID of the note the event is about (e.g., not\_1d3tmYTlCICgjy). Fetch it with the Get Note operation. | | `occurred_at` | string | ISO 8601 timestamp of when the event occurred. | | `changed_fields` | json | Note fields that changed. Present on note.edited events (currently always \["summary"]); null otherwise. | | `payload` | json | Full raw webhook body as delivered by Granola. | *** ### Granola Note Generated [#granola-note-generated] Trigger workflow when the first AI summary for a Granola note is generated #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Your Granola API key. Used to register the webhook endpoint on deploy and remove it on undeploy. | | `scopes` | string | No | Comma-separated scopes deciding which notes send events: personal, public. With a Workspace API key pass exactly "workspace". Defaults to "personal, public". | | `folderIds` | string | No | Optional comma-separated folder IDs (max 100). Deliveries are restricted to notes in these folders or their subfolders. Leave blank for every note matching the scopes. | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `event_id` | string | Unique ID for the event. Retries of the same delivery reuse it. | | `event_type` | string | Which event occurred: note.generated, note.edited, or note.access\_granted. | | `note_id` | string | ID of the note the event is about (e.g., not\_1d3tmYTlCICgjy). Fetch it with the Get Note operation. | | `occurred_at` | string | ISO 8601 timestamp of when the event occurred. | | `changed_fields` | json | Note fields that changed. Present on note.edited events (currently always \["summary"]); null otherwise. | | `payload` | json | Full raw webhook body as delivered by Granola. | --- # Greenhouse (/integrations/greenhouse) {/* MANUAL-CONTENT-START:intro */} Use [Greenhouse](https://www.greenhouse.com/) to read candidates, jobs, applications, users, and hiring-pipeline reference data. Webhook triggers can start workflows from recruiting events. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Read and manage candidates, applications, notes, attachments, and tags with Harvest v3 OAuth. Retrieve jobs, hiring teams, interviews, scorecards, offers, and configuration resources with cursor pagination. Existing Greenhouse webhooks remain available. ## Actions [#actions] ### Greenhouse List Candidates [#greenhouse-list-candidates] Lists one page of candidates with cursor pagination and documented filters. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `last_activity_at` | json | No | Last activity at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `custom_field_option_id` | number | No | Custom field option ID | | `private` | boolean | No | Candidate or custom-field privacy flag; for candidate listing, false excludes private candidates. | | `email` | string | No | Email | | `tag` | string | No | Tag | #### Output [#output] | Parameter | Type | Description | | ------------ | ----- | ----------------------- | | `candidates` | array | candidates on this page | ### Greenhouse Get Candidate [#greenhouse-get-candidate] Retrieves one candidate by ID using the v3 list endpoint. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Create Candidate [#greenhouse-create-candidate] Creates a candidate profile and optionally its first application. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `first_name` | string | Yes | First name | | `last_name` | string | Yes | Last name | | `preferred_name` | string | No | Preferred name | | `time_zone` | string | No | Greenhouse time-zone identifier (for example, eastern time (us & canada)). | | `company` | string | No | Company | | `title` | string | No | Title | | `can_email` | boolean | No | Whether the candidate consents to email communication. | | `phone_numbers` | array | No | Phone numbers JSON array of objects with value, type. type: home, work, mobile, skype, other. | | `addresses` | array | No | Addresses JSON array of objects with value, type. type: home, work, other. | | `email_addresses` | array | No | Email addresses JSON array of objects with value, type. type: personal, work, other. | | `website_addresses` | array | No | Website addresses JSON array of objects with value, type. type: personal, company, portfolio, blog, other. | | `social_media_addresses` | array | No | Social media addresses JSON array of objects with value. | | `tags` | array | No | Tags JSON array of string values. | | `linked_user_ids` | array | No | Linked Greenhouse user IDs as a JSON array of integers. | | `custom_fields` | array | No | JSON array of \{name\_key or custom\_field\_id, value}; use exactly one identifier per entry. Values follow the field type; null clears a value. JSON array of objects with name\_key, custom\_field\_id, value. | | `application` | json | No | Optional first application as JSON: \{job\_id, initial\_stage\_id?, source\_id?, recruiter\_id?, coordinator\_id?, referrer\_id?, created\_at?, custom\_fields?}, or \{prospect:true, job\_ids?, prospect\_pool\_id?, prospect\_pool\_stage\_id?, prospect\_owner\_id?, prospective\_department\_id?, prospective\_office\_id?, source\_id?, recruiter\_id?, coordinator\_id?, referrer\_id?, created\_at?, custom\_fields?}. | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Update Candidate [#greenhouse-update-candidate] Updates selected candidate fields. Read the current candidate first: supplied arrays replace the entire existing collection. Send the complete desired array, or \[] to remove all entries. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Yes | Greenhouse resource ID | | `first_name` | string | No | First name | | `last_name` | string | No | Last name | | `preferred_name` | string | No | Preferred name | | `time_zone` | string | No | Greenhouse time-zone identifier (for example, eastern time (us & canada)). | | `company` | string | No | Company | | `title` | string | No | Title | | `is_private` | boolean | No | Restrict candidate visibility to users with private-candidate access. | | `can_email` | boolean | No | Whether the candidate consents to email communication. | | `phone_numbers` | array | No | Phone numbers JSON array of objects with value, type. type: home, work, mobile, skype, other. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `addresses` | array | No | Addresses JSON array of objects with value, type. type: home, work, other. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `email_addresses` | array | No | Email addresses JSON array of objects with value, type. type: personal, work, other. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `website_addresses` | array | No | Website addresses JSON array of objects with value, type. type: personal, company, portfolio, blog, other. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `social_media_addresses` | array | No | Social media addresses JSON array of objects with value. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `tags` | array | No | Tags JSON array of string values. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `linked_user_ids` | array | No | Linked Greenhouse user IDs as a JSON array of integers. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | | `custom_fields` | array | No | JSON array of \{name\_key or custom\_field\_id, value}; use exactly one identifier per entry. Values follow the field type; null clears a value. JSON array of objects with name\_key, custom\_field\_id, value. Read first and send the full desired collection; this replaces all existing entries. Use \[] to clear it. | #### Output [#output-3] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Delete Candidate [#greenhouse-delete-candidate] Delete candidate using Greenhouse Harvest v3. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-4] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Applications [#greenhouse-list-applications] Lists one page of applications with cursor pagination and documented filters. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `prospective_job_ids` | string | No | Prospective job IDs Comma-separated values (maximum 50). | | `job_post_ids` | string | No | Job post IDs Comma-separated values (maximum 50). | | `source_ids` | string | No | Source IDs Comma-separated values (maximum 50). | | `referrer_ids` | string | No | Referrer IDs Comma-separated values (maximum 50). | | `stage_ids` | string | No | Stage IDs Comma-separated values (maximum 50). | | `job_interview_stage_ids` | string | No | Job interview stage IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `status` | string | No | Status Allowed: rejected, hired, converted, active. | | `stage_name` | string | No | Stage name | | `custom_field_option_id` | number | No | Custom field option ID | | `last_activity_at` | json | No | Last activity at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `prospect` | boolean | No | Filter by prospect status: true for prospect applications, false for candidate applications. Omit to include both. | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ----- | ------------------------- | | `applications` | array | applications on this page | ### Greenhouse Get Application [#greenhouse-get-application] Retrieves one application by ID using the v3 list endpoint. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-6] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Create Application [#greenhouse-create-application] Creates a job application or prospect application for an existing candidate. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `source_id` | number | No | Source ID | | `recruiter_id` | number | No | Recruiter ID | | `coordinator_id` | number | No | Coordinator ID | | `referrer_id` | number | No | Referrer ID | | `created_at` | string | No | Creation time in ISO 8601 format | | `custom_fields` | array | No | JSON array of \{name\_key or custom\_field\_id, value}; use exactly one identifier per entry. Values follow the field type; null clears a value. JSON array of objects with name\_key, custom\_field\_id, value. | | `candidate_id` | number | Yes | Candidate ID to create the application for. | | `job_id` | number | No | Job ID | | `initial_stage_id` | number | No | Initial stage ID | | `prospect` | boolean | No | Whether this is a prospect application. Set true to use prospect placement fields instead of job\_id. | | `job_ids` | array | No | Job IDs for a prospect as a JSON array of integers. Requires prospect=true. | | `prospect_pool_id` | number | No | Prospect pool ID | | `prospect_pool_stage_id` | number | No | Prospect pool stage ID | | `prospect_owner_id` | number | No | Prospect owner ID | | `prospective_department_id` | number | No | Prospective department ID | | `prospective_office_id` | number | No | Prospective office ID | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Update Application [#greenhouse-update-application] Update application using Greenhouse Harvest v3. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Yes | Greenhouse resource ID | | `source_id` | number | No | Source ID | | `referrer_id` | number | No | Referrer ID | | `recruiter_id` | number | No | Recruiter ID | | `coordinator_id` | number | No | Coordinator ID | | `prospect_pool_id` | number | No | Prospect pool ID | | `prospect_stage_id` | number | No | Prospect stage ID | | `rejected_at` | string | No | Rejected at (YYYY-MM-DD) | | `created_at` | string | No | Application creation date in YYYY-MM-DD format. | | `custom_fields` | array | No | JSON array of \{name\_key or custom\_field\_id, value}; use exactly one identifier per entry. Values follow the field type; null clears a value. JSON array of objects with name\_key, custom\_field\_id, value. | #### Output [#output-8] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Move Application [#greenhouse-move-application] Moves or advances an application using its current stage as a guard; configured stage rules may send emails. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `id` | number | Yes | Greenhouse resource ID | | `from_stage_id` | number | Yes | Current application stage ID, required to guard against a stale move. Use stage\_id from the application. | | `to_stage_id` | number | No | Target stage ID for a move within the current job. Use to\_job\_id when transferring to another job. | | `to_job_id` | number | No | Destination job ID when transferring the application to another job. | | `email_from_user_id` | number | No | User ID to send any automated stage-transition emails from. | #### Output [#output-9] No output fields. ### Greenhouse Convert Prospect [#greenhouse-convert-prospect] Converts a prospect application into a new candidate application on a job already associated with the prospect. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | ----------------------------------------------------------------- | | `id` | number | Yes | Greenhouse resource ID | | `job_id` | number | Yes | Job ID already associated with the prospect or its pool. | | `to_job_interview_stage_id` | number | No | Target job interview stage ID; omit to use the job’s first stage. | #### Output [#output-10] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Reject Application [#greenhouse-reject-application] Rejects an application; optionally sends or schedules the configured rejection email. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | number | Yes | Greenhouse resource ID | | `rejection_reason_id` | number | Yes | Rejection reason ID | | `notes` | string | No | Notes | | `rejection_email` | json | No | Optional JSON object \{send\_email\_at, email\_template\_id, email\_from\_user\_id}; supplying it sends or schedules a rejection email. | | `custom_fields` | array | No | JSON array of \{name\_key or custom\_field\_id, value}; use exactly one identifier per entry. Values follow the field type; null clears a value. JSON array of objects with name\_key, custom\_field\_id, value. | #### Output [#output-11] No output fields. ### Greenhouse Unreject Application [#greenhouse-unreject-application] Restores a rejected application to its previous stage and clears its rejection reason and notes. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | number | Yes | Greenhouse resource ID | #### Output [#output-12] No output fields. ### Greenhouse Hire Application [#greenhouse-hire-application] Marks an application hired and closes its opening; provide opening\_id when the job has multiple open openings. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------ | | `id` | number | Yes | Greenhouse resource ID | | `start_date` | string | No | Start date (ISO 8601) | | `opening_id` | number | No | Opening ID; required when hiring into a job with multiple open openings. | | `close_reason_id` | number | No | Close reason ID | #### Output [#output-13] No output fields. ### Greenhouse Delete Application [#greenhouse-delete-application] Delete application using Greenhouse Harvest v3. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-14] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Jobs [#greenhouse-list-jobs] Lists one page of jobs with cursor pagination and documented filters. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `opened_at` | json | No | Opened at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `closed_at` | json | No | Closed at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `requisition_id` | string | No | Requisition ID | | `department_id` | number | No | Department ID | | `office_id` | number | No | Office ID | | `custom_field_option_id` | number | No | Custom field option ID | | `confidential` | boolean | No | Confidential | | `status` | string | No | Status Allowed: open, draft, closed. | #### Output [#output-15] | Parameter | Type | Description | | --------- | ----- | ----------------- | | `jobs` | array | jobs on this page | ### Greenhouse Get Job [#greenhouse-get-job] Retrieves one job by ID using the v3 list endpoint. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-16] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Job Interview Stages [#greenhouse-list-job-interview-stages] Lists one page of job interview stages with cursor pagination and documented filters. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `active` | boolean | No | Active | #### Output [#output-17] | Parameter | Type | Description | | ---------------------- | ----- | --------------------------------- | | `job_interview_stages` | array | job interview stages on this page | ### Greenhouse List Application Stages [#greenhouse-list-application-stages] Lists one page of application stages with cursor pagination and documented filters. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `job_interview_stage_ids` | string | No | Job interview stage IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `current` | boolean | No | Current | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ----- | ------------------------------- | | `application_stages` | array | application stages on this page | ### Greenhouse List Job Hiring Managers [#greenhouse-list-job-hiring-managers] Lists one page of job hiring managers with cursor pagination and documented filters. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `user_ids` | string | No | User IDs Comma-separated values (maximum 50). | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-19] | Parameter | Type | Description | | --------------------- | ----- | -------------------------------- | | `job_hiring_managers` | array | job hiring managers on this page | ### Greenhouse List Job Owners [#greenhouse-list-job-owners] Lists one page of job owners with cursor pagination and documented filters. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `user_ids` | string | No | User IDs Comma-separated values (maximum 50). | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `type` | string | No | Type Allowed: sourcer, recruiter, coordinator. | #### Output [#output-20] | Parameter | Type | Description | | ------------ | ----- | ----------------------- | | `job_owners` | array | job owners on this page | ### Greenhouse List Openings [#greenhouse-list-openings] Lists one page of openings with cursor pagination and documented filters. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `close_reason_ids` | string | No | Close reason IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `opened_at` | json | No | Opened at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `closed_at` | json | No | Closed at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `custom_field_option_id` | number | No | Custom field option ID | | `open` | boolean | No | Open | | `opening_id` | string | No | Filter by the opening's identifier. | #### Output [#output-21] | Parameter | Type | Description | | ---------- | ----- | --------------------- | | `openings` | array | openings on this page | ### Greenhouse List Interviews [#greenhouse-list-interviews] Lists one page of interviews with cursor pagination and documented filters. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `job_interview_ids` | string | No | Job interview IDs Comma-separated values (maximum 50). | | `organizer_ids` | string | No | Organizer IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `starts_at` | json | No | Starts at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `ends_at` | json | No | Ends at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `all_day_start_on` | json | No | All day start on filter as JSON with gte, lte, gt, lt keys and YYYY-MM-DD dates, for example \{"gte":"2026-01-01"}. | | `all_day_end_on` | json | No | All day end on filter as JSON with gte, lte, gt, lt keys and YYYY-MM-DD dates, for example \{"gte":"2026-01-01"}. | | `external_event_id` | string | No | External event ID | | `status` | string | No | Status Allowed: to\_be\_scheduled, scheduled, awaiting\_feedback, complete, skipped, collect\_feedback, to\_be\_sent, sent, received. | #### Output [#output-22] | Parameter | Type | Description | | ------------ | ----- | ----------------------- | | `interviews` | array | interviews on this page | ### Greenhouse List Scorecards [#greenhouse-list-scorecards] Lists one page of scorecards with cursor pagination and documented filters. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `interview_kit_ids` | string | No | Interview kit IDs Comma-separated values (maximum 50). | | `submitter_ids` | string | No | Submitter IDs Comma-separated values (maximum 50). | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `interviewer_ids` | string | No | Interviewer IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `interviewed_at` | json | No | Interviewed at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `submitted_at` | json | No | Submitted at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `status` | string | No | Status Allowed: draft, complete. | #### Output [#output-23] | Parameter | Type | Description | | ------------ | ----- | ----------------------- | | `scorecards` | array | scorecards on this page | ### Greenhouse List Offers [#greenhouse-list-offers] Lists one page of offers with cursor pagination and documented filters. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `opening_ids` | string | No | Opening IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `current_only` | boolean | No | Current only | | `custom_field_option_id` | number | No | Custom field option ID | | `status` | string | No | Status Allowed: Created, Accepted, Rejected, Deprecated. | | `resolved_at` | json | No | Resolved at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `sent_on` | json | No | Sent on filter as JSON with gte, lte, gt, lt keys and YYYY-MM-DD dates, for example \{"gte":"2026-01-01"}. | | `starts_on` | json | No | Starts on filter as JSON with gte, lte, gt, lt keys and YYYY-MM-DD dates, for example \{"gte":"2026-01-01"}. | #### Output [#output-24] | Parameter | Type | Description | | --------- | ----- | ------------------- | | `offers` | array | offers on this page | ### Greenhouse List Notes [#greenhouse-list-notes] Lists one page of notes with cursor pagination and documented filters. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `user_ids` | string | No | User IDs Comma-separated values (maximum 50). | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `type` | string | No | Type Comma-separated values (maximum 50). | | `visibility` | string | No | Visibility Allowed: admin\_only\_visible, privately\_visible, publicly\_visible. | #### Output [#output-25] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `notes` | array | notes on this page | ### Greenhouse Create Note [#greenhouse-create-note] Creates a candidate note or activity entry, or logs an email without sending it. #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `candidate_id` | number | Yes | Candidate ID whose activity feed receives the note. | | `body` | string | Yes | Body | | `subject` | string | No | Note subject; required when note\_type is EMAIL. | | `note_type` | string | Yes | Note classification: NOTE, ACTIVITY, or EMAIL. EMAIL logs an email and requires subject, email\_from, email\_to, and email\_cc. Allowed: EMAIL, ACTIVITY, NOTE. | | `user_id` | number | No | User ID | | `email_from` | array | No | JSON array of sender addresses, required only when note\_type is EMAIL. JSON array of string values. | | `email_to` | array | No | JSON array of recipient addresses, required only when note\_type is EMAIL. JSON array of string values. | | `email_cc` | array | No | JSON array of CC addresses (may be empty), required only when note\_type is EMAIL. JSON array of string values. | | `visibility` | string | Yes | Visibility Allowed: admin\_only, private, public. | | `application_id` | number | No | Application ID | #### Output [#output-26] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Attachments [#greenhouse-list-attachments] Lists one page of attachments with cursor pagination and documented filters. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `application_ids` | string | No | Application IDs Comma-separated values (maximum 50). | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `type` | string | No | Type Allowed: resume, cover\_letter, take\_home\_test, offer\_packet, offer\_letter, signed\_offer\_letter, other, form\_attachment, midfunnel\_agreement, automated\_agreement. | #### Output [#output-27] | Parameter | Type | Description | | ------------- | ----- | ------------------------ | | `attachments` | array | attachments on this page | ### Greenhouse Create Attachment [#greenhouse-create-attachment] Attaches a file to an application. A new resume or cover letter reclassifies the previous attachment of that type as other. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `application_id` | number | Yes | Application ID | | `filename` | string | Yes | Filename | | `type` | string | Yes | Type Allowed: resume, cover\_letter, take\_home\_test, offer\_packet, offer\_letter, signed\_offer\_letter, other, form\_attachment, midfunnel\_agreement, automated\_agreement. | | `content` | string | No | Base64-encoded attachment content. Supply exactly one of content or url. | | `url` | string | No | Public attachment URL for Greenhouse to fetch. Supply exactly one of url or content. | | `visibility` | string | No | Visibility Allowed: admin\_only, private, public. | #### Output [#output-28] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Delete Attachment [#greenhouse-delete-attachment] Delete attachment using Greenhouse Harvest v3. #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-29] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Candidate Tags [#greenhouse-list-candidate-tags] Lists one page of candidate tags with cursor pagination and documented filters. #### Input [#input-30] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-30] | Parameter | Type | Description | | ---------------- | ----- | --------------------------- | | `candidate_tags` | array | candidate tags on this page | ### Greenhouse Create Candidate Tag [#greenhouse-create-candidate-tag] Create candidate tag using Greenhouse Harvest v3. #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `name` | string | Yes | Name | #### Output [#output-31] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Applied Candidate Tags [#greenhouse-list-applied-candidate-tags] Lists one page of applied candidate tags with cursor pagination and documented filters. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `candidate_tag_ids` | string | No | Candidate tag IDs Comma-separated values (maximum 50). | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-32] | Parameter | Type | Description | | ------------------------ | ----- | ----------------------------------- | | `applied_candidate_tags` | array | applied candidate tags on this page | ### Greenhouse Apply Candidate Tag [#greenhouse-apply-candidate-tag] Apply candidate tag using Greenhouse Harvest v3. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------- | | `candidate_id` | number | Yes | Candidate ID to tag. | | `candidate_tag_id` | number | Yes | Candidate tag ID | #### Output [#output-33] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse Remove Candidate Tag [#greenhouse-remove-candidate-tag] Removes an applied tag by its applied\_candidate\_tags row ID, leaving the tag dictionary intact. #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-34] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Candidate Educations [#greenhouse-list-candidate-educations] Lists one page of candidate educations with cursor pagination and documented filters. #### Input [#input-35] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `start_at` | json | No | Start at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `end_at` | json | No | End at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. | | `latest` | boolean | No | Latest | #### Output [#output-35] | Parameter | Type | Description | | ---------------------- | ----- | --------------------------------- | | `candidate_educations` | array | candidate educations on this page | ### Greenhouse List Candidate Employments [#greenhouse-list-candidate-employments] Lists one page of candidate employments with cursor pagination and documented filters. #### Input [#input-36] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `candidate_ids` | string | No | Candidate IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `latest` | boolean | No | Latest | #### Output [#output-36] | Parameter | Type | Description | | ----------------------- | ----- | ---------------------------------- | | `candidate_employments` | array | candidate employments on this page | ### Greenhouse List Users [#greenhouse-list-users] Lists one page of users with cursor pagination and documented filters. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `agency_ids` | string | No | Agency IDs Comma-separated values (maximum 50). | | `office_ids` | string | No | Office IDs Comma-separated values (maximum 50). | | `department_ids` | string | No | Department IDs Comma-separated values (maximum 50). | | `linked_candidate_ids` | string | No | Linked candidate IDs Comma-separated values (maximum 50). | | `interviewer_tag_ids` | string | No | Interviewer tag IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `employee_ids` | string | No | Employee IDs Comma-separated values (maximum 50). | | `custom_field_option_id` | number | No | Custom field option ID | | `deactivated` | boolean | No | Deactivated | | `primary_email` | string | No | Primary email | | `external_office_id` | string | No | External office ID | | `external_department_id` | string | No | External department ID | | `show_service_accounts` | boolean | No | Show service accounts | #### Output [#output-37] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `users` | array | users on this page | ### Greenhouse Get User [#greenhouse-get-user] Retrieves one user by ID using the v3 list endpoint. #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | `id` | string | Yes | Greenhouse resource ID | #### Output [#output-38] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Message returned by Harvest v3 | | `application_stages` | json | Application Stages records (id, created\_at, updated\_at, application\_id, job\_interview\_stage\_id, entered\_at, exited\_at, days\_in\_stage, current) | | `count` | number | Records returned on this page | | `nextCursor` | string | Opaque cursor from the next Link header; null at the end | | `hasMore` | boolean | Whether another page is available | | `applications` | json | Applications records (id, created\_at, updated\_at, agency\_note\_id, candidate\_id, coordinator\_id, job\_id, job\_post\_id, recruiter\_id, referrer\_id, rejection\_reason\_id, source\_id, stage\_id, job\_interview\_stage\_id, stage\_name, status, needs\_decision, prospect, rejected\_at, last\_activity\_at, location\_address, answers, prospective\_job\_ids, custom\_fields) | | `id` | number | Id returned by Harvest v3 | | `created_at` | string | Created At returned by Harvest v3 | | `updated_at` | string | Updated At returned by Harvest v3 | | `agency_note_id` | number | Agency Note ID returned by Harvest v3 | | `candidate_id` | number | Candidate ID returned by Harvest v3 | | `coordinator_id` | number | Coordinator ID returned by Harvest v3 | | `job_id` | number | Job ID returned by Harvest v3 | | `job_post_id` | number | Job Post ID returned by Harvest v3 | | `recruiter_id` | number | Recruiter ID returned by Harvest v3 | | `referrer_id` | number | Referrer ID returned by Harvest v3 | | `rejection_reason_id` | number | Rejection Reason ID returned by Harvest v3 | | `source_id` | number | Source ID returned by Harvest v3 | | `stage_id` | number | Stage ID returned by Harvest v3 | | `job_interview_stage_id` | number | Job Interview Stage ID returned by Harvest v3 | | `stage_name` | string | Stage Name returned by Harvest v3 | | `status` | string | Status returned by Harvest v3 | | `needs_decision` | boolean | Needs Decision returned by Harvest v3 | | `prospect` | boolean | Prospect returned by Harvest v3 | | `rejected_at` | string | Rejected At returned by Harvest v3 | | `last_activity_at` | string | Last Activity At returned by Harvest v3 | | `location_address` | string | Location Address returned by Harvest v3 | | `answers` | json | Answers returned by Harvest v3 | | `prospective_job_ids` | json | Prospective Job IDs returned by Harvest v3 | | `custom_fields` | json | Custom Fields returned by Harvest v3 | | `applied_candidate_tags` | json | Applied Candidate Tags records (id, created\_at, updated\_at, candidate\_tag\_id, candidate\_id) | | `attachments` | json | Attachments records (id, created\_at, updated\_at, application\_id, candidate\_id, type, filename, url) | | `candidate_educations` | json | Candidate Educations records (id, created\_at, updated\_at, candidate\_id, school\_name\_custom\_field\_option\_id, degree\_custom\_field\_option\_id, discipline\_custom\_field\_option\_id, start\_at, end\_at, latest, start\_date\_month, start\_date\_year, end\_date\_month, end\_date\_year) | | `candidate_employments` | json | Candidate Employments records (id, created\_at, updated\_at, candidate\_id, company\_name, title, start\_date, end\_date, latest) | | `candidate_tags` | json | Candidate Tags records (id, created\_at, updated\_at, name) | | `candidates` | json | Candidates records (id, created\_at, updated\_at, first\_name, last\_name, preferred\_name, company, title, last\_activity\_at, private, can\_email, time\_zone, tags, linked\_user\_ids, phone\_numbers, addresses, email\_addresses, website\_addresses, social\_media\_addresses, custom\_fields) | | `first_name` | string | First Name returned by Harvest v3 | | `last_name` | string | Last Name returned by Harvest v3 | | `preferred_name` | string | Preferred Name returned by Harvest v3 | | `company` | string | Company returned by Harvest v3 | | `title` | string | Title returned by Harvest v3 | | `private` | boolean | Private returned by Harvest v3 | | `can_email` | boolean | Can Email returned by Harvest v3 | | `time_zone` | string | Time Zone returned by Harvest v3 | | `tags` | json | Tags returned by Harvest v3 | | `linked_user_ids` | json | Linked User IDs returned by Harvest v3 | | `phone_numbers` | json | Phone Numbers returned by Harvest v3 | | `addresses` | json | Addresses returned by Harvest v3 | | `email_addresses` | json | Email Addresses returned by Harvest v3 | | `website_addresses` | json | Website Addresses returned by Harvest v3 | | `social_media_addresses` | json | Social Media Addresses returned by Harvest v3 | | `close_reasons` | json | Close Reasons records (id, created\_at, updated\_at, name) | | `custom_field_options` | json | Custom Field Options records (id, created\_at, updated\_at, custom\_field\_id, name, external\_id, sort\_order, active) | | `departments` | json | Departments records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id) | | `email_templates` | json | Email Templates records (id, created\_at, updated\_at, email\_type, subject, body, user\_id, name, description, recipients, default, html\_body, office\_anywhere, from\_type, cc\_recruiter, cc\_coordinator) | | `interviews` | json | Interviews records (id, created\_at, updated\_at, job\_id, application\_id, job\_interview\_id, starts\_at, ends\_at, location, status, organizer\_id, scheduled\_at, all\_day\_start\_on, all\_day\_end\_on, external\_event\_id, video\_conferencing\_url, availability\_received\_at) | | `job_hiring_managers` | json | Job Hiring Managers records (id, created\_at, updated\_at, user\_id, job\_id) | | `job_interview_stages` | json | Job Interview Stages records (id, created\_at, updated\_at, job\_id, sort\_order, name, active) | | `job_owners` | json | Job Owners records (id, created\_at, updated\_at, job\_id, user\_id, type, responsible) | | `jobs` | json | Jobs records (id, created\_at, updated\_at, name, requisition\_id, notes, confidential, status, opened\_at, closed\_at, is\_template, copied\_from\_id, department\_id, external\_department\_id, office\_ids, external\_office\_ids, custom\_fields) | | `name` | string | Name returned by Harvest v3 | | `requisition_id` | string | Requisition ID returned by Harvest v3 | | `notes` | json | Notes returned by Harvest v3 | | `confidential` | boolean | Confidential returned by Harvest v3 | | `opened_at` | string | Opened At returned by Harvest v3 | | `closed_at` | string | Closed At returned by Harvest v3 | | `is_template` | boolean | Is Template returned by Harvest v3 | | `copied_from_id` | number | Copied From ID returned by Harvest v3 | | `department_id` | number | Department ID returned by Harvest v3 | | `external_department_id` | string | External Department ID returned by Harvest v3 | | `office_ids` | json | Office IDs returned by Harvest v3 | | `external_office_ids` | json | External Office IDs returned by Harvest v3 | | `offers` | json | Offers records (id, created\_at, updated\_at, version, application\_id, job\_id, candidate\_id, opening\_id, status, starts\_on, sent\_on, resolved\_at, custom\_fields) | | `offices` | json | Offices records (id, created\_at, updated\_at, name, parent\_id, external\_id, external\_parent\_id, location, primary\_in\_house\_contact\_user\_id) | | `openings` | json | Openings records (id, created\_at, updated\_at, job\_id, opened\_at, closed\_at, sort\_order, opening\_id, application\_id, close\_reason\_id, target\_start\_on, open, custom\_fields) | | `prospect_pool_stages` | json | Prospect Pool Stages records (id, created\_at, updated\_at, prospect\_pool\_id, name, sort\_order) | | `prospect_pools` | json | Prospect Pools records (id, created\_at, updated\_at, name, active, description, department\_ids, office\_ids, job\_ids) | | `referrers` | json | Referrers records (id, created\_at, updated\_at, user\_id, name) | | `rejection_reasons` | json | Rejection Reasons records (id, created\_at, updated\_at, name, type) | | `scorecards` | json | Scorecards records (id, created\_at, updated\_at, interview\_kit\_id, interviewer\_id, interviewed\_at, notes, notes\_with\_tags, submitter\_id, candidate\_rating, private\_notes, private\_notes\_with\_tags, status, public\_notes, public\_notes\_with\_tags, application\_id, submitted\_at) | | `sources` | json | Sources records (id, created\_at, updated\_at, name, type) | | `users` | json | Users records (id, created\_at, updated\_at, first\_name, last\_name, primary\_email, job\_title, agency\_id, name, deactivated, site\_admin, employee\_id, linked\_candidate\_ids, office\_ids, department\_ids, external\_office\_ids, external\_department\_ids, interviewer\_tags, emails, custom\_fields) | | `primary_email` | string | Primary Email returned by Harvest v3 | | `job_title` | string | Job Title returned by Harvest v3 | | `agency_id` | number | Agency ID returned by Harvest v3 | | `deactivated` | boolean | Deactivated returned by Harvest v3 | | `site_admin` | boolean | Site Admin returned by Harvest v3 | | `employee_id` | string | Employee ID returned by Harvest v3 | | `linked_candidate_ids` | json | Linked Candidate IDs returned by Harvest v3 | | `department_ids` | json | Department IDs returned by Harvest v3 | | `external_department_ids` | json | External Department IDs returned by Harvest v3 | | `interviewer_tags` | json | Interviewer Tags returned by Harvest v3 | | `emails` | json | Emails returned by Harvest v3 | | `candidate_tag_id` | number | Candidate Tag ID returned by Harvest v3 | | `application_id` | number | Application ID returned by Harvest v3 | | `type` | string | Type returned by Harvest v3 | | `filename` | string | Filename returned by Harvest v3 | | `url` | string | Url returned by Harvest v3 | | `candidate` | json | Created candidate profile with id, names, contact arrays, tags, privacy, custom fields, and timestamps | | `application` | json | Optional first application with id, candidate\_id, job\_id, stage, status, source, recruiter, and timestamps; null when not created | | `body` | string | Body returned by Harvest v3 | | `subject` | string | Subject returned by Harvest v3 | | `user_id` | number | User ID returned by Harvest v3 | | `email_from` | string | Email From returned by Harvest v3 | | `email_to` | string | Email To returned by Harvest v3 | | `email_cc` | json | Email Cc returned by Harvest v3 | | `import_hash` | string | Import Hash returned by Harvest v3 | | `body_with_tags` | string | Body With Tags returned by Harvest v3 | | `visibility` | string | Visibility returned by Harvest v3 | | `email_attachment_file_names` | string | Email Attachment File Names returned by Harvest v3 | ### Greenhouse List Departments [#greenhouse-list-departments] Lists one page of departments with cursor pagination and documented filters. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `parent_id` | number | No | Parent ID | | `external_id` | string | No | External ID | #### Output [#output-39] | Parameter | Type | Description | | ------------- | ----- | ------------------------ | | `departments` | array | departments on this page | ### Greenhouse List Offices [#greenhouse-list-offices] Lists one page of offices with cursor pagination and documented filters. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `parent_id` | number | No | Parent ID | | `external_id` | string | No | External ID | #### Output [#output-40] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `offices` | array | offices on this page | ### Greenhouse List Sources [#greenhouse-list-sources] Lists one page of sources with cursor pagination and documented filters. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-41] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `sources` | array | sources on this page | ### Greenhouse List Referrers [#greenhouse-list-referrers] Lists one page of referrers with cursor pagination and documented filters. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `user_ids` | string | No | User IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-42] | Parameter | Type | Description | | ----------- | ----- | ---------------------- | | `referrers` | array | referrers on this page | ### Greenhouse List Rejection Reasons [#greenhouse-list-rejection-reasons] Lists one page of rejection reasons with cursor pagination and documented filters. #### Input [#input-43] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `include_defaults` | boolean | No | Include defaults | #### Output [#output-43] | Parameter | Type | Description | | ------------------- | ----- | ------------------------------ | | `rejection_reasons` | array | rejection reasons on this page | ### Greenhouse List Close Reasons [#greenhouse-list-close-reasons] Lists one page of close reasons with cursor pagination and documented filters. #### Input [#input-44] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-44] | Parameter | Type | Description | | --------------- | ----- | -------------------------- | | `close_reasons` | array | close reasons on this page | ### Greenhouse List Prospect Pools [#greenhouse-list-prospect-pools] Lists one page of prospect pools with cursor pagination and documented filters. #### Input [#input-45] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `department_ids` | string | No | Department IDs Comma-separated values (maximum 50). | | `office_ids` | string | No | Office IDs Comma-separated values (maximum 50). | | `job_ids` | string | No | Job IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `active` | boolean | No | Active | #### Output [#output-45] | Parameter | Type | Description | | ---------------- | ----- | --------------------------- | | `prospect_pools` | array | prospect pools on this page | ### Greenhouse List Prospect Pool Stages [#greenhouse-list-prospect-pool-stages] Lists one page of prospect pool stages with cursor pagination and documented filters. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `prospect_pool_ids` | string | No | Prospect pool IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | #### Output [#output-46] | Parameter | Type | Description | | ---------------------- | ----- | --------------------------------- | | `prospect_pool_stages` | array | prospect pool stages on this page | ### Greenhouse List Custom Fields [#greenhouse-list-custom-fields] Lists one page of custom fields with cursor pagination and documented filters. #### Input [#input-47] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `field_type` | string | No | Field type Allowed: job, opening, standard, offer, compensation\_frequency, candidate, referral\_question, application, rejection\_question, form, agency\_question, user\_attribute. | | `active` | boolean | No | Active | | `name` | string | No | Name | | `name_key` | string | No | Name key | #### Output [#output-47] | Parameter | Type | Description | | --------------- | ----- | -------------------------- | | `custom_fields` | array | custom fields on this page | ### Greenhouse List Custom Field Options [#greenhouse-list-custom-field-options] Lists one page of custom field options with cursor pagination and documented filters. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `custom_field_ids` | string | No | Custom field IDs Comma-separated values (maximum 50). | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `active` | boolean | No | Active | | `custom_field_key` | string | No | Custom field key | #### Output [#output-48] | Parameter | Type | Description | | ---------------------- | ----- | --------------------------------- | | `custom_field_options` | array | custom field options on this page | ### Greenhouse List Email Templates [#greenhouse-list-email-templates] Lists one page of email templates with cursor pagination and documented filters. #### Input [#input-49] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cursor` | string | No | Opaque nextCursor from the previous page. When set, all other filters and per\_page are ignored. | | `per_page` | number | No | Page size from 1 to 500 (default 100). Each call retrieves one page. | | `ids` | string | No | Ids Comma-separated values (maximum 50). | | `created_at` | json | No | Created at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with updated\_at. | | `updated_at` | json | No | Updated at filter as JSON with gte, lte, gt, lt keys and ISO 8601 values, for example \{"gte":"2026-01-01T00:00:00Z"}. Cannot be combined with created\_at. | | `fields` | string | No | Comma-separated response field names. Omit to return all documented fields. Comma-separated values (maximum 50). | | `email_type` | string | No | Email type | | `from_type` | string | No | From type Allowed: user\_email, organization\_email, my\_email\_address, inviter, organizer, not\_applicable. | #### Output [#output-49] | Parameter | Type | Description | | ----------------- | ----- | ---------------------------- | | `email_templates` | array | email templates on this page | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Greenhouse Candidate Hired [#greenhouse-candidate-hired] Trigger workflow when a candidate is hired #### Configuration [#configuration] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-50] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (hire\_candidate) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `application` | object | application output from the tool | | ↳ `id` | number | Application ID | | ↳ `status` | string | Application status | | ↳ `prospect` | boolean | Whether the applicant is a prospect | | ↳ `applied_at` | string | When the application was submitted | | ↳ `url` | string | Application URL in Greenhouse | | ↳ `current_stage` | object | current\_stage output from the tool | | ↳ `id` | number | Current stage ID | | ↳ `name` | string | Current stage name | | ↳ `candidate` | object | candidate output from the tool | | ↳ `id` | number | Candidate ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `title` | string | Current title | | ↳ `company` | string | Current company | | ↳ `email_addresses` | json | Email addresses | | ↳ `phone_numbers` | json | Phone numbers | | ↳ `recruiter` | json | Assigned recruiter | | ↳ `coordinator` | json | Assigned coordinator | | ↳ `jobs` | json | Associated jobs (array) | | ↳ `source` | object | source output from the tool | | ↳ `id` | number | Source ID | | ↳ `name` | string | Source name when provided by Greenhouse | | ↳ `public_name` | string | Public-facing source name when provided by Greenhouse | | ↳ `offer` | object | offer output from the tool | | ↳ `id` | number | Offer ID | | ↳ `version` | number | Offer version | | ↳ `starts_at` | string | Offer start date | | ↳ `custom_fields` | json | Offer custom fields | | ↳ `custom_fields` | json | Application custom fields | *** ### Greenhouse Candidate Rejected [#greenhouse-candidate-rejected] Trigger workflow when a candidate is rejected #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-51] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (reject\_candidate) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `application` | object | application output from the tool | | ↳ `id` | number | Application ID | | ↳ `status` | string | Application status (rejected) | | ↳ `prospect` | boolean | Whether the applicant is a prospect | | ↳ `applied_at` | string | When the application was submitted | | ↳ `rejected_at` | string | When the candidate was rejected | | ↳ `url` | string | Application URL in Greenhouse | | ↳ `current_stage` | object | current\_stage output from the tool | | ↳ `id` | number | Stage ID where rejected | | ↳ `name` | string | Stage name where rejected | | ↳ `candidate` | object | candidate output from the tool | | ↳ `id` | number | Candidate ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email_addresses` | json | Email addresses | | ↳ `phone_numbers` | json | Phone numbers | | ↳ `jobs` | json | Associated jobs (array) | | ↳ `rejection_reason` | json | Rejection reason object with id, name, and type fields | | ↳ `rejection_details` | json | Rejection details with custom fields | | ↳ `custom_fields` | json | Application custom fields | *** ### Greenhouse Candidate Stage Change [#greenhouse-candidate-stage-change] Trigger workflow when a candidate changes interview stages #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-52] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (candidate\_stage\_change) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `application` | object | application output from the tool | | ↳ `id` | number | Application ID | | ↳ `status` | string | Application status | | ↳ `prospect` | boolean | Whether the applicant is a prospect | | ↳ `applied_at` | string | When the application was submitted | | ↳ `url` | string | Application URL in Greenhouse | | ↳ `current_stage` | object | current\_stage output from the tool | | ↳ `id` | number | Current stage ID | | ↳ `name` | string | Current stage name | | ↳ `interviews` | json | Interviews in this stage | | ↳ `candidate` | object | candidate output from the tool | | ↳ `id` | number | Candidate ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `title` | string | Current title | | ↳ `company` | string | Current company | | ↳ `email_addresses` | json | Email addresses | | ↳ `phone_numbers` | json | Phone numbers | | ↳ `jobs` | json | Associated jobs (array) | | ↳ `source` | object | source output from the tool | | ↳ `id` | number | Source ID | | ↳ `name` | string | Source name when provided by Greenhouse | | ↳ `public_name` | string | Public-facing source name when provided by Greenhouse | | ↳ `custom_fields` | json | Application custom fields | *** ### Greenhouse Job Created [#greenhouse-job-created] Trigger workflow when a new job is created #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-53] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (job\_created) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `job` | object | job output from the tool | | ↳ `id` | number | Job ID | | ↳ `name` | string | Job title | | ↳ `requisition_id` | string | Requisition ID | | ↳ `status` | string | Job status (open, closed, draft) | | ↳ `confidential` | boolean | Whether the job is confidential | | ↳ `created_at` | string | When the job was created | | ↳ `opened_at` | string | When the job was opened | | ↳ `closed_at` | string | When the job was closed | | ↳ `departments` | json | Associated departments | | ↳ `offices` | json | Associated offices | | ↳ `hiring_team` | json | Hiring team (managers, recruiters, etc.) | | ↳ `openings` | json | Job openings | | ↳ `custom_fields` | json | Custom field values | *** ### Greenhouse Job Updated [#greenhouse-job-updated] Trigger workflow when a job is updated #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-54] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (job\_updated) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `job` | object | job output from the tool | | ↳ `id` | number | Job ID | | ↳ `name` | string | Job title | | ↳ `requisition_id` | string | Requisition ID | | ↳ `status` | string | Job status (open, closed, draft) | | ↳ `confidential` | boolean | Whether the job is confidential | | ↳ `created_at` | string | When the job was created | | ↳ `opened_at` | string | When the job was opened | | ↳ `closed_at` | string | When the job was closed | | ↳ `departments` | json | Associated departments | | ↳ `offices` | json | Associated offices | | ↳ `hiring_team` | json | Hiring team (managers, recruiters, etc.) | | ↳ `openings` | json | Job openings | | ↳ `custom_fields` | json | Custom field values | *** ### Greenhouse New Application [#greenhouse-new-application] Trigger workflow when a new application is submitted #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-55] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (new\_candidate\_application) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `application` | object | application output from the tool | | ↳ `id` | number | Application ID | | ↳ `status` | string | Application status | | ↳ `prospect` | boolean | Whether the applicant is a prospect | | ↳ `applied_at` | string | When the application was submitted | | ↳ `url` | string | Application URL in Greenhouse | | ↳ `current_stage` | object | current\_stage output from the tool | | ↳ `id` | number | Current stage ID | | ↳ `name` | string | Current stage name | | ↳ `candidate` | object | candidate output from the tool | | ↳ `id` | number | Candidate ID | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `title` | string | Current title | | ↳ `company` | string | Current company | | ↳ `created_at` | string | When the candidate was created | | ↳ `email_addresses` | json | Email addresses | | ↳ `phone_numbers` | json | Phone numbers | | ↳ `tags` | json | Candidate tags | | ↳ `jobs` | json | Associated jobs (array) | | ↳ `source` | object | source output from the tool | | ↳ `id` | number | Source ID | | ↳ `name` | string | Source name when provided by Greenhouse | | ↳ `public_name` | string | Public-facing source name when provided by Greenhouse | | ↳ `answers` | json | Application question answers | | ↳ `attachments` | json | Application attachments | | ↳ `custom_fields` | json | Application custom fields | *** ### Greenhouse Offer Created [#greenhouse-offer-created] Trigger workflow when a new offer is created #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-56] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type (offer\_created) | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | object | payload output from the tool | | ↳ `id` | number | Offer ID | | ↳ `application_id` | number | Associated application ID | | ↳ `job_id` | number | Associated job ID | | ↳ `user_id` | number | User who created the offer | | ↳ `version` | number | Offer version number | | ↳ `sent_on` | string | When the offer was sent | | ↳ `resolved_at` | string | When the offer was resolved | | ↳ `start_date` | string | Offer start date | | ↳ `notes` | string | Offer notes | | ↳ `offer_status` | string | Offer status | | ↳ `custom_fields` | json | Custom field values | *** ### Greenhouse Webhook (Endpoint Events) [#greenhouse-webhook-endpoint-events] Trigger on whichever event types you select for this URL in Greenhouse. Agent Serve does not filter deliveries for this trigger. #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `secretKey` | string | No | When set, requests must include a valid Signature header (HMAC-SHA256). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. | #### Output [#output-57] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------------- | | `action` | string | The webhook event type | | `applicationId` | number | Application id when present (`payload.application.id` or flat `payload.application_id` on offers) | | `candidateId` | number | Candidate id when `payload.application.candidate.id` is present | | `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present | | `payload` | json | Full event payload | --- # Greptile (/integrations/greptile) {/* MANUAL-CONTENT-START:intro */} [Greptile](https://www.greptile.com/) searches and answers questions about code repositories. Index a repository and check its status before querying it, then use natural-language questions or code search to retrieve answers and relevant files. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases. ## Actions [#actions] ### Greptile Query [#greptile-query] Query repositories in natural language and get answers with relevant code references. Greptile uses AI to understand your codebase and answer questions. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Natural language question about the codebase. Example: "How does authentication work?" or "Where is the payment processing logic?" | | `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" (defaults to github:main). Example: "facebook/react" or "github:main:facebook/react,github:main:facebook/relay" | | `sessionId` | string | No | Session ID for conversation continuity. Use the same sessionId across multiple queries to maintain context. Example: "session-abc123" | | `genius` | boolean | No | Enable genius mode for more thorough analysis (slower but more accurate) | | `apiKey` | string | Yes | Greptile API key | | `githubToken` | string | Yes | GitHub Personal Access Token with repo read access | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `message` | string | AI-generated answer to the query | | `sources` | array | Relevant code references that support the answer | | ↳ `repository` | string | Repository name (owner/repo) | | ↳ `remote` | string | Git remote (github/gitlab) | | ↳ `branch` | string | Branch name | | ↳ `filepath` | string | Path to the file | | ↳ `linestart` | number | Starting line number | | ↳ `lineend` | number | Ending line number | | ↳ `summary` | string | Summary of the code section | | ↳ `distance` | number | Similarity score (lower = more relevant) | ### Greptile Search [#greptile-search] Search repositories in natural language and get relevant code references without generating an answer. Useful for finding specific code locations. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Natural language search query to find relevant code. Example: "authentication middleware" or "database connection handling" | | `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" (defaults to github:main). Example: "facebook/react" or "github:main:facebook/react,github:main:facebook/relay" | | `sessionId` | string | No | Session ID for conversation continuity. Use the same sessionId across multiple searches to maintain context. Example: "session-abc123" | | `genius` | boolean | No | Enable genius mode for more thorough search (slower but more accurate) | | `apiKey` | string | Yes | Greptile API key | | `githubToken` | string | Yes | GitHub Personal Access Token with repo read access | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------- | | `sources` | array | Relevant code references matching the search query | | ↳ `repository` | string | Repository name (owner/repo) | | ↳ `remote` | string | Git remote (github/gitlab) | | ↳ `branch` | string | Branch name | | ↳ `filepath` | string | Path to the file | | ↳ `linestart` | number | Starting line number | | ↳ `lineend` | number | Ending line number | | ↳ `summary` | string | Summary of the code section | | ↳ `distance` | number | Similarity score (lower = more relevant) | ### Greptile Index Repository [#greptile-index-repository] Submit a repository to be indexed by Greptile. Indexing must complete before the repository can be queried. Small repos take 3-5 minutes, larger ones can take over an hour. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `remote` | string | Yes | Git remote type: github or gitlab | | `repository` | string | Yes | Repository in owner/repo format. Example: "facebook/react" or "vercel/next.js" | | `branch` | string | Yes | Branch to index (e.g., "main" or "master") | | `reload` | boolean | No | Force re-indexing even if already indexed | | `notify` | boolean | No | Send email notification when indexing completes | | `apiKey` | string | Yes | Greptile API key | | `githubToken` | string | Yes | GitHub Personal Access Token with repo read access | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `repositoryId` | string | Unique identifier for the indexed repository (format: remote:branch:owner/repo) | | `statusEndpoint` | string | URL endpoint to check indexing status | | `message` | string | Status message about the indexing operation | ### Greptile Repository Status [#greptile-repository-status] Check the indexing status of a repository. Use this to verify if a repository is ready to be queried or to monitor indexing progress. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `remote` | string | Yes | Git remote type: github or gitlab | | `repository` | string | Yes | Repository in owner/repo format. Example: "facebook/react" or "vercel/next.js" | | `branch` | string | Yes | Branch name (e.g., "main" or "master") | | `apiKey` | string | Yes | Greptile API key | | `githubToken` | string | Yes | GitHub Personal Access Token with repo read access | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------------------- | | `repository` | string | Repository name (owner/repo) | | `remote` | string | Git remote (github/gitlab) | | `branch` | string | Branch name | | `private` | boolean | Whether the repository is private | | `status` | string | Indexing status: submitted, cloning, processing, completed, or failed | | `filesProcessed` | number | Number of files processed so far | | `numFiles` | number | Total number of files in the repository | | `sampleQuestions` | array | Sample questions for the indexed repository | | `sha` | string | Git commit SHA of the indexed version | --- # Gupshup (/integrations/gupshup) ## Usage Instructions [#usage-instructions] Integrate Gupshup's WhatsApp Business API into the workflow. Send text, media, quick reply buttons, list menus, and approved templates, look up templates and their approval status, and run workflows when a customer messages you or a message is delivered, read, or fails. WhatsApp only delivers free-form session messages within 24 hours of the customer's last message; outside that window, send an approved template. Requires a Gupshup API key, app name, and the app's WhatsApp number. ## Actions [#actions] ### Gupshup Send WhatsApp Text [#gupshup-send-whatsapp-text] Send a free-form WhatsApp text message to a customer through Gupshup. WhatsApp only delivers session messages within 24 hours of the customer's last message to you. Outside that window the send fails (error 470), and only an approved template can be sent. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appName` | string | Yes | Name of the Gupshup app that owns the source number (sent as src.name) | | `source` | string | Yes | Your WhatsApp Business number registered on the app, with country code, e.g. 919876543210 | | `destination` | string | Yes | Customer WhatsApp number with country code, e.g. 919876543210 (a leading + is removed) | | `text` | string | Yes | Message text. WhatsApp formatting like *bold* works. | | `previewUrl` | boolean | No | Show a link preview when the text contains a URL | | `replyToMessageId` | string | No | Message ID to reply to, shown as a quoted reply in WhatsApp. Must be less than 30 days old. | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------- | | `messageId` | string | Gupshup message ID. Message events (sent, delivered, read, failed) report it as gsId. | | `status` | string | submitted (or success) means Gupshup accepted the request. Delivery is reported later as a message event. | ### Gupshup Send WhatsApp Media [#gupshup-send-whatsapp-media] Send an image, video, audio file, document, or sticker on WhatsApp through Gupshup, from a public URL or an uploaded media ID. WhatsApp only delivers session messages within 24 hours of the customer's last message to you. Outside that window the send fails (error 470), and only an approved template can be sent. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appName` | string | Yes | Name of the Gupshup app that owns the source number (sent as src.name) | | `source` | string | Yes | Your WhatsApp Business number registered on the app, with country code, e.g. 919876543210 | | `destination` | string | Yes | Customer WhatsApp number with country code, e.g. 919876543210 (a leading + is removed) | | `mediaType` | string | Yes | image, video, audio, document, or sticker | | `mediaUrl` | string | No | Public HTTPS URL of the file. Provide this or Media ID. | | `mediaId` | string | No | ID of media already uploaded to Gupshup. Used instead of Media URL. | | `caption` | string | No | Caption shown under an image, video, or document | | `filename` | string | No | File name shown for a document, e.g. invoice-4821.pdf | | `replyToMessageId` | string | No | Message ID to reply to, shown as a quoted reply in WhatsApp. Must be less than 30 days old. | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------- | | `messageId` | string | Gupshup message ID. Message events (sent, delivered, read, failed) report it as gsId. | | `status` | string | submitted (or success) means Gupshup accepted the request. Delivery is reported later as a message event. | ### Gupshup Send WhatsApp Buttons or List [#gupshup-send-whatsapp-buttons-or-list] Send a WhatsApp message with up to 3 quick reply buttons, or a list menu of up to 10 options, through Gupshup. The customer's choice arrives on the Gupshup Inbound Message trigger as a quick\_reply or list\_reply. WhatsApp only delivers session messages within 24 hours of the customer's last message to you. Outside that window the send fails (error 470), and only an approved template can be sent. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appName` | string | Yes | Name of the Gupshup app that owns the source number (sent as src.name) | | `source` | string | Yes | Your WhatsApp Business number registered on the app, with country code, e.g. 919876543210 | | `destination` | string | Yes | Customer WhatsApp number with country code, e.g. 919876543210 (a leading + is removed) | | `interactiveType` | string | Yes | quick\_reply (up to 3 buttons) or list (a menu of up to 10 rows) | | `body` | string | Yes | Main message text | | `header` | string | No | Header text. Required for a list, where it is the list title. | | `footer` | string | No | Footer text shown in small grey type | | `buttons` | json | No | Quick reply buttons: up to 3 titles, comma-separated or a JSON array, e.g. \["Yes","No"] or \[\{"title":"Yes","postbackText":"confirm"}] | | `listButtonTitle` | string | No | For a list: the label of the button that opens the menu, max 20 characters | | `sections` | json | No | For a list: rows as titles (comma-separated or a JSON array), or sections as \[\{"title":"Plans","options":\[\{"title":"Basic","description":"Rs 499/month","postbackText":"plan\_basic"}]}]. Max 10 rows in total. | | `trackingId` | string | No | Your ID for this message (msgid), returned as id in the reply payload so you can tell which menu was answered | | `replyToMessageId` | string | No | Message ID to reply to, shown as a quoted reply in WhatsApp. Must be less than 30 days old. | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------- | | `messageId` | string | Gupshup message ID. Message events (sent, delivered, read, failed) report it as gsId. | | `status` | string | submitted (or success) means Gupshup accepted the request. Delivery is reported later as a message event. | ### Gupshup Send WhatsApp Template [#gupshup-send-whatsapp-template] Send an approved WhatsApp template message through Gupshup, filling its \{\{1}}, \{\{2}}... placeholders in order. Templates are the only messages WhatsApp delivers outside the 24-hour customer service window, so use one for the first message to a lead, reminders, and any follow-up after the customer has been quiet for 24 hours. The template must be APPROVED; check with List Templates. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appName` | string | Yes | Name of the Gupshup app that owns the source number (sent as src.name) | | `source` | string | Yes | Your WhatsApp Business number registered on the app, with country code, e.g. 919876543210 | | `destination` | string | Yes | Customer WhatsApp number with country code, e.g. 919876543210 (a leading + is removed) | | `templateId` | string | Yes | Gupshup template ID (the id from List Templates, not the template name) | | `templateParams` | json | No | Values for the template placeholders in order, as a JSON array or comma-separated list, e.g. \["Asha","15 Jan","10:30"] | | `headerMediaType` | string | No | For a media-header template: image, video, or document | | `headerMediaUrl` | string | No | Public URL of the header image, video, or PDF | | `headerMediaId` | string | No | Uploaded media ID for the header, used instead of the URL | | `postbackTexts` | json | No | Postback text for quick reply buttons, as \[\{"index":0,"text":"confirm"}] with a 0-based button index | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------- | | `messageId` | string | Gupshup message ID. Message events (sent, delivered, read, failed) report it as gsId. | | `status` | string | submitted (or success) means Gupshup accepted the request. Delivery is reported later as a message event. | ### Gupshup List WhatsApp Templates [#gupshup-list-whatsapp-templates] List the WhatsApp templates on a Gupshup app with their approval status, category, language, and body. Use it to find the template ID to send and to confirm a template is APPROVED, since only approved templates can be sent outside the 24-hour customer service window. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appId` | string | Yes | Gupshup app ID (a UUID shown on the app dashboard, not the app name) | | `templateStatus` | string | No | Only templates with this status, e.g. APPROVED | | `templateCategory` | string | No | Only templates in this category: MARKETING, UTILITY, or AUTHENTICATION | | `languageCode` | string | No | Only templates in this language, e.g. en | | `pageNo` | number | No | Page number, starting at 0 (default 0) | | `pageSize` | number | No | Templates per page (default 100) | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | | `templates` | array | Templates on the app, with their approval status | | ↳ `id` | string | Gupshup template ID, used to send the template | | ↳ `elementName` | string | Template name | | ↳ `status` | string | Approval status, e.g. APPROVED, PENDING, REJECTED, PAUSED, or FAILED. Only APPROVED templates can be sent. | | ↳ `category` | string | MARKETING, UTILITY, or AUTHENTICATION | | ↳ `templateType` | string | TEXT, IMAGE, VIDEO, DOCUMENT, or LOCATION | | ↳ `languageCode` | string | Language code, e.g. en | | ↳ `data` | string | Template body with \{\{n}} placeholders | | ↳ `quality` | string | Quality rating, e.g. GREEN | | ↳ `externalId` | string | Meta template ID | | ↳ `buttonSupported` | string | Button types on the template | | ↳ `createdOn` | number | Creation time (epoch ms) | | ↳ `modifiedOn` | number | Last change time (epoch ms) | | `count` | number | Number of templates returned on this page | ### Gupshup Get WhatsApp Template [#gupshup-get-whatsapp-template] Get one WhatsApp template on a Gupshup app by its template ID, including its approval status, category, and body. Check that the status is APPROVED before sending it. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Gupshup account API key, shown on the Gupshup dashboard. Sent as the apikey header. | | `appId` | string | Yes | Gupshup app ID (a UUID shown on the app dashboard, not the app name) | | `templateId` | string | Yes | Gupshup template ID | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `messageId` | string | Gupshup message ID of a sent message (gsId on status events) | | `status` | string | Send result (submitted or success), or template approval status (Get Template) | | `templates` | json | Templates from List Templates (id, elementName, status, category, templateType, languageCode, data, quality, externalId, buttonSupported, createdOn, modifiedOn) | | `count` | number | Number of templates returned | | `id` | string | Template ID (Get Template) | | `elementName` | string | Template name | | `category` | string | Template category | | `templateType` | string | Template type, e.g. TEXT or IMAGE | | `languageCode` | string | Template language code | | `data` | string | Template body with placeholders | | `quality` | string | Template quality rating | | `externalId` | string | Meta template ID | | `buttonSupported` | string | Button types on the template | | `createdOn` | number | Template creation time (epoch ms) | | `modifiedOn` | number | Template last change time (epoch ms) | --- # Harmonic (/integrations/harmonic) {/* MANUAL-CONTENT-START:intro */} [Harmonic](https://harmonic.ai/) is a private-market intelligence platform for researching companies, people, and investors. Its Scout agent accepts a natural-language sourcing request—such as “find forward-deployed engineers in enterprise software”—and the Harmonic block converts the result into a predictable `contacts` table for downstream scoring, review, storage in Agent Serve tables, or delivery to CRM and other integration blocks. ## Authentication [#authentication] This integration uses a reusable Harmonic **team API key** connection. It does not use delegated OAuth. You need an existing Harmonic workspace with API access; ask your Harmonic workspace administrator or [Harmonic support](mailto:support@harmonic.ai) for the team key, then create a Harmonic connection from the block's **Harmonic Account** field. Agent Serve validates and stores the key once, then sends it only in Harmonic's `apikey` request header. The same connection can be reused across Harmonic blocks and replaced or revoked from the credentials settings. ## Working with people data [#working-with-people-data] * **Scout search:** **Search People with Scout** uses an integration-owned schema so every successful request returns the same normalized contact fields. Scout task errors, timeouts, interruptions, and malformed structured results stop the workflow instead of returning an ambiguous partial result. * **Saved searches:** A team API key can read only saved searches shared with the team. Make a private people search shared in the Harmonic console, then choose it with the basic selector. Advanced mode accepts a numeric saved-search ID or full URN when a search is not shown. Follow `pageInfo.nextCursor` while `pageInfo.hasNext` is true. * **URN-only rows:** Saved-search pages may contain person URNs without full profiles. Pass `personUrns` to **Batch Get People** to hydrate them into the common contact shape. **Get Company Employees** returns URNs the same way, so account-based sourcing chains through the same step. * **Starting from an identifier:** **Enrich Person** turns a LinkedIn profile URL or an email address into a contact. When Harmonic has no record yet it returns an error naming the enrichment it just scheduled; poll that URN with **Get Enrichment Status** and read the person once it completes. * **Net-new monitoring:** **Get People Saved Search Net-New Results** returns only people who newly matched, which avoids reprocessing the whole result set on every poll. It requires a saved search you have subscribed to in the Harmonic console — there is no API to subscribe. Acknowledge what you processed with **Clear People Saved Search Net-New Results** so the next poll starts clean. * **Email enrichment:** **Submit Email Enrichment Job** queues up to 5,000 people from either person URNs or LinkedIn URLs (one list or the other, never both). Poll **Get Email Enrichment Job** until `isTerminal` is true; the per-person rows carry a status but never an address, so pass `succeededPersonUrns` to **Batch Get People** to read the resolved emails. Check **Get Email Enrichment Usage** first to avoid exhausting the monthly quota. * **Downstream workflows:** Pass `contacts` directly into Agent Serve tables, scoring or approval steps, and other integrations such as a CRM. Every contact-producing action uses the same camelCase output shape. A nullable array means Harmonic did not return that collection for the record; an empty array means Harmonic returned the collection with no values. * **Large batches:** Batch Get People accepts at most 500 combined IDs and URNs and requests only the fields used by the normalized contact output. Exceptionally large profiles can still exceed Agent Serve's response limit; retry with smaller batches if that occurs. * **Workspace and list APIs:** This first version intentionally omits Harmonic's retiring V1 workspace and people-list endpoints. Harmonic says those APIs stop serving traffic on November 5, 2026 and already fail after a workspace completes its V2 migration. See Harmonic's [Workspace API migration guide](https://console.harmonic.ai/docs/api-reference/workspace/migration) for the V2 GraphQL replacement. Harmonic recommends no more than 100 saved-search results per page. Its general API limit is 10 requests per second, while Scout task creation is limited to 10 requests per minute and 100 per hour. Endpoint and field availability can also depend on your Harmonic subscription. Harmonic does not publish a webhook-registration contract for this workflow surface, so the integration has no native triggers. Use a **Schedule** block to poll a shared saved search when recurring synchronization is needed. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect a reusable Harmonic team API key, use Scout to find people with natural-language criteria, select team-visible people saved searches, and hydrate person identifiers into normalized contacts for downstream tables, CRM, scoring, and outreach workflows. ## Actions [#actions] ### Harmonic Search People with Scout [#harmonic-search-people-with-scout] Ask Harmonic Scout to find people using natural language and return a stable, workflow-ready contacts table. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `query` | string | Yes | Natural-language people research request, e.g. "Find forward-deployed engineers in enterprise software" | #### Output [#output] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------- | | `contacts` | array | People matching the Scout request, normalized for downstream workflow use | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `taskId` | string | Harmonic Scout task identifier | | `status` | string | Final Scout task status (success) | | `count` | number | Number of contacts returned | ### Harmonic Enrich Person [#harmonic-enrich-person] Resolve a LinkedIn profile URL or email address into a normalized Harmonic contact, queueing enrichment when the person is not yet in Harmonic. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `linkedinUrl` | string | No | LinkedIn profile URL, e.g. [https://www.linkedin.com/in/example](https://www.linkedin.com/in/example) | | `email` | string | No | Email address used as a fallback when the LinkedIn URL is absent or unmatched | #### Output [#output-1] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------------------- | | `contact` | object | Normalized Harmonic contact, or null when the person is not yet in Harmonic | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `enrichmentUrn` | string | Enrichment URN to poll with Get Enrichment Status when Harmonic queued a refresh | | `mergedPersonUrn` | string | URN this person was merged into, when Harmonic deduplicated the record | | `requestedEntityUrn` | string | Person URN Harmonic matched the request to | | `found` | boolean | Whether Harmonic returned a person profile | | `enrichmentQueued` | boolean | Whether Harmonic queued a background refresh (HTTP 201) for this person | ### Harmonic Get Person [#harmonic-get-person] Fetch one Harmonic person by numeric ID or URN, including any email resolved by a completed enrichment job. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `personId` | string | Yes | Harmonic person ID or full person URN | | `companyContextUrns` | json | No | Company URNs used to scope the returned experience context; may be a JSON-array string | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------------- | | `contact` | object | Normalized Harmonic contact, or null when Harmonic has no such person | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `found` | boolean | Whether Harmonic returned a person profile | ### Harmonic Batch Get People [#harmonic-batch-get-people] Fetch full Harmonic person profiles for up to 500 combined numeric IDs and person URNs. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ---- | -------- | ---------------------------------------------------------------- | | `personIds` | json | No | Array of numeric Harmonic person IDs; may be a JSON-array string | | `personUrns` | json | No | Array of Harmonic person URNs; may be a JSON-array string | #### Output [#output-3] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------- | | `contacts` | array | Fetched Harmonic person profiles normalized as contacts | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `count` | number | Number of contacts returned | ### Harmonic Get Company Employees [#harmonic-get-company-employees] List person URNs for a company, filtered by role group and employment status. Pair with Batch Get People to hydrate contacts. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `companyId` | string | Yes | Harmonic company ID or full company URN | | `employeeGroupType` | string | No | Role group: CEO, FOUNDERS\_AND\_CEO, EXECUTIVES, FOUNDERS, LEADERSHIP, NON\_LEADERSHIP, ALL, ADVISORS, NON\_PARTNERS (default ALL) | | `employeeStatus` | string | No | Employment status: ACTIVE, NOT\_ACTIVE, or ACTIVE\_AND\_NOT\_ACTIVE (default ACTIVE) | | `userConnectionStatus` | string | No | Connection filter: TEAM\_CONNECTION or NO\_CONNECTION. Harmonic documents per-user connection filtering as unsupported via the API | | `size` | number | No | Results to return; Agent Serve caps this at 100 per page (default 50) | | `cursor` | string | No | Opaque next-page cursor from a previous response | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------ | | `personUrns` | array | Person URNs for the matching employees; Harmonic returns URNs only | | `totalCount` | number | Total matching employees | | `pageInfo` | object | Cursor pagination metadata | | ↳ `nextCursor` | string | Cursor for the next page | | ↳ `currentCursor` | string | Cursor for the current page | | ↳ `hasNext` | boolean | Whether another page is available | ### Harmonic List People Saved Searches [#harmonic-list-people-saved-searches] List the team-shared Harmonic saved searches that target people. Use a returned ID or URN to fetch results. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------- | | `savedSearches` | array | Team-accessible Harmonic saved searches that target people | | ↳ `savedSearchId` | number | Saved search ID | | ↳ `savedSearchUrn` | string | Saved search URN | | ↳ `name` | string | Saved search name | | ↳ `isPrivate` | boolean | Whether the search is private | | ↳ `savedSearchType` | string | Saved search entity type (PERSONS) | | ↳ `userSavedSearchType` | string | User-facing saved search type | | ↳ `creatorUrn` | string | Creator user URN | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `count` | number | Number of people saved searches returned | ### Harmonic Get People Saved Search Results [#harmonic-get-people-saved-search-results] Get one page of a Harmonic people saved search. Full records become contacts; URN-only rows are exposed for Batch Get People. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------- | | `savedSearchId` | string | Yes | People saved-search ID or full Harmonic saved-search URN | | `size` | number | No | Results to return; Agent Serve caps this at 100 per page (default 50) | | `cursor` | string | No | Opaque next-page cursor from a previous response | #### Output [#output-6] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------------- | | `contacts` | array | Full person records returned by the saved search, normalized as contacts | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `personUrns` | array | All person URNs in the page, including rows returned without full profiles | | `totalCount` | number | Total matching people | | `pageInfo` | object | Cursor pagination metadata | | ↳ `nextCursor` | string | Cursor for the next page | | ↳ `currentCursor` | string | Cursor for the current page | | ↳ `hasNext` | boolean | Whether another page is available | ### Harmonic Get People Saved Search Net-New Results [#harmonic-get-people-saved-search-net-new-results] Get only the people newly matching a subscribed Harmonic people saved search, so a monitor does not reprocess the whole result set. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `savedSearchId` | string | Yes | People saved-search ID or full Harmonic saved-search URN | | `size` | number | No | Results to return; Agent Serve caps this at 100 per page (default 50) | | `cursor` | string | No | Opaque next-page cursor from a previous response | | `newResultsSince` | string | No | Only return matches after this UTC point, as YYYY-MM-DD or YYYY-MM-DDTHH:00:00Z | #### Output [#output-7] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------------------------------- | | `contacts` | array | Newly matching people returned as full profiles, normalized as contacts | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `personId` | number | Numeric Harmonic person ID | | ↳ `fullName` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `headline` | string | LinkedIn headline or current title | | ↳ `currentTitles` | array | Current job titles | | ↳ `currentCompanyNames` | array | Current company names | | ↳ `currentCompanyUrns` | array | Current Harmonic company URNs | | ↳ `primaryEmail` | string | Primary known email address | | ↳ `emails` | array | Known email addresses | | ↳ `phoneNumbers` | array | Known phone numbers | | ↳ `linkedinUrl` | string | LinkedIn profile URL | | ↳ `formattedLocation` | string | Formatted location | | ↳ `city` | string | City | | ↳ `state` | string | State or region | | ↳ `country` | string | Country | | ↳ `profilePictureUrl` | string | Profile picture URL | | ↳ `summary` | string | Scout-generated contact summary | | ↳ `isRedacted` | boolean | Whether Harmonic marks the person record as redacted | | `personUrns` | array | All newly matching person URNs, including rows returned without full profiles | | `cursor` | string | Cursor echoed by Harmonic | | `pageInfo` | object | Cursor pagination metadata | | ↳ `nextCursor` | string | Cursor for the next page | | ↳ `currentCursor` | string | Cursor for the current page | | ↳ `hasNext` | boolean | Whether another page is available | ### Harmonic Clear People Saved Search Net-New Results [#harmonic-clear-people-saved-search-net-new-results] Acknowledge net-new people on a saved search so the next poll returns only fresh matches. Clearing everything requires setting the scope explicitly. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `savedSearchId` | string | Yes | People saved-search ID or full Harmonic saved-search URN | | `personUrns` | json | No | Person URNs to acknowledge when clearScope is "selected". May be a JSON-array string | | `clearScope` | string | No | Either "selected" (default, acknowledge only the listed URNs) or "all" (clear every net-new result) | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------- | | `cleared` | boolean | Whether Harmonic accepted the acknowledgement | | `clearedPersonUrns` | array | Person URNs acknowledged, or null when every net-new result was cleared | ### Harmonic Submit Email Enrichment Job [#harmonic-submit-email-enrichment-job] Queue bulk email enrichment for up to 5,000 people, given either person URNs or LinkedIn profile URLs. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ---- | -------- | ------------------------------------------------------------------------------------------------------------- | | `personUrns` | json | No | Array of Harmonic person URNs, 1-5000; may be a JSON-array string. Mutually exclusive with personLinkedinUrls | | `personLinkedinUrls` | json | No | Array of LinkedIn profile URLs, 1-5000; may be a JSON-array string. Mutually exclusive with personUrns | #### Output [#output-9] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------------------------------------------------------------- | | `jobId` | string | Job identifier to poll with Get Email Enrichment Job | | `status` | string | Job status (PENDING, IN\_PROGRESS, COMPLETED, FAILED) | | `acceptedCount` | number | People accepted into the job | | `monthlyRemaining` | number | Email enrichments left in the team monthly quota | | `createdAt` | string | Job creation timestamp | | `dropped` | array | Identifiers Harmonic dropped before queueing, with the reason for each | | ↳ `submittedIdentifier` | string | Identifier submitted to Harmonic | | ↳ `reason` | string | Why Harmonic dropped it (NOT\_FOUND, INVALID\_URL, ALREADY\_HAS\_EMAIL, RECENTLY\_ATTEMPTED) | ### Harmonic Get Email Enrichment Job [#harmonic-get-email-enrichment-job] Check a Harmonic bulk email enrichment job. Per-person results appear once the job is terminal; fetch the emails with Get Person or Batch Get People. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `jobId` | string | Yes | Job ID returned by Submit Email Enrichment Job | #### Output [#output-10] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `jobId` | string | Job identifier | | `status` | string | Job status (PENDING, IN\_PROGRESS, COMPLETED, FAILED) | | `isTerminal` | boolean | Whether the job finished, meaning results will no longer change | | `counts` | object | Per-outcome tallies for the job | | ↳ `totalProcessed` | number | People processed | | ↳ `totalSucceeded` | number | People with an email found | | ↳ `totalFailed` | number | People whose enrichment failed | | ↳ `totalSkipped` | number | People skipped | | ↳ `totalNotFound` | number | People Harmonic could not resolve | | `results` | array | Per-person outcomes; null until the job reaches a terminal status | | ↳ `personUrn` | string | Harmonic person URN | | ↳ `status` | string | Per-person job status (PENDING, SUCCESS, NOT\_FOUND, FAILED, SKIPPED) | | `succeededPersonUrns` | array | Person URNs whose email was found; pass these to Batch Get People | | `createdAt` | string | Job creation timestamp | | `completedAt` | string | Job completion timestamp | ### Harmonic Get Email Enrichment Usage [#harmonic-get-email-enrichment-usage] Read the team monthly email-enrichment quota. Check this before a large batch to avoid a quota rejection. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------- | | `monthlyUsage` | number | Emails enriched so far this month | | `monthlyLimit` | number | Monthly email enrichment allowance | | `monthlyRemaining` | number | Enrichments left this month | ### Harmonic Get Enrichment Status [#harmonic-get-enrichment-status] Check enrichment jobs Harmonic queued for people it did not already have, and read the person URN each one produced. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ---- | -------- | --------------------------------------------------------------------------------------------------------- | | `enrichmentUrns` | json | Yes | Array of Harmonic enrichment URNs or bare enrichment UUIDs from Enrich Person; may be a JSON-array string | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `enrichments` | array | Status of each requested enrichment job | | ↳ `enrichmentUrn` | string | Harmonic enrichment URN | | ↳ `status` | string | Enrichment job status (QUEUED, IN\_PROGRESS, COMPLETE, FAILED, NOT\_FOUND, EXPERIENCES\_HIDDEN) | | ↳ `message` | string | Provider status message | | ↳ `enrichedEntityUrn` | string | Resulting company or person URN once enrichment completes | | `count` | number | Number of enrichment statuses returned | --- # Help Scout (/integrations/helpscout) ## Usage Instructions [#usage-instructions] Connect Help Scout to search and read conversations and their threads, open new conversations, reply to customers, add internal notes and customer messages, change status, assignee, inbox, subject, customer, tags, and custom fields, and snooze conversations. Manage customers and their properties, look up organizations and saved replies, list inboxes, folders, users, teams, tags, and workflows, and run manual workflows. Trigger workflows from Help Scout webhooks for conversation and customer events. ## Actions [#actions] ### Help Scout List Conversations [#help-scout-list-conversations] List and search Help Scout conversations by inbox, folder, status, tag, assignee, or search query. Returns 25 conversations per page. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `mailboxId` | string | No | Inbox ID to filter by; comma-separate several IDs | | `folderId` | string | No | Folder ID to filter by | | `status` | string | No | active, open, pending, closed, spam, or all (defaults to active) | | `tag` | string | No | Tag to filter by; comma-separate several tags | | `assignedTo` | string | No | User ID of the assignee to filter by | | `modifiedSince` | string | No | Only conversations modified after this time (e.g. 2024-05-04T12:00:03Z) | | `number` | number | No | Conversation number to look up | | `sortField` | string | No | createdAt, customerEmail, customerName, mailboxid, modifiedAt, number, score, status, subject, or waitingSince | | `sortOrder` | string | No | asc or desc (defaults to desc) | | `query` | string | No | Advanced search query, e.g. (email:"[jane@example.com](mailto:jane@example.com)" AND tag:"vip") | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------- | | `conversations` | array | Conversations on this page | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `type` | string | email, chat, or phone | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdBy` | json | User or customer who created the conversation | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `primaryCustomer` | json | Primary customer of the conversation | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel (email, beacon, api, and others) | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation | | ↳ `id` | number | Tag ID | | ↳ `tag` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values | | ↳ `id` | number | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `value` | string | Stored value (the option ID for dropdowns) | | ↳ `text` | string | Display text | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | ### Help Scout Get Conversation [#help-scout-get-conversation] Get a Help Scout conversation by ID, optionally with its threads. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `includeThreads` | boolean | No | Include the conversation threads (chat threads may be truncated) | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------- | | `conversation` | json | Conversation details | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `type` | string | email, chat, or phone | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdBy` | json | User or customer who created the conversation | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `primaryCustomer` | json | Primary customer of the conversation | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel (email, beacon, api, and others) | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation | | ↳ `id` | number | Tag ID | | ↳ `tag` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values | | ↳ `id` | number | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `value` | string | Stored value (the option ID for dropdowns) | | ↳ `text` | string | Display text | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `threads` | array | Conversation threads (empty unless threads were included) | | ↳ `id` | number | Thread ID | | ↳ `type` | string | customer, message, note, chat, phone, lineitem, and others | | ↳ `status` | string | Conversation status set by the thread | | ↳ `state` | string | published, draft, hidden, bounced, or review | | ↳ `body` | string | Thread content | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `customer` | json | Customer associated with the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdBy` | json | User or customer who created the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `assignedTo` | json | User or team assigned by the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `to` | array | To email addresses | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `createdAt` | string | When the thread was created | | ↳ `openedAt` | string | When the customer viewed the reply | | ↳ `savedReplyId` | number | ID of the saved reply used for the thread | | ↳ `attachments` | array | Attachments on the thread | | ↳ `id` | number | Attachment ID | | ↳ `filename` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `size` | number | Size in bytes | | ↳ `state` | string | valid or virus | ### Help Scout Create Conversation [#help-scout-create-conversation] Create a Help Scout conversation in an inbox with a first customer message, reply, or note. A new customer is created when the email is not already known. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- | | `subject` | string | Yes | Conversation subject | | `mailboxId` | string | Yes | ID of the inbox to create the conversation in | | `type` | string | No | email, chat, or phone (defaults to email) | | `status` | string | No | active, pending, or closed (defaults to active) | | `customerId` | string | No | Existing customer ID; takes precedence over the customer email | | `customerEmail` | string | No | Customer email, used when no customer ID is given | | `customerFirstName` | string | No | First name, used only when a new customer is created | | `customerLastName` | string | No | Last name, used only when a new customer is created | | `threadType` | string | No | customer (a message from the customer), reply (a reply to the customer), or note (defaults to customer) | | `text` | string | Yes | Text of the first thread | | `assignTo` | string | No | User or team ID to assign; omit to follow the inbox settings | | `tags` | string | No | Comma-separated tags to add | | `autoReply` | boolean | No | Send the inbox auto reply; only valid when threadType is customer | | `userId` | string | No | ID of the user creating the conversation; defaults to the connected user | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `id` | number | ID of the new conversation | | `webUrl` | string | Link to the new conversation in Help Scout | ### Help Scout Reply to Conversation [#help-scout-reply-to-conversation] Send a reply to the customer on a Help Scout conversation, or save it as a draft. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `customerId` | string | Yes | ID of the customer being replied to (the primary customer ID) | | `text` | string | Yes | Reply text | | `draft` | boolean | No | Save the reply as a draft instead of sending it | | `status` | string | No | Conversation status to set with the thread: active, pending, closed, open, spam, or inbox\_predefined (the inbox default) | | `assignTo` | string | No | User or team ID to assign once the reply is sent | | `cc` | string | No | Comma-separated CC email addresses | | `bcc` | string | No | Comma-separated BCC email addresses | | `userId` | string | No | ID of the user adding the thread; defaults to the connected user | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | -------------------- | | `conversationId` | number | Conversation ID | | `threadId` | number | ID of the new thread | ### Help Scout Add Note [#help-scout-add-note] Add an internal note to a Help Scout conversation. Customers never see notes. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `text` | string | Yes | Note text | | `status` | string | No | Conversation status to set with the thread: active, pending, closed, open, spam, or inbox\_predefined (the inbox default) | | `userId` | string | No | ID of the user adding the thread; defaults to the connected user | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | -------------------- | | `conversationId` | number | Conversation ID | | `threadId` | number | ID of the new thread | ### Help Scout Update Conversation Status [#help-scout-update-conversation-status] Change the status of a Help Scout conversation to active, open, pending, closed, or spam. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `status` | string | Yes | active, open, pending, closed, or spam | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Assign Conversation [#help-scout-assign-conversation] Assign a Help Scout conversation to a user or team. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `assignTo` | string | Yes | User or team ID to assign the conversation to | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Unassign Conversation [#help-scout-unassign-conversation] Remove the assignee from a Help Scout conversation. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------- | | `conversationId` | string | Yes | Conversation ID | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Update Conversation Subject [#help-scout-update-conversation-subject] Change the subject of a Help Scout conversation. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------- | | `conversationId` | string | Yes | Conversation ID | | `subject` | string | Yes | New subject | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Move Conversation [#help-scout-move-conversation] Move a Help Scout conversation to another inbox. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `mailboxId` | string | Yes | ID of the inbox to move the conversation to | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Set Conversation Tags [#help-scout-set-conversation-tags] Replace the full tag list on a Help Scout conversation. Tags left out are removed, \[] removes every tag, and unknown tags are created. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `tags` | string | Yes | Comma-separated tags the conversation should have, including any existing tags to keep. Pass \[] to remove every tag. | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Delete Conversation [#help-scout-delete-conversation] Delete a Help Scout conversation. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------- | | `conversationId` | string | Yes | Conversation ID | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the deleted conversation | ### Help Scout List Threads [#help-scout-list-threads] List the threads (customer messages, replies, notes, and activity) of a Help Scout conversation, newest first, including full chat threads. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------- | | `threads` | array | Threads on this page, newest first | | ↳ `id` | number | Thread ID | | ↳ `type` | string | customer, message, note, chat, phone, lineitem, and others | | ↳ `status` | string | Conversation status set by the thread | | ↳ `state` | string | published, draft, hidden, bounced, or review | | ↳ `body` | string | Thread content | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `customer` | json | Customer associated with the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `createdBy` | json | User or customer who created the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `assignedTo` | json | User or team assigned by the thread | | ↳ `id` | number | User, team, or customer ID | | ↳ `type` | string | user, team, or customer | | ↳ `first` | string | First name | | ↳ `last` | string | Last name | | ↳ `name` | string | Team name, when the person is a team | | ↳ `email` | string | Email address | | ↳ `to` | array | To email addresses | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `createdAt` | string | When the thread was created | | ↳ `openedAt` | string | When the customer viewed the reply | | ↳ `savedReplyId` | number | ID of the saved reply used for the thread | | ↳ `attachments` | array | Attachments on the thread | | ↳ `id` | number | Attachment ID | | ↳ `filename` | string | File name | | ↳ `mimeType` | string | MIME type | | ↳ `size` | number | Size in bytes | | ↳ `state` | string | valid or virus | ### Help Scout List Customers [#help-scout-list-customers] List and search Help Scout customers by inbox, name, modification date, or search query (for example by email). Returns 50 customers per page. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `mailboxId` | string | No | Inbox ID to filter by | | `firstName` | string | No | First name to filter by | | `lastName` | string | No | Last name to filter by | | `modifiedSince` | string | No | Only customers modified after this time (e.g. 2024-05-04T12:00:03Z) | | `sortField` | string | No | createdAt, firstName, lastName, or modifiedAt (defaults to createdAt) | | `sortOrder` | string | No | asc or desc (defaults to desc) | | `query` | string | No | Advanced search query, e.g. (email:"[jane@example.com](mailto:jane@example.com)") | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-13] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------- | | `customers` | array | Customers on this page | | ↳ `id` | number | Customer ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `jobTitle` | string | Job title | | ↳ `location` | string | Location | | ↳ `organization` | string | Organization name | | ↳ `organizationId` | number | Organization ID | | ↳ `photoType` | string | Photo source | | ↳ `photoUrl` | string | Photo URL | | ↳ `age` | string | Age | | ↳ `background` | string | Notes about the customer | | ↳ `conversationCount` | number | Number of conversations with the customer | | ↳ `draft` | boolean | Whether the customer is a draft record | | ↳ `createdAt` | string | When the customer was created | | ↳ `updatedAt` | string | When the customer was updated | | ↳ `emails` | array | Email addresses | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `phones` | array | Phone numbers | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `websites` | array | Websites | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `socialProfiles` | array | Social profiles | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `chats` | array | Chat handles | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `properties` | array | Customer property values | | ↳ `slug` | string | Property slug | | ↳ `name` | string | Property name | | ↳ `type` | string | Property type | | ↳ `value` | string | Stored value | | ↳ `text` | string | Display text | ### Help Scout Get Customer [#help-scout-get-customer] Get a Help Scout customer by ID, including emails, phones, websites, social profiles, and properties. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------- | | `customerId` | string | Yes | Customer ID | #### Output [#output-14] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------- | | `customer` | json | Customer details | | ↳ `id` | number | Customer ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `jobTitle` | string | Job title | | ↳ `location` | string | Location | | ↳ `organization` | string | Organization name | | ↳ `organizationId` | number | Organization ID | | ↳ `photoType` | string | Photo source | | ↳ `photoUrl` | string | Photo URL | | ↳ `age` | string | Age | | ↳ `background` | string | Notes about the customer | | ↳ `conversationCount` | number | Number of conversations with the customer | | ↳ `draft` | boolean | Whether the customer is a draft record | | ↳ `createdAt` | string | When the customer was created | | ↳ `updatedAt` | string | When the customer was updated | | ↳ `emails` | array | Email addresses | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `phones` | array | Phone numbers | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `websites` | array | Websites | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `socialProfiles` | array | Social profiles | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `chats` | array | Chat handles | | ↳ `id` | number | Entry ID | | ↳ `value` | string | Entry value | | ↳ `type` | string | Entry type | | ↳ `properties` | array | Customer property values | | ↳ `slug` | string | Property slug | | ↳ `name` | string | Property name | | ↳ `type` | string | Property type | | ↳ `value` | string | Stored value | | ↳ `text` | string | Display text | ### Help Scout Create Customer [#help-scout-create-customer] Create a Help Scout customer with a profile, email address, and phone number. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------- | | `firstName` | string | No | First name (up to 40 characters) | | `lastName` | string | No | Last name (up to 40 characters) | | `jobTitle` | string | No | Job title (up to 60 characters) | | `location` | string | No | Location (up to 60 characters) | | `background` | string | No | Notes about the customer (up to 200 characters) | | `age` | string | No | Age, e.g. 30-35 | | `gender` | string | No | male, female, or unknown | | `photoUrl` | string | No | Photo URL (up to 200 characters) | | `email` | string | No | Email address | | `emailType` | string | No | work, home, or other (defaults to work) | | `phone` | string | No | Phone number | | `phoneType` | string | No | work, home, mobile, fax, pager, or other (defaults to work) | | `organizationId` | string | No | ID of the organization the customer belongs to | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `id` | number | ID of the new customer | ### Help Scout Update Customer [#help-scout-update-customer] Update profile fields on a Help Scout customer and add an email address or phone number. Only the fields you provide are changed. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------- | | `customerId` | string | Yes | Customer ID | | `firstName` | string | No | First name (up to 40 characters) | | `lastName` | string | No | Last name (up to 40 characters) | | `jobTitle` | string | No | Job title (up to 60 characters) | | `location` | string | No | Location (up to 60 characters) | | `background` | string | No | Notes about the customer (up to 200 characters) | | `age` | string | No | Age, e.g. 30-35 | | `gender` | string | No | male, female, or unknown | | `photoUrl` | string | No | Photo URL (up to 200 characters) | | `email` | string | No | Email address to add to the customer | | `emailType` | string | No | work, home, or other (defaults to work) | | `phone` | string | No | Phone number to add to the customer | | `phoneType` | string | No | work, home, mobile, fax, pager, or other (defaults to work) | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `customerId` | number | ID of the updated customer | ### Help Scout List Inboxes [#help-scout-list-inboxes] List the Help Scout inboxes (mailboxes) the connected user can access. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-17] | Parameter | Type | Description | | ------------- | ------ | -------------------------- | | `mailboxes` | array | Inboxes on this page | | ↳ `id` | number | Inbox ID | | ↳ `name` | string | Inbox name | | ↳ `slug` | string | Inbox slug | | ↳ `email` | string | Inbox email address | | ↳ `createdAt` | string | When the inbox was created | | ↳ `updatedAt` | string | When the inbox was updated | ### Help Scout List Folders [#help-scout-list-folders] List the folders in a Help Scout inbox with their conversation counts. #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `mailboxId` | string | Yes | Inbox ID | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `folders` | array | Folders on this page | | ↳ `id` | number | Folder ID | | ↳ `name` | string | Folder name | | ↳ `type` | string | Folder type | | ↳ `userId` | number | ID of the folder owner | | ↳ `totalCount` | number | Total conversations in the folder | | ↳ `activeCount` | number | Active conversations in the folder | | ↳ `updatedAt` | string | When the folder was updated | ### Help Scout List Users [#help-scout-list-users] List Help Scout users, optionally filtered by exact email or by inbox. #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `email` | string | No | Exact email address to look up | | `mailboxId` | string | No | Inbox ID to filter by | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-19] | Parameter | Type | Description | | ------------------- | ------ | ------------------------- | | `users` | array | Users on this page | | ↳ `id` | number | User ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `role` | string | Account role | | ↳ `timezone` | string | Time zone | | ↳ `photoUrl` | string | Photo URL | | ↳ `type` | string | User type | | ↳ `mention` | string | Mention handle | | ↳ `initials` | string | Initials | | ↳ `jobTitle` | string | Job title | | ↳ `phone` | string | Phone number | | ↳ `alternateEmails` | array | Alternate email addresses | | ↳ `createdAt` | string | When the user was created | | ↳ `updatedAt` | string | When the user was updated | ### Help Scout Get Current User [#help-scout-get-current-user] Get the Help Scout user the connection acts as, and its company ID. #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-20] | Parameter | Type | Description | | ------------------- | ------ | ------------------------- | | `user` | json | Connected user | | ↳ `id` | number | User ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `role` | string | Account role | | ↳ `timezone` | string | Time zone | | ↳ `photoUrl` | string | Photo URL | | ↳ `type` | string | User type | | ↳ `mention` | string | Mention handle | | ↳ `initials` | string | Initials | | ↳ `jobTitle` | string | Job title | | ↳ `phone` | string | Phone number | | ↳ `alternateEmails` | array | Alternate email addresses | | ↳ `createdAt` | string | When the user was created | | ↳ `updatedAt` | string | When the user was updated | | `companyId` | number | Help Scout company ID | ### Help Scout List Tags [#help-scout-list-tags] List the tags used across all Help Scout inboxes, in alphabetical order. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------ | | `tags` | array | Tags on this page | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `ticketCount` | number | Number of conversations with the tag | | ↳ `createdAt` | string | When the tag was created | | ↳ `updatedAt` | string | When the tag was updated | ### Help Scout List Teams [#help-scout-list-teams] List the teams in the Help Scout account. Team IDs can be used to assign conversations. #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-22] | Parameter | Type | Description | | ------------- | ------ | ------------------------- | | `teams` | array | Teams on this page | | ↳ `id` | number | Team ID | | ↳ `name` | string | Team name | | ↳ `mention` | string | Mention handle | | ↳ `initials` | string | Initials | | ↳ `timezone` | string | Time zone | | ↳ `photoUrl` | string | Photo URL | | ↳ `createdAt` | string | When the team was created | | ↳ `updatedAt` | string | When the team was updated | ### Help Scout List Workflows [#help-scout-list-workflows] List Help Scout workflows, optionally filtered by inbox or by type (manual or automatic). #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | `mailboxId` | string | No | Inbox ID to filter by | | `workflowType` | string | No | manual or automatic | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-23] | Parameter | Type | Description | | -------------- | ------ | ------------------------------ | | `workflows` | array | Workflows on this page | | ↳ `id` | number | Workflow ID | | ↳ `mailboxId` | number | Inbox ID | | ↳ `type` | string | manual or automatic | | ↳ `status` | string | active, inactive, or invalid | | ↳ `order` | number | Workflow order | | ↳ `name` | string | Workflow name | | ↳ `createdAt` | string | When the workflow was created | | ↳ `modifiedAt` | string | When the workflow was modified | ### Help Scout Run Workflow [#help-scout-run-workflow] Run a manual Help Scout workflow on up to 50 conversations. The conversations must be in the same inbox as the workflow. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------- | | `workflowId` | string | Yes | ID of the manual workflow to run | | `conversationIds` | string | Yes | Comma-separated conversation IDs (up to 50) | #### Output [#output-24] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------- | | `workflowId` | number | ID of the workflow that ran | | `conversationIds` | array | Conversations the workflow ran on | ### Help Scout Update Custom Fields [#help-scout-update-custom-fields] Replace the custom field values on a Help Scout conversation. Fields left out are cleared, except Help Scout-managed fields such as Topic and Sentiment, which keep their value. Dropdowns take the option ID and dates use YYYY-MM-DD. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `customFields` | json | Yes | Every custom field value the conversation should have, as \[\{"id": 104, "value": "168"}]. Use List Custom Fields for IDs and dropdown option IDs. | #### Output [#output-25] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout List Custom Fields [#help-scout-list-custom-fields] List the custom fields defined for a Help Scout inbox, with their IDs, types, and dropdown options. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `mailboxId` | string | Yes | Inbox ID | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-26] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------------------- | | `customFields` | array | Custom fields on this page | | ↳ `id` | number | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `type` | string | Field type (singleline, multiline, dropdown, number, date) | | ↳ `required` | boolean | Whether the field must be set | | ↳ `order` | number | Display order | | ↳ `systemType` | string | Help Scout-managed field kind (topic or sentiment), if any | | ↳ `options` | array | Dropdown options; set a dropdown field to an option ID | | ↳ `id` | number | Option ID | | ↳ `label` | string | Option label | | ↳ `order` | number | Option order | ### Help Scout Snooze Conversation [#help-scout-snooze-conversation] Snooze a Help Scout conversation until a future time, optionally waking it when the customer replies. A new snooze replaces the previous one. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | -------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `snoozedUntil` | string | Yes | When the snooze ends, as an ISO 8601 date-time (e.g. 2025-02-15T12:00:00Z) | | `unsnoozeOnCustomerReply` | boolean | No | Wake the conversation when the customer replies (defaults to true) | #### Output [#output-27] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout Unsnooze Conversation [#help-scout-unsnooze-conversation] End the snooze on a Help Scout conversation. It returns to its folder (Mine, Team, or Unassigned) and is reactivated if needed. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------- | | `conversationId` | string | Yes | Conversation ID | #### Output [#output-28] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout List Saved Replies [#help-scout-list-saved-replies] List the saved replies (canned responses) in a Help Scout inbox with a preview of each. #### Input [#input-29] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------- | | `mailboxId` | string | Yes | Inbox ID | | `includeChatReplies` | boolean | No | Include chat-only saved replies (defaults to false) | #### Output [#output-29] | Parameter | Type | Description | | --------------- | ------ | -------------------------- | | `savedReplies` | array | Saved replies in the inbox | | ↳ `id` | number | Saved reply ID | | ↳ `name` | string | Saved reply name | | ↳ `preview` | string | Preview of the email text | | ↳ `chatPreview` | string | Preview of the chat text | ### Help Scout Get Saved Reply [#help-scout-get-saved-reply] Get the full text of a Help Scout saved reply for email and chat. #### Input [#input-30] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | `mailboxId` | string | Yes | Inbox ID the saved reply belongs to | | `savedReplyId` | string | Yes | Saved reply ID | #### Output [#output-30] | Parameter | Type | Description | | ------------ | ------ | ----------------------- | | `savedReply` | json | Saved reply | | ↳ `id` | number | Saved reply ID | | ↳ `name` | string | Saved reply name | | ↳ `text` | string | Email reply text (HTML) | | ↳ `chatText` | string | Chat reply text | ### Help Scout List Customer Properties [#help-scout-list-customer-properties] List the customer property definitions in Help Scout (slug, type, and dropdown options) used by Update Customer Properties. #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-31] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------- | | `customerProperties` | array | Customer property definitions | | ↳ `slug` | string | Property slug used to set values | | ↳ `name` | string | Property name | | ↳ `type` | string | Value type (text, number, url, date, dropdown) | | ↳ `options` | array | Dropdown options | | ↳ `id` | string | Option ID | | ↳ `label` | string | Option label | ### Help Scout Update Customer Properties [#help-scout-update-customer-properties] Set or remove customer property values (for example plan or MRR) on a Help Scout customer, keyed by property slug. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `customerId` | string | Yes | Customer ID | | `properties` | json | Yes | Property values keyed by slug, e.g. \{"plan": "Plus", "employees": 25}. Use null to remove a value. Dates use YYYY-MM-DD and dropdowns take the option ID or label. | #### Output [#output-32] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `customerId` | number | ID of the updated customer | ### Help Scout Add Customer Message [#help-scout-add-customer-message] Add a message from the customer to an existing Help Scout conversation, for example one received on another channel. This reopens the conversation. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `customerId` | string | No | ID of the customer sending the message; takes precedence over the email | | `customerEmail` | string | No | Email of the customer sending the message, used when no customer ID is given | | `text` | string | Yes | Message text | | `cc` | string | No | Comma-separated CC email addresses | | `bcc` | string | No | Comma-separated BCC email addresses | #### Output [#output-33] | Parameter | Type | Description | | ---------------- | ------ | -------------------- | | `conversationId` | number | Conversation ID | | `threadId` | number | ID of the new thread | ### Help Scout Change Conversation Customer [#help-scout-change-conversation-customer] Change the primary customer of a Help Scout conversation. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------- | | `conversationId` | string | Yes | Conversation ID | | `customerId` | string | Yes | ID of the customer to make primary | #### Output [#output-34] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `conversationId` | number | ID of the updated conversation | ### Help Scout List Organizations [#help-scout-list-organizations] List Help Scout organizations (companies), 50 per page, most recently active first by default. #### Input [#input-35] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `organizationSort` | string | No | name, customerCount, conversationCount, or lastInteractionAt, optionally with ,asc or ,desc (defaults to lastInteractionAt,desc) | | `page` | number | No | Page number to fetch, starting at 1 | #### Output [#output-35] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------- | | `organizations` | array | Organizations on this page | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `website` | string | Website | | ↳ `description` | string | Description | | ↳ `location` | string | Two-letter country code | | ↳ `logoUrl` | string | Logo URL | | ↳ `note` | string | Custom note | | ↳ `domains` | array | Domains used to match customers to the organization | | ↳ `phones` | array | Phone numbers | | ↳ `brandColor` | string | Brand color (hex) | | ↳ `customerCount` | number | Number of customers (when counts are included) | | ↳ `conversationCount` | number | Number of conversations (when counts are included) | | ↳ `properties` | array | Organization property values (when properties are included) | | ↳ `definitionId` | number | Property definition ID | | ↳ `slug` | string | Property slug | | ↳ `name` | string | Property name | | ↳ `type` | string | Property type | | ↳ `value` | string | Property value | | ↳ `options` | array | Option labels (dropdown properties) | ### Help Scout Get Organization [#help-scout-get-organization] Get a Help Scout organization by ID, optionally with its customer and conversation counts and property values. #### Input [#input-36] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------- | | `organizationId` | string | Yes | Organization ID | | `includeCounts` | boolean | No | Include customer and conversation counts | | `includeProperties` | boolean | No | Include organization property values | #### Output [#output-36] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------- | | `organization` | json | Organization details | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `website` | string | Website | | ↳ `description` | string | Description | | ↳ `location` | string | Two-letter country code | | ↳ `logoUrl` | string | Logo URL | | ↳ `note` | string | Custom note | | ↳ `domains` | array | Domains used to match customers to the organization | | ↳ `phones` | array | Phone numbers | | ↳ `brandColor` | string | Brand color (hex) | | ↳ `customerCount` | number | Number of customers (when counts are included) | | ↳ `conversationCount` | number | Number of conversations (when counts are included) | | ↳ `properties` | array | Organization property values (when properties are included) | | ↳ `definitionId` | number | Property definition ID | | ↳ `slug` | string | Property slug | | ↳ `name` | string | Property name | | ↳ `type` | string | Property type | | ↳ `value` | string | Property value | | ↳ `options` | array | Option labels (dropdown properties) | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Help Scout Agent Replied [#help-scout-agent-replied] Trigger workflow when an agent replies to a Help Scout conversation (auto replies are not included) #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-37] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Assigned [#help-scout-conversation-assigned] Trigger workflow when a Help Scout conversation is assigned #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-38] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Created [#help-scout-conversation-created] Trigger workflow when a conversation is created in Help Scout #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-39] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Deleted [#help-scout-conversation-deleted] Trigger workflow when a Help Scout conversation is deleted #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-40] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | ID of the deleted conversation | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Merged [#help-scout-conversation-merged] Trigger workflow when Help Scout conversations are merged #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-41] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Moved [#help-scout-conversation-moved] Trigger workflow when a Help Scout conversation is moved to another inbox #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-42] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Status Changed [#help-scout-conversation-status-changed] Trigger workflow when the status of a Help Scout conversation changes #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-43] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Conversation Tags Updated [#help-scout-conversation-tags-updated] Trigger workflow when the tags on a Help Scout conversation change #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-44] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Customer Created [#help-scout-customer-created] Trigger workflow when a customer is created in Help Scout (fires for every inbox) #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | #### Output [#output-45] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `customerId` | number | Customer ID | | `customer` | object | customer output from the tool | | ↳ `id` | number | Customer ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `jobTitle` | string | Job title | | ↳ `location` | string | Location | | ↳ `organization` | string | Organization name | | ↳ `organizationId` | number | Organization ID | | ↳ `photoType` | string | Photo source | | ↳ `photoUrl` | string | Photo URL | | ↳ `age` | string | Age | | ↳ `background` | string | Notes about the customer | | ↳ `conversationCount` | number | Number of conversations | | ↳ `draft` | boolean | Whether the customer is a draft record | | ↳ `createdAt` | string | When the customer was created | | ↳ `updatedAt` | string | When the customer was updated | | ↳ `emails` | array | Email addresses (id, value, type) | | ↳ `phones` | array | Phone numbers (id, value, type) | | ↳ `websites` | array | Websites (id, value, type) | | ↳ `socialProfiles` | array | Social profiles (id, value, type) | | ↳ `chats` | array | Chat handles (id, value, type) | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Customer Replied [#help-scout-customer-replied] Trigger workflow when a customer replies to a Help Scout conversation #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-46] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Customer Updated [#help-scout-customer-updated] Trigger workflow when a Help Scout customer is updated #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | #### Output [#output-47] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `customerId` | number | Customer ID | | `customer` | object | customer output from the tool | | ↳ `id` | number | Customer ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `jobTitle` | string | Job title | | ↳ `location` | string | Location | | ↳ `organization` | string | Organization name | | ↳ `organizationId` | number | Organization ID | | ↳ `photoType` | string | Photo source | | ↳ `photoUrl` | string | Photo URL | | ↳ `age` | string | Age | | ↳ `background` | string | Notes about the customer | | ↳ `conversationCount` | number | Number of conversations | | ↳ `draft` | boolean | Whether the customer is a draft record | | ↳ `createdAt` | string | When the customer was created | | ↳ `updatedAt` | string | When the customer was updated | | ↳ `emails` | array | Email addresses (id, value, type) | | ↳ `phones` | array | Phone numbers (id, value, type) | | ↳ `websites` | array | Websites (id, value, type) | | ↳ `socialProfiles` | array | Social profiles (id, value, type) | | ↳ `chats` | array | Chat handles (id, value, type) | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Note Created [#help-scout-note-created] Trigger workflow when a note is added to a Help Scout conversation #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-48] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `conversationId` | number | Conversation ID | | `conversation` | object | conversation output from the tool | | ↳ `id` | number | Conversation ID | | ↳ `number` | number | Conversation number shown in Help Scout | | ↳ `threadCount` | number | Number of published threads, excluding notes | | ↳ `folderId` | number | Folder ID | | ↳ `status` | string | active, pending, closed, or spam | | ↳ `state` | string | published, draft, or deleted | | ↳ `subject` | string | Subject | | ↳ `preview` | string | Preview text from the most recent thread | | ↳ `mailboxId` | number | Inbox ID | | ↳ `assignee` | json | User or team the conversation is assigned to (id, type, first, last, name, email) | | ↳ `createdBy` | json | User or customer who created the conversation (id, type, first, last, name, email) | | ↳ `primaryCustomer` | json | Primary customer of the conversation (id, type, first, last, name, email) | | ↳ `createdAt` | string | When the conversation was created | | ↳ `closedAt` | string | When the conversation was closed | | ↳ `closedBy` | number | ID of the user who closed it | | ↳ `userUpdatedAt` | string | When a user last updated the conversation | | ↳ `customerWaitingSince` | string | When the customer started waiting for a reply | | ↳ `sourceType` | string | Originating channel | | ↳ `sourceVia` | string | user or customer | | ↳ `tags` | array | Tags on the conversation (id, tag, color) | | ↳ `cc` | array | CC email addresses | | ↳ `bcc` | array | BCC email addresses | | ↳ `customFields` | array | Custom field values (id, name, value, text) | | ↳ `snoozedUntil` | string | When the snooze ends, if the conversation is snoozed | | ↳ `webUrl` | string | Link to the conversation in Help Scout | | `payload` | json | Raw Help Scout webhook payload | *** ### Help Scout Webhook (All Events) [#help-scout-webhook-all-events] Trigger on every supported Help Scout conversation and customer event #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | ------------------------ | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `triggerCredentials` | string | Yes | Agent Serve creates the Help Scout webhook with this account and deletes it when the workflow is undeployed. | | `triggerMailboxSelector` | project-selector | No | Only receive events for conversations in this inbox. Leave empty for every inbox. | | `triggerMailboxId` | string | No | Inbox ID | #### Output [#output-49] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------- | | `eventType` | string | Help Scout event name, e.g. convo.created | | `payload` | json | Raw Help Scout webhook payload | --- # Hex (/integrations/hex) {/* MANUAL-CONTENT-START:intro */} Use [Hex](https://hex.tech/) to run analytics projects, inspect results and run status, and manage workspace collections and groups. Connect with a Hex API token. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Hex into your workflow. Run projects, check run status, manage collections and groups (including membership and deactivating users), list users, and view data connections. Requires a Hex API token. ## Actions [#actions] ### Hex Cancel Run [#hex-cancel-run] Cancel an active Hex project run. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project | | `runId` | string | Yes | The UUID of the run to cancel | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the run was successfully cancelled | | `projectId` | string | Project UUID | | `runId` | string | Run UUID that was cancelled | ### Hex Create Collection [#hex-create-collection] Create a new collection in the Hex workspace to organize projects. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `name` | string | Yes | Name for the new collection | | `description` | string | No | Optional description for the collection | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `id` | string | Newly created collection UUID | | `name` | string | Collection name | | `description` | string | Collection description | | `creator` | object | Collection creator | | ↳ `email` | string | Creator email | | ↳ `id` | string | Creator UUID | ### Hex Create Group [#hex-create-group] Create a new group in the Hex workspace, optionally with initial members. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `name` | string | Yes | Name for the new group | | `memberUserIds` | json | No | JSON array of user UUIDs to add as initial group members (e.g., \["uuid1", "uuid2"]) | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `id` | string | Newly created group UUID | | `name` | string | Group name | | `createdAt` | string | Creation timestamp | ### Hex Deactivate User [#hex-deactivate-user] Deactivate a user in the Hex workspace. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `userId` | string | Yes | The UUID of the user to deactivate | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the user was successfully deactivated | | `userId` | string | User UUID that was deactivated | ### Hex Delete Group [#hex-delete-group] Delete a group from the Hex workspace. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `groupId` | string | Yes | The UUID of the group to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the group was successfully deleted | | `groupId` | string | Group UUID that was deleted | ### Hex Get Collection [#hex-get-collection] Retrieve details for a specific Hex collection by its ID. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `collectionId` | string | Yes | The UUID of the collection | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `id` | string | Collection UUID | | `name` | string | Collection name | | `description` | string | Collection description | | `creator` | object | Collection creator | | ↳ `email` | string | Creator email | | ↳ `id` | string | Creator UUID | ### Hex Get Data Connection [#hex-get-data-connection] Retrieve details for a specific data connection including type, description, and configuration flags. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `dataConnectionId` | string | Yes | The UUID of the data connection | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------- | | `id` | string | Connection UUID | | `name` | string | Connection name | | `type` | string | Connection type (e.g., snowflake, postgres, bigquery) | | `description` | string | Connection description | | `connectViaSsh` | boolean | Whether SSH tunneling is enabled | | `includeMagic` | boolean | Whether Magic AI features are enabled | | `allowWritebackCells` | boolean | Whether writeback cells are allowed | ### Hex Get Group [#hex-get-group] Retrieve details for a specific Hex group. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `groupId` | string | Yes | The UUID of the group | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | ------------------ | | `id` | string | Group UUID | | `name` | string | Group name | | `createdAt` | string | Creation timestamp | ### Hex Get Project [#hex-get-project] Get metadata and details for a specific Hex project by its ID. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project | #### Output [#output-8] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------ | | `id` | string | Project UUID | | `title` | string | Project title | | `description` | string | Project description | | `status` | object | Project status | | ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) | | `type` | string | Project type (PROJECT or COMPONENT) | | `creator` | object | Project creator | | ↳ `email` | string | Creator email | | `owner` | object | Project owner | | ↳ `email` | string | Owner email | | `categories` | array | Project categories | | ↳ `name` | string | Category name | | ↳ `description` | string | Category description | | `lastEditedAt` | string | ISO 8601 last edited timestamp | | `lastPublishedAt` | string | ISO 8601 last published timestamp | | `createdAt` | string | ISO 8601 creation timestamp | | `archivedAt` | string | ISO 8601 archived timestamp | | `trashedAt` | string | ISO 8601 trashed timestamp | ### Hex Get Project Runs [#hex-get-project-runs] Retrieve API-triggered runs for a Hex project with optional filtering by status and pagination. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project | | `limit` | number | No | Maximum number of runs to return (1-100, default: 25) | | `offset` | number | No | Offset for paginated results (default: 0) | | `statusFilter` | string | No | Filter by run status: PENDING, RUNNING, ERRORED, COMPLETED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL | | `runTriggerFilter` | string | No | Filter by how the run was triggered: ALL, API, SCHEDULED, or APP\_REFRESH | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------- | | `runs` | array | List of project runs | | ↳ `projectId` | string | Project UUID | | ↳ `runId` | string | Run UUID | | ↳ `runUrl` | string | URL to view the run | | ↳ `status` | string | Run status (PENDING, RUNNING, COMPLETED, ERRORED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL) | | ↳ `startTime` | string | Run start time | | ↳ `endTime` | string | Run end time | | ↳ `elapsedTime` | number | Elapsed time in seconds | | ↳ `traceId` | string | Trace ID | | ↳ `projectVersion` | number | Project version number | | `total` | number | Total number of runs returned | | `traceId` | string | Top-level trace ID | | `nextPage` | string | Cursor for the next page of runs | | `previousPage` | string | Cursor for the previous page of runs | ### Hex Get Queried Tables [#hex-get-queried-tables] Return the warehouse tables queried by a Hex project, including data connection and table names. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project | | `limit` | number | No | Maximum number of tables to return (1-100) | #### Output [#output-10] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------- | | `tables` | array | List of warehouse tables queried by the project | | ↳ `dataConnectionId` | string | Data connection UUID | | ↳ `dataConnectionName` | string | Data connection name | | ↳ `tableName` | string | Table name | | `total` | number | Total number of tables returned | ### Hex Get Run Status [#hex-get-run-status] Check the status of a Hex project run by its run ID. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project | | `runId` | string | Yes | The UUID of the run to check | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------------------------------- | | `projectId` | string | Project UUID | | `runId` | string | Run UUID | | `runUrl` | string | URL to view the run | | `status` | string | Run status (PENDING, RUNNING, COMPLETED, ERRORED, KILLED, UNABLE\_TO\_ALLOCATE\_KERNEL) | | `startTime` | string | ISO 8601 run start time | | `endTime` | string | ISO 8601 run end time | | `elapsedTime` | number | Elapsed time in seconds | | `traceId` | string | Trace ID for debugging | | `projectVersion` | number | Project version number | ### Hex List Collections [#hex-list-collections] List all collections in the Hex workspace. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `limit` | number | No | Maximum number of collections to return (1-500, default: 25) | | `sortBy` | string | No | Sort by field: NAME | | `after` | string | No | Cursor to fetch the page of results after this value | | `before` | string | No | Cursor to fetch the page of results before this value | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `collections` | array | List of collections | | ↳ `id` | string | Collection UUID | | ↳ `name` | string | Collection name | | ↳ `description` | string | Collection description | | ↳ `creator` | object | Collection creator | | ↳ `email` | string | Creator email | | ↳ `id` | string | Creator UUID | | `total` | number | Total number of collections returned | | `after` | string | Cursor for the next page of results | | `before` | string | Cursor for the previous page of results | ### Hex List Data Connections [#hex-list-data-connections] List all data connections in the Hex workspace (e.g., Snowflake, PostgreSQL, BigQuery). #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `limit` | number | No | Maximum number of connections to return (1-500, default: 25) | | `sortBy` | string | No | Sort by field: CREATED\_AT or NAME | | `sortDirection` | string | No | Sort direction: ASC or DESC | | `after` | string | No | Cursor to fetch the page of results after this value | | `before` | string | No | Cursor to fetch the page of results before this value | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------------------------------------- | | `connections` | array | List of data connections | | ↳ `id` | string | Connection UUID | | ↳ `name` | string | Connection name | | ↳ `type` | string | Connection type (e.g., athena, bigquery, databricks, postgres, redshift, snowflake) | | ↳ `description` | string | Connection description | | ↳ `connectViaSsh` | boolean | Whether SSH tunneling is enabled | | ↳ `includeMagic` | boolean | Whether Magic AI features are enabled | | ↳ `allowWritebackCells` | boolean | Whether writeback cells are allowed | | `total` | number | Total number of connections returned | | `after` | string | Cursor for the next page of results | | `before` | string | Cursor for the previous page of results | ### Hex List Groups [#hex-list-groups] List all groups in the Hex workspace with optional sorting. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `limit` | number | No | Maximum number of groups to return (1-500, default: 25) | | `sortBy` | string | No | Sort by field: CREATED\_AT or NAME | | `sortDirection` | string | No | Sort direction: ASC or DESC | | `after` | string | No | Cursor to fetch the page of results after this value | | `before` | string | No | Cursor to fetch the page of results before this value | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------- | | `groups` | array | List of workspace groups | | ↳ `id` | string | Group UUID | | ↳ `name` | string | Group name | | ↳ `createdAt` | string | Creation timestamp | | `total` | number | Total number of groups returned | | `after` | string | Cursor for the next page of results | | `before` | string | Cursor for the previous page of results | ### Hex List Projects [#hex-list-projects] List all projects in your Hex workspace with optional filtering by status. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `limit` | number | No | Maximum number of projects to return (1-100) | | `includeArchived` | boolean | No | Include archived projects in results | | `statusFilter` | string | No | Filter by status: PUBLISHED, DRAFT, or ALL | | `includeComponents` | boolean | No | Include components in results | | `includeTrashed` | boolean | No | Include trashed projects in results | | `creatorEmail` | string | No | Filter by creator email | | `ownerEmail` | string | No | Filter by owner email | | `collectionId` | string | No | Filter by collection UUID | | `categories` | json | No | JSON array of category names to filter by (e.g., \["Marketing", "Finance"]) | | `sortBy` | string | No | Sort by field: CREATED\_AT, LAST\_EDITED\_AT, or LAST\_PUBLISHED\_AT | | `sortDirection` | string | No | Sort direction: ASC or DESC | | `after` | string | No | Cursor to fetch the page of results after this value | | `before` | string | No | Cursor to fetch the page of results before this value | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------- | | `projects` | array | List of Hex projects | | ↳ `id` | string | Project UUID | | ↳ `title` | string | Project title | | ↳ `description` | string | Project description | | ↳ `status` | object | Project status | | ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) | | ↳ `type` | string | Project type (PROJECT or COMPONENT) | | ↳ `creator` | object | Project creator | | ↳ `email` | string | Creator email | | ↳ `owner` | object | Project owner | | ↳ `email` | string | Owner email | | ↳ `lastEditedAt` | string | Last edited timestamp | | ↳ `lastPublishedAt` | string | Last published timestamp | | ↳ `createdAt` | string | Creation timestamp | | ↳ `archivedAt` | string | Archived timestamp | | `total` | number | Total number of projects returned | | `after` | string | Cursor for the next page of results | | `before` | string | Cursor for the previous page of results | ### Hex List Users [#hex-list-users] List all users in the Hex workspace with optional filtering and sorting. #### Input [#input-16] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `limit` | number | No | Maximum number of users to return (1-100, default: 25) | | `sortBy` | string | No | Sort by field: NAME or EMAIL | | `sortDirection` | string | No | Sort direction: ASC or DESC | | `groupId` | string | No | Filter users by group UUID | | `userIds` | string | No | Comma-separated list of user UUIDs to filter by | | `after` | string | No | Cursor to fetch the page of results after this value | | `before` | string | No | Cursor to fetch the page of results before this value | #### Output [#output-16] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------- | | `users` | array | List of workspace users | | ↳ `id` | string | User UUID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `role` | string | User role (ADMIN, MANAGER, EDITOR, EXPLORER, MEMBER, GUEST, EMBEDDED\_USER, ANONYMOUS) | | ↳ `lastLoginDate` | string | Last login timestamp | | `total` | number | Total number of users returned | | `after` | string | Cursor for the next page of results | | `before` | string | Cursor for the previous page of results | ### Hex Run Project [#hex-run-project] Execute a published Hex project. Optionally pass input parameters and control caching behavior. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project to run | | `inputParams` | json | No | JSON object of input parameters for the project (e.g., \{"date": "2024-01-01"}) | | `dryRun` | boolean | No | If true, perform a dry run without executing the project | | `updateCache` | boolean | No | (Deprecated) If true, update the cached results after execution | | `updatePublishedResults` | boolean | No | If true, update the published app results after execution | | `useCachedSqlResults` | boolean | No | If true, use cached SQL results instead of re-running queries | | `viewId` | string | No | Optional SavedView ID to use for the project run | | `notifications` | json | No | JSON array of notification details to deliver once the run completes (e.g., \[\{"type": "FAILURE", "slackChannelIds": \["C0123456789"], "userIds": \[], "groupIds": \[], "includeSuccessScreenshot": false}]). type is ALL, SUCCESS, or FAILURE. | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------ | ----------------------- | | `projectId` | string | Project UUID | | `runId` | string | Run UUID | | `runUrl` | string | URL to view the run | | `runStatusUrl` | string | URL to check run status | | `traceId` | string | Trace ID for debugging | | `projectVersion` | number | Project version number | ### Hex Update Collection [#hex-update-collection] Update the name or description of an existing Hex collection. #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `collectionId` | string | Yes | The UUID of the collection to update | | `name` | string | No | New name for the collection | | `description` | string | No | New description for the collection | #### Output [#output-18] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `id` | string | Collection UUID | | `name` | string | Collection name | | `description` | string | Collection description | | `creator` | object | Collection creator | | ↳ `email` | string | Creator email | | ↳ `id` | string | Creator UUID | ### Hex Update Group [#hex-update-group] Rename a Hex group or add/remove members from it. #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `groupId` | string | Yes | The UUID of the group to update | | `name` | string | No | New name for the group | | `addUserIds` | json | No | JSON array of user UUIDs to add to the group (e.g., \["uuid1", "uuid2"]) | | `removeUserIds` | json | No | JSON array of user UUIDs to remove from the group (e.g., \["uuid1", "uuid2"]) | #### Output [#output-19] | Parameter | Type | Description | | ----------- | ------ | ------------------ | | `id` | string | Group UUID | | `name` | string | Group name | | `createdAt` | string | Creation timestamp | ### Hex Update Project [#hex-update-project] Update a Hex project status label (e.g., endorsement or custom workspace statuses). #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Hex API token (Personal or Workspace) | | `projectId` | string | Yes | The UUID of the Hex project to update | | `status` | string | Yes | New project status name (custom workspace status label) | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------ | | `id` | string | Project UUID | | `title` | string | Project title | | `description` | string | Project description | | `status` | object | Updated project status | | ↳ `name` | string | Status name (e.g., PUBLISHED, DRAFT) | | `type` | string | Project type (PROJECT or COMPONENT) | | `creator` | object | Project creator | | ↳ `email` | string | Creator email | | `owner` | object | Project owner | | ↳ `email` | string | Owner email | | `categories` | array | Project categories | | ↳ `name` | string | Category name | | ↳ `description` | string | Category description | | `lastEditedAt` | string | Last edited timestamp | | `lastPublishedAt` | string | Last published timestamp | | `createdAt` | string | Creation timestamp | | `archivedAt` | string | Archived timestamp | | `trashedAt` | string | Trashed timestamp | --- # HubSpot Private App Tokens (/integrations/hubspot-service-account) Connect HubSpot with a private app access token created by a super admin. Select the CRM scopes your workflows need and keep the creating admin's account permissions in mind when managing the app. ## Prerequisites [#prerequisites] You need a HubSpot **super admin** to create the private app. Private apps can only be created and managed by super admins in the portal. The token is tied to the super admin who created the private app. If that user is later removed from the portal (or loses super admin), some API calls start failing with `USER_DOES_NOT_HAVE_PERMISSIONS` — association calls are commonly reported. Create the app from an account you expect to keep, and rotate the token if the creator ever leaves. ## Setting Up the Private App [#setting-up-the-private-app] ### 1. Create the Private App [#1-create-the-private-app] In HubSpot, navigate to **Development** in the left sidebar, then **Legacy apps** {/* TODO(screenshot): HubSpot navigation showing Development → Legacy apps */} HubSpot moved private apps under a new **Development** area and relabeled them "Legacy apps". The tokens themselves remain fully supported — only the navigation changed. If you don't see **Development**, look for **Private Apps** under **Settings** → **Integrations** in older portals. Click **Create legacy app** in the top right, select **Private**, and give it a name (e.g. `agentserve-hubspot-bot`) and description Open the **Scopes** tab and select the scopes your workflows need (see the list below) {/* TODO(screenshot): private app Scopes tab with CRM scopes selected */} Click **Create app**, confirm, and copy the access token from the app's **Auth** tab {/* TODO(screenshot): private app Auth tab showing the access token with the Show/Copy controls */} ### 2. Choose Scopes [#2-choose-scopes] Private apps use the same scope catalog as HubSpot OAuth apps. Grant only what your workflows use. The full set Agent Serve's HubSpot tools can draw on is: **CRM objects (read/write as needed):** ``` crm.objects.contacts.read crm.objects.contacts.write crm.objects.companies.read crm.objects.companies.write crm.objects.deals.read crm.objects.deals.write crm.objects.line_items.read crm.objects.line_items.write crm.objects.appointments.read crm.objects.appointments.write crm.objects.owners.read crm.objects.users.read crm.objects.marketing_events.read crm.objects.quotes.read crm.objects.carts.read ``` **Tickets, emails, and lists:** ``` tickets sales-email-read crm.lists.read crm.lists.write ``` Ticket tools need `tickets`, email tools need `sales-email-read`, list tools need `crm.lists.*`, and each object type's tools need its `crm.objects.*` scope. Notes and association tools need the CRM object scopes of the records involved. A missing scope surfaces at run time as a `403` error with category `MISSING_SCOPES` naming the scopes required — widen the app's scopes from the same Scopes tab, commit the change in HubSpot, and re-run the workflow. If the `403` persists, rotate the token and update the credential in Agent Serve. Agent Serve's OAuth flow also requests an `oauth` scope — that one is OAuth-app-only and doesn't exist for private apps. You don't need it and can't grant it. ### 3. Copy the Token [#3-copy-the-token] The token looks like `pat-na1-…` (North America) or `pat-eu1-…` (EU data residency). Both work — Agent Serve calls `api.hubapi.com`, which serves both regions. The access token is bearer credentials for your entire portal, limited only by its scopes. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the token at rest. ## Adding the Private App Token to Agent Serve [#adding-the-private-app-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "HubSpot" and open it, then click **Add to Agent Serve** and choose **Add private app token** {/* TODO(screenshot): HubSpot integration page with the service-account connect option */} Paste the **Private app access token**, and optionally set a display name and description {/* TODO(screenshot): Add HubSpot private app token dialog with the private app access token filled in */} Click **Add private app token**. Agent Serve verifies the token against HubSpot's token-info endpoint — if it fails, you'll see a specific error explaining what went wrong. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a HubSpot block or the HubSpot CRM Trigger to your workflow. In the credential dropdown, select the saved HubSpot private app token. Select it and configure the block as you normally would. Private app tokens also work with the polling trigger. If the creating admin leaves or loses permissions, follow the account-management guidance above. {/* TODO(screenshot): HubSpot block in a workflow with the HubSpot service account selected as the credential */} The block calls `api.hubapi.com` using the private app token — exactly the same requests as the OAuth flow, so every HubSpot tool works unchanged, subject to the scopes you granted. ## Rotating the Token [#rotating-the-token] Private app tokens don't auto-expire, but HubSpot recommends rotating them every six months and emails super admins once a token hasn't rotated in about 180 days. From the app's Auth tab you can: * **Rotate and expire now** — the old token dies immediately * **Rotate and expire later** — the old token keeps working for 7 days while you migrate Prefer the 7-day option: rotate in HubSpot, paste the new token into the credential in Agent Serve, confirm your workflows run, and let the old token lapse. --- # HubSpot setup guide (/integrations/hubspot-setup) Agent Serve connects your HubSpot CRM to AI workflows. Once connected, your workflows can: * **Read and write CRM records** — create, look up, search, and update contacts, companies, deals, and tickets from any workflow. * **React to CRM changes** — start a workflow when a contact, company, deal, or ticket is created or updated in HubSpot. * **Combine HubSpot with AI steps** — enrich a new contact with an [Agent block](/workflows/blocks/agent), route deals with a [Condition](/workflows/blocks/condition), or sync records into [Tables](/tables). This guide covers installing the integration, connecting a HubSpot account, configuring it in a workflow, and disconnecting or uninstalling it. ## Before you begin [#before-you-begin] You need: * A [Agent Serve](https://agentserve.valnoraelric.com) account and a workspace where you have **Write** or **Admin** permission. * A HubSpot account. To grant the requested scopes, your HubSpot user needs permission to install apps (typically a super admin). ## Install the app and connect HubSpot [#install-the-app-and-connect-hubspot] 1. Log in to Agent Serve, open your workspace, and click **Integrations** in the sidebar. 2. Search for **HubSpot** and open it. The Integrations page with search, category filters, and HubSpot among the featured services 3. Click **Connect HubSpot**. If the button opens a menu, choose **Connect with OAuth**. For a private app token, follow the [Private App Tokens guide](/integrations/hubspot-service-account). 4. In the **Connect HubSpot** dialog, enter a **Display name** for the connection (for example "Sales HubSpot"), review the permissions requested, and click **Connect**. 5. You are redirected to HubSpot. Sign in, then choose the HubSpot account you want to connect. 6. Review the requested scopes on HubSpot's approval screen and click **Connect app**. {/* VISUAL: screenshot of the HubSpot scope approval screen for the Agent Serve app. */} 7. You are returned to Agent Serve. The connection appears under **Connected** on the Integrations page. You can connect more than one HubSpot account — for example, separate sales and support portals — and choose per workflow which one to use. ## Configure the app in a workflow [#configure-the-app-in-a-workflow] You can start from a template on the HubSpot page or configure the block directly. Playbooks such as *upsert-contact* give an agent step-by-step instructions for a task; click **Add** next to one to add it to your workspace. For your own workflows, the integration runs through the **HubSpot block**. 1. Open a workflow in the editor and add a **HubSpot** block. 2. In **HubSpot Account**, select the connection you created. 3. Pick an **Operation** — for example *Create Contact*, *Search Deals*, *Update Ticket*, or *List Companies*. 4. Fill in the operation's fields. Reference outputs from earlier blocks with [connection tags](/workflows/connections), like `` or ``. {/* VISUAL: screenshot of a HubSpot block configured with an account and the Create Contact operation. */} The full list of operations, with every input and output, is on the [HubSpot integration reference](/integrations/hubspot). ### Start workflows from HubSpot events [#start-workflows-from-hubspot-events] The HubSpot block can also act as a trigger. Toggle **Use as Trigger**, select the connection, and choose which events to watch — contacts, companies, deals, or tickets, created or updated. Agent Serve polls HubSpot for changes and runs the workflow once per changed record, with the record's fields available to downstream blocks. Triggers run against your workflow's active [deployment](/workflows/deployment). Deploy it, allow the first poll to establish a baseline, then create or update a record to test the trigger. ## Use the app [#use-the-app] Once configured, the integration runs automatically: * **Workflow actions** run whenever the workflow runs — manually from the editor, on a schedule, from an API call, or from a chat. * **Triggers** run on their own: when a watched record changes in HubSpot, the workflow starts with that record as input. Every run is recorded in [Logs](/logs-debugging), block by block, so you can verify exactly what was read from or written to HubSpot. ## Disconnect HubSpot from Agent Serve [#disconnect-hubspot-from-agent-serve] When you disconnect, workflows that use this HubSpot connection will fail at the HubSpot block on their next run, and HubSpot triggers using it stop firing. Data already written to HubSpot or stored in Agent Serve is not affected. 1. In Agent Serve, click **Integrations** in the sidebar. 2. Under **Connected**, open your HubSpot connection. 3. Click **Disconnect**, and confirm. Disconnecting deletes the stored OAuth tokens. To use HubSpot again later, reconnect and update your workflows to use the new connection. ## Uninstall the app from HubSpot [#uninstall-the-app-from-hubspot] You can also remove Agent Serve from the HubSpot side, which revokes its access entirely: 1. In HubSpot, go to **Settings → Integrations → Connected apps**. 2. Find **Agent Serve** and choose **Uninstall**. See HubSpot's guide to [connecting and uninstalling apps](https://knowledge.hubspot.com/integrations/connect-apps-to-hubspot) for details. Uninstalling revokes Agent Serve's tokens, so connected workflows fail at the HubSpot block until you reinstall and reconnect. Your HubSpot data itself is not changed or deleted. ## Troubleshooting [#troubleshooting] * **A HubSpot block fails with an authorization error.** The connection may have been disconnected or its token revoked. Open **Integrations** in the sidebar, check the connection, and reconnect it. * **A trigger isn't firing.** Confirm the workflow is deployed, and check [Logs](/logs-debugging) for recent runs. * **You manage multiple portals.** Connect each HubSpot account separately and pick the right connection per block. Need help? Contact [systems@valnoraelric.com](mailto:systems@valnoraelric.com). --- # HubSpot (/integrations/hubspot) {/* MANUAL-CONTENT-START:intro */} [HubSpot](https://www.hubspot.com/) stores CRM contacts, companies, deals, tickets, and related records. Use this integration to read and update those records and trigger workflows from HubSpot events. Follow the [HubSpot setup guide](/integrations/hubspot-setup) to connect your account. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate HubSpot into your workflow. Manage contacts, companies, deals, tickets, and other CRM objects with powerful automation capabilities. Log AI call outcomes, meetings, and follow-up tasks against contacts, companies, and deals. Can be used in trigger mode to start workflows when records are created, updated, a specific property changes, or a contact joins a list, either by polling or instantly through HubSpot webhooks. ## Actions [#actions] ### Get Users from HubSpot [#get-users-from-hubspot] Retrieve all users from HubSpot account #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `limit` | string | No | Number of results to return (default: 10, max: 100) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot user property names to return (e.g., "hs\_email,hs\_given\_name,hs\_family\_name") | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------ | | `users` | array | Array of HubSpot CRM records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Record properties | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `totalItems` | number | Total number of users returned | | `success` | boolean | Operation success status | ### List Contacts from HubSpot [#list-contacts-from-hubspot] Retrieve all contacts from HubSpot account with pagination support #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "email,firstname,lastname,phone") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "companies,deals") | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------- | | `contacts` | array | Array of HubSpot contact records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Contact properties | | ↳ `email` | string | Contact email address | | ↳ `firstname` | string | Contact first name | | ↳ `lastname` | string | Contact last name | | ↳ `phone` | string | Contact phone number | | ↳ `mobilephone` | string | Contact mobile phone number | | ↳ `company` | string | Associated company name | | ↳ `website` | string | Contact website URL | | ↳ `jobtitle` | string | Contact job title | | ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Contact creation date (ISO 8601) | | ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `address` | string | Street address | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `fax` | string | Fax number | | ↳ `hs_timezone` | string | Contact timezone | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Contact from HubSpot [#get-contact-from-hubspot] Retrieve a single contact by ID or email from HubSpot #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `contactId` | string | Yes | The HubSpot contact ID (numeric string) or email address to retrieve | | `idProperty` | string | No | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "email,firstname,lastname,phone") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "companies,deals") | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------- | | `contact` | object | HubSpot contact record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Contact properties | | ↳ `email` | string | Contact email address | | ↳ `firstname` | string | Contact first name | | ↳ `lastname` | string | Contact last name | | ↳ `phone` | string | Contact phone number | | ↳ `mobilephone` | string | Contact mobile phone number | | ↳ `company` | string | Associated company name | | ↳ `website` | string | Contact website URL | | ↳ `jobtitle` | string | Contact job title | | ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Contact creation date (ISO 8601) | | ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `address` | string | Street address | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `fax` | string | Fax number | | ↳ `hs_timezone` | string | Contact timezone | | ↳ `associations` | object | Associated records (companies, deals, etc.) | | `contactId` | string | The retrieved contact ID | | `success` | boolean | Operation success status | ### Create Contact in HubSpot [#create-contact-in-hubspot] Create a new contact in HubSpot. Requires at least one of: email, firstname, or lastname #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Contact properties as JSON object. Must include at least one of: email, firstname, or lastname (e.g., \{"email": "[john@example.com](mailto:john@example.com)", "firstname": "John", "lastname": "Doe"}) | | `associations` | array | No | Array of associations to create with the contact as JSON. Each object should have "to.id" (company/deal ID) and "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------- | | `contact` | object | HubSpot contact record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Contact properties | | ↳ `email` | string | Contact email address | | ↳ `firstname` | string | Contact first name | | ↳ `lastname` | string | Contact last name | | ↳ `phone` | string | Contact phone number | | ↳ `mobilephone` | string | Contact mobile phone number | | ↳ `company` | string | Associated company name | | ↳ `website` | string | Contact website URL | | ↳ `jobtitle` | string | Contact job title | | ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Contact creation date (ISO 8601) | | ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `address` | string | Street address | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `fax` | string | Fax number | | ↳ `hs_timezone` | string | Contact timezone | | ↳ `associations` | object | Associated records (companies, deals, etc.) | | `contactId` | string | The created contact ID | | `success` | boolean | Operation success status | ### Update Contact in HubSpot [#update-contact-in-hubspot] Update an existing contact in HubSpot by ID or email #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `contactId` | string | Yes | The HubSpot contact ID (numeric string) or email of the contact to update | | `idProperty` | string | No | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID | | `properties` | object | Yes | Contact properties to update as JSON object (e.g., \{"firstname": "John", "phone": "+1234567890"}) | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------- | | `contact` | object | HubSpot contact record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Contact properties | | ↳ `email` | string | Contact email address | | ↳ `firstname` | string | Contact first name | | ↳ `lastname` | string | Contact last name | | ↳ `phone` | string | Contact phone number | | ↳ `mobilephone` | string | Contact mobile phone number | | ↳ `company` | string | Associated company name | | ↳ `website` | string | Contact website URL | | ↳ `jobtitle` | string | Contact job title | | ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Contact creation date (ISO 8601) | | ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `address` | string | Street address | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `fax` | string | Fax number | | ↳ `hs_timezone` | string | Contact timezone | | ↳ `associations` | object | Associated records (companies, deals, etc.) | | `contactId` | string | The updated contact ID | | `success` | boolean | Operation success status | ### Search Contacts in HubSpot [#search-contacts-in-hubspot] Search for contacts in HubSpot using filters, sorting, and queries #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against contact name, email, and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["email", "firstname", "lastname", "phone"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------------------------------------------------------- | | `contacts` | array | Array of HubSpot contact records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Contact properties | | ↳ `email` | string | Contact email address | | ↳ `firstname` | string | Contact first name | | ↳ `lastname` | string | Contact last name | | ↳ `phone` | string | Contact phone number | | ↳ `mobilephone` | string | Contact mobile phone number | | ↳ `company` | string | Associated company name | | ↳ `website` | string | Contact website URL | | ↳ `jobtitle` | string | Contact job title | | ↳ `lifecyclestage` | string | Lifecycle stage (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Contact creation date (ISO 8601) | | ↳ `lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `address` | string | Street address | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `fax` | string | Fax number | | ↳ `hs_timezone` | string | Contact timezone | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching contacts | | `success` | boolean | Operation success status | ### List Companies from HubSpot [#list-companies-from-hubspot] Retrieve all companies from HubSpot account with pagination support #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,domain,industry") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,deals") | #### Output [#output-6] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------ | | `companies` | array | Array of HubSpot company records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Company properties | | ↳ `name` | string | Company name | | ↳ `domain` | string | Company website domain (unique identifier) | | ↳ `description` | string | Company description | | ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) | | ↳ `phone` | string | Company phone number | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `address` | string | Street address | | ↳ `numberofemployees` | string | Total number of employees | | ↳ `annualrevenue` | string | Annual revenue estimate | | ↳ `lifecyclestage` | string | Lifecycle stage | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Company creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) | | ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) | | ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) | | ↳ `website` | string | Company website URL | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Company from HubSpot [#get-company-from-hubspot] Retrieve a single company by ID or domain from HubSpot #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `companyId` | string | Yes | The HubSpot company ID (numeric string) or domain to retrieve | | `idProperty` | string | No | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,domain,industry") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,deals") | #### Output [#output-7] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------- | | `company` | object | HubSpot company record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Company properties | | ↳ `name` | string | Company name | | ↳ `domain` | string | Company website domain (unique identifier) | | ↳ `description` | string | Company description | | ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) | | ↳ `phone` | string | Company phone number | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `address` | string | Street address | | ↳ `numberofemployees` | string | Total number of employees | | ↳ `annualrevenue` | string | Annual revenue estimate | | ↳ `lifecyclestage` | string | Lifecycle stage | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Company creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) | | ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) | | ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) | | ↳ `website` | string | Company website URL | | ↳ `associations` | object | Associated records (contacts, deals, etc.) | | `companyId` | string | The retrieved company ID | | `success` | boolean | Operation success status | ### Create Company in HubSpot [#create-company-in-hubspot] Create a new company in HubSpot #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Company properties as JSON object (e.g., \{"name": "Acme Inc", "domain": "acme.com", "industry": "Technology"}) | | `associations` | array | No | Array of associations to create with the company as JSON (each with "to.id" and "types" containing "associationCategory" and "associationTypeId") | #### Output [#output-8] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------- | | `company` | object | HubSpot company record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Company properties | | ↳ `name` | string | Company name | | ↳ `domain` | string | Company website domain (unique identifier) | | ↳ `description` | string | Company description | | ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) | | ↳ `phone` | string | Company phone number | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `address` | string | Street address | | ↳ `numberofemployees` | string | Total number of employees | | ↳ `annualrevenue` | string | Annual revenue estimate | | ↳ `lifecyclestage` | string | Lifecycle stage | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Company creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) | | ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) | | ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) | | ↳ `website` | string | Company website URL | | ↳ `associations` | object | Associated records (contacts, deals, etc.) | | `companyId` | string | The created company ID | | `success` | boolean | Operation success status | ### Update Company in HubSpot [#update-company-in-hubspot] Update an existing company in HubSpot by ID or domain #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `companyId` | string | Yes | The HubSpot company ID (numeric string) or domain of the company to update | | `idProperty` | string | No | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID | | `properties` | object | Yes | Company properties to update as JSON object (e.g., \{"name": "New Name", "industry": "Finance"}) | #### Output [#output-9] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------- | | `company` | object | HubSpot company record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Company properties | | ↳ `name` | string | Company name | | ↳ `domain` | string | Company website domain (unique identifier) | | ↳ `description` | string | Company description | | ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) | | ↳ `phone` | string | Company phone number | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `address` | string | Street address | | ↳ `numberofemployees` | string | Total number of employees | | ↳ `annualrevenue` | string | Annual revenue estimate | | ↳ `lifecyclestage` | string | Lifecycle stage | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Company creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) | | ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) | | ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) | | ↳ `website` | string | Company website URL | | ↳ `associations` | object | Associated records (contacts, deals, etc.) | | `companyId` | string | The updated company ID | | `success` | boolean | Operation success status | ### Search Companies in HubSpot [#search-companies-in-hubspot] Search for companies in HubSpot using filters, sorting, and queries #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against company name, domain, and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["name", "domain", "industry"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-10] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------ | | `companies` | array | Array of HubSpot company records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Company properties | | ↳ `name` | string | Company name | | ↳ `domain` | string | Company website domain (unique identifier) | | ↳ `description` | string | Company description | | ↳ `industry` | string | Industry type (e.g., Airlines/Aviation) | | ↳ `phone` | string | Company phone number | | ↳ `city` | string | City | | ↳ `state` | string | State/Region | | ↳ `zip` | string | Postal/ZIP code | | ↳ `country` | string | Country | | ↳ `address` | string | Street address | | ↳ `numberofemployees` | string | Total number of employees | | ↳ `annualrevenue` | string | Annual revenue estimate | | ↳ `lifecyclestage` | string | Lifecycle stage | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Company creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `hs_additional_domains` | string | Additional domains (semicolon-separated) | | ↳ `num_associated_contacts` | string | Number of associated contacts (auto-updated) | | ↳ `num_associated_deals` | string | Number of associated deals (auto-updated) | | ↳ `website` | string | Company website URL | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching companies | | `success` | boolean | Operation success status | ### List Deals from HubSpot [#list-deals-from-hubspot] Retrieve all deals from HubSpot account with pagination support #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "dealname,amount,dealstage") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-11] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------- | | `deals` | array | Array of HubSpot deal records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Deal properties | | ↳ `dealname` | string | Deal name | | ↳ `amount` | string | Deal amount | | ↳ `dealstage` | string | Current deal stage | | ↳ `pipeline` | string | Pipeline the deal is in | | ↳ `closedate` | string | Expected close date (ISO 8601) | | ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) | | ↳ `description` | string | Deal description | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Deal creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `num_associated_contacts` | string | Number of associated contacts | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Deal from HubSpot [#get-deal-from-hubspot] Retrieve a single deal by ID from HubSpot #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `dealId` | string | Yes | The HubSpot deal ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "dealname,amount,dealstage") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-12] | Parameter | Type | Description | | --------------------------- | ------- | ---------------------------------------------------------- | | `deal` | object | HubSpot deal record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Deal properties | | ↳ `dealname` | string | Deal name | | ↳ `amount` | string | Deal amount | | ↳ `dealstage` | string | Current deal stage | | ↳ `pipeline` | string | Pipeline the deal is in | | ↳ `closedate` | string | Expected close date (ISO 8601) | | ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) | | ↳ `description` | string | Deal description | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Deal creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `num_associated_contacts` | string | Number of associated contacts | | ↳ `associations` | object | Associated records (contacts, companies, line items, etc.) | | `dealId` | string | The retrieved deal ID | | `success` | boolean | Operation success status | ### Create Deal in HubSpot [#create-deal-in-hubspot] Create a new deal in HubSpot with the given properties (e.g., dealname, amount, dealstage) #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Deal properties as JSON object. Should include dealname and dealstage, plus pipeline when the account has multiple pipelines (e.g., \{"dealname": "New Deal", "amount": "5000", "dealstage": "appointmentscheduled"}) | | `associations` | array | No | Array of associations to create with the deal as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-13] | Parameter | Type | Description | | --------------------------- | ------- | ---------------------------------------------------------- | | `deal` | object | HubSpot deal record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Deal properties | | ↳ `dealname` | string | Deal name | | ↳ `amount` | string | Deal amount | | ↳ `dealstage` | string | Current deal stage | | ↳ `pipeline` | string | Pipeline the deal is in | | ↳ `closedate` | string | Expected close date (ISO 8601) | | ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) | | ↳ `description` | string | Deal description | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Deal creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `num_associated_contacts` | string | Number of associated contacts | | ↳ `associations` | object | Associated records (contacts, companies, line items, etc.) | | `dealId` | string | The created deal ID | | `success` | boolean | Operation success status | ### Update Deal in HubSpot [#update-deal-in-hubspot] Update an existing deal in HubSpot by ID #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `dealId` | string | Yes | The HubSpot deal ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | object | Yes | Deal properties to update as JSON object (e.g., \{"amount": "10000", "dealstage": "closedwon"}) | #### Output [#output-14] | Parameter | Type | Description | | --------------------------- | ------- | ---------------------------------------------------------- | | `deal` | object | HubSpot deal record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Deal properties | | ↳ `dealname` | string | Deal name | | ↳ `amount` | string | Deal amount | | ↳ `dealstage` | string | Current deal stage | | ↳ `pipeline` | string | Pipeline the deal is in | | ↳ `closedate` | string | Expected close date (ISO 8601) | | ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) | | ↳ `description` | string | Deal description | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Deal creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `num_associated_contacts` | string | Number of associated contacts | | ↳ `associations` | object | Associated records (contacts, companies, line items, etc.) | | `dealId` | string | The updated deal ID | | `success` | boolean | Operation success status | ### Search Deals in HubSpot [#search-deals-in-hubspot] Search for deals in HubSpot using filters, sorting, and queries #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against deal name and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["dealname", "amount", "dealstage"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-15] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------- | | `deals` | array | Array of HubSpot deal records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Deal properties | | ↳ `dealname` | string | Deal name | | ↳ `amount` | string | Deal amount | | ↳ `dealstage` | string | Current deal stage | | ↳ `pipeline` | string | Pipeline the deal is in | | ↳ `closedate` | string | Expected close date (ISO 8601) | | ↳ `dealtype` | string | Deal type (New Business, Existing Business, etc.) | | ↳ `description` | string | Deal description | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Deal creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `num_associated_contacts` | string | Number of associated contacts | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching deals | | `success` | boolean | Operation success status | ### List Tickets from HubSpot [#list-tickets-from-hubspot] Retrieve all tickets from HubSpot account with pagination support #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "subject,content,hs\_ticket\_priority") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-16] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `tickets` | array | Array of HubSpot ticket records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Ticket properties | | ↳ `subject` | string | Ticket subject/name | | ↳ `content` | string | Ticket content/description | | ↳ `hs_pipeline` | string | Pipeline the ticket is in | | ↳ `hs_pipeline_stage` | string | Current pipeline stage | | ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) | | ↳ `hs_ticket_category` | string | Ticket category | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Ticket creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Ticket from HubSpot [#get-ticket-from-hubspot] Retrieve a single ticket by ID from HubSpot #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `ticketId` | string | Yes | The HubSpot ticket ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "subject,content,hs\_ticket\_priority") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-17] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------- | | `ticket` | object | HubSpot ticket record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Ticket properties | | ↳ `subject` | string | Ticket subject/name | | ↳ `content` | string | Ticket content/description | | ↳ `hs_pipeline` | string | Pipeline the ticket is in | | ↳ `hs_pipeline_stage` | string | Current pipeline stage | | ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) | | ↳ `hs_ticket_category` | string | Ticket category | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Ticket creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `ticketId` | string | The retrieved ticket ID | | `success` | boolean | Operation success status | ### Create Ticket in HubSpot [#create-ticket-in-hubspot] Create a new ticket in HubSpot. Requires subject and hs\_pipeline\_stage properties #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Ticket properties as JSON object. Must include subject and hs\_pipeline\_stage (e.g., \{"subject": "Support request", "hs\_pipeline\_stage": "1", "hs\_ticket\_priority": "HIGH"}) | | `associations` | array | No | Array of associations to create with the ticket as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-18] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------- | | `ticket` | object | HubSpot ticket record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Ticket properties | | ↳ `subject` | string | Ticket subject/name | | ↳ `content` | string | Ticket content/description | | ↳ `hs_pipeline` | string | Pipeline the ticket is in | | ↳ `hs_pipeline_stage` | string | Current pipeline stage | | ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) | | ↳ `hs_ticket_category` | string | Ticket category | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Ticket creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `ticketId` | string | The created ticket ID | | `success` | boolean | Operation success status | ### Update Ticket in HubSpot [#update-ticket-in-hubspot] Update an existing ticket in HubSpot by ID #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `ticketId` | string | Yes | The HubSpot ticket ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | object | Yes | Ticket properties to update as JSON object (e.g., \{"subject": "Updated subject", "hs\_ticket\_priority": "HIGH"}) | #### Output [#output-19] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------- | | `ticket` | object | HubSpot ticket record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Ticket properties | | ↳ `subject` | string | Ticket subject/name | | ↳ `content` | string | Ticket content/description | | ↳ `hs_pipeline` | string | Pipeline the ticket is in | | ↳ `hs_pipeline_stage` | string | Current pipeline stage | | ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) | | ↳ `hs_ticket_category` | string | Ticket category | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Ticket creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `ticketId` | string | The updated ticket ID | | `success` | boolean | Operation success status | ### Search Tickets in HubSpot [#search-tickets-in-hubspot] Search for tickets in HubSpot using filters, sorting, and queries #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against ticket subject and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["subject", "content", "hs\_ticket\_priority"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-20] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `tickets` | array | Array of HubSpot ticket records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Ticket properties | | ↳ `subject` | string | Ticket subject/name | | ↳ `content` | string | Ticket content/description | | ↳ `hs_pipeline` | string | Pipeline the ticket is in | | ↳ `hs_pipeline_stage` | string | Current pipeline stage | | ↳ `hs_ticket_priority` | string | Ticket priority (LOW, MEDIUM, HIGH) | | ↳ `hs_ticket_category` | string | Ticket category | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Ticket creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching tickets | | `success` | boolean | Operation success status | ### List Notes from HubSpot [#list-notes-from-hubspot] Retrieve all notes from HubSpot account with pagination support #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_note\_body,hs\_timestamp,hubspot\_owner\_id") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-21] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------- | | `notes` | array | Array of HubSpot note records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Note properties | | ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) | | ↳ `hs_timestamp` | string | Note activity time (ISO 8601) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Note creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Note from HubSpot [#get-note-from-hubspot] Retrieve a single note by ID from HubSpot #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `noteId` | string | Yes | The HubSpot note ID to retrieve | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_note\_body,hs\_timestamp,hubspot\_owner\_id") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------- | | `note` | object | HubSpot note record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Note properties | | ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) | | ↳ `hs_timestamp` | string | Note activity time (ISO 8601) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Note creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, deals, etc.) | | `noteId` | string | The retrieved note ID | | `success` | boolean | Operation success status | ### Create Note in HubSpot [#create-note-in-hubspot] Log a note in HubSpot and optionally associate it with contacts, companies, or deals. Requires hs\_timestamp and hs\_note\_body properties #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Note properties as JSON object. Must include "hs\_timestamp" (ISO 8601 activity time) and "hs\_note\_body" (the note text). e.g., \{"hs\_timestamp": "2026-06-13T00:00:00Z", "hs\_note\_body": "Followed up via phone"} | | `associations` | array | No | Array of associations as JSON. Each object has "to.id" (record ID) and "types" array with "associationCategory" ("HUBSPOT\_DEFINED") and "associationTypeId" (202 = note→contact, 190 = note→company, 214 = note→deal) | #### Output [#output-23] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------- | | `note` | object | HubSpot note record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Note properties | | ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) | | ↳ `hs_timestamp` | string | Note activity time (ISO 8601) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Note creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, deals, etc.) | | `noteId` | string | The created note ID | | `success` | boolean | Operation success status | ### Search Notes in HubSpot [#search-notes-in-hubspot] Search for notes in HubSpot using filters, sorting, and queries #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against note text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_note\_body", "hs\_timestamp", "hubspot\_owner\_id"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-24] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------- | | `notes` | array | Array of HubSpot note records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Note properties | | ↳ `hs_note_body` | string | Note text/body (supports rich text/HTML) | | ↳ `hs_timestamp` | string | Note activity time (ISO 8601) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_attachment_ids` | string | Semicolon-separated IDs of files attached to the note | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Note creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching notes | | `success` | boolean | Operation success status | ### List Emails from HubSpot [#list-emails-from-hubspot] Retrieve all email engagements from HubSpot account with pagination support #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_email\_subject,hs\_email\_text,hs\_timestamp") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-25] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `emails` | array | Array of HubSpot email engagement records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Email properties | | ↳ `hs_timestamp` | string | Email activity time (ISO 8601) | | ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) | | ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) | | ↳ `hs_email_subject` | string | Email subject line | | ↳ `hs_email_text` | string | Plain-text email body | | ↳ `hs_email_html` | string | HTML email body | | ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers | | ↳ `hs_email_from_email` | string | Sender email address | | ↳ `hs_email_to_email` | string | Recipient email address(es) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Email creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Email from HubSpot [#get-email-from-hubspot] Retrieve a single email engagement by ID from HubSpot (content requires the sales-email-read scope) #### Input [#input-26] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `emailId` | string | Yes | The HubSpot email engagement ID to retrieve | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_email\_subject,hs\_email\_text,hs\_timestamp") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-26] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `email` | object | HubSpot email engagement record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Email properties | | ↳ `hs_timestamp` | string | Email activity time (ISO 8601) | | ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) | | ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) | | ↳ `hs_email_subject` | string | Email subject line | | ↳ `hs_email_text` | string | Plain-text email body | | ↳ `hs_email_html` | string | HTML email body | | ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers | | ↳ `hs_email_from_email` | string | Sender email address | | ↳ `hs_email_to_email` | string | Recipient email address(es) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Email creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, deals, etc.) | | `emailId` | string | The retrieved email engagement ID | | `success` | boolean | Operation success status | ### Create Email in HubSpot [#create-email-in-hubspot] Log an email engagement in HubSpot and optionally associate it with contacts. Requires the hs\_timestamp property #### Input [#input-27] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Email properties as JSON object. Must include "hs\_timestamp" (ISO 8601). Common fields: "hs\_email\_direction" (EMAIL, INCOMING\_EMAIL, FORWARDED\_EMAIL), "hs\_email\_status" (SENT, SENDING, SCHEDULED, FAILED, BOUNCED), "hs\_email\_subject", "hs\_email\_text", "hs\_email\_html", "hs\_email\_headers" (JSON string) | | `associations` | array | No | Array of associations as JSON. Each object has "to.id" (record ID) and "types" array with "associationCategory" ("HUBSPOT\_DEFINED") and "associationTypeId" (198 = email→contact) | #### Output [#output-27] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `email` | object | HubSpot email engagement record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Email properties | | ↳ `hs_timestamp` | string | Email activity time (ISO 8601) | | ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) | | ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) | | ↳ `hs_email_subject` | string | Email subject line | | ↳ `hs_email_text` | string | Plain-text email body | | ↳ `hs_email_html` | string | HTML email body | | ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers | | ↳ `hs_email_from_email` | string | Sender email address | | ↳ `hs_email_to_email` | string | Recipient email address(es) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Email creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, deals, etc.) | | `emailId` | string | The created email engagement ID | | `success` | boolean | Operation success status | ### Search Emails in HubSpot [#search-emails-in-hubspot] Search for email engagements in HubSpot using filters, sorting, and queries #### Input [#input-28] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "CONTAINS\_TOKEN", "GT"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against email text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_email\_subject", "hs\_email\_text", "hs\_timestamp"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-28] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `emails` | array | Array of HubSpot email engagement records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Email properties | | ↳ `hs_timestamp` | string | Email activity time (ISO 8601) | | ↳ `hs_email_direction` | string | Direction (EMAIL = outgoing, INCOMING\_EMAIL, FORWARDED\_EMAIL) | | ↳ `hs_email_status` | string | Send status (SENT, SENDING, SCHEDULED, FAILED, BOUNCED) | | ↳ `hs_email_subject` | string | Email subject line | | ↳ `hs_email_text` | string | Plain-text email body | | ↳ `hs_email_html` | string | HTML email body | | ↳ `hs_email_headers` | string | JSON-encoded from/to/cc/bcc headers | | ↳ `hs_email_from_email` | string | Sender email address | | ↳ `hs_email_to_email` | string | Recipient email address(es) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Email creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching emails | | `success` | boolean | Operation success status | ### Get Properties from HubSpot [#get-properties-from-hubspot] Read property definitions and their enumeration (picklist) options for a HubSpot object type, e.g. the values for lifecyclestage or hs\_lead\_status on contacts #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `objectType` | string | Yes | Object type to read properties for (e.g., "contacts", "companies", "deals", "tickets", "line\_items", "quotes") | | `propertyName` | string | No | Internal name of a single property to retrieve (e.g., "hs\_lead\_status"). Omit to return all properties for the object type | | `archived` | boolean | No | Whether to return only archived properties (default false) | #### Output [#output-29] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `properties` | array | Array of HubSpot property definitions | | ↳ `name` | string | Internal property name | | ↳ `label` | string | Human-readable label | | ↳ `type` | string | Property data type (string, number, enumeration, bool, datetime, etc.) | | ↳ `fieldType` | string | Field type controlling HubSpot UI rendering | | ↳ `description` | string | Property help text | | ↳ `groupName` | string | Property group the property belongs to | | ↳ `options` | array | Enumeration/picklist options (empty for non-enumerated properties) | | ↳ `label` | string | Human-readable option label | | ↳ `value` | string | Internal value used when setting the property | | ↳ `displayOrder` | number | Display order (-1 sorts last) | | ↳ `hidden` | boolean | Whether the option is hidden in the HubSpot UI | | ↳ `description` | string | Option description | | ↳ `displayOrder` | number | Display order | | ↳ `calculated` | boolean | Whether the property is calculated by HubSpot | | ↳ `hidden` | boolean | Whether the property is hidden | | ↳ `hubspotDefined` | boolean | Whether the property is a HubSpot default property | | ↳ `archived` | boolean | Whether the property is archived | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of property definitions returned | | ↳ `objectType` | string | Object type the properties belong to | | `success` | boolean | Operation success status | ### List Associations in HubSpot [#list-associations-in-hubspot] List records of one object type associated with a given record, e.g. all emails or notes logged on a contact #### Input [#input-30] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `objectType` | string | Yes | Source object type (e.g., "contacts", "companies", "deals") | | `objectId` | string | Yes | ID of the source record | | `toObjectType` | string | Yes | Target object type to list associations to (e.g., "emails", "notes", "deals") | | `limit` | string | No | Maximum number of associated records per page (default 500) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-30] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------------------------- | | `results` | array | Array of associated records | | ↳ `toObjectId` | string | ID of the associated (target) record | | ↳ `associationTypes` | array | Association types linking the two records | | ↳ `category` | string | Association category (HUBSPOT\_DEFINED, USER\_DEFINED, INTEGRATOR\_DEFINED) | | ↳ `typeId` | number | Association type ID | | ↳ `label` | string | Association label | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Create Association in HubSpot [#create-association-in-hubspot] Associate two HubSpot records. Creates the default (unlabeled) association unless an association type ID is provided #### Input [#input-31] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `objectType` | string | Yes | Source object type (e.g., "emails", "notes", "contacts") | | `objectId` | string | Yes | ID of the source record | | `toObjectType` | string | Yes | Target object type to associate to (e.g., "contacts", "companies", "deals") | | `toObjectId` | string | Yes | ID of the target record | | `associationCategory` | string | No | Association category for a labeled association (HUBSPOT\_DEFINED, USER\_DEFINED, INTEGRATOR\_DEFINED). Defaults to HUBSPOT\_DEFINED when an association type ID is provided | | `associationTypeId` | number | No | Specific association type ID for a labeled association. Omit to create the default association for the object pair | #### Output [#output-31] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------------------- | | `fromObjectId` | string | ID of the source record | | `toObjectId` | string | ID of the associated target record | | `labels` | array | Association labels (empty for default associations) | | `success` | boolean | Operation success status | ### Delete Association in HubSpot [#delete-association-in-hubspot] Remove all associations between two HubSpot records #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `objectType` | string | Yes | The source object type (e.g., "contacts", "companies", "deals") | | `objectId` | string | Yes | The ID of the source record | | `toObjectType` | string | Yes | The target object type (e.g., "emails", "notes", "contacts") | | `toObjectId` | string | Yes | The ID of the target record | #### Output [#output-32] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------- | | `fromObjectId` | string | Source record ID | | `toObjectId` | string | Target record ID | | `deleted` | boolean | Whether the associations were removed | | `success` | boolean | Operation success status | ### Get Association Labels from HubSpot [#get-association-labels-from-hubspot] Retrieve the association types (category, typeId, label) defined between two HubSpot object types #### Input [#input-33] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `objectType` | string | Yes | The source object type (e.g., "contacts", "companies", "deals") | | `toObjectType` | string | Yes | The target object type (e.g., "emails", "notes", "contacts") | #### Output [#output-33] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------- | | `labels` | array | Association types defined between the two object types | | ↳ `category` | string | Association category (HUBSPOT\_DEFINED or USER\_DEFINED) | | ↳ `typeId` | number | Association type ID | | ↳ `label` | string | Human-readable label (null for unlabeled defaults) | | `success` | boolean | Operation success status | ### Delete Contact from HubSpot [#delete-contact-from-hubspot] Archive a contact in HubSpot by ID (moves it to the recycling bin) #### Input [#input-34] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `contactId` | string | Yes | The numeric ID of the contact to delete | #### Output [#output-34] | Parameter | Type | Description | | ----------- | ------- | -------------------------------- | | `contactId` | string | ID of the deleted contact | | `deleted` | boolean | Whether the contact was archived | | `success` | boolean | Operation success status | ### Delete Company from HubSpot [#delete-company-from-hubspot] Archive a company in HubSpot by ID (moves it to the recycling bin) #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `companyId` | string | Yes | The numeric ID of the company to delete | #### Output [#output-35] | Parameter | Type | Description | | ----------- | ------- | -------------------------------- | | `companyId` | string | ID of the deleted company | | `deleted` | boolean | Whether the company was archived | | `success` | boolean | Operation success status | ### Delete Deal from HubSpot [#delete-deal-from-hubspot] Archive a deal in HubSpot by ID (moves it to the recycling bin) #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------ | | `dealId` | string | Yes | The numeric ID of the deal to delete | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `dealId` | string | ID of the deleted deal | | `deleted` | boolean | Whether the deal was archived | | `success` | boolean | Operation success status | ### Delete Ticket from HubSpot [#delete-ticket-from-hubspot] Archive a ticket in HubSpot by ID (moves it to the recycling bin) #### Input [#input-37] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------- | | `ticketId` | string | Yes | The numeric ID of the ticket to delete | #### Output [#output-37] | Parameter | Type | Description | | ---------- | ------- | ------------------------------- | | `ticketId` | string | ID of the deleted ticket | | `deleted` | boolean | Whether the ticket was archived | | `success` | boolean | Operation success status | ### Delete Line Item from HubSpot [#delete-line-item-from-hubspot] Archive a line item in HubSpot by ID (moves it to the recycling bin) #### Input [#input-38] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------- | | `lineItemId` | string | Yes | The numeric ID of the line item to delete | #### Output [#output-38] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------- | | `lineItemId` | string | ID of the deleted line item | | `deleted` | boolean | Whether the line item was archived | | `success` | boolean | Operation success status | ### Search Line Items in HubSpot [#search-line-items-in-hubspot] Search for line items in HubSpot using filters, sorting, and queries #### Input [#input-39] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against line item name and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["name", "quantity", "price"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-39] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------ | | `lineItems` | array | Array of HubSpot line item records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Line item properties | | ↳ `name` | string | Line item name | | ↳ `description` | string | Full description of the product | | ↳ `hs_sku` | string | Unique product identifier (SKU) | | ↳ `quantity` | string | Number of units included | | ↳ `price` | string | Unit price | | ↳ `amount` | string | Total cost (quantity \* unit price) | | ↳ `hs_line_item_currency_code` | string | Currency code | | ↳ `recurringbillingfrequency` | string | Recurring billing frequency | | ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date | | ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching line items | | `success` | boolean | Operation success status | ### Search Quotes in HubSpot [#search-quotes-in-hubspot] Search for quotes in HubSpot using filters, sorting, and queries #### Input [#input-40] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `filterGroups` | array | No | Array of filter groups as JSON. Each group contains "filters" array with objects having "propertyName", "operator" (e.g., "EQ", "NEQ", "CONTAINS\_TOKEN", "NOT\_CONTAINS\_TOKEN"), and "value" | | `sorts` | array | No | Array of sort objects as JSON with "propertyName" and "direction" ("ASCENDING" or "DESCENDING") | | `query` | string | No | Search query string to match against quote title and other text fields | | `properties` | array | No | Array of HubSpot property names to return (e.g., \["hs\_title", "hs\_expiration\_date"]) | | `limit` | number | No | Maximum number of results to return (max 200, default 10) | | `after` | string | No | Pagination cursor for next page (from previous response) | #### Output [#output-40] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `quotes` | array | Array of HubSpot quote records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Quote properties | | ↳ `hs_title` | string | Quote name/title | | ↳ `hs_expiration_date` | string | Expiration date | | ↳ `hs_status` | string | Quote status | | ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `total` | number | Total number of matching quotes | | `success` | boolean | Operation success status | ### Get List Members from HubSpot [#get-list-members-from-hubspot] Retrieve the record IDs that are members of a HubSpot list, ordered by record ID #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `listId` | string | Yes | The ID of the list to read members from | | `limit` | string | No | Maximum number of results per page (max 250, default 100) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | #### Output [#output-41] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `memberships` | array | Records that are members of the list | | ↳ `recordId` | string | ID of the member record | | ↳ `membershipTimestamp` | string | When the record was added to the list | | `success` | boolean | Operation success status | ### Add List Members in HubSpot [#add-list-members-in-hubspot] Add records to a manual (static) HubSpot list by record ID #### Input [#input-42] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `listId` | string | Yes | The ID of the list to add records to (MANUAL or SNAPSHOT lists only) | | `recordIds` | array | Yes | Record IDs to add to the list, as a JSON array (e.g., \["123","456"]) or comma-separated string | #### Output [#output-42] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------ | | `recordIdsAdded` | array | IDs of the records that were added to the list | | `recordIdsMissing` | array | IDs of the requested records that were not found | | `success` | boolean | Operation success status | ### Remove List Members in HubSpot [#remove-list-members-in-hubspot] Remove records from a manual (static) HubSpot list by record ID #### Input [#input-43] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `listId` | string | Yes | The ID of the list to remove records from (MANUAL or SNAPSHOT lists only) | | `recordIds` | array | Yes | Record IDs to remove from the list, as a JSON array (e.g., \["123","456"]) or comma-separated string | #### Output [#output-43] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------- | | `recordIdsRemoved` | array | IDs of the records that were removed from the list | | `recordIdsMissing` | array | IDs of the requested records that were not found | | `success` | boolean | Operation success status | ### List Line Items from HubSpot [#list-line-items-from-hubspot] Retrieve all line items from HubSpot account with pagination support #### Input [#input-44] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,quantity,price,amount") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,quotes") | #### Output [#output-44] | Parameter | Type | Description | | ----------------------------------- | ------- | ------------------------------------------------ | | `lineItems` | array | Array of HubSpot line item records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Line item properties | | ↳ `name` | string | Line item name | | ↳ `description` | string | Full description of the product | | ↳ `hs_sku` | string | Unique product identifier (SKU) | | ↳ `quantity` | string | Number of units included | | ↳ `price` | string | Unit price | | ↳ `amount` | string | Total cost (quantity \* unit price) | | ↳ `hs_line_item_currency_code` | string | Currency code | | ↳ `recurringbillingfrequency` | string | Recurring billing frequency | | ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date | | ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Line Item from HubSpot [#get-line-item-from-hubspot] Retrieve a single line item by ID from HubSpot #### Input [#input-45] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `lineItemId` | string | Yes | The HubSpot line item ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "name,quantity,price,amount") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,quotes") | #### Output [#output-45] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------- | | `lineItem` | object | HubSpot line item record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Line item properties | | ↳ `name` | string | Line item name | | ↳ `description` | string | Full description of the product | | ↳ `hs_sku` | string | Unique product identifier (SKU) | | ↳ `quantity` | string | Number of units included | | ↳ `price` | string | Unit price | | ↳ `amount` | string | Total cost (quantity \* unit price) | | ↳ `hs_line_item_currency_code` | string | Currency code | | ↳ `recurringbillingfrequency` | string | Recurring billing frequency | | ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date | | ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (deals, quotes, etc.) | | `lineItemId` | string | The retrieved line item ID | | `success` | boolean | Operation success status | ### Create Line Item in HubSpot [#create-line-item-in-hubspot] Create a new line item in HubSpot. Requires at least a name property #### Input [#input-46] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Line item properties as JSON object (e.g., \{"name": "Product A", "quantity": "2", "price": "50.00", "hs\_sku": "SKU-001"}) | | `associations` | array | No | Array of associations to create with the line item as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-46] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------- | | `lineItem` | object | HubSpot line item record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Line item properties | | ↳ `name` | string | Line item name | | ↳ `description` | string | Full description of the product | | ↳ `hs_sku` | string | Unique product identifier (SKU) | | ↳ `quantity` | string | Number of units included | | ↳ `price` | string | Unit price | | ↳ `amount` | string | Total cost (quantity \* unit price) | | ↳ `hs_line_item_currency_code` | string | Currency code | | ↳ `recurringbillingfrequency` | string | Recurring billing frequency | | ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date | | ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (deals, quotes, etc.) | | `lineItemId` | string | The created line item ID | | `success` | boolean | Operation success status | ### Update Line Item in HubSpot [#update-line-item-in-hubspot] Update an existing line item in HubSpot by ID #### Input [#input-47] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------ | | `lineItemId` | string | Yes | The HubSpot line item ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | object | Yes | Line item properties to update as JSON object (e.g., \{"quantity": "5", "price": "25.00"}) | #### Output [#output-47] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------- | | `lineItem` | object | HubSpot line item record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Line item properties | | ↳ `name` | string | Line item name | | ↳ `description` | string | Full description of the product | | ↳ `hs_sku` | string | Unique product identifier (SKU) | | ↳ `quantity` | string | Number of units included | | ↳ `price` | string | Unit price | | ↳ `amount` | string | Total cost (quantity \* unit price) | | ↳ `hs_line_item_currency_code` | string | Currency code | | ↳ `recurringbillingfrequency` | string | Recurring billing frequency | | ↳ `hs_recurring_billing_start_date` | string | Recurring billing start date | | ↳ `hs_recurring_billing_end_date` | string | Recurring billing end date | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (deals, quotes, etc.) | | `lineItemId` | string | The updated line item ID | | `success` | boolean | Operation success status | ### List Quotes from HubSpot [#list-quotes-from-hubspot] Retrieve all quotes from HubSpot account with pagination support #### Input [#input-48] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_title,hs\_expiration\_date,hs\_status") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,line\_items") | #### Output [#output-48] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `quotes` | array | Array of HubSpot quote records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Quote properties | | ↳ `hs_title` | string | Quote name/title | | ↳ `hs_expiration_date` | string | Expiration date | | ↳ `hs_status` | string | Quote status | | ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Quote from HubSpot [#get-quote-from-hubspot] Retrieve a single quote by ID from HubSpot #### Input [#input-49] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `quoteId` | string | Yes | The HubSpot quote ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_title,hs\_expiration\_date,hs\_status") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "deals,line\_items") | #### Output [#output-49] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------- | | `quote` | object | HubSpot quote record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Quote properties | | ↳ `hs_title` | string | Quote name/title | | ↳ `hs_expiration_date` | string | Expiration date | | ↳ `hs_status` | string | Quote status | | ↳ `hs_esign_enabled` | string | Whether e-signatures are enabled | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (deals, line items, etc.) | | `quoteId` | string | The retrieved quote ID | | `success` | boolean | Operation success status | ### List Appointments from HubSpot [#list-appointments-from-hubspot] Retrieve all appointments from HubSpot account with pagination support #### Input [#input-50] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_appointment\_name,hs\_appointment\_start") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-50] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------ | | `appointments` | array | Array of HubSpot appointment records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Appointment properties | | ↳ `hs_appointment_name` | string | Appointment title/name | | ↳ `hs_appointment_start` | string | Start time (ISO 8601) | | ↳ `hs_appointment_end` | string | End time (ISO 8601) | | ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Appointment from HubSpot [#get-appointment-from-hubspot] Retrieve a single appointment by ID from HubSpot #### Input [#input-51] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `appointmentId` | string | Yes | The HubSpot appointment ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_appointment\_name,hs\_appointment\_start") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies") | #### Output [#output-51] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------- | | `appointment` | object | HubSpot appointment record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Appointment properties | | ↳ `hs_appointment_name` | string | Appointment title/name | | ↳ `hs_appointment_start` | string | Start time (ISO 8601) | | ↳ `hs_appointment_end` | string | End time (ISO 8601) | | ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `appointmentId` | string | The retrieved appointment ID | | `success` | boolean | Operation success status | ### Create Appointment in HubSpot [#create-appointment-in-hubspot] Create a new appointment in HubSpot #### Input [#input-52] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | Yes | Appointment properties as JSON object. Must include hs\_appointment\_start (e.g., \{"hs\_appointment\_name": "Discovery Call", "hs\_appointment\_start": "2024-01-15T10:00:00Z", "hs\_appointment\_end": "2024-01-15T11:00:00Z"}) | | `associations` | array | No | Array of associations to create with the appointment as JSON. Each object should have "to.id" and "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-52] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------- | | `appointment` | object | HubSpot appointment record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Appointment properties | | ↳ `hs_appointment_name` | string | Appointment title/name | | ↳ `hs_appointment_start` | string | Start time (ISO 8601) | | ↳ `hs_appointment_end` | string | End time (ISO 8601) | | ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `appointmentId` | string | The created appointment ID | | `success` | boolean | Operation success status | ### Update Appointment in HubSpot [#update-appointment-in-hubspot] Update an existing appointment in HubSpot by ID #### Input [#input-53] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `appointmentId` | string | Yes | The HubSpot appointment ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | object | Yes | Appointment properties to update as JSON object (e.g., \{"hs\_appointment\_name": "Updated Call", "hs\_appointment\_start": "2024-01-15T10:00:00Z"}) | #### Output [#output-53] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------- | | `appointment` | object | HubSpot appointment record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Appointment properties | | ↳ `hs_appointment_name` | string | Appointment title/name | | ↳ `hs_appointment_start` | string | Start time (ISO 8601) | | ↳ `hs_appointment_end` | string | End time (ISO 8601) | | ↳ `hs_appointment_status` | string | Appointment status (e.g., SCHEDULED) | | ↳ `hubspot_owner_id` | string | HubSpot owner ID | | ↳ `hs_object_id` | string | HubSpot object ID (same as record ID) | | ↳ `hs_createdate` | string | Creation date (ISO 8601) | | ↳ `hs_lastmodifieddate` | string | Last modified date (ISO 8601) | | ↳ `associations` | object | Associated records (contacts, companies, etc.) | | `appointmentId` | string | The updated appointment ID | | `success` | boolean | Operation success status | ### List Calls from HubSpot [#list-calls-from-hubspot] Retrieve logged calls from HubSpot with pagination support #### Input [#input-54] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_call\_title,hs\_call\_disposition,hs\_call\_status") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-54] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Call from HubSpot [#get-call-from-hubspot] Retrieve a single logged call by ID from HubSpot #### Input [#input-55] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `callId` | string | Yes | The HubSpot call ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_call\_title,hs\_call\_disposition,hs\_call\_status") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-55] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `callId` | string | The retrieved call ID | | `success` | boolean | Operation success status | ### Log Call in HubSpot [#log-call-in-hubspot] Log a call engagement in HubSpot (title, notes, duration, direction, outcome, status, recording, phone numbers) and associate it with contacts, companies, or deals. hs\_timestamp defaults to now #### Input [#input-56] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | When the call happened (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp; defaults to the current time | | `callTitle` | string | No | Call title (hs\_call\_title) | | `callBody` | string | No | Call description, notes, or AI summary (hs\_call\_body) | | `callDurationMs` | string | No | Call duration in milliseconds (hs\_call\_duration) | | `callDirection` | string | No | Call direction from the HubSpot user perspective: INBOUND or OUTBOUND | | `callDisposition` | string | No | Call outcome GUID (hs\_call\_disposition). Defaults: Busy 9d9162e7-6cf3-4944-bf63-4dff82258764, Connected f240bbac-87c9-4f6e-bf70-924b57d47db7, Left live message a4c4c377-d246-4b32-a13b-75a56a4cd0ff, Left voicemail b2cf5968-551e-4856-9783-52b3da59a7d0, No answer 73a0d17f-1163-4015-bdd5-ec830791da20, Wrong number 17b47fee-58de-441e-a44c-c6300d46f273 | | `callStatus` | string | No | Call status (hs\_call\_status): BUSY, CALLING\_CRM\_USER, CANCELED, COMPLETED, CONNECTING, FAILED, IN\_PROGRESS, NO\_ANSWER, QUEUED, or RINGING | | `callRecordingUrl` | string | No | HTTPS URL of the call recording, e.g. an .mp3 or .wav file (hs\_call\_recording\_url) | | `callToNumber` | string | No | Phone number that received the call (hs\_call\_to\_number) | | `callFromNumber` | string | No | Phone number the call was made from (hs\_call\_from\_number) | | `contactIds` | string | No | Contact IDs to associate (comma-separated or JSON array). Uses the default association type 194 | | `companyIds` | string | No | Company IDs to associate (comma-separated or JSON array). Uses the default association type 182 | | `dealIds` | string | No | Deal IDs to associate (comma-separated or JSON array). Uses the default association type 206 | | `associations` | array | No | Additional raw associations as a JSON array. Each object has "to.id" and a "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-56] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `callId` | string | The created call ID | | `success` | boolean | Operation success status | ### Update Call in HubSpot [#update-call-in-hubspot] Update a logged call in HubSpot by ID, for example to set its outcome, status, notes, or recording URL #### Input [#input-57] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | When the call happened (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp | | `callId` | string | Yes | The HubSpot call ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `callTitle` | string | No | Call title (hs\_call\_title) | | `callBody` | string | No | Call description, notes, or AI summary (hs\_call\_body) | | `callDurationMs` | string | No | Call duration in milliseconds (hs\_call\_duration) | | `callDirection` | string | No | Call direction from the HubSpot user perspective: INBOUND or OUTBOUND | | `callDisposition` | string | No | Call outcome GUID (hs\_call\_disposition). Defaults: Busy 9d9162e7-6cf3-4944-bf63-4dff82258764, Connected f240bbac-87c9-4f6e-bf70-924b57d47db7, Left live message a4c4c377-d246-4b32-a13b-75a56a4cd0ff, Left voicemail b2cf5968-551e-4856-9783-52b3da59a7d0, No answer 73a0d17f-1163-4015-bdd5-ec830791da20, Wrong number 17b47fee-58de-441e-a44c-c6300d46f273 | | `callStatus` | string | No | Call status (hs\_call\_status): BUSY, CALLING\_CRM\_USER, CANCELED, COMPLETED, CONNECTING, FAILED, IN\_PROGRESS, NO\_ANSWER, QUEUED, or RINGING | | `callRecordingUrl` | string | No | HTTPS URL of the call recording, e.g. an .mp3 or .wav file (hs\_call\_recording\_url) | | `callToNumber` | string | No | Phone number that received the call (hs\_call\_to\_number) | | `callFromNumber` | string | No | Phone number the call was made from (hs\_call\_from\_number) | #### Output [#output-57] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `callId` | string | The updated call ID | | `success` | boolean | Operation success status | ### List Call Outcomes from HubSpot [#list-call-outcomes-from-hubspot] List the call outcomes (dispositions) available in the HubSpot account, including custom outcomes. Use the id as hs\_call\_disposition when logging a call #### Input [#input-58] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-58] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------- | | `dispositions` | array | Call outcomes available in the account | | ↳ `id` | string | Disposition GUID used as hs\_call\_disposition | | ↳ `label` | string | Outcome label shown in HubSpot | | `success` | boolean | Operation success status | ### List Meetings from HubSpot [#list-meetings-from-hubspot] Retrieve meetings from HubSpot with pagination support #### Input [#input-59] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_meeting\_title,hs\_meeting\_start\_time,hs\_meeting\_outcome") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-59] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Meeting from HubSpot [#get-meeting-from-hubspot] Retrieve a single meeting by ID from HubSpot #### Input [#input-60] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `meetingId` | string | Yes | The HubSpot meeting ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_meeting\_title,hs\_meeting\_start\_time,hs\_meeting\_outcome") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-60] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `meetingId` | string | The retrieved meeting ID | | `success` | boolean | Operation success status | ### Log Meeting in HubSpot [#log-meeting-in-hubspot] Log a meeting engagement in HubSpot (title, description, start and end time, outcome, location) and associate it with contacts, companies, or deals. hs\_timestamp defaults to the meeting start time #### Input [#input-61] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | When the meeting occurred (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp; HubSpot defaults it to the meeting start time | | `meetingTitle` | string | No | Meeting title (hs\_meeting\_title) | | `meetingBody` | string | No | Meeting description (hs\_meeting\_body) | | `meetingStartTime` | string | No | Meeting start time, ISO 8601 or Unix milliseconds (hs\_meeting\_start\_time) | | `meetingEndTime` | string | No | Meeting end time, ISO 8601 or Unix milliseconds (hs\_meeting\_end\_time) | | `meetingOutcome` | string | No | Meeting outcome (hs\_meeting\_outcome): SCHEDULED, COMPLETED, RESCHEDULED, NO\_SHOW, or CANCELED | | `meetingLocation` | string | No | Address, room, video link, or phone number (hs\_meeting\_location) | | `contactIds` | string | No | Contact IDs to associate (comma-separated or JSON array). Uses the default association type 200 | | `companyIds` | string | No | Company IDs to associate (comma-separated or JSON array). Uses the default association type 188 | | `dealIds` | string | No | Deal IDs to associate (comma-separated or JSON array). Uses the default association type 212 | | `associations` | array | No | Additional raw associations as a JSON array. Each object has "to.id" and a "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-61] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `meetingId` | string | The created meeting ID | | `success` | boolean | Operation success status | ### Update Meeting in HubSpot [#update-meeting-in-hubspot] Update a meeting in HubSpot by ID, for example to set its outcome after it happens #### Input [#input-62] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | When the meeting occurred (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp | | `meetingId` | string | Yes | The HubSpot meeting ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `meetingTitle` | string | No | Meeting title (hs\_meeting\_title) | | `meetingBody` | string | No | Meeting description (hs\_meeting\_body) | | `meetingStartTime` | string | No | Meeting start time, ISO 8601 or Unix milliseconds (hs\_meeting\_start\_time) | | `meetingEndTime` | string | No | Meeting end time, ISO 8601 or Unix milliseconds (hs\_meeting\_end\_time) | | `meetingOutcome` | string | No | Meeting outcome (hs\_meeting\_outcome): SCHEDULED, COMPLETED, RESCHEDULED, NO\_SHOW, or CANCELED | | `meetingLocation` | string | No | Address, room, video link, or phone number (hs\_meeting\_location) | #### Output [#output-62] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `meetingId` | string | The updated meeting ID | | `success` | boolean | Operation success status | ### List Tasks from HubSpot [#list-tasks-from-hubspot] Retrieve tasks from HubSpot with pagination support #### Input [#input-63] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_task\_subject,hs\_task\_status,hs\_timestamp") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-63] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Task from HubSpot [#get-task-from-hubspot] Retrieve a single task by ID from HubSpot #### Input [#input-64] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `taskId` | string | Yes | The HubSpot task ID to retrieve | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `properties` | string | No | Comma-separated list of HubSpot property names to return (e.g., "hs\_task\_subject,hs\_task\_status,hs\_timestamp") | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for (e.g., "contacts,companies,deals") | #### Output [#output-64] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `taskId` | string | The retrieved task ID | | `success` | boolean | Operation success status | ### Create Task in HubSpot [#create-task-in-hubspot] Create a task in HubSpot (subject, notes, due date, status, priority, type, assignee) and associate it with contacts, companies, or deals. A due date (hs\_timestamp) is required #### Input [#input-65] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | Task due date (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp; required by HubSpot | | `taskSubject` | string | No | Task title (hs\_task\_subject) | | `taskBody` | string | No | Task notes (hs\_task\_body) | | `taskStatus` | string | No | Task status (hs\_task\_status): NOT\_STARTED or COMPLETED | | `taskPriority` | string | No | Task priority (hs\_task\_priority): LOW, MEDIUM, or HIGH | | `taskType` | string | No | Task type (hs\_task\_type): EMAIL, CALL, or TODO | | `contactIds` | string | No | Contact IDs to associate (comma-separated or JSON array). Uses the default association type 204 | | `companyIds` | string | No | Company IDs to associate (comma-separated or JSON array). Uses the default association type 192 | | `dealIds` | string | No | Deal IDs to associate (comma-separated or JSON array). Uses the default association type 216 | | `associations` | array | No | Additional raw associations as a JSON array. Each object has "to.id" and a "types" array with "associationCategory" and "associationTypeId" | #### Output [#output-65] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `taskId` | string | The created task ID | | `success` | boolean | Operation success status | ### Update Task in HubSpot [#update-task-in-hubspot] Update a task in HubSpot by ID, for example to complete it or change its due date #### Input [#input-66] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `properties` | object | No | Additional HubSpot properties as a JSON object. Structured fields on this tool override matching keys | | `hubspotOwnerId` | string | No | HubSpot owner ID (hubspot\_owner\_id) shown as the activity creator or assignee | | `activityTimestamp` | string | No | Task due date (ISO 8601 or Unix milliseconds). Maps to hs\_timestamp | | `taskId` | string | Yes | The HubSpot task ID to update | | `idProperty` | string | No | Property to use as unique identifier. If not specified, uses record ID | | `taskSubject` | string | No | Task title (hs\_task\_subject) | | `taskBody` | string | No | Task notes (hs\_task\_body) | | `taskStatus` | string | No | Task status (hs\_task\_status): NOT\_STARTED or COMPLETED | | `taskPriority` | string | No | Task priority (hs\_task\_priority): LOW, MEDIUM, or HIGH | | `taskType` | string | No | Task type (hs\_task\_type): EMAIL, CALL, or TODO | #### Output [#output-66] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `taskId` | string | The updated task ID | | `success` | boolean | Operation success status | ### List Carts from HubSpot [#list-carts-from-hubspot] Retrieve all carts from HubSpot account with pagination support #### Input [#input-67] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `properties` | string | No | Comma-separated list of HubSpot property names to return | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for | #### Output [#output-67] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `carts` | array | Array of HubSpot CRM records | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Record properties | | ↳ `associations` | object | Associated records | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Cart from HubSpot [#get-cart-from-hubspot] Retrieve a single cart by ID from HubSpot #### Input [#input-68] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `cartId` | string | Yes | The HubSpot cart ID to retrieve | | `properties` | string | No | Comma-separated list of HubSpot property names to return | | `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for | #### Output [#output-68] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `cart` | object | HubSpot CRM record | | ↳ `id` | string | Unique record ID (hs\_object\_id) | | ↳ `createdAt` | string | Record creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Record last updated timestamp (ISO 8601) | | ↳ `archived` | boolean | Whether the record is archived | | ↳ `properties` | object | Record properties | | ↳ `associations` | object | Associated records | | `cartId` | string | The retrieved cart ID | | `success` | boolean | Operation success status | ### List Owners from HubSpot [#list-owners-from-hubspot] Retrieve all owners from HubSpot account with pagination support #### Input [#input-69] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 100) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | | `email` | string | No | Filter owners by email address | #### Output [#output-69] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `owners` | array | Array of HubSpot owner objects | | ↳ `id` | string | Owner ID | | ↳ `email` | string | Owner email address | | ↳ `firstName` | string | Owner first name | | ↳ `lastName` | string | Owner last name | | ↳ `userId` | number | Associated user ID | | ↳ `teams` | array | Teams the owner belongs to | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | ↳ `archived` | boolean | Whether the owner is archived | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### List Marketing Events from HubSpot [#list-marketing-events-from-hubspot] Retrieve all marketing events from HubSpot account with pagination support #### Input [#input-70] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `limit` | string | No | Maximum number of results per page (max 100, default 10) | | `after` | string | No | Pagination cursor for next page of results (from previous response) | #### Output [#output-70] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------ | | `events` | array | Array of HubSpot marketing event objects | | ↳ `objectId` | string | Unique event ID (HubSpot internal) | | ↳ `eventName` | string | Event name | | ↳ `eventType` | string | Event type | | ↳ `eventStatus` | string | Event status | | ↳ `eventDescription` | string | Event description | | ↳ `eventUrl` | string | Event URL | | ↳ `eventOrganizer` | string | Event organizer | | ↳ `startDateTime` | string | Start date/time (ISO 8601) | | ↳ `endDateTime` | string | End date/time (ISO 8601) | | ↳ `eventCancelled` | boolean | Whether event is cancelled | | ↳ `eventCompleted` | boolean | Whether event is completed | | ↳ `registrants` | number | Number of registrants | | ↳ `attendees` | number | Number of attendees | | ↳ `cancellations` | number | Number of cancellations | | ↳ `noShows` | number | Number of no-shows | | ↳ `externalEventId` | string | External event ID | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | `success` | boolean | Operation success status | ### Get Marketing Event from HubSpot [#get-marketing-event-from-hubspot] Retrieve a single marketing event by ID from HubSpot #### Input [#input-71] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `eventId` | string | Yes | The HubSpot marketing event objectId to retrieve | #### Output [#output-71] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------- | | `event` | object | HubSpot marketing event | | ↳ `objectId` | string | Unique event ID (HubSpot internal) | | ↳ `eventName` | string | Event name | | ↳ `eventType` | string | Event type | | ↳ `eventStatus` | string | Event status | | ↳ `eventDescription` | string | Event description | | ↳ `eventUrl` | string | Event URL | | ↳ `eventOrganizer` | string | Event organizer | | ↳ `startDateTime` | string | Start date/time (ISO 8601) | | ↳ `endDateTime` | string | End date/time (ISO 8601) | | ↳ `eventCancelled` | boolean | Whether event is cancelled | | ↳ `eventCompleted` | boolean | Whether event is completed | | ↳ `registrants` | number | Number of registrants | | ↳ `attendees` | number | Number of attendees | | ↳ `cancellations` | number | Number of cancellations | | ↳ `noShows` | number | Number of no-shows | | ↳ `externalEventId` | string | External event ID | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | `eventId` | string | The retrieved marketing event ID | | `success` | boolean | Operation success status | ### List Lists from HubSpot [#list-lists-from-hubspot] Search and retrieve lists from HubSpot account #### Input [#input-72] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `query` | string | No | Search query to filter lists by name. Leave empty to return all lists. | | `count` | string | No | Maximum number of results to return (default 20, max 500) | | `offset` | string | No | Pagination offset for next page of results (use the offset value from previous response) | #### Output [#output-72] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------ | | `lists` | array | Array of HubSpot list objects | | ↳ `listId` | string | List ID | | ↳ `name` | string | List name | | ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) | | ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) | | ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) | | ↳ `listVersion` | number | List version number | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | `paging` | object | Pagination information for fetching more results | | ↳ `next` | object | Next page cursor information | | ↳ `after` | string | Cursor for next page of results | | ↳ `link` | string | Link to next page | | `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records are available | | ↳ `total` | number | Total number of lists matching the query | | `success` | boolean | Operation success status | ### Get List from HubSpot [#get-list-from-hubspot] Retrieve a single list by ID from HubSpot #### Input [#input-73] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `listId` | string | Yes | The HubSpot list ID to retrieve | #### Output [#output-73] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------- | | `list` | object | HubSpot list | | ↳ `listId` | string | List ID | | ↳ `name` | string | List name | | ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) | | ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) | | ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) | | ↳ `listVersion` | number | List version number | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | `listId` | string | The retrieved list ID | | `success` | boolean | Operation success status | ### Create List in HubSpot [#create-list-in-hubspot] Create a new list in HubSpot. Specify the object type and processing type (MANUAL or DYNAMIC) #### Input [#input-74] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------ | | `name` | string | Yes | Name of the list | | `objectTypeId` | string | Yes | Object type ID (e.g., "0-1" for contacts, "0-2" for companies) | | `processingType` | string | Yes | Processing type: "MANUAL" for static lists or "DYNAMIC" for active lists | #### Output [#output-74] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------- | | `list` | object | HubSpot list | | ↳ `listId` | string | List ID | | ↳ `name` | string | List name | | ↳ `objectTypeId` | string | Object type ID (e.g., 0-1 for contacts) | | ↳ `processingType` | string | Processing type (MANUAL, DYNAMIC, SNAPSHOT) | | ↳ `processingStatus` | string | Processing status (COMPLETE, PROCESSING) | | ↳ `listVersion` | number | List version number | | ↳ `createdAt` | string | Creation date (ISO 8601) | | ↳ `updatedAt` | string | Last updated date (ISO 8601) | | `listId` | string | The created list ID | | `success` | boolean | Operation success status | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. Some of these are **polling-based** (checked on a schedule) while others are push-based webhooks. ### HubSpot CRM Trigger [#hubspot-crm-trigger] Triggers when HubSpot CRM records (contacts, companies, deals, tickets, custom objects) are created or updated, or when contacts join a list #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect a HubSpot account so Agent Serve can poll your CRM on your behalf. | | `objectType` | string | Yes | What you want to watch. | | `customObjectTypeId` | string | No | HubSpot custom object type ID (e.g. "2-12345"). Find it in HubSpot Settings → Objects → Custom Objects. | | `listId` | string | No | The HubSpot list to watch for new members. | | `eventType` | string | No | Created fires once per new record. Updated fires on any modification. Property Changed fires only when the chosen property changes value. | | `targetPropertyName` | string | No | Fires only when this specific property changes value on a record. | | `properties` | string | No | Properties to include on each record. Leave empty to use sensible defaults. Agent Serve always includes the timestamps it needs internally. | | `pipelineId` | string | No | Restrict to a single pipeline. | | `stageId` | string | No | Restrict to a single stage within the selected pipeline. | | `ownerId` | string | No | Restrict to records owned by a specific HubSpot user. | | `filters` | string | No | JSON array of HubSpot search filters, AND-combined. Each item: \{"propertyName":"...","operator":"EQ","value":"..."}. Operators: EQ, NEQ, CONTAINS\_TOKEN, NOT\_CONTAINS\_TOKEN, GT, GTE, LT, LTE, BETWEEN, IN, NOT\_IN, HAS\_PROPERTY, NOT\_HAS\_PROPERTY. | | `maxRecordsPerPoll` | string | No | Soft cap on records emitted per poll (default 50, max 1000). Excess rolls over to the next poll. | #### Output [#output-75] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `objectType` | string | HubSpot object type (contact, company, deal, ticket, custom object id, or list\_membership) | | `eventType` | string | Event type (created, updated, property\_changed, or joined) | | `objectId` | string | HubSpot ID of the affected record (or contact id for list memberships) | | `occurredAt` | string | ISO timestamp of when the change happened in HubSpot | | `properties` | json | HubSpot properties on the record as a key-value object (property internal name → value). Default keys per object type (override via "Properties to Fetch"): Contact → firstname, lastname, email, phone, company, lifecyclestage, hs\_lead\_status, hubspot\_owner\_id, createdate, lastmodifieddate. Company → name, domain, industry, lifecyclestage, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Deal → dealname, amount, dealstage, pipeline, closedate, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Ticket → subject, content, hs\_pipeline, hs\_pipeline\_stage, hs\_ticket\_priority, hubspot\_owner\_id, createdate, hs\_lastmodifieddate. Custom and user-requested properties appear keyed by their HubSpot internal name. | | `createdAt` | string | ISO timestamp when the record was created in HubSpot | | `updatedAt` | string | ISO timestamp when the record was last updated in HubSpot | | `archived` | boolean | Whether the record is archived | | `propertyName` | string | Name of the property that changed (property\_changed events only) | | `propertyValue` | string | New value of the changed property (property\_changed events only) | | `previousValue` | string | Previous value before the change (property\_changed events only) | | `listId` | string | HubSpot list ID (list\_membership events only) | | `timestamp` | string | ISO timestamp when Agent Serve emitted the event | *** ### HubSpot Webhook [#hubspot-webhook] Triggers instantly when HubSpot sends a webhook event (record created, property changed, deleted, merged, restored, or associations changed), including calls, meetings, and tasks #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | The HubSpot account whose events should start this workflow. | | `webhookObjectTypes` | string | No | Only run for these record types. Leave empty for all. | | `webhookEventTypes` | string | No | Only run for these events. Leave empty for all. | | `webhookPropertyNames` | string | No | For property change events, only run when one of these properties changed (comma-separated internal names). | #### Output [#output-76] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------------------- | | `eventId` | string | Event ID (not guaranteed to be unique) | | `subscriptionId` | string | Subscription that produced the event | | `subscriptionType` | string | Subscription type, e.g. contact.creation or object.propertyChange | | `objectType` | string | Record type, e.g. contact, deal, call, meeting, or task | | `action` | string | Event action, e.g. creation, propertyChange, deletion, or associationChange | | `objectTypeId` | string | CRM object type ID for generic object.\* events (e.g. 0-48 for calls) | | `objectId` | string | ID of the record that changed | | `portalId` | string | HubSpot account ID where the event occurred | | `appId` | string | HubSpot app ID that received the event | | `occurredAt` | number | When the event occurred (Unix milliseconds) | | `attemptNumber` | number | Delivery attempt, starting at 0 | | `changeSource` | string | Source of the change, e.g. CRM or IMPORT | | `sourceId` | string | User or source that triggered the event | | `propertyName` | string | Changed property (property change events) | | `propertyValue` | string | New property value (property change events) | | `primaryObjectId` | string | Merge winner record ID (merge events) | | `mergedObjectIds` | json | Record IDs merged into the winner | | `newObjectId` | string | Record created by the merge, if any | | `numberOfPropertiesMoved` | number | Properties transferred during the merge | | `associationType` | string | Classic association type, e.g. CONTACT\_TO\_COMPANY | | `associationTypeId` | string | Association type ID (generic events) | | `associationCategory` | string | HUBSPOT\_DEFINED or USER\_DEFINED (generic events) | | `fromObjectId` | string | Association source record ID | | `toObjectId` | string | Association target record ID | | `fromObjectTypeId` | string | Association source object type | | `toObjectTypeId` | string | Association target object type | | `associationRemoved` | boolean | True when the association was removed, false when added | | `isPrimaryAssociation` | boolean | Whether the target is the primary association | | `messageId` | string | New message ID (conversation.newMessage) | | `messageType` | string | MESSAGE or COMMENT (conversation.newMessage) | | `payload` | json | The raw HubSpot event | --- # Hugging Face (/integrations/huggingface) {/* MANUAL-CONTENT-START:intro */} Use [Hugging Face](https://huggingface.co/) in Agent Serve to generate text completions with the Hugging Face Inference API. Choose a model and supply the prompt for the workflow step. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Hugging Face into the workflow. Can generate completions using the Hugging Face Inference API. ## Actions [#actions] ### Hugging Face Chat [#hugging-face-chat] Generate completions using Hugging Face Inference API #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `systemPrompt` | string | No | System prompt to guide the model behavior | | `content` | string | Yes | The user message content to send to the model | | `provider` | string | Yes | The provider to use for the API request (e.g., novita, cerebras, etc.) | | `model` | string | Yes | Model to use for chat completions (e.g., "deepseek/deepseek-v3-0324", "meta-llama/Llama-3.3-70B-Instruct") | | `maxTokens` | number | No | Maximum number of tokens to generate | | `temperature` | number | No | Sampling temperature (0-2). Higher values make output more random | | `apiKey` | string | Yes | Hugging Face API token | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Chat completion results | | ↳ `content` | string | Generated text content | | ↳ `model` | string | Model used for generation | | ↳ `usage` | object | Token usage information | | ↳ `prompt_tokens` | number | Number of tokens in the prompt | | ↳ `completion_tokens` | number | Number of tokens in the completion | | ↳ `total_tokens` | number | Total number of tokens used | --- # Hunter.io (/integrations/hunter) {/* MANUAL-CONTENT-START:intro */} Use [Hunter.io](https://hunter.io/) to find and verify professional emails, search company domains, discover companies, and enrich company information. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Hunter into the workflow. Can search domains, find email addresses, verify email addresses, discover companies, find companies, and count email addresses. ## Actions [#actions] ### Hunter Discover [#hunter-discover] Returns companies matching a set of criteria using Hunter.io AI-powered search. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `query` | string | No | Natural language search query for companies | | `domain` | string | No | Company domain name to filter by (e.g., "stripe.com", "company.io") | | `headcount` | string | No | Company size filter (e.g., "1-10", "11-50") | | `company_type` | string | No | Type of organization | | `technology` | string | No | Technology used by companies | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------- | | `results` | array | List of companies matching the search criteria | | ↳ `domain` | string | Company domain | | ↳ `organization` | string | Organization name | | ↳ `personal_emails` | number | Count of personal emails | | ↳ `generic_emails` | number | Count of generic (role-based) emails | | ↳ `total_emails` | number | Total emails found for the company | ### Hunter Domain Search [#hunter-domain-search] Returns all the email addresses found using one given domain name, with sources. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------- | | `domain` | string | Yes | Domain name to search for email addresses (e.g., "stripe.com", "company.io") | | `limit` | number | No | Maximum email addresses to return (e.g., 10, 25, 50). Default: 10 | | `offset` | number | No | Number of email addresses to skip for pagination (e.g., 0, 10, 20) | | `type` | string | No | Filter for personal or generic emails (e.g., "personal", "generic", "all") | | `seniority` | string | No | Filter by seniority level (e.g., "junior", "senior", "executive") | | `department` | string | No | Filter by specific department (e.g., "sales", "marketing", "engineering", "hr") | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `emails` | array | List of email addresses found for the domain (up to 100 per request) | | ↳ `value` | string | The email address | | ↳ `type` | string | Email type: personal or generic (role-based) | | ↳ `confidence` | number | Probability score (0-100) that the email is correct | | ↳ `first_name` | string | Person's first name | | ↳ `last_name` | string | Person's last name | | ↳ `position` | string | Job title/position | | ↳ `position_raw` | string | Raw job title as found | | ↳ `seniority` | string | Seniority level (junior, senior, executive) | | ↳ `department` | string | Department (executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations) | | ↳ `linkedin` | string | LinkedIn profile URL | | ↳ `twitter` | string | Twitter handle | | ↳ `phone_number` | string | Phone number | | ↳ `sources` | array | List of sources where the email was found (limited to 20) | | ↳ `domain` | string | Domain where the email was found | | ↳ `uri` | string | Full URL of the source page | | ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) | | ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) | | ↳ `still_on_page` | boolean | Whether the email is still present on the source page | | ↳ `verification` | object | Email verification information | | ↳ `date` | string | Date when the email was verified (YYYY-MM-DD) | | ↳ `status` | string | Verification status (valid, invalid, accept\_all, webmail, disposable, unknown) | | `domain` | string | The searched domain name | | `disposable` | boolean | Whether the domain is a disposable email service | | `webmail` | boolean | Whether the domain is a webmail provider (e.g., Gmail) | | `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) | | `pattern` | string | The email pattern used by the organization (e.g., \{first}, \{first}.\{last}) | | `organization` | string | The organization/company name | | `linked_domains` | array | Other domains linked to the organization | ### Hunter Email Finder [#hunter-email-finder] Finds the most likely email address for a person given their name and company domain. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------ | | `domain` | string | Yes | Company domain name (e.g., "stripe.com", "company.io") | | `first_name` | string | Yes | Person's first name (e.g., "John", "Sarah") | | `last_name` | string | Yes | Person's last name (e.g., "Smith", "Johnson") | | `company` | string | No | Company name (e.g., "Stripe", "Acme Inc") | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------- | | `sources` | array | List of sources where the email was found (limited to 20) | | ↳ `domain` | string | Domain where the email was found | | ↳ `uri` | string | Full URL of the source page | | ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) | | ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) | | ↳ `still_on_page` | boolean | Whether the email is still present on the source page | | `verification` | object | Email verification information | | ↳ `date` | string | Date when the email was verified (YYYY-MM-DD) | | ↳ `status` | string | Verification status (valid, invalid, accept\_all, webmail, disposable, unknown) | | `first_name` | string | Person's first name | | `last_name` | string | Person's last name | | `email` | string | The found email address | | `score` | number | Confidence score (0-100) for the found email address | | `domain` | string | Domain that was searched | | `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) | | `position` | string | Job title/position | | `twitter` | string | Twitter handle | | `linkedin_url` | string | LinkedIn profile URL | | `phone_number` | string | Phone number | | `company` | string | Company name | ### Hunter Email Verifier [#hunter-email-verifier] Verifies the deliverability of an email address and provides detailed verification status. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------- | | `email` | string | Yes | The email address to verify | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------ | | `sources` | array | List of sources where the email was found (limited to 20) | | ↳ `domain` | string | Domain where the email was found | | ↳ `uri` | string | Full URL of the source page | | ↳ `extracted_on` | string | Date when the email was first extracted (YYYY-MM-DD) | | ↳ `last_seen_on` | string | Date when the email was last seen (YYYY-MM-DD) | | ↳ `still_on_page` | boolean | Whether the email is still present on the source page | | `result` | string | Deliverability result: deliverable, undeliverable, or risky | | `score` | number | Deliverability score (0-100). Webmail and disposable emails receive an arbitrary score of 50. | | `email` | string | The verified email address | | `regexp` | boolean | Whether the email passes regular expression validation | | `gibberish` | boolean | Whether the email appears to be auto-generated (e.g., [e65rc109q@company.com](mailto:e65rc109q@company.com)) | | `disposable` | boolean | Whether the email is from a disposable email service | | `webmail` | boolean | Whether the email is from a webmail provider (e.g., Gmail) | | `mx_records` | boolean | Whether MX records exist for the domain | | `smtp_server` | boolean | Whether connection to the SMTP server was successful | | `smtp_check` | boolean | Whether the email address doesn't bounce | | `accept_all` | boolean | Whether the server accepts all email addresses (may cause false positives) | | `block` | boolean | Whether the domain is blocking verification (validity could not be determined) | | `status` | string | Verification status: valid, invalid, accept\_all, webmail, disposable, unknown, or blocked | ### Hunter Companies Find [#hunter-companies-find] Enriches company data using domain name. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `domain` | string | Yes | Domain to find company data for (e.g., "stripe.com", "company.io") | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------- | | `name` | string | Company name | | `domain` | string | Company domain | | `description` | string | Company description | | `industry` | string | Industry classification | | `sector` | string | Business sector | | `size` | string | Employee headcount range (e.g., "11-50") | | `founded_year` | number | Year founded | | `location` | string | Headquarters location (formatted) | | `country` | string | Country (full name) | | `country_code` | string | ISO 3166-1 alpha-2 country code | | `state` | string | State/province | | `city` | string | City | | `linkedin` | string | LinkedIn handle (e.g., company/hunterio) | | `twitter` | string | Twitter handle | | `facebook` | string | Facebook handle | | `logo` | string | Company logo URL | | `phone` | string | Company phone number | | `tech` | array | Technologies used by the company | ### Hunter Email Count [#hunter-email-count] Returns the total number of email addresses found for a domain or company. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `domain` | string | No | Domain to count emails for (e.g., "stripe.com"). Required if company not provided | | `company` | string | No | Company name to count emails for (e.g., "Stripe", "Acme Inc"). Required if domain not provided | | `type` | string | No | Filter for personal or generic emails only (e.g., "personal", "generic", "all") | | `apiKey` | string | Yes | Hunter.io API Key | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------- | | `department` | object | Email count breakdown by department | | ↳ `executive` | number | Number of executive department emails | | ↳ `it` | number | Number of IT department emails | | ↳ `finance` | number | Number of finance department emails | | ↳ `management` | number | Number of management department emails | | ↳ `sales` | number | Number of sales department emails | | ↳ `legal` | number | Number of legal department emails | | ↳ `support` | number | Number of support department emails | | ↳ `hr` | number | Number of HR department emails | | ↳ `marketing` | number | Number of marketing department emails | | ↳ `communication` | number | Number of communication department emails | | ↳ `education` | number | Number of education department emails | | ↳ `design` | number | Number of design department emails | | ↳ `health` | number | Number of health department emails | | ↳ `operations` | number | Number of operations department emails | | `seniority` | object | Email count breakdown by seniority level | | ↳ `junior` | number | Number of junior-level emails | | ↳ `senior` | number | Number of senior-level emails | | ↳ `executive` | number | Number of executive-level emails | | `total` | number | Total number of email addresses found | | `personal_emails` | number | Number of personal email addresses (individual employees) | | `generic_emails` | number | Number of generic/role-based email addresses (e.g., contact@, info@) | --- # AWS IAM (/integrations/iam) {/* MANUAL-CONTENT-START:intro */} [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) controls access to AWS resources. Use this integration to manage users, roles, policies, groups, and access keys, or simulate a principal’s permissions before changing them. Policy simulation deserves a note, because AWS's model is easy to misread. `Simulate Principal Policy` returns one result per action regardless of how many resource ARNs you pass. The top-level decision is the **aggregate** across every resource — most restrictive wins — and the top-level resource name is an ARN *template* for the resource type, not one of your ARNs. Per-resource answers live in `resourceSpecificResults`, and when you supply concrete ARNs, missing context keys are reported there too rather than at the top level. Read `resourceSpecificResults` whenever you simulate against more than one resource: the aggregate alone will tell you a principal is denied when it is in fact allowed on some of them. The secret half of a new access key is returned once and is hidden from block output display and execution logs. It stays resolvable downstream, so rotation workflows can pass it straight to the system that needs it — but a block you pass it into will log it under that block's own inputs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS Identity and Access Management into your workflow. Create and manage users, roles, policies, groups, and access keys. ## Actions [#actions] ### IAM List Users [#iam-list-users] List IAM users in your AWS account #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `pathPrefix` | string | No | Path prefix to filter users (e.g., /division\_abc/) | | `maxItems` | number | No | Maximum number of users to return (1-1000, default 100) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------- | | `users` | json | List of IAM users with userName, userId, arn, path, and dates | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of users returned | ### IAM Get User [#iam-get-user] Get detailed information about an IAM user #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | No | The name of the IAM user to retrieve (defaults to the caller if omitted) | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------------- | | `userName` | string | The name of the user | | `userId` | string | The unique ID of the user | | `arn` | string | The ARN of the user | | `path` | string | The path to the user | | `createDate` | string | Date the user was created | | `passwordLastUsed` | string | Date the password was last used | | `permissionsBoundaryArn` | string | ARN of the permissions boundary policy | | `tags` | json | Tags attached to the user (key, value pairs) | ### IAM Create User [#iam-create-user] Create a new IAM user #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | Name for the new IAM user (1-64 characters) | | `path` | string | No | Path for the user (e.g., /division\_abc/), defaults to / | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | --------------------------------- | | `message` | string | Operation status message | | `userName` | string | The name of the created user | | `userId` | string | The unique ID of the created user | | `arn` | string | The ARN of the created user | | `path` | string | The path of the created user | | `createDate` | string | Date the user was created | ### IAM Delete User [#iam-delete-user] Delete an IAM user #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | The name of the IAM user to delete | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM List Roles [#iam-list-roles] List IAM roles in your AWS account #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `pathPrefix` | string | No | Path prefix to filter roles (e.g., /application/) | | `maxItems` | number | No | Maximum number of roles to return (1-1000, default 100) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------- | | `roles` | json | List of IAM roles with roleName, roleId, arn, path, and dates | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of roles returned | ### IAM Get Role [#iam-get-role] Get detailed information about an IAM role #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | The name of the IAM role to retrieve | #### Output [#output-5] | Parameter | Type | Description | | -------------------------- | ------ | --------------------------------------- | | `roleName` | string | The name of the role | | `roleId` | string | The unique ID of the role | | `arn` | string | The ARN of the role | | `path` | string | The path to the role | | `createDate` | string | Date the role was created | | `description` | string | Description of the role | | `maxSessionDuration` | number | Maximum session duration in seconds | | `assumeRolePolicyDocument` | string | The trust policy document (JSON) | | `roleLastUsedDate` | string | Date the role was last used | | `roleLastUsedRegion` | string | AWS region where the role was last used | ### IAM Create Role [#iam-create-role] Create a new IAM role with a trust policy #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | Name for the new IAM role (1-64 characters) | | `assumeRolePolicyDocument` | string | Yes | Trust policy JSON specifying who can assume this role | | `description` | string | No | Description of the role | | `path` | string | No | Path for the role (e.g., /application/), defaults to / | | `maxSessionDuration` | number | No | Maximum session duration in seconds (3600-43200, default 3600) | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------ | --------------------------------- | | `message` | string | Operation status message | | `roleName` | string | The name of the created role | | `roleId` | string | The unique ID of the created role | | `arn` | string | The ARN of the created role | | `path` | string | The path of the created role | | `createDate` | string | Date the role was created | ### IAM Delete Role [#iam-delete-role] Delete an IAM role #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | The name of the IAM role to delete | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM Attach User Policy [#iam-attach-user-policy] Attach a managed policy to an IAM user #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | The name of the IAM user | | `policyArn` | string | Yes | The ARN of the managed policy to attach | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM Detach User Policy [#iam-detach-user-policy] Remove a managed policy from an IAM user #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | The name of the IAM user | | `policyArn` | string | Yes | The ARN of the managed policy to detach | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM Attach Role Policy [#iam-attach-role-policy] Attach a managed policy to an IAM role #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | The name of the IAM role | | `policyArn` | string | Yes | The ARN of the managed policy to attach | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM Detach Role Policy [#iam-detach-role-policy] Remove a managed policy from an IAM role #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | The name of the IAM role | | `policyArn` | string | Yes | The ARN of the managed policy to detach | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM List Policies [#iam-list-policies] List managed IAM policies #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `scope` | string | No | Filter by scope. Must be exactly one of: All, AWS (AWS-managed), Local (customer-managed) | | `onlyAttached` | boolean | No | If true, only return policies attached to an entity | | `pathPrefix` | string | No | Path prefix to filter policies | | `maxItems` | number | No | Maximum number of policies to return (1-1000, default 100) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `policies` | json | List of policies with policyName, policyId, arn, path, attachmentCount, isAttachable, defaultVersionId, permissionsBoundaryUsageCount, and dates. AWS never returns policy descriptions from ListPolicies — use IAM Get Policy for a description. | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of policies returned | ### IAM Get Policy [#iam-get-policy] Get details about a managed IAM policy, including its description — the field ListPolicies never returns #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `policyArn` | string | Yes | ARN of the managed policy to retrieve (e.g., arn:aws:iam::aws:policy/ReadOnlyAccess) | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------------------- | | `policyName` | string | The friendly name of the policy | | `policyId` | string | The stable unique ID of the policy | | `arn` | string | The ARN of the policy | | `path` | string | The path to the policy | | `attachmentCount` | number | Number of entities the policy is attached to | | `isAttachable` | boolean | Whether the policy can be attached | | `createDate` | string | Date the policy was created | | `updateDate` | string | Date the policy was last updated | | `description` | string | The policy description | | `defaultVersionId` | string | The identifier of the default policy version | | `permissionsBoundaryUsageCount` | number | Number of entities using the policy as a permissions boundary | | `tags` | json | Tags attached to the policy (key, value pairs) | ### IAM Create Access Key [#iam-create-access-key] Create a new access key pair for an IAM user #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | No | The IAM user to create the key for (defaults to current user) | #### Output [#output-14] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `message` | string | Operation status message | | `accessKeyId` | string | The new access key ID | | `secretAccessKey` | string | The new secret access key (only shown once) | | `userName` | string | The user the key was created for | | `status` | string | Status of the access key (Active) | | `createDate` | string | Date the key was created | ### IAM Delete Access Key [#iam-delete-access-key] Delete an access key pair for an IAM user #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `accessKeyIdToDelete` | string | Yes | The access key ID to delete | | `userName` | string | No | The IAM user whose key to delete (defaults to current user) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM List Access Keys [#iam-list-access-keys] List an IAM user's access key IDs with their status and age — use to find stale keys and to confirm which keys remain after a rotation #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | No | The IAM user whose keys to list (defaults to the calling user if omitted) | | `maxItems` | number | No | Maximum number of access keys to return (1-1000) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `accessKeys` | json | Access key metadata: accessKeyId, userName, status (Active/Inactive), createDate. The secret access key is never returned by this operation. | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of access keys returned | ### IAM Update Access Key [#iam-update-access-key] Activate or deactivate an IAM access key — deactivate an old key and verify nothing breaks before deleting it #### Input [#input-17] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `accessKeyIdToUpdate` | string | Yes | The access key ID whose status to change | | `status` | string | Yes | The status to set. Must be exactly one of: Active, Inactive. An Inactive key is rejected by AWS but can be reactivated. | | `userName` | string | No | The IAM user that owns the key (defaults to the calling user if omitted) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM List Groups [#iam-list-groups] List IAM groups in your AWS account #### Input [#input-18] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `pathPrefix` | string | No | Path prefix to filter groups | | `maxItems` | number | No | Maximum number of groups to return (1-1000, default 100) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-18] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------- | | `groups` | json | List of IAM groups with groupName, groupId, arn, and path | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of groups returned | ### IAM Add User to Group [#iam-add-user-to-group] Add an IAM user to a group #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | The name of the IAM user | | `groupName` | string | Yes | The name of the IAM group | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM Remove User from Group [#iam-remove-user-from-group] Remove an IAM user from a group #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | The name of the IAM user | | `groupName` | string | Yes | The name of the IAM group | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### IAM List Attached Role Policies [#iam-list-attached-role-policies] List all managed policies attached to an IAM role #### Input [#input-21] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `roleName` | string | Yes | Name of the IAM role | | `pathPrefix` | string | No | Path prefix to filter policies (e.g., /application/) | | `maxItems` | number | No | Maximum number of policies to return (1-1000) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-21] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------- | | `attachedPolicies` | json | List of attached policies with policyName and policyArn | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of attached policies returned | ### IAM List Attached User Policies [#iam-list-attached-user-policies] List all managed policies attached to an IAM user #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `userName` | string | Yes | Name of the IAM user | | `pathPrefix` | string | No | Path prefix to filter policies (e.g., /application/) | | `maxItems` | number | No | Maximum number of policies to return (1-1000) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------- | | `attachedPolicies` | json | List of attached policies with policyName and policyArn | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of attached policies returned | ### IAM Simulate Principal Policy [#iam-simulate-principal-policy] Simulate whether a user, role, or group is allowed to perform specific AWS actions — useful for pre-flight access checks #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `policySourceArn` | string | Yes | ARN of the user, group, or role to simulate (e.g., arn:aws:iam::123456789012:user/alice) | | `actionNames` | string | Yes | Comma-separated list of AWS actions to simulate (e.g., s3:GetObject,ec2:DescribeInstances) | | `resourceArns` | string | No | Comma-separated list of resource ARNs to simulate against (defaults to \* if not provided). Read the per-ARN verdict from resourceSpecificResults, not from evalDecision. | | `contextEntries` | array | No | Condition context keys to supply to the simulation. Without these, any policy gated by a Condition simulates as denied with missing context values. | | `maxResults` | number | No | Maximum number of simulation results to return (1-1000) | | `marker` | string | No | Pagination marker from a previous request | #### Output [#output-23] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `evaluationResults` | json | One result per simulated action. evalDecision is the AGGREGATE, most-restrictive decision across every resource ARN, and evalResourceName is the resource-type ARN template (e.g. an arn:aws:s3:::BUCKET/KEY shape with the bucket and key left as placeholders), not a customer ARN. For the verdict on an individual ARN read resourceSpecificResults\[]: evalResourceName, evalResourceDecision (allowed/explicitDeny/implicitDeny), matchedStatements, missingContextValues, permissionsBoundaryAllowed. When concrete resource ARNs are supplied, missing context values appear there rather than at the top level. | | `isTruncated` | boolean | Whether there are more results available | | `marker` | string | Pagination marker for the next page of results | | `count` | number | Number of evaluation results returned | --- # Icypeas (/integrations/icypeas) {/* MANUAL-CONTENT-START:intro */} [Icypeas](https://icypeas.com/) is a B2B prospecting platform for finding and verifying professional email addresses at scale, with results returned asynchronously via polling. With Icypeas, you can: * **Find professional emails:** Resolve a likely professional email from a person's name and their company domain. * **Verify existing emails:** Check whether an email address is valid and deliverable before adding it to your outreach. In Agent Serve, the Icypeas integration lets your agents find and verify professional emails inside a workflow — automating lead enrichment and keeping outreach lists accurate without manual lookups. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Icypeas to find a professional email address from a name and company domain, or verify whether an existing email is valid and deliverable. Results are returned asynchronously via polling. ## Actions [#actions] ### Icypeas Find Email [#icypeas-find-email] Find a professional email address from a first name, last name, and company domain or name. Submits the search and polls until a result is available. Costs 1 credit per found email ([https://www.icypeas.com/pricing](https://www.icypeas.com/pricing)). #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | Icypeas API key | | `firstname` | string | No | Target person's first name | | `lastname` | string | No | Target person's last name | | `domainOrCompany` | string | Yes | Target company domain (e.g. stripe.com) or company name (e.g. Stripe) | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- | | `searchId` | string | Icypeas internal search ID | | `status` | string | Terminal search status: FOUND \| DEBITED \| NOT\_FOUND \| DEBITED\_NOT\_FOUND \| BAD\_INPUT \| INSUFFICIENT\_FUNDS \| ABORTED | | `email` | string | Email address found or verified | | `item` | json | Full raw item object returned by the Icypeas results endpoint | | `firstname` | string | Found person's first name | | `lastname` | string | Found person's last name | ### Icypeas Verify Email [#icypeas-verify-email] Verify whether an email address is valid and deliverable. Submits the verification and polls until a result is available. Costs 0.1 credit per verification ([https://www.icypeas.com/pricing](https://www.icypeas.com/pricing)). #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Icypeas API key | | `email` | string | Yes | Email address to verify (e.g. [john@stripe.com](mailto:john@stripe.com)) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- | | `searchId` | string | Icypeas internal search ID | | `status` | string | Terminal search status: FOUND \| DEBITED \| NOT\_FOUND \| DEBITED\_NOT\_FOUND \| BAD\_INPUT \| INSUFFICIENT\_FUNDS \| ABORTED | | `email` | string | Email address found or verified | | `item` | json | Full raw item object returned by the Icypeas results endpoint | | `valid` | boolean | Whether the email is valid/deliverable (true for FOUND/DEBITED status) | --- # AWS Identity Center (/integrations/identity_center) {/* MANUAL-CONTENT-START:intro */} Use [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) to assign or revoke permission sets for AWS accounts, resolve users and groups, and inspect account access. The same operations support the reverse direction — access review. Starting from an account, an agent can list its assignments, resolve the principals, expand groups into their members, and produce a written report of exactly who can reach that account and through which permission set. One detail shapes how that review has to be built. AWS requires a permission set ARN alongside the account ID on this call, so *List Assignments For Account* returns only the assignments granted through that one permission set — not every assignment on the account. To cover an account completely, run *List Permission Sets* for the instance first, then call *List Assignments For Account* once per permission set and combine the results. Skipping that loop silently omits access granted through the permission sets you did not ask about. Two AWS behaviors are worth knowing. Creating and deleting an account assignment are **asynchronous**: both return a request ID, and each has its own status poller — use *Check Assignment Status* for creations and *Check Assignment Deletion Status* for deletions, as the two request-ID types are not interchangeable. And the account-listing operations call AWS Organizations, which is global per partition; the block resolves the correct endpoint for commercial, GovCloud, and China regions automatically. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Provision and revoke temporary access to AWS accounts via IAM Identity Center (SSO). Assign permission sets to users or groups, look up users by email, and list accounts and permission sets for access request workflows. ## Actions [#actions] ### Identity Center List Instances [#identity-center-list-instances] List all AWS IAM Identity Center instances in your account #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum number of instances to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------- | | `instances` | array | Identity Center instances in the region | | ↳ `instanceArn` | string | ARN of the Identity Center instance | | ↳ `identityStoreId` | string | Identity Store ID backing the instance | | ↳ `name` | string | Instance name | | ↳ `status` | string | Instance status | | ↳ `statusReason` | string | Explanation when the instance is not ACTIVE | | ↳ `ownerAccountId` | string | AWS account that owns the instance | | ↳ `createdDate` | string | ISO 8601 date the instance was created | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of instances returned | ### Identity Center List Accounts [#identity-center-list-accounts] List all AWS accounts in your organization #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `maxResults` | number | No | Maximum number of accounts to return (1-20; the AWS Organizations ceiling) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------- | | `accounts` | array | Accounts in the AWS organization | | ↳ `id` | string | AWS account ID | | ↳ `arn` | string | AWS account ARN | | ↳ `name` | string | Account name | | ↳ `email` | string | Root email address of the account | | ↳ `status` | string | Account status (e.g., ACTIVE, SUSPENDED) | | ↳ `joinedTimestamp` | string | ISO 8601 date the account joined the organization | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of accounts returned | ### Identity Center Describe Account [#identity-center-describe-account] Retrieve details about a specific AWS account by its ID #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `accountId` | string | Yes | AWS account ID to describe | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------- | | `id` | string | AWS account ID | | `arn` | string | AWS account ARN | | `name` | string | Account name | | `email` | string | Root email address of the account | | `status` | string | Account status (ACTIVE, SUSPENDED, etc.) | | `joinedTimestamp` | string | Date the account joined the organization | ### Identity Center List Permission Sets [#identity-center-list-permission-sets] List all permission sets defined in an IAM Identity Center instance #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `maxResults` | number | No | Maximum number of permission sets to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------- | | `permissionSets` | array | Permission sets defined on the instance | | ↳ `permissionSetArn` | string | ARN of the permission set | | ↳ `name` | string | Permission set name | | ↳ `description` | string | Permission set description | | ↳ `sessionDuration` | string | ISO 8601 session duration (e.g., PT1H) | | ↳ `createdDate` | string | ISO 8601 date the permission set was created | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of permission sets returned | ### Identity Center Get User [#identity-center-get-user] Look up a user in the Identity Store by email address #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) | | `email` | string | Yes | Email address of the user to look up | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------- | | `userId` | string | Identity Store user ID (use as principalId) | | `userName` | string | Username in the Identity Store | | `displayName` | string | Display name of the user | | `email` | string | Email address of the user | ### Identity Center Describe User [#identity-center-describe-user] Resolve an Identity Store user ID to the user behind it. Use to turn the principalId on an account assignment into a name and email. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (e.g., d-1234567890) | | `userId` | string | Yes | Identity Store user ID, such as the principalId on a USER account assignment | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------ | | `userId` | string | Identity Store user ID | | `userName` | string | Username in the Identity Store | | `displayName` | string | Display name of the user, or null when the Identity Store omits it | | `email` | string | Primary email address, or null when the user has no email attribute | | `userStatus` | string | Account status (ENABLED or DISABLED), or null when the Identity Store omits it | | `title` | string | Job title, or null when the Identity Store omits it | | `externalIds` | array | External identity provider IDs linked to the user | | ↳ `issuer` | string | Identity provider that issued the ID | | ↳ `id` | string | Identifier at the issuer | ### Identity Center Get Group [#identity-center-get-group] Look up a group in the Identity Store by display name #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) | | `displayName` | string | Yes | Display name of the group to look up | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------- | | `groupId` | string | Identity Store group ID (use as principalId) | | `displayName` | string | Display name of the group | | `description` | string | Group description | ### Identity Center Describe Group [#identity-center-describe-group] Resolve an Identity Store group ID to the group behind it. Use to turn the principalId on an account assignment into a group name. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (e.g., d-1234567890) | | `groupId` | string | Yes | Identity Store group ID, such as the principalId on a GROUP account assignment | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------- | | `groupId` | string | Identity Store group ID | | `displayName` | string | Display name of the group | | `description` | string | Group description | | `externalIds` | array | External identity provider IDs linked to the group | | ↳ `issuer` | string | Identity provider that issued the ID | | ↳ `id` | string | Identifier at the issuer | ### Identity Center List Groups [#identity-center-list-groups] List all groups in the Identity Store #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (from the Identity Center instance) | | `maxResults` | number | No | Maximum number of groups to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------- | | `groups` | array | Groups in the Identity Store | | ↳ `groupId` | string | Identity Store group ID (use as principalId) | | ↳ `displayName` | string | Group display name | | ↳ `description` | string | Group description | | ↳ `externalIds` | array | External identity provider IDs linked to the group | | ↳ `issuer` | string | Identity provider that issued the ID | | ↳ `id` | string | Identifier at the issuer | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of groups returned | ### Identity Center List Group Memberships [#identity-center-list-group-memberships] List the users who belong to an Identity Store group #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `identityStoreId` | string | Yes | Identity Store ID (e.g., d-1234567890) | | `groupId` | string | Yes | Identity Store group ID whose members to list | | `maxResults` | number | No | Maximum number of memberships to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------------------------------ | | `memberships` | array | Members of the group | | ↳ `membershipId` | string | Identity Store membership ID | | ↳ `groupId` | string | Identity Store group ID | | ↳ `userId` | string | Identity Store user ID of the member — resolve with Describe User. Null when the member is not a user. | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of memberships returned | ### Identity Center Create Account Assignment [#identity-center-create-account-assignment] Grant a user or group access to an AWS account via a permission set (temporary elevated access) #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `accountId` | string | Yes | AWS account ID to grant access to | | `permissionSetArn` | string | Yes | ARN of the permission set to assign | | `principalType` | string | Yes | Type of principal: USER or GROUP | | `principalId` | string | Yes | Identity Store ID of the user or group | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------- | | `message` | string | Status message | | `status` | string | Provisioning status: IN\_PROGRESS, FAILED, or SUCCEEDED | | `requestId` | string | Request ID to use with Check Assignment Status | | `accountId` | string | Target AWS account ID | | `permissionSetArn` | string | Permission set ARN | | `principalType` | string | Principal type (USER or GROUP) | | `principalId` | string | Principal ID | | `failureReason` | string | Reason for failure if status is FAILED | | `createdDate` | string | Date the request was created | ### Identity Center Delete Account Assignment [#identity-center-delete-account-assignment] Revoke a user or group access to an AWS account by removing a permission set assignment #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `accountId` | string | Yes | AWS account ID to revoke access from | | `permissionSetArn` | string | Yes | ARN of the permission set to remove | | `principalType` | string | Yes | Type of principal: USER or GROUP | | `principalId` | string | Yes | Identity Store ID of the user or group | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------- | | `message` | string | Status message | | `status` | string | Deprovisioning status: IN\_PROGRESS, FAILED, or SUCCEEDED | | `requestId` | string | Request ID to use with Check Assignment Deletion Status | | `accountId` | string | Target AWS account ID | | `permissionSetArn` | string | Permission set ARN | | `principalType` | string | Principal type (USER or GROUP) | | `principalId` | string | Principal ID | | `failureReason` | string | Reason for failure if status is FAILED | | `createdDate` | string | Date the request was created | ### Identity Center Check Assignment Status [#identity-center-check-assignment-status] Check the provisioning status of an account assignment creation request #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `requestId` | string | Yes | Request ID returned from Create Account Assignment. Deletion request IDs are not accepted — use Check Assignment Deletion Status for those. | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------- | | `message` | string | Human-readable status message | | `status` | string | Current status: IN\_PROGRESS, FAILED, or SUCCEEDED | | `requestId` | string | The request ID that was checked | | `accountId` | string | Target AWS account ID | | `permissionSetArn` | string | Permission set ARN | | `principalType` | string | Principal type (USER or GROUP) | | `principalId` | string | Principal ID | | `failureReason` | string | Reason for failure if status is FAILED | | `createdDate` | string | Date the request was created | ### Identity Center Check Assignment Deletion Status [#identity-center-check-assignment-deletion-status] Check the deprovisioning status of an account assignment deletion request #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `requestId` | string | Yes | Request ID returned from Delete Account Assignment | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------- | | `message` | string | Human-readable status message | | `status` | string | Current deletion status: IN\_PROGRESS, FAILED, or SUCCEEDED | | `requestId` | string | The deletion request ID that was checked | | `accountId` | string | Target AWS account ID | | `permissionSetArn` | string | Permission set ARN | | `principalType` | string | Principal type (USER or GROUP) | | `principalId` | string | Principal ID | | `failureReason` | string | Reason for failure if status is FAILED | | `createdDate` | string | Date the request was created | ### Identity Center List Account Assignments For Principal [#identity-center-list-account-assignments-for-principal] List every account and permission set a specific user or group is assigned. Use List Assignments For Account to go the other way, from an account to its principals. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `principalId` | string | Yes | Identity Store ID of the user or group | | `principalType` | string | Yes | Type of principal: USER or GROUP | | `maxResults` | number | No | Maximum number of assignments to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------ | | `assignments` | array | Accounts and permission sets the principal is assigned | | ↳ `accountId` | string | AWS account ID | | ↳ `permissionSetArn` | string | Permission set ARN | | ↳ `principalType` | string | Principal type (USER or GROUP) | | ↳ `principalId` | string | Identity Store user or group ID | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of assignments returned | ### Identity Center List Assignments For Account [#identity-center-list-assignments-for-account] List every principal assigned a specific permission set on a specific AWS account. Use for per-account access reviews. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `instanceArn` | string | Yes | ARN of the Identity Center instance | | `accountId` | string | Yes | AWS account ID to list assignments for (12 digits) | | `permissionSetArn` | string | Yes | ARN of the permission set to list assignments for | | `maxResults` | number | No | Maximum number of assignments to return (1-100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------ | | `assignments` | array | Principals assigned this permission set on the account | | ↳ `accountId` | string | AWS account ID | | ↳ `permissionSetArn` | string | Permission set ARN | | ↳ `principalType` | string | Principal type (USER or GROUP) | | ↳ `principalId` | string | Identity Store user or group ID — resolve with Describe User or Describe Group | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of assignments returned | --- # IMAP (/integrations/imap) {/* MANUAL-CONTENT-START:intro */} Use the IMAP Email trigger to start workflows from messages in an IMAP-enabled mailbox. Configure the mailbox connection and folder, then filter messages by sender, subject, or custom search criteria. Message content and attachments are available to subsequent workflow steps. {/* MANUAL-CONTENT-END */} ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### IMAP Email Trigger [#imap-email-trigger] Triggers when new emails are received via IMAP (works with any email provider) #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------- | | `host` | string | Yes | IMAP server hostname (e.g., imap.gmail.com, outlook.office365.com) | | `port` | string | Yes | IMAP port (993 for SSL/TLS, 143 for STARTTLS) | | `secure` | boolean | No | Enable SSL/TLS encryption (recommended for port 993) | | `username` | string | Yes | Email address or username for authentication | | `password` | string | Yes | Password or app-specific password (for Gmail, use an App Password) | | `mailbox` | string | No | Choose which mailbox/folder(s) to monitor for new emails. Leave empty to monitor INBOX. | | `searchCriteria` | string | No | ImapFlow search criteria as JSON object. Default: unseen messages only. | | `markAsRead` | boolean | No | Automatically mark emails as read (SEEN) after processing | | `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `email` | object | email output from the tool | | ↳ `messageId` | string | RFC Message-ID header | | ↳ `subject` | string | Email subject line | | ↳ `from` | string | Sender email address | | ↳ `to` | string | Recipient email address | | ↳ `cc` | string | CC recipients | | ↳ `date` | string | Email date in ISO format | | ↳ `bodyText` | string | Plain text email body | | ↳ `bodyHtml` | string | HTML email body | | ↳ `mailbox` | string | Mailbox/folder where email was received | | ↳ `hasAttachments` | boolean | Whether email has attachments | | ↳ `attachments` | file\[] | Array of email attachments as files (if includeAttachments is enabled) | | `timestamp` | string | Event timestamp | --- # incident.io (/integrations/incidentio) {/* MANUAL-CONTENT-START:intro */} Use [incident.io](https://incident.io) in Agent Serve to create and manage incidents, actions, follow-ups, workflows, schedules, escalations, and custom fields. The action reference below documents each operation and its inputs and outputs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate incident.io into the workflow. Manage incidents, actions, follow-ups, workflows, schedules, escalations, custom fields, and more. ## Actions [#actions] ### incident.io Incidents List [#incidentio-incidents-list] List incidents from incident.io. Returns a list of incidents with their details including severity, status, and timestamps. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of incidents to return per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `sort_by` | string | No | Sort order for incidents: created\_at\_newest\_first or created\_at\_oldest\_first | | `filter_mode` | string | No | How to combine filters: all or any | #### Output [#output] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------- | | `incidents` | array | List of incidents | | ↳ `id` | string | Incident ID | | ↳ `name` | string | Incident name/title | | ↳ `summary` | string | Incident summary | | ↳ `mode` | string | Incident mode (standard, retrospective, test) | | ↳ `call_url` | string | Video call URL | | ↳ `severity` | object | Incident severity | | ↳ `id` | string | Severity ID | | ↳ `name` | string | Severity name (e.g., Critical, Major, Minor) | | ↳ `description` | string | Severity description | | ↳ `rank` | number | Severity rank (lower = more severe) | | ↳ `status` | object | Current incident status | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `category` | string | Status category (triage, active, post-incident, closed) | | ↳ `incident_type` | object | Incident type | | ↳ `id` | string | Incident type ID | | ↳ `name` | string | Incident type name | | ↳ `description` | string | Incident type description | | ↳ `is_default` | boolean | Whether this is the default incident type | | ↳ `created_at` | string | When the incident was created (ISO 8601) | | ↳ `updated_at` | string | When the incident was last updated (ISO 8601) | | ↳ `permalink` | string | Permalink to the incident in incident.io | | ↳ `slack_channel_id` | string | Slack channel ID | | ↳ `slack_channel_name` | string | Slack channel name | | ↳ `visibility` | string | Incident visibility (public, private) | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of items per page | | ↳ `total_record_count` | number | Total number of records | ### incident.io Incidents Create [#incidentio-incidents-create] Create a new incident in incident.io. Requires idempotency\_key, severity\_id, and visibility. Optionally accepts name, summary, type, and status. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `idempotency_key` | string | Yes | Unique identifier to prevent duplicate incident creation. Use a UUID or unique string. | | `name` | string | No | Name of the incident (e.g., "Database connection issues") | | `summary` | string | No | Brief summary of the incident (e.g., "Intermittent connection failures to primary database") | | `severity_id` | string | Yes | ID of the severity level (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_type_id` | string | No | ID of the incident type | | `incident_status_id` | string | No | ID of the initial incident status | | `visibility` | string | Yes | Visibility of the incident: "public" or "private" (required) | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------ | --------------------------------------------- | | `incident` | object | The created incident object | | ↳ `id` | string | Incident ID | | ↳ `name` | string | Incident name | | ↳ `summary` | string | Brief summary of the incident | | ↳ `mode` | string | Incident mode (e.g., standard, retrospective) | | ↳ `call_url` | string | URL for the incident call/bridge | | ↳ `severity` | object | Severity of the incident | | ↳ `id` | string | Severity ID | | ↳ `name` | string | Severity name | | ↳ `rank` | number | Severity rank | | ↳ `status` | object | Current status of the incident | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `category` | string | Status category | | ↳ `incident_type` | object | Type of the incident | | ↳ `id` | string | Type ID | | ↳ `name` | string | Type name | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `permalink` | string | Permalink to the incident in incident.io | | ↳ `slack_channel_id` | string | Associated Slack channel ID | | ↳ `slack_channel_name` | string | Associated Slack channel name | | ↳ `visibility` | string | Incident visibility | ### incident.io Incidents Show [#incidentio-incidents-show] Retrieve detailed information about a specific incident from incident.io by its ID. Returns full incident details including custom fields and role assignments. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | ID of the incident to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------- | ------ | --------------------------------------------- | | `incident` | object | Detailed incident information | | ↳ `id` | string | Incident ID | | ↳ `name` | string | Incident name | | ↳ `summary` | string | Brief summary of the incident | | ↳ `mode` | string | Incident mode (e.g., standard, retrospective) | | ↳ `call_url` | string | URL for the incident call/bridge | | ↳ `permalink` | string | Permalink to the incident in incident.io | | ↳ `severity` | object | Severity of the incident | | ↳ `id` | string | Severity ID | | ↳ `name` | string | Severity name | | ↳ `rank` | number | Severity rank | | ↳ `status` | object | Current status of the incident | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `category` | string | Status category | | ↳ `incident_type` | object | Type of the incident | | ↳ `id` | string | Type ID | | ↳ `name` | string | Type name | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `slack_channel_id` | string | Associated Slack channel ID | | ↳ `slack_channel_name` | string | Associated Slack channel name | | ↳ `visibility` | string | Incident visibility | | ↳ `custom_field_entries` | array | Custom field values for the incident | | ↳ `incident_role_assignments` | array | Role assignments for the incident | ### incident.io Incidents Update [#incidentio-incidents-update] Update an existing incident in incident.io. Can update name, summary, severity, status, or type. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | ID of the incident to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | No | Updated name of the incident (e.g., "Database connection issues") | | `summary` | string | No | Updated summary of the incident (e.g., "Intermittent connection failures to primary database") | | `severity_id` | string | No | Updated severity ID for the incident (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_status_id` | string | No | Updated status ID for the incident (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_type_id` | string | No | Updated incident type ID | | `notify_incident_channel` | boolean | Yes | Whether to notify the incident channel about this update | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------ | --------------------------------------------- | | `incident` | object | The updated incident object | | ↳ `id` | string | Incident ID | | ↳ `name` | string | Incident name | | ↳ `summary` | string | Brief summary of the incident | | ↳ `mode` | string | Incident mode (e.g., standard, retrospective) | | ↳ `call_url` | string | URL for the incident call/bridge | | ↳ `severity` | object | Severity of the incident | | ↳ `id` | string | Severity ID | | ↳ `name` | string | Severity name | | ↳ `rank` | number | Severity rank | | ↳ `status` | object | Current status of the incident | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `category` | string | Status category | | ↳ `incident_type` | object | Type of the incident | | ↳ `id` | string | Type ID | | ↳ `name` | string | Type name | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `permalink` | string | Permalink to the incident in incident.io | | ↳ `slack_channel_id` | string | Associated Slack channel ID | | ↳ `slack_channel_name` | string | Associated Slack channel name | | ↳ `visibility` | string | Incident visibility | ### incident.io Actions List [#incidentio-actions-list] List actions from incident.io. Optionally filter by incident ID. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | No | Filter actions by incident ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_mode` | string | No | Filter actions by incident mode (standard, retrospective, test, tutorial, or stream) | #### Output [#output-4] | Parameter | Type | Description | | ---------------------------- | ------ | -------------------------------------------- | | `actions` | array | List of actions | | ↳ `id` | string | Action ID | | ↳ `description` | string | Action description | | ↳ `assignee` | object | Assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `status` | string | Action status | | ↳ `due_at` | string | Due date/time | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `incident_id` | string | Associated incident ID | | ↳ `creator` | object | User who created the action | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `completed_at` | string | Completion timestamp | | ↳ `external_issue_reference` | object | External issue tracking reference | | ↳ `provider` | string | Issue tracking provider (e.g., Jira, Linear) | | ↳ `issue_name` | string | Issue identifier | | ↳ `issue_permalink` | string | URL to the external issue | ### incident.io Actions Show [#incidentio-actions-show] Get detailed information about a specific action from incident.io. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | Action ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-5] | Parameter | Type | Description | | ---------------------------- | ------ | -------------------------------------------- | | `action` | object | Action details | | ↳ `id` | string | Action ID | | ↳ `description` | string | Action description | | ↳ `assignee` | object | Assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `status` | string | Action status | | ↳ `due_at` | string | Due date/time | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `incident_id` | string | Associated incident ID | | ↳ `creator` | object | User who created the action | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `completed_at` | string | Completion timestamp | | ↳ `external_issue_reference` | object | External issue tracking reference | | ↳ `provider` | string | Issue tracking provider (e.g., Jira, Linear) | | ↳ `issue_name` | string | Issue identifier | | ↳ `issue_permalink` | string | URL to the external issue | ### incident.io Follow-ups List [#incidentio-follow-ups-list] List follow-ups from incident.io. Optionally filter by incident ID. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | No | Filter follow-ups by incident ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_mode` | string | No | Filter follow-ups by incident mode (standard, retrospective, test, tutorial, or stream) | #### Output [#output-6] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------ | | `follow_ups` | array | List of follow-ups | | ↳ `id` | string | Follow-up ID | | ↳ `title` | string | Follow-up title | | ↳ `description` | string | Follow-up description | | ↳ `assignee` | object | Assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `status` | string | Follow-up status | | ↳ `priority` | object | Follow-up priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name | | ↳ `description` | string | Priority description | | ↳ `rank` | number | Priority rank | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `incident_id` | string | Associated incident ID | | ↳ `creator` | object | User who created the follow-up | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `completed_at` | string | Completion timestamp | | ↳ `labels` | array | Labels associated with the follow-up | | ↳ `external_issue_reference` | object | External issue tracking reference | | ↳ `provider` | string | External provider name | | ↳ `issue_name` | string | External issue name or ID | | ↳ `issue_permalink` | string | Permalink to external issue | ### incident.io Follow-ups Show [#incidentio-follow-ups-show] Get detailed information about a specific follow-up from incident.io. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | Follow-up ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-7] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------ | | `follow_up` | object | Follow-up details | | ↳ `id` | string | Follow-up ID | | ↳ `title` | string | Follow-up title | | ↳ `description` | string | Follow-up description | | ↳ `assignee` | object | Assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `status` | string | Follow-up status | | ↳ `priority` | object | Follow-up priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name | | ↳ `description` | string | Priority description | | ↳ `rank` | number | Priority rank | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `incident_id` | string | Associated incident ID | | ↳ `creator` | object | User who created the follow-up | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `completed_at` | string | Completion timestamp | | ↳ `labels` | array | Labels associated with the follow-up | | ↳ `external_issue_reference` | object | External issue tracking reference | | ↳ `provider` | string | External provider name | | ↳ `issue_name` | string | External issue name or ID | | ↳ `issue_permalink` | string | Permalink to external issue | ### Incident.io Users List [#incidentio-users-list] List all users in your Incident.io workspace. Returns user details including id, name, email, and role. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Incident.io API Key | | `page_size` | number | No | Number of results to return per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results | | `email` | string | No | Filter users by email address | | `slack_user_id` | string | No | Filter users by Slack user ID | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------ | --------------------------------- | | `users` | array | List of users in the workspace | | ↳ `id` | string | Unique identifier for the user | | ↳ `name` | string | Full name of the user | | ↳ `email` | string | Email address of the user | | ↳ `role` | string | Role of the user in the workspace | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of items per page | | ↳ `total_record_count` | number | Total number of records | ### Incident.io Users Show [#incidentio-users-show] Get detailed information about a specific user in your Incident.io workspace by their ID. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Incident.io API Key | | `id` | string | Yes | The unique identifier of the user to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `user` | object | Details of the requested user | | ↳ `id` | string | Unique identifier for the user | | ↳ `name` | string | Full name of the user | | ↳ `email` | string | Email address of the user | | ↳ `role` | string | Role of the user in the workspace | ### incident.io Workflows List [#incidentio-workflows-list] List all workflows in your incident.io workspace. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | incident.io API Key | #### Output [#output-10] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------- | | `workflows` | array | List of workflows | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `trigger` | string | Workflow trigger | | ↳ `once_for` | array | Fields that make the workflow run once | | ↳ `version` | number | Workflow version | | ↳ `expressions` | array | Workflow expressions | | ↳ `condition_groups` | array | Workflow condition groups | | ↳ `steps` | array | Workflow steps | | ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents | | ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations | | ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on | | ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error | | ↳ `runs_on_incidents` | string | Incident lifecycle filter | | ↳ `state` | string | Workflow state (active, draft, disabled) | | ↳ `delay` | object | Workflow delay configuration | | ↳ `folder` | string | Workflow folder | | ↳ `runs_from` | string | When the workflow runs from | | ↳ `shortform` | string | Workflow shortform identifier | ### incident.io Workflows Create [#incidentio-workflows-create] Create a new workflow in incident.io. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `name` | string | Yes | Name of the workflow (e.g., "Notify on Critical Incidents") | | `folder` | string | No | Folder to organize the workflow in | | `state` | string | No | State of the workflow (active, draft, or disabled) | | `trigger` | string | No | Trigger type for the workflow (e.g., "incident.updated", "incident.created") | | `steps` | string | No | Array of workflow steps as JSON string. Example: \[\{"label": "Notify team", "name": "slack.post\_message"}] | | `condition_groups` | string | No | Array of condition groups as JSON string to control when the workflow runs. Example: \[\{"conditions": \[\{"operation": "one\_of", "param\_bindings": \[], "subject": "incident.severity"}]}] | | `runs_on_incidents` | string | No | When to run the workflow: "newly\_created" (only newly created incidents) or "newly\_created\_and\_active" (newly created and already active incidents) | | `runs_on_incident_modes` | string | No | Array of incident modes to run on as JSON string. Example: \["standard", "retrospective"] | | `include_private_incidents` | boolean | No | Whether to include private incidents | | `continue_on_step_error` | boolean | No | Whether to continue executing subsequent steps if a step fails | | `once_for` | string | No | Array of fields to ensure the workflow runs only once per unique combination of these fields, as JSON string. Example: \["incident.id"] | | `expressions` | string | No | Array of workflow expressions as JSON string for advanced workflow logic. Example: \[\{"label": "My expression", "operations": \[]}] | | `delay` | string | No | Delay configuration as JSON string. Example: \{"for\_seconds": 60, "conditions\_apply\_over\_delay": false} | #### Output [#output-11] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------- | | `workflow` | object | The created workflow | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `trigger` | string | Workflow trigger | | ↳ `once_for` | array | Fields that make the workflow run once | | ↳ `version` | number | Workflow version | | ↳ `expressions` | array | Workflow expressions | | ↳ `condition_groups` | array | Workflow condition groups | | ↳ `steps` | array | Workflow steps | | ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents | | ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations | | ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on | | ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error | | ↳ `runs_on_incidents` | string | Incident lifecycle filter | | ↳ `state` | string | Workflow state (active, draft, disabled) | | ↳ `delay` | object | Workflow delay configuration | | ↳ `folder` | string | Workflow folder | | ↳ `runs_from` | string | When the workflow runs from | | ↳ `shortform` | string | Workflow shortform identifier | | `management_meta` | json | Workflow management metadata | ### incident.io Workflows Show [#incidentio-workflows-show] Get details of a specific workflow in incident.io. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the workflow to retrieve (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `skip_step_upgrades` | boolean | No | Skip workflow step upgrades when existing workflow step parameters changed | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------- | | `workflow` | object | The workflow details | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `trigger` | string | Workflow trigger | | ↳ `once_for` | array | Fields that make the workflow run once | | ↳ `version` | number | Workflow version | | ↳ `expressions` | array | Workflow expressions | | ↳ `condition_groups` | array | Workflow condition groups | | ↳ `steps` | array | Workflow steps | | ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents | | ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations | | ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on | | ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error | | ↳ `runs_on_incidents` | string | Incident lifecycle filter | | ↳ `state` | string | Workflow state (active, draft, disabled) | | ↳ `delay` | object | Workflow delay configuration | | ↳ `folder` | string | Workflow folder | | ↳ `runs_from` | string | When the workflow runs from | | ↳ `shortform` | string | Workflow shortform identifier | | `management_meta` | json | Workflow management metadata | ### incident.io Workflows Update [#incidentio-workflows-update] Update an existing workflow in incident.io. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the workflow to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | Yes | New name for the workflow (e.g., "Notify on Critical Incidents") | | `steps` | string | Yes | Complete array of workflow steps as a JSON string | | `condition_groups` | string | Yes | Complete array of workflow condition groups as a JSON string | | `runs_on_incidents` | string | Yes | When to run the workflow: newly\_created or newly\_created\_and\_active | | `runs_on_incident_modes` | string | Yes | Complete array of incident modes to run on as a JSON string | | `include_private_incidents` | boolean | Yes | Whether to include private incidents | | `continue_on_step_error` | boolean | Yes | Whether to continue executing subsequent steps if a step fails | | `once_for` | string | Yes | Complete array of fields that make the workflow run once as a JSON string | | `expressions` | string | Yes | Complete array of workflow expressions as a JSON string | | `state` | string | No | New state for the workflow (active, draft, or disabled) | | `folder` | string | No | New folder for the workflow | | `delay` | string | No | Delay configuration as a JSON string | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------- | | `workflow` | object | The updated workflow | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `trigger` | string | Workflow trigger | | ↳ `once_for` | array | Fields that make the workflow run once | | ↳ `version` | number | Workflow version | | ↳ `expressions` | array | Workflow expressions | | ↳ `condition_groups` | array | Workflow condition groups | | ↳ `steps` | array | Workflow steps | | ↳ `include_private_incidents` | boolean | Whether the workflow includes private incidents | | ↳ `include_private_escalations` | boolean | Whether the workflow includes private escalations | | ↳ `runs_on_incident_modes` | array | Incident modes the workflow runs on | | ↳ `continue_on_step_error` | boolean | Whether execution continues after a step error | | ↳ `runs_on_incidents` | string | Incident lifecycle filter | | ↳ `state` | string | Workflow state (active, draft, disabled) | | ↳ `delay` | object | Workflow delay configuration | | ↳ `folder` | string | Workflow folder | | ↳ `runs_from` | string | When the workflow runs from | | ↳ `shortform` | string | Workflow shortform identifier | | `management_meta` | json | Workflow management metadata | ### incident.io Workflows Delete [#incidentio-workflows-delete] Delete a workflow in incident.io. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the workflow to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### List Schedules [#list-schedules] List all schedules in incident.io #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------------- | | `schedules` | array | List of schedules | | ↳ `id` | string | The schedule ID | | ↳ `name` | string | The schedule name | | ↳ `timezone` | string | The schedule timezone | | ↳ `created_at` | string | When the schedule was created | | ↳ `updated_at` | string | When the schedule was last updated | | ↳ `current_shifts` | array | Shifts that are ongoing right now, naming who is on call | | ↳ `start_at` | string | When the shift starts | | ↳ `end_at` | string | When the shift ends | | ↳ `entry_id` | string | Schedule entry ID | | ↳ `rotation_id` | string | Rotation ID | | ↳ `layer_id` | string | Layer ID | | ↳ `user` | object | The on-call user | | ↳ `next_shifts` | array | Shifts that take over at the next changeover. Only returned when the page size is 25 or lower | | ↳ `start_at` | string | When the shift starts | | ↳ `end_at` | string | When the shift ends | | ↳ `entry_id` | string | Schedule entry ID | | ↳ `rotation_id` | string | Rotation ID | | ↳ `layer_id` | string | Layer ID | | ↳ `user` | object | The on-call user | | ↳ `permalink` | string | Link to the schedule in the incident.io dashboard | | ↳ `team_ids` | array | IDs of teams that own this schedule | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Create Schedule [#create-schedule] Create a new schedule in incident.io #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `name` | string | Yes | Name of the schedule (e.g., "Primary On-Call") | | `timezone` | string | Yes | Timezone for the schedule (e.g., America/New\_York) | | `config` | string | Yes | Schedule configuration as JSON string with rotations. Example: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user\_id"}], "handover\_start\_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval\_type": "weekly"}]}]} | #### Output [#output-16] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------- | | `schedule` | object | The created schedule | | ↳ `id` | string | The schedule ID | | ↳ `name` | string | The schedule name | | ↳ `timezone` | string | The schedule timezone | | ↳ `created_at` | string | When the schedule was created | | ↳ `updated_at` | string | When the schedule was last updated | ### Show Schedule [#show-schedule] Get details of a specific schedule in incident.io #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the schedule (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------------- | | `schedule` | object | The schedule details | | ↳ `id` | string | The schedule ID | | ↳ `name` | string | The schedule name | | ↳ `timezone` | string | The schedule timezone | | ↳ `created_at` | string | When the schedule was created | | ↳ `updated_at` | string | When the schedule was last updated | | ↳ `current_shifts` | array | Shifts that are ongoing right now, naming who is on call | | ↳ `start_at` | string | When the shift starts | | ↳ `end_at` | string | When the shift ends | | ↳ `entry_id` | string | Schedule entry ID | | ↳ `rotation_id` | string | Rotation ID | | ↳ `layer_id` | string | Layer ID | | ↳ `user` | object | The on-call user | | ↳ `next_shifts` | array | Shifts that take over at the next changeover. Only returned when the page size is 25 or lower | | ↳ `start_at` | string | When the shift starts | | ↳ `end_at` | string | When the shift ends | | ↳ `entry_id` | string | Schedule entry ID | | ↳ `rotation_id` | string | Rotation ID | | ↳ `layer_id` | string | Layer ID | | ↳ `user` | object | The on-call user | | ↳ `permalink` | string | Link to the schedule in the incident.io dashboard | | ↳ `team_ids` | array | IDs of teams that own this schedule | ### Update Schedule [#update-schedule] Update an existing schedule in incident.io #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the schedule to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | No | New name for the schedule (e.g., "Primary On-Call") | | `timezone` | string | No | New timezone for the schedule (e.g., America/New\_York) | | `config` | string | No | Schedule configuration as JSON string with rotations. Example: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user\_id"}], "handover\_start\_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval\_type": "weekly"}]}]} | #### Output [#output-18] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------- | | `schedule` | object | The updated schedule | | ↳ `id` | string | The schedule ID | | ↳ `name` | string | The schedule name | | ↳ `timezone` | string | The schedule timezone | | ↳ `created_at` | string | When the schedule was created | | ↳ `updated_at` | string | When the schedule was last updated | ### Delete Schedule [#delete-schedule] Delete a schedule in incident.io #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the schedule to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### List Escalations [#list-escalations] List all escalation policies in incident.io #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of escalations to return per page | | `after` | string | No | Pagination cursor to fetch the next page of results | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------- | | `escalations` | array | List of escalations | | ↳ `id` | string | The escalation ID | | ↳ `title` | string | The escalation title | | ↳ `status` | string | The current escalation status | | ↳ `description` | string | Additional detail provided with this escalation | | ↳ `priority` | object | The escalation priority | | ↳ `name` | string | Priority name | | ↳ `created_at` | string | When the escalation was created | | ↳ `updated_at` | string | When the escalation was last updated | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Create Escalation [#create-escalation] Create a new escalation policy in incident.io #### Input [#input-21] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `idempotency_key` | string | Yes | Unique identifier to prevent duplicate escalation creation. Use a UUID or unique string. | | `title` | string | Yes | Title of the escalation (e.g., "Database Critical Alert") | | `escalation_path_id` | string | No | ID of the escalation path to use (required if user\_ids not provided) | | `user_ids` | string | No | Comma-separated list of user IDs to notify (required if escalation\_path\_id not provided) | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------- | | `escalation` | object | The created escalation | | ↳ `id` | string | The escalation ID | | ↳ `title` | string | The escalation title | | ↳ `status` | string | The current escalation status | | ↳ `description` | string | Additional detail provided with this escalation | | ↳ `priority` | object | The escalation priority | | ↳ `name` | string | Priority name | | ↳ `created_at` | string | When the escalation was created | | ↳ `updated_at` | string | When the escalation was last updated | ### Show Escalation [#show-escalation] Get details of a specific escalation policy in incident.io #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the escalation policy (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------- | | `escalation` | object | The escalation details | | ↳ `id` | string | The escalation ID | | ↳ `title` | string | The escalation title | | ↳ `status` | string | The current escalation status | | ↳ `description` | string | Additional detail provided with this escalation | | ↳ `priority` | object | The escalation priority | | ↳ `name` | string | Priority name | | ↳ `created_at` | string | When the escalation was created | | ↳ `updated_at` | string | When the escalation was last updated | ### incident.io Custom Fields List [#incidentio-custom-fields-list] List all custom fields from incident.io. #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | incident.io API Key | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `custom_fields` | array | List of custom fields | | ↳ `id` | string | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `description` | string | Custom field description | | ↳ `field_type` | string | Custom field type | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | ### incident.io Custom Fields Create [#incidentio-custom-fields-create] Create a new custom field in incident.io. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `name` | string | Yes | Name of the custom field (e.g., "Affected Service") | | `description` | string | Yes | Description of the custom field (required) | | `field_type` | string | Yes | Type of the custom field: text, link, numeric, single\_select, or multi\_select | #### Output [#output-24] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `custom_field` | object | Created custom field | | ↳ `id` | string | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `description` | string | Custom field description | | ↳ `field_type` | string | Custom field type | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | ### incident.io Custom Fields Show [#incidentio-custom-fields-show] Get detailed information about a specific custom field from incident.io. #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `custom_field` | object | Custom field details | | ↳ `id` | string | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `description` | string | Custom field description | | ↳ `field_type` | string | Custom field type | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | ### incident.io Custom Fields Update [#incidentio-custom-fields-update] Update an existing custom field in incident.io. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | Yes | New name for the custom field (e.g., "Affected Service") | | `description` | string | Yes | New description for the custom field (required) | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `custom_field` | object | Updated custom field | | ↳ `id` | string | Custom field ID | | ↳ `name` | string | Custom field name | | ↳ `description` | string | Custom field description | | ↳ `field_type` | string | Custom field type | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | ### incident.io Custom Fields Delete [#incidentio-custom-fields-delete] Delete a custom field from incident.io. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | Custom field ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### Incident.io Severities List [#incidentio-severities-list] List all severity levels configured in your Incident.io workspace. Returns severity details including id, name, description, and rank. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | Incident.io API Key | #### Output [#output-28] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------- | | `severities` | array | List of severity levels | | ↳ `id` | string | Unique identifier for the severity level | | ↳ `name` | string | Name of the severity level | | ↳ `description` | string | Description of the severity level | | ↳ `rank` | number | Rank/order of the severity level | ### Incident.io Incident Statuses List [#incidentio-incident-statuses-list] List all incident statuses configured in your Incident.io workspace. Returns status details including id, name, description, and category. #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | Incident.io API Key | #### Output [#output-29] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------- | | `incident_statuses` | array | List of incident statuses | | ↳ `id` | string | Unique identifier for the incident status | | ↳ `name` | string | Name of the incident status | | ↳ `description` | string | Description of the incident status | | ↳ `category` | string | Category of the incident status | ### Incident.io Incident Types List [#incidentio-incident-types-list] List all incident types configured in your Incident.io workspace. Returns type details including id, name, description, and default flag. #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | Incident.io API Key | #### Output [#output-30] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------- | | `incident_types` | array | List of incident types | | ↳ `id` | string | Unique identifier for the incident type | | ↳ `name` | string | Name of the incident type | | ↳ `description` | string | Description of the incident type | | ↳ `is_default` | boolean | Whether this is the default incident type | ### List Incident Roles [#list-incident-roles] List all incident roles in incident.io #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | incident.io API Key | #### Output [#output-31] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `incident_roles` | array | List of incident roles | | ↳ `id` | string | The incident role ID | | ↳ `name` | string | The incident role name | | ↳ `description` | string | The incident role description | | ↳ `instructions` | string | Instructions for the role | | ↳ `shortform` | string | Short form abbreviation of the role | | ↳ `role_type` | string | The type of role | | ↳ `required` | boolean | Whether the role is required | | ↳ `created_at` | string | When the role was created | | ↳ `updated_at` | string | When the role was last updated | ### Create Incident Role [#create-incident-role] Create a new incident role in incident.io #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `name` | string | Yes | Name of the incident role (e.g., "Incident Commander") | | `description` | string | Yes | Description of the incident role | | `instructions` | string | Yes | Instructions for the incident role | | `shortform` | string | Yes | Short form abbreviation for the role | #### Output [#output-32] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `incident_role` | object | The created incident role | | ↳ `id` | string | The incident role ID | | ↳ `name` | string | The incident role name | | ↳ `description` | string | The incident role description | | ↳ `instructions` | string | Instructions for the role | | ↳ `shortform` | string | Short form abbreviation of the role | | ↳ `role_type` | string | The type of role | | ↳ `required` | boolean | Whether the role is required | | ↳ `created_at` | string | When the role was created | | ↳ `updated_at` | string | When the role was last updated | ### Show Incident Role [#show-incident-role] Get details of a specific incident role in incident.io #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the incident role (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-33] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `incident_role` | object | The incident role details | | ↳ `id` | string | The incident role ID | | ↳ `name` | string | The incident role name | | ↳ `description` | string | The incident role description | | ↳ `instructions` | string | Instructions for the role | | ↳ `shortform` | string | Short form abbreviation of the role | | ↳ `role_type` | string | The type of role | | ↳ `required` | boolean | Whether the role is required | | ↳ `created_at` | string | When the role was created | | ↳ `updated_at` | string | When the role was last updated | ### Update Incident Role [#update-incident-role] Update an existing incident role in incident.io #### Input [#input-34] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the incident role to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | Yes | Name of the incident role (e.g., "Incident Commander") | | `description` | string | Yes | Description of the incident role | | `instructions` | string | Yes | Instructions for the incident role | | `shortform` | string | Yes | Short form abbreviation for the role | #### Output [#output-34] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `incident_role` | object | The updated incident role | | ↳ `id` | string | The incident role ID | | ↳ `name` | string | The incident role name | | ↳ `description` | string | The incident role description | | ↳ `instructions` | string | Instructions for the role | | ↳ `shortform` | string | Short form abbreviation of the role | | ↳ `role_type` | string | The type of role | | ↳ `required` | boolean | Whether the role is required | | ↳ `created_at` | string | When the role was created | | ↳ `updated_at` | string | When the role was last updated | ### Delete Incident Role [#delete-incident-role] Delete an incident role in incident.io #### Input [#input-35] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the incident role to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-35] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### List Incident Timestamps [#list-incident-timestamps] List all incident timestamp definitions in incident.io #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | incident.io API Key | #### Output [#output-36] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------- | | `incident_timestamps` | array | List of incident timestamp definitions | | ↳ `id` | string | The timestamp ID | | ↳ `name` | string | The timestamp name | | ↳ `rank` | number | The rank/order of the timestamp | | ↳ `created_at` | string | When the timestamp was created | | ↳ `updated_at` | string | When the timestamp was last updated | ### Show Incident Timestamp [#show-incident-timestamp] Get details of a specific incident timestamp definition in incident.io #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the incident timestamp (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-37] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------- | | `incident_timestamp` | object | The incident timestamp details | | ↳ `id` | string | The timestamp ID | | ↳ `name` | string | The timestamp name | | ↳ `rank` | number | The rank/order of the timestamp | | ↳ `created_at` | string | When the timestamp was created | | ↳ `updated_at` | string | When the timestamp was last updated | ### List Incident Updates [#list-incident-updates] List all updates for a specific incident in incident.io #### Input [#input-38] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | No | The ID of the incident to get updates for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0"). If not provided, returns all updates | | `page_size` | number | No | Number of results to return per page (e.g., 10, 25, 50) | | `after` | string | No | Cursor for pagination (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-38] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------------------ | | `incident_updates` | array | List of incident updates | | ↳ `id` | string | The update ID | | ↳ `incident_id` | string | The incident ID | | ↳ `message` | string | The update message | | ↳ `merged_into_incident_id` | string | ID of the incident this incident was merged into | | ↳ `new_severity` | object | New severity if changed | | ↳ `id` | string | Severity ID | | ↳ `name` | string | Severity name | | ↳ `rank` | number | Severity rank | | ↳ `new_incident_status` | object | The incident status after this update | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `category` | string | Status category | | ↳ `updater` | object | Actor who created the update | | ↳ `user` | object | Set when a user made the update | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `api_key` | object | Set when an API key made the update | | ↳ `id` | string | API key ID | | ↳ `name` | string | API key name | | ↳ `workflow` | object | Set when a workflow made the update | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `alert` | object | Set when an alert made the update | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `created_at` | string | When the update was created | | `pagination_meta` | object | Pagination information | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### List Schedule Entries [#list-schedule-entries] List all entries for a specific schedule in incident.io #### Input [#input-39] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `schedule_id` | string | Yes | The ID of the schedule to get entries for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `entry_window_start` | string | No | Start date/time to filter entries in ISO 8601 format (e.g., "2024-01-15T09:00:00Z") | | `entry_window_end` | string | No | End date/time to filter entries in ISO 8601 format (e.g., "2024-01-22T09:00:00Z") | #### Output [#output-39] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------- | | `schedule_entries` | object | Schedule entries grouped by final, overrides, and scheduled entries | | ↳ `final` | array | Final computed schedule entries | | ↳ `overrides` | array | Override schedule entries | | ↳ `scheduled` | array | Scheduled entries before overrides are applied | | `pagination_meta` | object | Pagination information | | ↳ `after` | string | Cursor for next page | | ↳ `after_url` | string | URL for next page | ### Create Schedule Override [#create-schedule-override] Create a new schedule override in incident.io #### Input [#input-40] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `rotation_id` | string | Yes | The ID of the rotation to override (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `layer_id` | string | Yes | The ID of the layer this override applies to | | `schedule_id` | string | Yes | The ID of the schedule (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `user_id` | string | No | The ID of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) | | `user_email` | string | No | The email of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) | | `user_slack_id` | string | No | The Slack ID of the user to assign (provide one of: user\_id, user\_email, or user\_slack\_id) | | `start_at` | string | Yes | When the override starts in ISO 8601 format (e.g., "2024-01-15T09:00:00Z") | | `end_at` | string | Yes | When the override ends in ISO 8601 format (e.g., "2024-01-22T09:00:00Z") | #### Output [#output-40] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `override` | object | The created schedule override | | ↳ `id` | string | The override ID | | ↳ `layer_id` | string | The schedule layer ID | | ↳ `rotation_id` | string | The rotation ID | | ↳ `schedule_id` | string | The schedule ID | | ↳ `user` | object | User assigned to this override | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `start_at` | string | When the override starts | | ↳ `end_at` | string | When the override ends | | ↳ `created_at` | string | When the override was created | | ↳ `updated_at` | string | When the override was last updated | ### List Escalation Paths [#list-escalation-paths] List escalation paths in incident.io #### Input [#input-41] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of escalation paths to return per page | | `after` | string | No | Pagination cursor to fetch the next page of results | #### Output [#output-41] | Parameter | Type | Description | | ------------------ | ------ | --------------------------- | | `escalation_paths` | array | List of escalation paths | | ↳ `id` | string | The escalation path ID | | ↳ `name` | string | The escalation path name | | ↳ `path` | array | Array of escalation levels | | ↳ `working_hours` | array | Working hours configuration | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Create Escalation Path [#create-escalation-path] Create a new escalation path in incident.io #### Input [#input-42] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `name` | string | Yes | Name of the escalation path (e.g., "Critical Incident Path") | | `path` | json | Yes | Array of escalation levels with targets and time to acknowledge in seconds. Each level should have: targets (array of \{id, type, schedule\_id?, user\_id?, urgency}) and time\_to\_ack\_seconds (number) | | `working_hours` | json | No | Optional working hours configuration. Array of \{weekday, start\_time, end\_time} | #### Output [#output-42] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------- | | `escalation_path` | object | The created escalation path | | ↳ `id` | string | The escalation path ID | | ↳ `name` | string | The escalation path name | | ↳ `path` | array | Array of escalation levels | | ↳ `targets` | array | Targets for this level | | ↳ `id` | string | Target ID | | ↳ `type` | string | Target type | | ↳ `schedule_id` | string | Schedule ID if type is schedule | | ↳ `user_id` | string | User ID if type is user | | ↳ `urgency` | string | Urgency level | | ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | | ↳ `working_hours` | array | Working hours configuration | | ↳ `weekday` | string | Day of week | | ↳ `start_time` | string | Start time | | ↳ `end_time` | string | End time | ### Show Escalation Path [#show-escalation-path] Get details of a specific escalation path in incident.io #### Input [#input-43] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the escalation path (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-43] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------- | | `escalation_path` | object | The escalation path details | | ↳ `id` | string | The escalation path ID | | ↳ `name` | string | The escalation path name | | ↳ `path` | array | Array of escalation levels | | ↳ `targets` | array | Targets for this level | | ↳ `id` | string | Target ID | | ↳ `type` | string | Target type | | ↳ `schedule_id` | string | Schedule ID if type is schedule | | ↳ `user_id` | string | User ID if type is user | | ↳ `urgency` | string | Urgency level | | ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | | ↳ `working_hours` | array | Working hours configuration | | ↳ `weekday` | string | Day of week | | ↳ `start_time` | string | Start time | | ↳ `end_time` | string | End time | ### Update Escalation Path [#update-escalation-path] Update an existing escalation path in incident.io #### Input [#input-44] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the escalation path to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `name` | string | Yes | New name for the escalation path (e.g., "Critical Incident Path") | | `path` | json | Yes | New escalation path configuration. Array of escalation levels with targets and time\_to\_ack\_seconds | | `working_hours` | json | No | New working hours configuration. Array of \{weekday, start\_time, end\_time} | #### Output [#output-44] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------- | | `escalation_path` | object | The updated escalation path | | ↳ `id` | string | The escalation path ID | | ↳ `name` | string | The escalation path name | | ↳ `path` | array | Array of escalation levels | | ↳ `targets` | array | Targets for this level | | ↳ `id` | string | Target ID | | ↳ `type` | string | Target type | | ↳ `schedule_id` | string | Schedule ID if type is schedule | | ↳ `user_id` | string | User ID if type is user | | ↳ `urgency` | string | Urgency level | | ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | | ↳ `working_hours` | array | Working hours configuration | | ↳ `weekday` | string | Day of week | | ↳ `start_time` | string | Start time | | ↳ `end_time` | string | End time | ### Delete Escalation Path [#delete-escalation-path] Delete an escalation path in incident.io #### Input [#input-45] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the escalation path to delete (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-45] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### Get Who Is On Call [#get-who-is-on-call] Get who is currently on call in incident.io, as one row per ongoing shift across every schedule (or a single schedule). Also returns the shifts that take over at the next changeover. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `schedule_id` | string | No | Limit the result to a single schedule by ID (e.g., "01FCNDV6P870EA6S7TK1DSYDG0"). Leave empty to return who is on call across every schedule. | | `page_size` | number | No | Number of schedules to scan per page when no schedule ID is given (e.g., 10, 25). Defaults to 25; upcoming shifts are only returned at 25 or lower. | | `after` | string | No | Pagination cursor to fetch the next page of schedules (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-46] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------- | | `on_call` | array | Shifts that are ongoing right now, one row per on-call person per schedule | | `next_on_call` | array | Shifts that take over at the next changeover. Only populated when the page size is 25 or lower | | `pagination_meta` | object | Pagination metadata, returned when scanning every schedule | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | | ↳ `total_record_count` | number | Total number of schedules | ### List Schedule Overrides [#list-schedule-overrides] List the one-off overrides layered on top of a schedule in incident.io, such as someone covering a colleague’s shift #### Input [#input-47] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `schedule_id` | string | Yes | The ID of the schedule to get overrides for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `rotation_id` | string | No | Only return overrides on this rotation | | `layer_id` | string | No | Only return overrides on this layer | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50) | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-47] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `overrides` | array | List of schedule overrides | | ↳ `id` | string | Override ID | | ↳ `schedule_id` | string | Schedule the override applies to | | ↳ `rotation_id` | string | Rotation the override applies to | | ↳ `layer_id` | string | Layer the override applies to | | ↳ `start_at` | string | Start of the override | | ↳ `end_at` | string | End of the override | | ↳ `created_at` | string | When the override was created | | ↳ `updated_at` | string | When the override was last updated | | ↳ `user` | object | The user covering the override | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### List Alerts [#list-alerts] List alerts in incident.io, optionally filtered by status, source, or created date #### Input [#input-48] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `status` | string | No | Filter by alert status: "firing" or "resolved" | | `status_operator` | string | No | How to apply the status filter: "one\_of" to match it, "not\_in" to exclude it. Default: one\_of | | `alert_source_id` | string | No | Filter by alert source ID (e.g., "01GBSQF3FHF7FWZQNWGHAVQ804") | | `alert_source_operator` | string | No | How to apply the alert source filter: "one\_of" to match it, "not\_in" to exclude it. Default: one\_of | | `deduplication_key` | string | No | Filter to the single alert with this deduplication key | | `created_at_gte` | string | No | Only return alerts created on or after this date (e.g., "2025-01-01") | | `created_at_lte` | string | No | Only return alerts created on or before this date (e.g., "2025-02-01") | | `has_notes` | boolean | No | Filter to alerts that do (true) or do not (false) have notes attached | | `include_maintenance_window` | boolean | No | Whether to include alerts held by a maintenance window. Defaults to true on the API | #### Output [#output-48] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------- | | `alerts` | array | List of alerts | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title, parsed from the alert payload | | ↳ `status` | string | Alert status (firing, resolved) | | ↳ `alert_source_id` | string | ID of the alert source this alert fired on | | ↳ `deduplication_key` | string | Key that uniquely references this alert from its source | | ↳ `description` | string | Alert description | | ↳ `source_url` | string | Link to the alert in the upstream system | | ↳ `resolved_at` | string | When this alert was resolved | | ↳ `created_at` | string | When this alert was created | | ↳ `updated_at` | string | When this alert was last updated | | ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to | | ↳ `attributes` | array | Attribute values parsed from the alert payload | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Show Alert [#show-alert] Get a single alert by ID from incident.io #### Input [#input-49] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the alert to fetch (e.g., "01GW2G3V0S59R238FAHPDS1R66") | #### Output [#output-49] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------- | | `alert` | object | The alert details | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title, parsed from the alert payload | | ↳ `status` | string | Alert status (firing, resolved) | | ↳ `alert_source_id` | string | ID of the alert source this alert fired on | | ↳ `deduplication_key` | string | Key that uniquely references this alert from its source | | ↳ `description` | string | Alert description | | ↳ `source_url` | string | Link to the alert in the upstream system | | ↳ `resolved_at` | string | When this alert was resolved | | ↳ `created_at` | string | When this alert was created | | ↳ `updated_at` | string | When this alert was last updated | | ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to | | ↳ `attributes` | array | Attribute values parsed from the alert payload | ### Resolve Alert [#resolve-alert] Resolve a currently firing alert in incident.io. Resolving an already-resolved alert is a no-op and returns it unchanged. #### Input [#input-50] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the alert to resolve (e.g., "01GW2G3V0S59R238FAHPDS1R66") | #### Output [#output-50] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------- | | `alert` | object | The resolved alert | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title, parsed from the alert payload | | ↳ `status` | string | Alert status (firing, resolved) | | ↳ `alert_source_id` | string | ID of the alert source this alert fired on | | ↳ `deduplication_key` | string | Key that uniquely references this alert from its source | | ↳ `description` | string | Alert description | | ↳ `source_url` | string | Link to the alert in the upstream system | | ↳ `resolved_at` | string | When this alert was resolved | | ↳ `created_at` | string | When this alert was created | | ↳ `updated_at` | string | When this alert was last updated | | ↳ `alert_group_ids` | array | IDs of every alert group this alert belongs to | | ↳ `attributes` | array | Attribute values parsed from the alert payload | ### Create Alert Event [#create-alert-event] Fire an alert into incident.io through an HTTP alert source. Send the same deduplication key with status "resolved" to close the alert you opened. #### Input [#input-51] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `alert_source_config_id` | string | Yes | The ID of the HTTP alert source config to fire into (e.g., "01GW2G3V0S59R238FAHPDS1R66") | | `alert_source_token` | string | Yes | The token generated when configuring the HTTP alert source. This is not the incident.io API key. | | `title` | string | Yes | Title of the alert (e.g., "Payments service error rate above 5%") | | `status` | string | Yes | Current status of the alert: "firing" or "resolved" | | `description` | string | No | Detail to add below the title. Supports Markdown. | | `deduplication_key` | string | No | Key that uniquely identifies this alert. Reuse it to update or resolve the same alert instead of creating a new one. | | `source_url` | string | No | Link back to the alert in the upstream system | | `metadata` | string | No | Additional metadata as a JSON object, parsed according to the alert source config (e.g., \{"service": "payments"}) | #### Output [#output-51] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------- | | `deduplication_key` | string | The deduplication key the event was processed with | | `message` | string | Human readable message giving detail about the event | | `status` | string | Status of the event | ### List Incident Alerts [#list-incident-alerts] List the connections between incidents and alerts in incident.io — which alerts triggered an incident, or which incident an alert was attached to #### Input [#input-52] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `incident_id` | string | No | Only return alerts attached to this incident (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") | | `alert_id` | string | No | Only return connections for this alert (e.g., "01GW2G3V0S59R238FAHPDS1R66") | #### Output [#output-52] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------- | | `incident_alerts` | array | List of incident-to-alert connections | | ↳ `id` | string | ID of this incident alert connection | | ↳ `alert_route_id` | string | ID of the alert route that created this connection | | ↳ `alert` | object | The connected alert | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `status` | string | Alert status (firing, resolved) | | ↳ `alert_source_id` | string | ID of the alert source this alert fired on | | ↳ `deduplication_key` | string | Key that uniquely references this alert from its source | | ↳ `description` | string | Alert description | | ↳ `source_url` | string | Link to the alert in the upstream system | | ↳ `resolved_at` | string | When this alert was resolved | | ↳ `created_at` | string | When this alert was created | | ↳ `updated_at` | string | When this alert was last updated | | ↳ `incident` | object | The incident the alert is attached to | | ↳ `id` | string | Incident ID | | ↳ `name` | string | Incident name | | ↳ `reference` | string | Incident reference (e.g., INC-123) | | ↳ `external_id` | number | External incident identifier | | ↳ `status_category` | string | Category of the incident status | | ↳ `visibility` | string | Incident visibility (public, private) | | ↳ `summary` | string | Incident summary | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Cancel Escalation [#cancel-escalation] Cancel an escalation in incident.io. Notifications stop, and the escalation will not advance to further levels or repeat. #### Input [#input-53] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the escalation to cancel (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-53] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### List Catalog Types [#list-catalog-types] List all catalog types in incident.io, including those synced from external resources. Use this to find the catalog type ID needed to list entries. #### Input [#input-54] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | incident.io API Key | #### Output [#output-54] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------ | | `catalog_types` | array | List of catalog types | | ↳ `id` | string | Catalog type ID | | ↳ `name` | string | Human readable name of this type | | ↳ `description` | string | Human readable description of this type | | ↳ `type_name` | string | Type name used when defining attributes (e.g., Custom\["Service"]) | | ↳ `engine_resource_type` | string | How this resource type is referenced in the incident.io engine | | ↳ `categories` | array | Categories this type is considered part of | | ↳ `color` | string | Display color of this type in the dashboard | | ↳ `icon` | string | Display icon of this type in the dashboard | | ↳ `ranked` | boolean | Whether entries of this type are ranked | | ↳ `is_editable` | boolean | Whether this type can be edited (types synced externally cannot) | | ↳ `use_name_as_identifier` | boolean | Whether entries can be referenced by name as well as external ID | | ↳ `estimated_count` | number | Estimated number of entries for this type | | ↳ `is_team_type` | boolean | Whether this is the designated team type in team settings | | ↳ `registry_type` | string | The registry resource this type is synced from, if any | | ↳ `last_synced_at` | string | When this type was last synced | | ↳ `owning_team_ids` | array | IDs of the teams that own this catalog type | | ↳ `schema` | object | Attribute schema for this catalog type | | ↳ `version` | number | Version number of this schema | | ↳ `attributes` | array | Attributes of this catalog type | | ↳ `annotations` | json | Metadata annotations tracked about this type | | ↳ `created_at` | string | When this type was created | | ↳ `updated_at` | string | When this type was last updated | ### List Catalog Entries [#list-catalog-entries] List the entries of a catalog type in incident.io — for example every service, team, or customer recorded in the catalog #### Input [#input-55] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `catalog_type_id` | string | Yes | The ID of the catalog type to list entries for (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50). Default: 25 | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `identifier` | string | No | Only return entries matching this identifier. Searches by ID, external ID, and alias. | #### Output [#output-55] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------ | | `catalog_entries` | array | List of catalog entries | | ↳ `id` | string | Catalog entry ID | | ↳ `name` | string | Human readable name of this entry | | ↳ `catalog_type_id` | string | ID of the catalog type | | ↳ `external_id` | string | Alternative ID for this entry, unique within the type | | ↳ `aliases` | array | Alternative names this entry can be referenced by | | ↳ `rank` | number | Ordering rank, used when the type is ranked | | ↳ `attribute_values` | json | Attribute values of this entry | | ↳ `archived_at` | string | When this entry was archived | | ↳ `created_at` | string | When this entry was created | | ↳ `updated_at` | string | When this entry was last updated | | `catalog_type` | object | The catalog type these entries belong to | | ↳ `id` | string | Catalog type ID | | ↳ `name` | string | Human readable name of this type | | ↳ `description` | string | Human readable description of this type | | ↳ `type_name` | string | Type name used when defining attributes (e.g., Custom\["Service"]) | | ↳ `engine_resource_type` | string | How this resource type is referenced in the incident.io engine | | ↳ `categories` | array | Categories this type is considered part of | | ↳ `color` | string | Display color of this type in the dashboard | | ↳ `icon` | string | Display icon of this type in the dashboard | | ↳ `ranked` | boolean | Whether entries of this type are ranked | | ↳ `is_editable` | boolean | Whether this type can be edited (types synced externally cannot) | | ↳ `use_name_as_identifier` | boolean | Whether entries can be referenced by name as well as external ID | | ↳ `estimated_count` | number | Estimated number of entries for this type | | ↳ `is_team_type` | boolean | Whether this is the designated team type in team settings | | ↳ `registry_type` | string | The registry resource this type is synced from, if any | | ↳ `last_synced_at` | string | When this type was last synced | | ↳ `owning_team_ids` | array | IDs of the teams that own this catalog type | | ↳ `schema` | object | Attribute schema for this catalog type | | ↳ `version` | number | Version number of this schema | | ↳ `attributes` | array | Attributes of this catalog type | | ↳ `annotations` | json | Metadata annotations tracked about this type | | ↳ `created_at` | string | When this type was created | | ↳ `updated_at` | string | When this type was last updated | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | | ↳ `total_record_count` | number | Total number of entries | ### List Teams [#list-teams] List all teams in the incident.io organisation, along with their members #### Input [#input-56] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `page_size` | number | No | Number of results per page (e.g., 10, 25, 50) | | `after` | string | No | Pagination cursor to fetch the next page of results (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-56] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------------- | | `teams` | array | List of teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `members` | array | Members of the team | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `catalog_entry` | object | The catalog entry backing this team | | ↳ `id` | string | Catalog entry ID | | ↳ `name` | string | Catalog entry name | | ↳ `external_id` | string | Alternative ID for this entry, unique within the type | | `pagination_meta` | object | Pagination metadata | | ↳ `after` | string | Cursor for next page | | ↳ `page_size` | number | Number of results per page | ### Show Team [#show-team] Get a single team by ID from incident.io, along with its members #### Input [#input-57] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the team to fetch (e.g., "01JPQA75EPNEES4479P16P4XAB") | #### Output [#output-57] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------------- | | `team` | object | The team details | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `members` | array | Members of the team | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `catalog_entry` | object | The catalog entry backing this team | | ↳ `id` | string | Catalog entry ID | | ↳ `name` | string | Catalog entry name | | ↳ `external_id` | string | Alternative ID for this entry, unique within the type | ### Create Follow-up [#create-follow-up] Create a new follow-up on an incident in incident.io #### Input [#input-58] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | Yes | The ID of the incident the follow-up belongs to (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") | | `title` | string | Yes | Title of the follow-up (e.g., "Add alerting on connection pool saturation") | | `description` | string | No | Description of the follow-up. Supports Markdown. | | `assignee_id` | string | No | ID of the user to assign this follow-up to | | `assignee_team_id` | string | No | ID of the team to assign this follow-up to | | `follow_up_category_id` | string | No | ID of the category for this follow-up | | `follow_up_priority_option_id` | string | No | ID of the priority for this follow-up | | `external_issue_reference_id` | string | No | ID of the external issue this follow-up relates to | | `labels` | string | No | Comma-separated list of labels (e.g., "bug,urgent") | #### Output [#output-58] | Parameter | Type | Description | | ---------------------------- | ------ | -------------------------------------------------------------- | | `follow_up` | object | The created follow-up | | ↳ `id` | string | Follow-up ID | | ↳ `incident_id` | string | ID of the incident the follow-up belongs to | | ↳ `title` | string | Follow-up title | | ↳ `status` | string | Follow-up status (outstanding, completed, deleted, not\_doing) | | ↳ `description` | string | Follow-up description | | ↳ `labels` | array | Labels associated with this follow-up | | ↳ `assignee` | object | The assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `assignee_team` | object | The team the follow-up is assigned to | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `priority` | object | Follow-up priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name | | ↳ `rank` | number | Priority rank | | ↳ `description` | string | Priority description | | ↳ `external_issue_reference` | object | The external issue this was exported to | | ↳ `provider` | string | Issue tracker provider | | ↳ `issue_name` | string | Human readable issue ID | | ↳ `issue_permalink` | string | Link to the issue in the tracker | | ↳ `creator` | object | Who created the follow-up | | ↳ `user` | object | The user who caused this, if a person did | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `api_key` | object | The API key that caused this, if an integration did | | ↳ `id` | string | API key ID | | ↳ `name` | string | API key name | | ↳ `workflow` | object | The incident.io workflow that caused this, if automation did | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `alert` | object | The alert that caused this, if an alert did | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `completed_at` | string | When the follow-up was completed | | ↳ `created_at` | string | When the follow-up was created | | ↳ `updated_at` | string | When the follow-up was last updated | ### Update Follow-up [#update-follow-up] Update an existing follow-up in incident.io, for example to mark it completed or reassign it #### Input [#input-59] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the follow-up to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `title` | string | Yes | Title of the follow-up. This endpoint replaces the title, so always send it. | | `status` | string | Yes | Status of the follow-up: "outstanding", "completed", or "not\_doing". Deleting is not supported here. | | `description` | string | No | Description of the follow-up. Supports Markdown. | | `assignee_id` | string | No | ID of the user to assign this follow-up to | | `assignee_team_id` | string | No | ID of the team to assign this follow-up to | | `follow_up_category_id` | string | No | ID of the category for this follow-up | | `follow_up_priority_option_id` | string | No | ID of the priority for this follow-up | | `labels` | string | No | Comma-separated list of labels (e.g., "bug,urgent") | #### Output [#output-59] | Parameter | Type | Description | | ---------------------------- | ------ | -------------------------------------------------------------- | | `follow_up` | object | The updated follow-up | | ↳ `id` | string | Follow-up ID | | ↳ `incident_id` | string | ID of the incident the follow-up belongs to | | ↳ `title` | string | Follow-up title | | ↳ `status` | string | Follow-up status (outstanding, completed, deleted, not\_doing) | | ↳ `description` | string | Follow-up description | | ↳ `labels` | array | Labels associated with this follow-up | | ↳ `assignee` | object | The assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `assignee_team` | object | The team the follow-up is assigned to | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `priority` | object | Follow-up priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name | | ↳ `rank` | number | Priority rank | | ↳ `description` | string | Priority description | | ↳ `external_issue_reference` | object | The external issue this was exported to | | ↳ `provider` | string | Issue tracker provider | | ↳ `issue_name` | string | Human readable issue ID | | ↳ `issue_permalink` | string | Link to the issue in the tracker | | ↳ `creator` | object | Who created the follow-up | | ↳ `user` | object | The user who caused this, if a person did | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `api_key` | object | The API key that caused this, if an integration did | | ↳ `id` | string | API key ID | | ↳ `name` | string | API key name | | ↳ `workflow` | object | The incident.io workflow that caused this, if automation did | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `alert` | object | The alert that caused this, if an alert did | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `completed_at` | string | When the follow-up was completed | | ↳ `created_at` | string | When the follow-up was created | | ↳ `updated_at` | string | When the follow-up was last updated | ### Create Action [#create-action] Create a new action on an incident in incident.io #### Input [#input-60] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | Yes | The ID of the incident the action belongs to (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") | | `description` | string | Yes | Description of the action. Supports Markdown. | | `assignee_id` | string | No | ID of the user to assign this action to | #### Output [#output-60] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------------------------------ | | `action` | object | The created action | | ↳ `id` | string | Action ID | | ↳ `incident_id` | string | ID of the incident the action belongs to | | ↳ `description` | string | Action description | | ↳ `status` | string | Action status (outstanding, completed, deleted, not\_doing) | | ↳ `assignee` | object | The assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `external_issue_reference` | object | The external issue this was exported to | | ↳ `provider` | string | Issue tracker provider | | ↳ `issue_name` | string | Human readable issue ID | | ↳ `issue_permalink` | string | Link to the issue in the tracker | | ↳ `creator` | object | Who created the action | | ↳ `user` | object | The user who caused this, if a person did | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `api_key` | object | The API key that caused this, if an integration did | | ↳ `id` | string | API key ID | | ↳ `name` | string | API key name | | ↳ `workflow` | object | The incident.io workflow that caused this, if automation did | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `alert` | object | The alert that caused this, if an alert did | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `completed_at` | string | When the action was completed | | ↳ `created_at` | string | When the action was created | | ↳ `updated_at` | string | When the action was last updated | ### Update Action [#update-action] Update an existing action in incident.io, for example to mark it completed or reassign it #### Input [#input-61] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `id` | string | Yes | The ID of the action to update (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | | `description` | string | Yes | Description of the action. This endpoint replaces the description, so always send it. | | `status` | string | Yes | Status of the action: "outstanding", "completed", or "not\_doing". Deleting is not supported here. | | `assignee_id` | string | No | ID of the user to assign this action to | #### Output [#output-61] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------------------------------------ | | `action` | object | The updated action | | ↳ `id` | string | Action ID | | ↳ `incident_id` | string | ID of the incident the action belongs to | | ↳ `description` | string | Action description | | ↳ `status` | string | Action status (outstanding, completed, deleted, not\_doing) | | ↳ `assignee` | object | The assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `external_issue_reference` | object | The external issue this was exported to | | ↳ `provider` | string | Issue tracker provider | | ↳ `issue_name` | string | Human readable issue ID | | ↳ `issue_permalink` | string | Link to the issue in the tracker | | ↳ `creator` | object | Who created the action | | ↳ `user` | object | The user who caused this, if a person did | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | | ↳ `api_key` | object | The API key that caused this, if an integration did | | ↳ `id` | string | API key ID | | ↳ `name` | string | API key name | | ↳ `workflow` | object | The incident.io workflow that caused this, if automation did | | ↳ `id` | string | Workflow ID | | ↳ `name` | string | Workflow name | | ↳ `alert` | object | The alert that caused this, if an alert did | | ↳ `id` | string | Alert ID | | ↳ `title` | string | Alert title | | ↳ `completed_at` | string | When the action was completed | | ↳ `created_at` | string | When the action was created | | ↳ `updated_at` | string | When the action was last updated | ### List Incident Participants [#list-incident-participants] List the participants of an incident in incident.io, split into those actively helping and those just observing #### Input [#input-62] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | Yes | The ID of the incident to find participants of (e.g., "01FDAG4SAP5TYPT98WGR2N7W91") | #### Output [#output-62] | Parameter | Type | Description | | --------- | ----- | ------------------------------------------------------- | | `active` | array | Participants who are actively helping with the incident | | `passive` | array | Participants who are just observing the incident | ### Grant Incident Membership [#grant-incident-membership] Make a user a member of a private incident in incident.io #### Input [#input-63] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | Yes | The ID of the private incident (e.g., "01FCNDV6P870EA6S7TK1DSYD5H") | | `user_id` | string | Yes | The ID of the user to grant access to (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-63] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------ | | `incident_membership` | object | The created incident membership | | ↳ `id` | string | Incident membership ID | | ↳ `incident_id` | string | ID of the incident | | ↳ `created_at` | string | When the membership was created | | ↳ `updated_at` | string | When the membership was last updated | | ↳ `user` | object | The user who was granted access | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `email` | string | User email address | | ↳ `role` | string | User role | | ↳ `slack_user_id` | string | Slack user ID | ### Revoke Incident Membership [#revoke-incident-membership] Revoke a user's membership of a private incident in incident.io #### Input [#input-64] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | incident.io API Key | | `incident_id` | string | Yes | The ID of the private incident (e.g., "01FCNDV6P870EA6S7TK1DSYD5H") | | `user_id` | string | Yes | The ID of the user to revoke access from (e.g., "01FCNDV6P870EA6S7TK1DSYDG0") | #### Output [#output-64] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### incident.io Alert Created [#incidentio-alert-created] Trigger workflow when an alert is created in incident.io #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. | #### Output [#output-65] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. | | `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). | | `alert` | json | The full alert object from the webhook payload. | | `alert_id` | string | Unique alert ID. | | `title` | string | Alert title. | | `description` | string | Alert description, when set. | | `status` | string | Alert status (e.g., firing, resolved). | | `alert_source_id` | string | ID of the alert source that raised the alert. | | `deduplication_key` | string | Deduplication key for the alert, when set. | | `source_url` | string | URL to the alert in the originating system, when set. | | `created_at` | string | ISO 8601 timestamp when the alert was created. | | `updated_at` | string | ISO 8601 timestamp when the alert was last updated. | | `resolved_at` | string | ISO 8601 timestamp when the alert was resolved, when applicable. | *** ### incident.io Incident Created [#incidentio-incident-created] Trigger workflow when an incident is created in incident.io #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. | #### Output [#output-66] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. | | `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). | | `incident` | json | The full incident object from the webhook payload. | | `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). | | `name` | string | Incident name. | | `reference` | string | Human-readable incident reference (e.g., INC-123). | | `summary` | string | Incident summary, when set. | | `incident_status` | json | The incident status object (id, name, category, rank). | | `severity` | json | The incident severity object (id, name, rank), when set. | | `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). | | `visibility` | string | Incident visibility (public or private). | | `permalink` | string | Link to the incident in incident.io, when present. | | `created_at` | string | ISO 8601 timestamp when the incident was created. | | `updated_at` | string | ISO 8601 timestamp when the incident was last updated. | | `new_status` | json | New status object (status-updated events only; null otherwise). | | `previous_status` | json | Previous status object (status-updated events only; null otherwise). | | `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). | *** ### incident.io Incident Status Updated [#incidentio-incident-status-updated] Trigger workflow when an incident #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. | #### Output [#output-67] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. | | `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). | | `incident` | json | The full incident object from the webhook payload. | | `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). | | `name` | string | Incident name. | | `reference` | string | Human-readable incident reference (e.g., INC-123). | | `summary` | string | Incident summary, when set. | | `incident_status` | json | The incident status object (id, name, category, rank). | | `severity` | json | The incident severity object (id, name, rank), when set. | | `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). | | `visibility` | string | Incident visibility (public or private). | | `permalink` | string | Link to the incident in incident.io, when present. | | `created_at` | string | ISO 8601 timestamp when the incident was created. | | `updated_at` | string | ISO 8601 timestamp when the incident was last updated. | | `new_status` | json | New status object (status-updated events only; null otherwise). | | `previous_status` | json | Previous status object (status-updated events only; null otherwise). | | `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). | *** ### incident.io Incident Updated [#incidentio-incident-updated] Trigger workflow when an incident is updated in incident.io #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `signingSecret` | string | Yes | The signing secret from your incident.io webhook endpoint. Used to verify events. | #### Output [#output-68] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `event_type` | string | incident.io event type (e.g., public\_incident.incident\_created\_v2). Top-level `event_type` field. | | `payload` | json | Full raw webhook body as delivered by incident.io (the entire Svix envelope). | | `incident` | json | The full incident object from the webhook payload. | | `incident_id` | string | Unique incident ID (e.g., 01FDAG4SAP5TYPT98WGR2N7W91). | | `name` | string | Incident name. | | `reference` | string | Human-readable incident reference (e.g., INC-123). | | `summary` | string | Incident summary, when set. | | `incident_status` | json | The incident status object (id, name, category, rank). | | `severity` | json | The incident severity object (id, name, rank), when set. | | `mode` | string | Incident mode (standard, retrospective, test, tutorial, stream). | | `visibility` | string | Incident visibility (public or private). | | `permalink` | string | Link to the incident in incident.io, when present. | | `created_at` | string | ISO 8601 timestamp when the incident was created. | | `updated_at` | string | ISO 8601 timestamp when the incident was last updated. | | `new_status` | json | New status object (status-updated events only; null otherwise). | | `previous_status` | json | Previous status object (status-updated events only; null otherwise). | | `update_message` | string | Update message accompanying a status change (status-updated events only; null otherwise). | --- # Integrations (/integrations) Integrations connect your workflows to services such as Gmail, Slack, GitHub, and HubSpot. Connect with OAuth or use a supported API token or service account, then select the saved credential in a block. Agent Serve stores credentials securely and refreshes OAuth tokens when the provider supports it. You can connect **multiple accounts per service** — for example, two separate Gmail accounts for different workflows. ## The Integrations page [#the-integrations-page] Click **Integrations** in the workspace sidebar. The page shows your **Connected** accounts, a **Featured** list, and a search box covering every available service. The Integrations page with search, category filters, and featured services The page's second tab, **Playbooks**, holds your workspace's [agent skills](/agents/skills) — reusable instructions an agent can load for a task. Open a service to see what it offers: * **What it can do** — the triggers and operations the service supports. * **Playbooks** — ready-made instructions you add with one click, like *upsert-contact* for HubSpot. * **Connect** — the button in the top right connects your account. It is labeled for the service, like **Connect HubSpot**; when more than one connection method is available it opens a menu. ## Connecting with OAuth [#connecting-with-oauth] 1. Open the service's page and click **Connect** (for example **Connect HubSpot**). If a menu appears, choose **Connect with OAuth**. 2. Enter a **Display name** to identify this connection (e.g. "Work Gmail" or "Sales HubSpot"), and optionally a **Description**. 3. Review the **Permissions requested** — these are the scopes Agent Serve will ask the provider for. 4. Click **Connect** and complete the provider's sign-in and approval flow. When the provider redirects you back, the connection appears under **Connected**. For API tokens and service accounts, choose that option from the connect button or menu and follow the setup guide under that service. These connections have different fields and rotation requirements. The Add HubSpot private app token dialog with the token, display name, and description fields ## Using integrations in workflows [#using-integrations-in-workflows] Blocks that require authentication (e.g. Gmail, Slack, HubSpot) display an account selector. Select the connected account you want that block to use. A block showing the account selector dropdown with connected accounts You can also connect another account directly from the block by selecting **Connect another \[service] account** at the bottom of the dropdown. If a block requires an integration and none is selected, the workflow will fail at that step. ## Using a credential ID [#using-a-credential-id] Each connection has a unique credential ID you can use to reference it dynamically. This is useful when you have multiple accounts for the same service and want to switch between them programmatically — for example, routing different workflow runs to different Gmail accounts based on a variable. To copy a credential ID, open the connection from the **Connected** list and use the copy control next to its name. In any block that requires an integration, click **Switch to manual ID** next to the account selector to switch from the dropdown to a text field. Block showing the Switch to manual ID button next to the account selector Paste or reference the credential ID in that field. You can use a `{{SECRET}}` reference or a block output variable to make it dynamic. Block showing the Enter credential ID text field after switching to manual mode ## Managing a connection [#managing-a-connection] Open a connection from the **Connected** list to manage it: {/* VISUAL: the connection detail view in the new Integrations page — display name, members, reconnect, disconnect. */} * Edit the **Display name** and **Description**. * Manage **Members** — invite teammates and assign them an **Admin** or **Member** role. Admins can edit, reconnect, disconnect, and manage access; Members can use the connection in workflows. When you connect an account, you are its Admin. * **Reconnect** — re-authorize if the connection expired or you need updated permissions. * **Disconnect** — remove the connection entirely. If you disconnect an integration that is used in a workflow, that workflow will fail at any block referencing it. Update blocks before disconnecting. --- # Infisical (/integrations/infisical) {/* MANUAL-CONTENT-START:intro */} Use [Infisical](https://infisical.com/) to list, read, create, update, or delete secrets in a project environment. Configure the API key, project ID, environment slug, and any secret path required by the selected operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Infisical into your workflow. List, get, create, update, and delete secrets across project environments. ## Actions [#actions] ### Infisical List Secrets [#infisical-list-secrets] List all secrets in a project environment. Returns secret keys, values, comments, tags, and metadata. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Infisical API token | | `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com](https://us.infisical.com)"). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. | | `projectId` | string | Yes | The ID of the project to list secrets from | | `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") | | `secretPath` | string | No | The path of the secrets (default: "/") | | `recursive` | boolean | No | Whether to fetch secrets recursively from subdirectories | | `expandSecretReferences` | boolean | No | Whether to expand secret references (default: true) | | `viewSecretValue` | boolean | No | Whether to include secret values in the response (default: true) | | `includeImports` | boolean | No | Whether to include imported secrets (default: true) | | `tagSlugs` | string | No | Comma-separated tag slugs to filter secrets by | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------- | | `secrets` | array | Array of secrets | | ↳ `id` | string | Secret ID | | ↳ `workspace` | string | Workspace/project ID | | ↳ `secretKey` | string | Secret name/key | | ↳ `secretValue` | string | Secret value | | ↳ `secretComment` | string | Secret comment | | ↳ `secretPath` | string | Secret path | | ↳ `version` | number | Secret version | | ↳ `type` | string | Secret type (shared or personal) | | ↳ `environment` | string | Environment slug | | ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response | | ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation | | ↳ `rotationId` | string | Secret rotation ID | | ↳ `secretReminderNote` | string | Rotation reminder note | | ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days | | ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret | | ↳ `tags` | array | Tags attached to the secret | | ↳ `id` | string | Tag ID | | ↳ `slug` | string | Tag slug | | ↳ `color` | string | Tag color | | ↳ `name` | string | Tag name | | ↳ `secretMetadata` | array | Custom metadata key-value pairs | | ↳ `key` | string | Metadata key | | ↳ `value` | string | Metadata value | | ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted | | ↳ `actor` | object | Identity that last modified the secret | | ↳ `actorId` | string | Actor ID | | ↳ `actorType` | string | Actor type | | ↳ `name` | string | Actor name | | ↳ `membershipId` | string | Membership ID | | ↳ `groupId` | string | Group ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `count` | number | Total number of secrets returned | ### Infisical Get Secret [#infisical-get-secret] Retrieve a single secret by name from a project environment. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Infisical API token | | `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com](https://us.infisical.com)"). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. | | `projectId` | string | Yes | The ID of the project | | `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") | | `secretName` | string | Yes | The name of the secret to retrieve | | `secretPath` | string | No | The path of the secret (default: "/") | | `version` | number | No | Specific version of the secret to retrieve | | `type` | string | No | Secret type: "shared" or "personal" (default: "shared") | | `viewSecretValue` | boolean | No | Whether to include the secret value in the response (default: true) | | `expandSecretReferences` | boolean | No | Whether to expand secret references (default: true) | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------- | | `secret` | object | The retrieved secret | | ↳ `id` | string | Secret ID | | ↳ `workspace` | string | Workspace/project ID | | ↳ `secretKey` | string | Secret name/key | | ↳ `secretValue` | string | Secret value | | ↳ `secretComment` | string | Secret comment | | ↳ `secretPath` | string | Secret path | | ↳ `version` | number | Secret version | | ↳ `type` | string | Secret type (shared or personal) | | ↳ `environment` | string | Environment slug | | ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response | | ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation | | ↳ `rotationId` | string | Secret rotation ID | | ↳ `secretReminderNote` | string | Rotation reminder note | | ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days | | ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret | | ↳ `tags` | array | Tags attached to the secret | | ↳ `id` | string | Tag ID | | ↳ `slug` | string | Tag slug | | ↳ `color` | string | Tag color | | ↳ `name` | string | Tag name | | ↳ `secretMetadata` | array | Custom metadata key-value pairs | | ↳ `key` | string | Metadata key | | ↳ `value` | string | Metadata value | | ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted | | ↳ `actor` | object | Identity that last modified the secret | | ↳ `actorId` | string | Actor ID | | ↳ `actorType` | string | Actor type | | ↳ `name` | string | Actor name | | ↳ `membershipId` | string | Membership ID | | ↳ `groupId` | string | Group ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | ### Infisical Create Secret [#infisical-create-secret] Create a new secret in a project environment. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Infisical API token | | `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com](https://us.infisical.com)"). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. | | `projectId` | string | Yes | The ID of the project | | `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") | | `secretName` | string | Yes | The name of the secret to create | | `secretValue` | string | Yes | The value of the secret | | `secretPath` | string | No | The path for the secret (default: "/") | | `secretComment` | string | No | A comment for the secret | | `type` | string | No | Secret type: "shared" or "personal" (default: "shared") | | `tagIds` | string | No | Comma-separated tag IDs to attach to the secret | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------- | | `secret` | object | The created secret | | ↳ `id` | string | Secret ID | | ↳ `workspace` | string | Workspace/project ID | | ↳ `secretKey` | string | Secret name/key | | ↳ `secretValue` | string | Secret value | | ↳ `secretComment` | string | Secret comment | | ↳ `secretPath` | string | Secret path | | ↳ `version` | number | Secret version | | ↳ `type` | string | Secret type (shared or personal) | | ↳ `environment` | string | Environment slug | | ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response | | ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation | | ↳ `rotationId` | string | Secret rotation ID | | ↳ `secretReminderNote` | string | Rotation reminder note | | ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days | | ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret | | ↳ `tags` | array | Tags attached to the secret | | ↳ `id` | string | Tag ID | | ↳ `slug` | string | Tag slug | | ↳ `color` | string | Tag color | | ↳ `name` | string | Tag name | | ↳ `secretMetadata` | array | Custom metadata key-value pairs | | ↳ `key` | string | Metadata key | | ↳ `value` | string | Metadata value | | ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted | | ↳ `actor` | object | Identity that last modified the secret | | ↳ `actorId` | string | Actor ID | | ↳ `actorType` | string | Actor type | | ↳ `name` | string | Actor name | | ↳ `membershipId` | string | Membership ID | | ↳ `groupId` | string | Group ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | ### Infisical Update Secret [#infisical-update-secret] Update an existing secret in a project environment. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Infisical API token | | `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com](https://us.infisical.com)"). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. | | `projectId` | string | Yes | The ID of the project | | `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") | | `secretName` | string | Yes | The name of the secret to update | | `secretValue` | string | No | The new value for the secret | | `secretPath` | string | No | The path of the secret (default: "/") | | `secretComment` | string | No | A comment for the secret | | `newSecretName` | string | No | New name for the secret (to rename it) | | `type` | string | No | Secret type: "shared" or "personal" (default: "shared") | | `tagIds` | string | No | Comma-separated tag IDs to set on the secret | #### Output [#output-3] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------- | | `secret` | object | The updated secret | | ↳ `id` | string | Secret ID | | ↳ `workspace` | string | Workspace/project ID | | ↳ `secretKey` | string | Secret name/key | | ↳ `secretValue` | string | Secret value | | ↳ `secretComment` | string | Secret comment | | ↳ `secretPath` | string | Secret path | | ↳ `version` | number | Secret version | | ↳ `type` | string | Secret type (shared or personal) | | ↳ `environment` | string | Environment slug | | ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response | | ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation | | ↳ `rotationId` | string | Secret rotation ID | | ↳ `secretReminderNote` | string | Rotation reminder note | | ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days | | ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret | | ↳ `tags` | array | Tags attached to the secret | | ↳ `id` | string | Tag ID | | ↳ `slug` | string | Tag slug | | ↳ `color` | string | Tag color | | ↳ `name` | string | Tag name | | ↳ `secretMetadata` | array | Custom metadata key-value pairs | | ↳ `key` | string | Metadata key | | ↳ `value` | string | Metadata value | | ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted | | ↳ `actor` | object | Identity that last modified the secret | | ↳ `actorId` | string | Actor ID | | ↳ `actorType` | string | Actor type | | ↳ `name` | string | Actor name | | ↳ `membershipId` | string | Membership ID | | ↳ `groupId` | string | Group ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | ### Infisical Delete Secret [#infisical-delete-secret] Delete a secret from a project environment. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Infisical API token | | `baseUrl` | string | No | Infisical instance URL (default: "[https://us.infisical.com](https://us.infisical.com)"). Use "[https://eu.infisical.com](https://eu.infisical.com)" for EU Cloud or your self-hosted URL. | | `projectId` | string | Yes | The ID of the project | | `environment` | string | Yes | The environment slug (e.g., "dev", "staging", "prod") | | `secretName` | string | Yes | The name of the secret to delete | | `secretPath` | string | No | The path of the secret (default: "/") | | `type` | string | No | Secret type: "shared" or "personal" (default: "shared") | #### Output [#output-4] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------- | | `secret` | object | The deleted secret | | ↳ `id` | string | Secret ID | | ↳ `workspace` | string | Workspace/project ID | | ↳ `secretKey` | string | Secret name/key | | ↳ `secretValue` | string | Secret value | | ↳ `secretComment` | string | Secret comment | | ↳ `secretPath` | string | Secret path | | ↳ `version` | number | Secret version | | ↳ `type` | string | Secret type (shared or personal) | | ↳ `environment` | string | Environment slug | | ↳ `secretValueHidden` | boolean | Whether the secret value was hidden in the response | | ↳ `isRotatedSecret` | boolean | Whether the secret is managed by secret rotation | | ↳ `rotationId` | string | Secret rotation ID | | ↳ `secretReminderNote` | string | Rotation reminder note | | ↳ `secretReminderRepeatDays` | number | Rotation reminder interval in days | | ↳ `skipMultilineEncoding` | boolean | Whether multiline encoding is skipped for this secret | | ↳ `tags` | array | Tags attached to the secret | | ↳ `id` | string | Tag ID | | ↳ `slug` | string | Tag slug | | ↳ `color` | string | Tag color | | ↳ `name` | string | Tag name | | ↳ `secretMetadata` | array | Custom metadata key-value pairs | | ↳ `key` | string | Metadata key | | ↳ `value` | string | Metadata value | | ↳ `isEncrypted` | boolean | Whether the metadata value is encrypted | | ↳ `actor` | object | Identity that last modified the secret | | ↳ `actorId` | string | Actor ID | | ↳ `actorType` | string | Actor type | | ↳ `name` | string | Actor name | | ↳ `membershipId` | string | Membership ID | | ↳ `groupId` | string | Group ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | --- # Instagram (/integrations/instagram) ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Instagram Webhook [#instagram-webhook] Trigger workflow when the connected Instagram account gets a DM, comment, mention, postback, or message reaction --- # Instantly (/integrations/instantly) {/* MANUAL-CONTENT-START:intro */} [Instantly](https://instantly.ai/) is a cold email outreach platform used to send, manage, and scale email campaigns to leads. It provides tools for lead management, campaign scheduling, and reply tracking through its Unibox inbox. With Instantly, you can: * **Manage leads**: Create, update, search, and delete leads across campaigns and lead lists * **Run campaigns**: Create, update, activate, pause, and delete email campaigns with custom schedules and sequences * **Handle replies**: List Unibox emails and reply to leads directly from a connected sending account * **Organize lead lists**: Create and list lead lists, and track lead interest status In Agent Serve, the Instantly integration allows your agents to manage leads and campaigns programmatically — retrieving and creating leads, updating lead interest status, listing and controlling campaigns (create, patch, activate, pause, delete), reading and replying to Unibox emails, and creating or listing lead lists. This lets your agents automate outbound email workflows, such as syncing new leads into campaigns, monitoring campaign status, and responding to replies without leaving the workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Instantly API V2 into workflows. Create, update, and list leads, manage lead interest status, delete leads in bulk, list, create, patch, activate, pause, and delete campaigns, reply to emails, and manage lead lists. ## Actions [#actions] ### Instantly List Leads [#instantly-list-leads] Retrieves Instantly V2 leads with search, campaign, list, and pagination filters. #### Input [#input] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `search` | string | No | Search by first name, last name, or email | | `filter` | string | No | Instantly lead filter value, such as FILTER\_VAL\_CONTACTED or FILTER\_VAL\_ACTIVE | | `campaign` | string | No | Campaign ID to filter leads | | `list_id` | string | No | Lead list ID to filter leads | | `in_campaign` | boolean | No | Whether the lead is in a campaign | | `in_list` | boolean | No | Whether the lead is in a list | | `ids` | array | No | Lead IDs to include | | `excluded_ids` | array | No | Lead IDs to exclude | | `organization_user_ids` | array | No | Organization user IDs to filter leads | | `smart_view_id` | string | No | Smart view ID to filter leads | | `contacts` | array | No | Lead email addresses to include | | `limit` | number | No | Number of leads to return, from 1 to 100 | | `starting_after` | string | No | Forward pagination cursor from next\_starting\_after | | `distinct_contacts` | boolean | No | Whether to return distinct contacts | | `is_website_visitor` | boolean | No | Whether the lead is a website visitor | | `enrichment_status` | number | No | Enrichment status filter | | `esg_code` | string | No | Email security gateway code filter | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Get Lead [#instantly-get-lead] Retrieves an Instantly V2 lead by ID. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `leadId` | string | Yes | Lead ID | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Create Lead [#instantly-create-lead] Creates an Instantly V2 lead in a campaign or lead list. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaign` | string | No | Campaign ID associated with the lead | | `list_id` | string | No | Lead list ID associated with the lead | | `email` | string | No | Lead email address. Required when adding to a campaign. | | `first_name` | string | No | Lead first name | | `last_name` | string | No | Lead last name | | `company_name` | string | No | Lead company name | | `job_title` | string | No | Lead job title | | `phone` | string | No | Lead phone number | | `website` | string | No | Lead website | | `personalization` | string | No | Lead personalization text | | `lt_interest_status` | number | No | Lead interest status value | | `pl_value_lead` | string | No | Potential value of the lead | | `assigned_to` | string | No | Organization user ID assigned to the lead | | `skip_if_in_workspace` | boolean | No | Skip if the lead already exists in the workspace | | `skip_if_in_campaign` | boolean | No | Skip if the lead already exists in the campaign | | `skip_if_in_list` | boolean | No | Skip if the lead already exists in the list | | `blocklist_id` | string | No | Blocklist ID to check for the lead | | `verify_leads_for_lead_finder` | boolean | No | Whether to verify leads imported from Lead Finder | | `verify_leads_on_import` | boolean | No | Whether to verify leads on import | | `custom_variables` | json | No | Custom variable object with string, number, boolean, or null values | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Patch Lead [#instantly-patch-lead] Updates fields on an existing Instantly V2 lead. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `leadId` | string | Yes | Lead ID | | `first_name` | string | No | Lead first name | | `last_name` | string | No | Lead last name | | `company_name` | string | No | Lead company name | | `job_title` | string | No | Lead job title | | `phone` | string | No | Lead phone number | | `website` | string | No | Lead website | | `personalization` | string | No | Lead personalization text | | `lt_interest_status` | number | No | Lead interest status value | | `pl_value_lead` | string | No | Potential value of the lead | | `assigned_to` | string | No | ID of the user assigned to the lead | | `custom_variables` | json | No | Custom variable object with string, number, boolean, or null values | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Delete Leads [#instantly-delete-leads] Deletes Instantly V2 leads in bulk from a campaign or lead list. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaign_id` | string | No | Campaign ID to delete leads from. Required if list\_id is not provided. | | `list_id` | string | No | Lead list ID to delete leads from. Required if campaign\_id is not provided. | | `status` | number | No | Optional lead status filter | | `ids` | array | No | Specific lead IDs to delete | | `limit` | number | No | Maximum number of matching leads to delete, up to 10000 | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ----------------------- | | `count` | number | Number of leads deleted | ### Instantly Update Lead Interest Status [#instantly-update-lead-interest-status] Submits an Instantly V2 background job to update a lead interest status. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `lead_email` | string | Yes | Lead email address | | `interest_value` | number | No | Interest status value. Leave empty in the block or pass null to reset to Lead. | | `campaign_id` | string | No | Campaign ID for the lead | | `list_id` | string | No | Lead list ID for the lead | | `ai_interest_value` | number | No | AI interest value to set for the lead | | `disable_auto_interest` | boolean | No | Whether to disable auto interest | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `message` | string | Background job submission message | ### Instantly List Campaigns [#instantly-list-campaigns] Retrieves Instantly V2 campaigns with search, status, tag, and pagination filters. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `limit` | number | No | Number of campaigns to return, from 1 to 100 | | `starting_after` | string | No | Pagination cursor from next\_starting\_after | | `search` | string | No | Search by campaign name | | `tag_ids` | string | No | Comma-separated campaign tag IDs | | `ai_sales_agent_id` | string | No | Filter campaigns by AI Sales Agent ID | | `status` | number | No | Campaign status enum value | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Create Campaign [#instantly-create-campaign] Creates an Instantly V2 campaign using the documented campaign schedule schema. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `name` | string | Yes | Campaign name | | `campaign_schedule` | json | Yes | Campaign schedule object with schedules array | | `sequences` | array | No | Campaign sequence definitions | | `email_list` | array | No | Sending email accounts | | `daily_limit` | number | No | Daily sending limit | | `daily_max_leads` | number | No | Daily maximum new leads to contact | | `open_tracking` | boolean | No | Whether to track opens | | `stop_on_reply` | boolean | No | Whether to stop the campaign on reply | | `link_tracking` | boolean | No | Whether to track links | | `text_only` | boolean | No | Whether the campaign is text only | | `email_gap` | number | No | Gap between emails in minutes | | `pl_value` | number | No | Value of every positive lead | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Patch Campaign [#instantly-patch-campaign] Updates documented Instantly V2 campaign fields. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaignId` | string | Yes | Campaign ID | | `name` | string | No | Campaign name | | `campaign_schedule` | json | No | Campaign schedule object with schedules array | | `sequences` | array | No | Campaign sequence definitions | | `email_list` | array | No | Sending email accounts | | `daily_limit` | number | No | Daily sending limit | | `daily_max_leads` | number | No | Daily maximum new leads to contact | | `open_tracking` | boolean | No | Whether to track opens | | `stop_on_reply` | boolean | No | Whether to stop the campaign on reply | | `link_tracking` | boolean | No | Whether to track links | | `text_only` | boolean | No | Whether the campaign is text only | | `email_gap` | number | No | Gap between emails in minutes | | `pl_value` | number | No | Value of every positive lead | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Activate Campaign [#instantly-activate-campaign] Activates, starts, or resumes an Instantly V2 campaign. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaignId` | string | Yes | Campaign ID | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Pause Campaign [#instantly-pause-campaign] Pauses a running Instantly V2 campaign, stopping further email sends. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaignId` | string | Yes | Campaign ID | #### Output [#output-10] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Delete Campaign [#instantly-delete-campaign] Permanently deletes an Instantly V2 campaign. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `campaignId` | string | Yes | Campaign ID | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly List Emails [#instantly-list-emails] Retrieves Instantly V2 Unibox emails with search and pagination filters. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `limit` | number | No | Number of emails to return, from 1 to 100 | | `starting_after` | string | No | Pagination cursor from next\_starting\_after | | `search` | string | No | Search query, email address, or thread:\ | | `campaign_id` | string | No | Campaign ID filter | | `list_id` | string | No | Lead list ID filter | | `i_status` | number | No | Email interest status filter | | `eaccount` | string | No | Sending email account filter | | `lead` | string | No | Lead email address filter | | `is_unread` | boolean | No | Unread status filter | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Reply To Email [#instantly-reply-to-email] Sends an Instantly V2 reply to an existing Unibox email. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `eaccount` | string | Yes | Connected email account used to send the reply | | `reply_to_uuid` | string | Yes | Email ID to reply to | | `subject` | string | Yes | Reply subject | | `body` | json | Yes | Reply body object with text and/or html | | `cc_address_email_list` | string | No | Comma-separated CC email addresses | | `bcc_address_email_list` | string | No | Comma-separated BCC email addresses | #### Output [#output-13] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly List Lead Lists [#instantly-list-lead-lists] Retrieves Instantly V2 lead lists with search and pagination filters. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `limit` | number | No | Number of lead lists to return, from 1 to 100 | | `starting_after` | string | No | Starting-after timestamp cursor | | `has_enrichment_task` | boolean | No | Filter by enrichment task setting | | `search` | string | No | Search query to filter lead lists by name | #### Output [#output-14] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | ### Instantly Create Lead List [#instantly-create-lead-list] Creates an Instantly V2 lead list. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Instantly API key with the required V2 scopes | | `name` | string | Yes | Lead list name | | `has_enrichment_task` | boolean | No | Whether this list runs enrichment for every added lead | | `owned_by` | string | No | User ID of the lead list owner | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `leads` | array | List of leads (id, email, first\_name, last\_name, campaign, status) | | `lead` | json | Lead details (id, email, first\_name, last\_name, company\_name, job\_title, campaign, status, payload) | | `campaigns` | array | List of campaigns (id, name, status, daily\_limit) | | `campaign` | json | Campaign details (id, name, status, daily\_limit, daily\_max\_leads, open\_tracking) | | `emails` | array | List of emails (id, subject, from\_address\_email, lead, thread\_id) | | `email` | json | Email details (id, subject, from\_address\_email, to\_address\_email\_list, thread\_id, content\_preview) | | `lead_lists` | array | List of lead lists (id, name, has\_enrichment\_task, timestamp\_created) | | `lead_list` | json | Lead list details (id, organization\_id, has\_enrichment\_task, owned\_by, name, timestamp\_created) | | `count` | number | Returned or affected record count | | `next_starting_after` | string | Cursor for the next page | | `id` | string | Record ID | | `name` | string | Record name | | `email_address` | string | Lead email address | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `status` | number | Lead or campaign status | | `subject` | string | Email subject | | `thread_id` | string | Email thread ID | | `message` | string | Operation message | --- # Interakt (/integrations/interakt) ## Usage Instructions [#usage-instructions] Use Interakt, the WhatsApp Business platform for Indian businesses, to send approved WhatsApp templates with header, body, and button values, reply with free-form text or media, create and update contacts with traits and tags, record events that start Interakt campaigns, and list your templates. WhatsApp allows free-form messages only within 24 hours of the customer’s last message. Outside that window, or to start a conversation, send an approved template. Interakt can also trigger workflows on incoming messages and on template status (sent, delivered, read, failed, clicked). ## Actions [#actions] ### Interakt List Templates [#interakt-list-templates] List the WhatsApp templates in your Interakt account with their code name, language, category, approval status, and text. Use it to find the template name and variables before sending a template. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Interakt API key (Interakt → Settings → Developer Settings → Secret Key) | | `templateName` | string | No | Only return the template with this code name | | `approvalStatus` | string | No | Only return templates with this approval status, e.g. APPROVED | | `language` | string | No | Only return templates in this language code, e.g. en | | `offset` | number | No | Number of templates to skip, for the next page when hasNext is true | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------- | | `templates` | array | Templates in the account | | ↳ `id` | string | Interakt template ID | | ↳ `name` | string | Code name used to send the template | | ↳ `displayName` | string | Display name in Interakt | | ↳ `language` | string | Language code | | ↳ `category` | string | Template category, e.g. UTILITY or MARKETING | | ↳ `approvalStatus` | string | WhatsApp approval status, e.g. APPROVED | | ↳ `headerFormat` | string | Header format, if any | | ↳ `header` | string | Header text, if any | | ↳ `body` | string | Body text with \{\{1}}-style variables | | ↳ `footer` | string | Footer text, if any | | ↳ `buttons` | string | Buttons as a JSON string | | ↳ `variablePresent` | string | Whether the template has variables | | ↳ `waTemplateId` | string | WhatsApp template ID | | ↳ `createdAt` | string | When the template was created (UTC) | | `count` | number | Number of matching templates | | `hasNext` | boolean | Whether more templates are available | ### Interakt Send Session Message [#interakt-send-session-message] Send a free-form WhatsApp reply (text, image, document, audio, or video) through Interakt. WhatsApp only allows free-form (session) messages within 24 hours of the customer’s last message to your number. Outside that window, or to start a conversation, you must send a pre-approved template. Interakt rejects a session message when the customer has not messaged in the last 24 hours. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Interakt API key (Interakt → Settings → Developer Settings → Secret Key) | | `phoneNumber` | string | No | Customer phone number without the country code or a leading 0 (e.g. 9876543210). Use with countryCode | | `countryCode` | string | No | Country code of phoneNumber, with a plus sign (e.g. +91). Defaults to +91 | | `fullPhoneNumber` | string | No | Full phone number with the country code and no plus sign (e.g. 919876543210). Use instead of phoneNumber and countryCode | | `messageType` | string | Yes | Message type: Text, Image, Document, Audio, or Video | | `message` | string | No | Message text. Required for Text; the caption for media messages | | `mediaUrl` | string | No | Public URL of the media file. Required for Image, Document, Audio, and Video | | `fileName` | string | No | File name shown for a media message, e.g. invoice.pdf | | `callbackData` | string | No | Up to 512 characters returned in this message’s webhooks | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------- | | `messageId` | string | Interakt message ID; delivery-status webhooks refer to it | | `message` | string | Confirmation message from Interakt | ### Interakt Send Template [#interakt-send-template] Send an approved WhatsApp template message through Interakt, filling its header, body, and button variables. WhatsApp only allows free-form (session) messages within 24 hours of the customer’s last message to your number. Outside that window, or to start a conversation, you must send a pre-approved template. Returns the message ID that delivery-status webhooks refer to. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Interakt API key (Interakt → Settings → Developer Settings → Secret Key) | | `phoneNumber` | string | No | Customer phone number without the country code or a leading 0 (e.g. 9876543210). Use with countryCode | | `countryCode` | string | No | Country code of phoneNumber, with a plus sign (e.g. +91). Defaults to +91 | | `fullPhoneNumber` | string | No | Full phone number with the country code and no plus sign (e.g. 919876543210). Use instead of phoneNumber and countryCode | | `templateName` | string | Yes | Code name of an approved template in Interakt (shown by the info icon on the Templates page), e.g. order\_confirmation | | `languageCode` | string | Yes | Language the template was created in, e.g. en, en\_US, or hi | | `headerValues` | array | No | Header variable values in order. For an image, video, or document header, a single public media URL | | `bodyValues` | array | No | Body variable values in order: the first fills \{\{1}}, the second \{\{2}}, ... | | `buttonValues` | json | No | Dynamic URL button values keyed by button index starting at 0, e.g. \{"1": \["ORDER123"]} fills \{\{1}} in the URL of the second button | | `buttonPayload` | json | No | Quick reply payloads keyed by button index starting at 0, e.g. \{"0": \["yes"], "1": \["no"]}. Strings of at most 128 characters, up to 3 buttons | | `fileName` | string | No | File name shown for a document header, e.g. invoice.pdf | | `callbackData` | string | No | Up to 512 characters returned in this message’s webhooks, e.g. your order or lead ID | | `campaignId` | string | No | Interakt API campaign ID, so the send is counted in that campaign’s analytics | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------- | | `messageId` | string | Interakt message ID; delivery-status webhooks refer to it | | `message` | string | Confirmation message from Interakt | ### Interakt Track Event [#interakt-track-event] Record an event (e.g. "Order Placed", "Cart Abandoned") with properties on a contact’s Interakt timeline. An Interakt ongoing campaign that uses the event as its trigger then sends its approved template automatically. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Interakt API key (Interakt → Settings → Developer Settings → Secret Key) | | `phoneNumber` | string | No | Customer phone number without the country code or a leading 0 (e.g. 9876543210). Use with countryCode | | `countryCode` | string | No | Country code of phoneNumber, with a plus sign (e.g. +91). Defaults to +91 | | `fullPhoneNumber` | string | No | Full phone number with the country code and no plus sign (e.g. 919876543210). Use instead of phoneNumber and countryCode | | `userId` | string | No | Your own ID for the contact. Either userId or a phone number is required | | `eventName` | string | Yes | Name of the event, e.g. Order Placed | | `traits` | json | No | Flat JSON object of event properties, e.g. \{"orderNumber": "CUS001", "orderValue": "50.00"} | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `id` | string | ID of the recorded event | | `message` | string | Confirmation message from Interakt | ### Interakt Track User [#interakt-track-user] Create or update a WhatsApp contact in Interakt with traits (name, email, custom attributes) and tags. A new value for an existing trait replaces the old one; tags can only be added, not removed. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Interakt API key (Interakt → Settings → Developer Settings → Secret Key) | | `phoneNumber` | string | No | Customer phone number without the country code or a leading 0 (e.g. 9876543210). Use with countryCode | | `countryCode` | string | No | Country code of phoneNumber, with a plus sign (e.g. +91). Defaults to +91 | | `fullPhoneNumber` | string | No | Full phone number with the country code and no plus sign (e.g. 919876543210). Use instead of phoneNumber and countryCode | | `userId` | string | No | Your own ID for the contact. Either userId or a phone number is required; a new userId must not belong to another contact | | `traits` | json | No | Flat JSON object of contact attributes, e.g. \{"name": "Asha", "email": "[asha@example.com](mailto:asha@example.com)", "city": "Pune"}. Values must not contain newlines, tabs, or runs of spaces | | `tags` | array | No | Tags to add to the contact, e.g. \["new customer", "potential lead"] | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `message` | string | Confirmation message from Interakt | --- # Intercom (/integrations/intercom) {/* MANUAL-CONTENT-START:intro */} Use [Intercom](https://www.intercom.com/) in Agent Serve to manage contacts and companies, read and reply to conversations, create and retrieve tickets, and send messages. Connect these operations to support triage, follow-up, and CRM synchronization workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Intercom into the workflow. Can create, get, update, list, search, and delete contacts; create, get, and list companies; get, list, reply, and search conversations; create and get tickets; and create messages. ## Actions [#actions] ### Create Contact in Intercom [#create-contact-in-intercom] Create a new contact in Intercom with email, external\_id, or role. Returns API-aligned fields only. #### Input [#input] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | --------------------------------------------------------------------------------------- | | `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. Defaults to 'lead' if not specified. | | `email` | string | No | The contact's email address | | `external_id` | string | No | A unique identifier for the contact provided by the client | | `phone` | string | No | The contact's phone number | | `name` | string | No | The contact's name | | `avatar` | string | No | An avatar image URL for the contact | | `signed_up_at` | number | No | The time the user signed up as a Unix timestamp | | `last_seen_at` | number | No | The time the user was last seen as a Unix timestamp | | `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact | | `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails | | `custom_attributes` | string | No | Custom attributes as JSON object (e.g., \{"attribute\_name": "value"}) | | `company_id` | string | No | Company ID to associate the contact with during creation | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------- | | `contact` | object | Created contact object | | ↳ `id` | string | Unique identifier for the contact | | ↳ `type` | string | Object type (contact) | | ↳ `role` | string | Role of the contact (user or lead) | | ↳ `email` | string | Email address of the contact | | ↳ `phone` | string | Phone number of the contact | | ↳ `name` | string | Name of the contact | | ↳ `avatar` | string | Avatar URL of the contact | | ↳ `owner_id` | string | ID of the admin assigned to this contact | | ↳ `external_id` | string | External identifier for the contact | | ↳ `created_at` | number | Unix timestamp when contact was created | | ↳ `updated_at` | number | Unix timestamp when contact was last updated | | ↳ `signed_up_at` | number | Unix timestamp when user signed up | | ↳ `last_seen_at` | number | Unix timestamp when user was last seen | | ↳ `workspace_id` | string | Workspace ID the contact belongs to | | ↳ `custom_attributes` | object | Custom attributes set on the contact | | ↳ `tags` | object | Tags associated with the contact | | ↳ `type` | string | List type | | ↳ `url` | string | URL to fetch tags | | ↳ `data` | array | Array of tag objects | | ↳ `has_more` | boolean | Whether there are more tags | | ↳ `total_count` | number | Total number of tags | | ↳ `notes` | object | Notes associated with the contact | | ↳ `type` | string | List type | | ↳ `url` | string | URL to fetch notes | | ↳ `data` | array | Array of note objects | | ↳ `has_more` | boolean | Whether there are more notes | | ↳ `total_count` | number | Total number of notes | | ↳ `companies` | object | Companies associated with the contact | | ↳ `type` | string | List type | | ↳ `url` | string | URL to fetch companies | | ↳ `data` | array | Array of company objects | | ↳ `has_more` | boolean | Whether there are more companies | | ↳ `total_count` | number | Total number of companies | | ↳ `location` | object | Location information for the contact | | ↳ `type` | string | Location type | | ↳ `city` | string | City | | ↳ `region` | string | Region/State | | ↳ `country` | string | Country | | ↳ `country_code` | string | Country code | | ↳ `continent_code` | string | Continent code | | ↳ `social_profiles` | object | Social profiles of the contact | | ↳ `type` | string | List type | | ↳ `data` | array | Array of social profile objects | | ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | | `contactId` | string | ID of the created contact | ### Get Single Contact from Intercom [#get-single-contact-from-intercom] Get a single contact by ID from Intercom. Returns API-aligned fields only. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------- | | `contactId` | string | Yes | Contact ID to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ---------------------------------------------------------- | | `contact` | object | Contact object | | ↳ `id` | string | Unique identifier for the contact | | ↳ `type` | string | Object type (contact) | | ↳ `role` | string | Role of the contact (user or lead) | | ↳ `email` | string | Email address of the contact | | ↳ `email_domain` | string | Email domain of the contact | | ↳ `phone` | string | Phone number of the contact | | ↳ `name` | string | Name of the contact | | ↳ `avatar` | string | Avatar URL of the contact | | ↳ `owner_id` | string | ID of the admin assigned account ownership | | ↳ `external_id` | string | External identifier provided by the client | | ↳ `workspace_id` | string | Workspace ID the contact belongs to | | ↳ `created_at` | number | Unix timestamp when contact was created | | ↳ `updated_at` | number | Unix timestamp when contact was last updated | | ↳ `signed_up_at` | number | Unix timestamp when user signed up | | ↳ `last_seen_at` | number | Unix timestamp when user was last seen | | ↳ `last_contacted_at` | number | Unix timestamp when contact was last contacted | | ↳ `last_replied_at` | number | Unix timestamp when contact last replied | | ↳ `last_email_opened_at` | number | Unix timestamp when contact last opened an email | | ↳ `last_email_clicked_at` | number | Unix timestamp when contact last clicked an email link | | ↳ `has_hard_bounced` | boolean | Whether email to this contact has hard bounced | | ↳ `marked_email_as_spam` | boolean | Whether contact marked email as spam | | ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | | ↳ `browser` | string | Browser used by contact | | ↳ `browser_version` | string | Browser version | | ↳ `browser_language` | string | Browser language setting | | ↳ `os` | string | Operating system | | ↳ `language_override` | string | Language override setting | | ↳ `custom_attributes` | object | Custom attributes set on the contact | | ↳ `tags` | object | Tags associated with the contact (up to 10 displayed) | | ↳ `type` | string | List type identifier | | ↳ `url` | string | URL to fetch full list | | ↳ `data` | array | Array of objects (up to 10) | | ↳ `has_more` | boolean | Whether there are more items beyond this list | | ↳ `total_count` | number | Total number of items | | ↳ `notes` | object | Notes associated with the contact (up to 10 displayed) | | ↳ `type` | string | List type identifier | | ↳ `url` | string | URL to fetch full list | | ↳ `data` | array | Array of objects (up to 10) | | ↳ `has_more` | boolean | Whether there are more items beyond this list | | ↳ `total_count` | number | Total number of items | | ↳ `companies` | object | Companies associated with the contact (up to 10 displayed) | | ↳ `type` | string | List type identifier | | ↳ `url` | string | URL to fetch full list | | ↳ `data` | array | Array of objects (up to 10) | | ↳ `has_more` | boolean | Whether there are more items beyond this list | | ↳ `total_count` | number | Total number of items | | ↳ `location` | object | Location information for the contact | | ↳ `type` | string | Object type (location) | | ↳ `city` | string | City name | | ↳ `region` | string | Region or state name | | ↳ `country` | string | Country name | | ↳ `country_code` | string | ISO country code | | ↳ `continent_code` | string | Continent code | | ↳ `social_profiles` | object | Social profiles of the contact | | ↳ `type` | string | Object type (social\_profile.list) | | ↳ `data` | array | Array of social profile objects | | ↳ `type` | string | Social network type (e.g., twitter, facebook) | | ↳ `name` | string | Social network name | | ↳ `url` | string | Profile URL | | ↳ `username` | string | Username on the social network | | ↳ `id` | string | User ID on the social network | ### Update Contact in Intercom [#update-contact-in-intercom] Update an existing contact in Intercom. Returns API-aligned fields only. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | -------------------------------------------------------------------------- | | `contactId` | string | Yes | Contact ID to update | | `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. | | `external_id` | string | No | A unique identifier for the contact provided by the client | | `email` | string | No | The contact's email address | | `phone` | string | No | The contact's phone number | | `name` | string | No | The contact's name | | `avatar` | string | No | An avatar image URL for the contact | | `signed_up_at` | number | No | The time the user signed up as a Unix timestamp | | `last_seen_at` | number | No | The time the user was last seen as a Unix timestamp | | `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact | | `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails | | `custom_attributes` | string | No | Custom attributes as JSON object (e.g., \{"attribute\_name": "value"}) | | `company_id` | string | No | Company ID to associate the contact with | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------- | | `contact` | object | Updated contact object | | ↳ `id` | string | Unique identifier for the contact | | ↳ `type` | string | Object type (contact) | | ↳ `role` | string | Role of the contact (user or lead) | | ↳ `email` | string | Email address of the contact | | ↳ `phone` | string | Phone number of the contact | | ↳ `name` | string | Name of the contact | | ↳ `avatar` | string | Avatar URL of the contact | | ↳ `owner_id` | string | ID of the admin assigned to this contact | | ↳ `external_id` | string | External identifier for the contact | | ↳ `created_at` | number | Unix timestamp when contact was created | | ↳ `updated_at` | number | Unix timestamp when contact was last updated | | ↳ `workspace_id` | string | Workspace ID the contact belongs to | | ↳ `custom_attributes` | object | Custom attributes set on the contact | | ↳ `tags` | object | Tags associated with the contact | | ↳ `notes` | object | Notes associated with the contact | | ↳ `companies` | object | Companies associated with the contact | | ↳ `location` | object | Location information for the contact | | ↳ `social_profiles` | object | Social profiles of the contact | | ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | | `contactId` | string | ID of the updated contact | ### List Contacts from Intercom [#list-contacts-from-intercom] List all contacts from Intercom with pagination support #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------- | | `per_page` | number | No | Number of results per page (max: 150) | | `starting_after` | string | No | Cursor for pagination - ID to start after | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------- | | `contacts` | array | Array of contact objects | | ↳ `id` | string | Unique identifier for the contact | | ↳ `type` | string | Object type (contact) | | ↳ `role` | string | Role of the contact (user or lead) | | ↳ `email` | string | Email address of the contact | | ↳ `phone` | string | Phone number of the contact | | ↳ `name` | string | Name of the contact | | ↳ `external_id` | string | External identifier for the contact | | ↳ `created_at` | number | Unix timestamp when contact was created | | ↳ `updated_at` | number | Unix timestamp when contact was last updated | | ↳ `workspace_id` | string | Workspace ID the contact belongs to | | ↳ `custom_attributes` | object | Custom attributes set on the contact | | ↳ `tags` | object | Tags associated with the contact | | ↳ `companies` | object | Companies associated with the contact | | `pages` | object | Pagination information | | ↳ `type` | string | Pages type identifier | | ↳ `page` | number | Current page number | | ↳ `per_page` | number | Number of results per page | | ↳ `total_pages` | number | Total number of pages | | `total_count` | number | Total number of contacts | ### Search Contacts in Intercom [#search-contacts-in-intercom] Search for contacts in Intercom using a query #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `query` | string | Yes | Search query (e.g., \{"field":"email","operator":"=","value":"[user@example.com](mailto:user@example.com)"}) | | `per_page` | number | No | Number of results per page (max: 150) | | `starting_after` | string | No | Cursor for pagination | | `sort_field` | string | No | Field to sort by (e.g., "name", "created\_at", "last\_seen\_at") | | `sort_order` | string | No | Sort order: "ascending" or "descending" | #### Output [#output-4] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------- | | `contacts` | array | Array of matching contact objects | | ↳ `id` | string | Unique identifier for the contact | | ↳ `type` | string | Object type (contact) | | ↳ `role` | string | Role of the contact (user or lead) | | ↳ `email` | string | Email address of the contact | | ↳ `phone` | string | Phone number of the contact | | ↳ `name` | string | Name of the contact | | ↳ `avatar` | string | Avatar URL of the contact | | ↳ `owner_id` | string | ID of the admin assigned to this contact | | ↳ `external_id` | string | External identifier for the contact | | ↳ `created_at` | number | Unix timestamp when contact was created | | ↳ `updated_at` | number | Unix timestamp when contact was last updated | | ↳ `signed_up_at` | number | Unix timestamp when user signed up | | ↳ `last_seen_at` | number | Unix timestamp when user was last seen | | ↳ `workspace_id` | string | Workspace ID the contact belongs to | | ↳ `custom_attributes` | object | Custom attributes set on the contact | | ↳ `tags` | object | Tags associated with the contact | | ↳ `notes` | object | Notes associated with the contact | | ↳ `companies` | object | Companies associated with the contact | | ↳ `location` | object | Location information for the contact | | ↳ `social_profiles` | object | Social profiles of the contact | | ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | | `pages` | object | Pagination information | | ↳ `type` | string | Pages type identifier | | ↳ `page` | number | Current page number | | ↳ `per_page` | number | Number of results per page | | ↳ `total_pages` | number | Total number of pages | | `total_count` | number | Total number of matching contacts | ### Delete Contact from Intercom [#delete-contact-from-intercom] Delete a contact from Intercom by ID. Returns API-aligned fields only. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `contactId` | string | Yes | Contact ID to delete | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `id` | string | ID of deleted contact | | `deleted` | boolean | Whether the contact was deleted | ### Create Company in Intercom [#create-company-in-intercom] Create or update a company in Intercom #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `company_id` | string | Yes | Your unique identifier for the company | | `name` | string | No | The name of the company | | `website` | string | No | The company website | | `plan` | string | No | The company plan name | | `size` | number | No | The number of employees in the company | | `industry` | string | No | The industry the company operates in | | `monthly_spend` | number | No | How much revenue the company generates for your business. Note: This field truncates floats to whole integers (e.g., 155.98 becomes 155) | | `custom_attributes` | string | No | Custom attributes as JSON object | | `remote_created_at` | number | No | The time the company was created by you as a Unix timestamp | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------- | | `company` | object | Created or updated company object | | ↳ `id` | string | Unique identifier for the company | | ↳ `type` | string | Object type (company) | | ↳ `app_id` | string | Intercom app ID | | ↳ `company_id` | string | Your unique identifier for the company | | ↳ `name` | string | Name of the company | | ↳ `website` | string | Company website URL | | ↳ `plan` | object | Company plan information | | ↳ `size` | number | Number of employees | | ↳ `industry` | string | Industry the company operates in | | ↳ `monthly_spend` | number | Monthly revenue from this company | | ↳ `session_count` | number | Number of sessions | | ↳ `user_count` | number | Number of users in the company | | ↳ `created_at` | number | Unix timestamp when company was created | | ↳ `updated_at` | number | Unix timestamp when company was last updated | | ↳ `remote_created_at` | number | Unix timestamp when company was created by you | | ↳ `custom_attributes` | object | Custom attributes set on the company | | ↳ `tags` | object | Tags associated with the company | | ↳ `type` | string | Tag list type | | ↳ `tags` | array | Array of tag objects | | ↳ `segments` | object | Segments the company belongs to | | ↳ `type` | string | Segment list type | | ↳ `segments` | array | Array of segment objects | | `companyId` | string | ID of the created/updated company | ### Get Company from Intercom [#get-company-from-intercom] Retrieve a single company by ID from Intercom #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------- | | `companyId` | string | Yes | Company ID to retrieve | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------- | | `company` | object | Company object | | ↳ `id` | string | Unique identifier for the company | | ↳ `type` | string | Object type (company) | | ↳ `app_id` | string | Intercom app ID | | ↳ `company_id` | string | Your unique identifier for the company | | ↳ `name` | string | Name of the company | | ↳ `website` | string | Company website URL | | ↳ `plan` | object | Company plan information | | ↳ `size` | number | Number of employees | | ↳ `industry` | string | Industry the company operates in | | ↳ `monthly_spend` | number | Monthly revenue from this company | | ↳ `session_count` | number | Number of sessions | | ↳ `user_count` | number | Number of users in the company | | ↳ `created_at` | number | Unix timestamp when company was created | | ↳ `updated_at` | number | Unix timestamp when company was last updated | | ↳ `custom_attributes` | object | Custom attributes set on the company | | ↳ `tags` | object | Tags associated with the company | | ↳ `segments` | object | Segments the company belongs to | ### List Companies from Intercom [#list-companies-from-intercom] List all companies from Intercom with pagination support. Note: This endpoint has a limit of 10,000 companies that can be returned using pagination. For datasets larger than 10,000 companies, use the Scroll API instead. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `per_page` | number | No | Number of results per page | | `page` | number | No | Page number | | `starting_after` | string | No | Cursor for pagination (preferred over page-based pagination) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------- | | `companies` | array | Array of company objects | | ↳ `id` | string | Unique identifier for the company | | ↳ `type` | string | Object type (company) | | ↳ `app_id` | string | Intercom app ID | | ↳ `company_id` | string | Your unique identifier for the company | | ↳ `name` | string | Name of the company | | ↳ `website` | string | Company website URL | | ↳ `plan` | object | Company plan information | | ↳ `monthly_spend` | number | Monthly revenue from this company | | ↳ `session_count` | number | Number of sessions | | ↳ `user_count` | number | Number of users in the company | | ↳ `created_at` | number | Unix timestamp when company was created | | ↳ `updated_at` | number | Unix timestamp when company was last updated | | ↳ `custom_attributes` | object | Custom attributes set on the company | | ↳ `tags` | object | Tags associated with the company | | ↳ `segments` | object | Segments the company belongs to | | `pages` | object | Pagination information | | ↳ `type` | string | Pages type identifier | | ↳ `page` | number | Current page number | | ↳ `per_page` | number | Number of results per page | | ↳ `total_pages` | number | Total number of pages | | `total_count` | number | Total number of companies | | `success` | boolean | Operation success status | ### Get Conversation from Intercom [#get-conversation-from-intercom] Retrieve a single conversation by ID from Intercom #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation ID to retrieve | | `display_as` | string | No | Set to "plaintext" to retrieve messages in plain text | | `include_translations` | boolean | No | When true, conversation parts will be translated to the detected language of the conversation | #### Output [#output-9] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------- | | `conversation` | object | Conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `title` | string | Title of the conversation | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | ↳ `waiting_since` | number | Unix timestamp when waiting for reply | | ↳ `snoozed_until` | number | Unix timestamp when snooze ends | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `state` | string | State of the conversation | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `priority` | string | Priority of the conversation | | ↳ `admin_assignee_id` | number | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `tags` | object | Tags on the conversation | | ↳ `source` | object | Source of the conversation | | ↳ `contacts` | object | Contacts in the conversation | | ↳ `teammates` | object | Teammates in the conversation | | ↳ `conversation_parts` | object | Parts of the conversation | | ↳ `statistics` | object | Conversation statistics | | `success` | boolean | Operation success status | ### List Conversations from Intercom [#list-conversations-from-intercom] List all conversations from Intercom with pagination support #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------- | | `per_page` | number | No | Number of results per page (max: 150) | | `starting_after` | string | No | Cursor for pagination | | `sort` | string | No | Field to sort by (e.g., "waiting\_since", "updated\_at", "created\_at") | | `order` | string | No | Sort order: "asc" (ascending) or "desc" (descending) | #### Output [#output-10] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------- | | `conversations` | array | Array of conversation objects | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `title` | string | Title of the conversation | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | ↳ `waiting_since` | number | Unix timestamp when waiting for reply | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `state` | string | State of the conversation | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `priority` | string | Priority of the conversation | | ↳ `admin_assignee_id` | number | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `tags` | object | Tags on the conversation | | ↳ `source` | object | Source of the conversation | | ↳ `contacts` | object | Contacts in the conversation | | `pages` | object | Pagination information | | ↳ `type` | string | Pages type identifier | | ↳ `page` | number | Current page number | | ↳ `per_page` | number | Number of results per page | | ↳ `total_pages` | number | Total number of pages | | `total_count` | number | Total number of conversations | | `success` | boolean | Operation success status | ### Reply to Conversation in Intercom [#reply-to-conversation-in-intercom] Reply to a conversation as an admin in Intercom #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `conversationId` | string | Yes | Conversation ID to reply to | | `message_type` | string | Yes | Message type: "comment" or "note" | | `body` | string | Yes | The text body of the reply | | `admin_id` | string | No | The ID of the admin authoring the reply. If not provided, a default admin (Operator/Fin) will be used. | | `attachment_urls` | string | No | Comma-separated list of image URLs (max 10) | | `created_at` | number | No | Unix timestamp for when the reply was created. If not provided, current time is used. | #### Output [#output-11] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------- | | `conversation` | object | Updated conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `title` | string | Title of the conversation | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | ↳ `waiting_since` | number | Unix timestamp when waiting for reply | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `state` | string | State of the conversation | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `priority` | string | Priority of the conversation | | ↳ `admin_assignee_id` | number | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `tags` | object | Tags on the conversation | | ↳ `source` | object | Source of the conversation | | ↳ `contacts` | object | Contacts in the conversation | | ↳ `conversation_parts` | object | Parts of the conversation | | `conversationId` | string | ID of the conversation | | `success` | boolean | Operation success status | ### Search Conversations in Intercom [#search-conversations-in-intercom] Search for conversations in Intercom using a query. Returns API-aligned fields only. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------- | | `query` | string | Yes | Search query as JSON object | | `per_page` | number | No | Number of results per page (max: 150) | | `starting_after` | string | No | Cursor for pagination | | `sort_field` | string | No | Field to sort by (e.g., "created\_at", "updated\_at") | | `sort_order` | string | No | Sort order: "ascending" or "descending" | #### Output [#output-12] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------- | | `conversations` | array | Array of matching conversation objects | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `title` | string | Title of the conversation | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | ↳ `waiting_since` | number | Unix timestamp when waiting for reply | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `state` | string | State of the conversation | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `priority` | string | Priority of the conversation | | ↳ `admin_assignee_id` | number | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `tags` | object | Tags on the conversation | | ↳ `source` | object | Source of the conversation | | ↳ `contacts` | object | Contacts in the conversation | | `pages` | object | Pagination information | | ↳ `type` | string | Pages type identifier | | ↳ `page` | number | Current page number | | ↳ `per_page` | number | Number of results per page | | ↳ `total_pages` | number | Total number of pages | | `total_count` | number | Total number of matching conversations | | `success` | boolean | Operation success status | ### Create Ticket in Intercom [#create-ticket-in-intercom] Create a new ticket in Intercom. Returns API-aligned fields only. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `ticket_type_id` | string | Yes | The ID of the ticket type | | `contacts` | string | Yes | JSON array of contact identifiers (e.g., \[\{"id": "contact\_id"}]) | | `ticket_attributes` | string | Yes | JSON object with ticket attributes including *default\_title* and *default\_description* | | `company_id` | string | No | Company ID to associate the ticket with | | `created_at` | number | No | Unix timestamp for when the ticket was created. If not provided, current time is used. | | `conversation_to_link_id` | string | No | ID of an existing conversation to link to this ticket | | `disable_notifications` | boolean | No | When true, suppresses notifications when the ticket is created | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------- | | `ticket` | object | Created ticket object | | ↳ `id` | string | Unique identifier for the ticket | | ↳ `type` | string | Object type (ticket) | | ↳ `ticket_id` | string | Ticket ID | | ↳ `ticket_type` | object | Type of the ticket | | ↳ `ticket_attributes` | object | Attributes of the ticket | | ↳ `ticket_state` | string | State of the ticket | | ↳ `ticket_state_internal_label` | string | Internal label for ticket state | | ↳ `ticket_state_external_label` | string | External label for ticket state | | ↳ `created_at` | number | Unix timestamp when ticket was created | | ↳ `updated_at` | number | Unix timestamp when ticket was last updated | | ↳ `contacts` | object | Contacts associated with the ticket | | ↳ `admin_assignee_id` | string | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `is_shared` | boolean | Whether the ticket is shared | | ↳ `open` | boolean | Whether the ticket is open | | `ticketId` | string | ID of the created ticket | | `success` | boolean | Operation success status | ### Get Ticket from Intercom [#get-ticket-from-intercom] Retrieve a single ticket by ID from Intercom. Returns API-aligned fields only. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------- | | `ticketId` | string | Yes | Ticket ID to retrieve | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------- | | `ticket` | object | Ticket object | | ↳ `id` | string | Unique identifier for the ticket | | ↳ `type` | string | Object type (ticket) | | ↳ `ticket_id` | string | Ticket ID | | ↳ `ticket_type` | object | Type of the ticket | | ↳ `ticket_attributes` | object | Attributes of the ticket | | ↳ `ticket_state` | string | State of the ticket | | ↳ `ticket_state_internal_label` | string | Internal label for ticket state | | ↳ `ticket_state_external_label` | string | External label for ticket state | | ↳ `created_at` | number | Unix timestamp when ticket was created | | ↳ `updated_at` | number | Unix timestamp when ticket was last updated | | ↳ `contacts` | object | Contacts associated with the ticket | | ↳ `admin_assignee_id` | string | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `is_shared` | boolean | Whether the ticket is shared | | ↳ `open` | boolean | Whether the ticket is open | | `ticketId` | string | ID of the retrieved ticket | | `success` | boolean | Operation success status | ### Update Ticket in Intercom [#update-ticket-in-intercom] Update a ticket in Intercom (change state, assignment, attributes) #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `ticketId` | string | Yes | The ID of the ticket to update | | `ticket_attributes` | string | No | JSON object with ticket attributes (e.g., \{"*default\_title*":"New Title","*default\_description*":"Updated description"}) | | `open` | boolean | No | Set to false to close the ticket, true to keep it open | | `is_shared` | boolean | No | Whether the ticket is visible to users | | `snoozed_until` | number | No | Unix timestamp for when the ticket should reopen | | `admin_id` | string | No | The ID of the admin performing the update (needed for workflows and attribution) | | `assignee_id` | string | No | The ID of the admin or team to assign the ticket to. Set to "0" to unassign. | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------- | | `ticket` | object | The updated ticket object | | ↳ `id` | string | Unique identifier for the ticket | | ↳ `type` | string | Object type (ticket) | | ↳ `ticket_id` | string | Ticket ID shown in Intercom UI | | ↳ `ticket_state` | string | State of the ticket | | ↳ `ticket_attributes` | object | Attributes of the ticket | | ↳ `open` | boolean | Whether the ticket is open | | ↳ `is_shared` | boolean | Whether the ticket is visible to users | | ↳ `snoozed_until` | number | Unix timestamp when ticket will reopen | | ↳ `admin_assignee_id` | string | ID of assigned admin | | ↳ `team_assignee_id` | string | ID of assigned team | | ↳ `created_at` | number | Unix timestamp when ticket was created | | ↳ `updated_at` | number | Unix timestamp when ticket was last updated | | `ticketId` | string | ID of the updated ticket | | `ticket_state` | string | Current state of the ticket | ### Create Message in Intercom [#create-message-in-intercom] Create and send a new admin-initiated message in Intercom. Returns API-aligned fields only. #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `message_type` | string | Yes | Message type: "inapp" for in-app messages or "email" for email messages | | `template` | string | Yes | Message template style: "plain" for plain text or "personal" for personalized style | | `subject` | string | No | The subject of the message (for email type) | | `body` | string | Yes | The body of the message | | `from_type` | string | Yes | Sender type: "admin" | | `from_id` | string | Yes | The ID of the admin sending the message | | `to_type` | string | Yes | Recipient type: "contact" | | `to_id` | string | Yes | The ID of the contact receiving the message | | `created_at` | number | No | Unix timestamp for when the message was created. If not provided, current time is used. | #### Output [#output-16] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------- | | `message` | object | Created message object | | ↳ `id` | string | Unique identifier for the message | | ↳ `type` | string | Object type (message) | | ↳ `created_at` | number | Unix timestamp when message was created | | ↳ `body` | string | Body of the message | | ↳ `message_type` | string | Type of the message (in\_app or email) | | ↳ `conversation_id` | string | ID of the conversation created | | ↳ `owner` | object | Owner of the message | | `messageId` | string | ID of the created message | | `success` | boolean | Operation success status | ### List Admins from Intercom [#list-admins-from-intercom] Fetch a list of all admins for the workspace #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-17] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------- | | `admins` | array | Array of admin objects | | ↳ `id` | string | Unique identifier for the admin | | ↳ `type` | string | Object type (admin) | | ↳ `name` | string | Name of the admin | | ↳ `email` | string | Email of the admin | | ↳ `job_title` | string | Job title of the admin | | ↳ `away_mode_enabled` | boolean | Whether admin is in away mode | | ↳ `away_mode_reassign` | boolean | Whether to reassign conversations when away | | ↳ `has_inbox_seat` | boolean | Whether admin has a paid inbox seat | | ↳ `team_ids` | array | List of team IDs the admin belongs to | | ↳ `avatar` | object | Avatar information | | ↳ `email_verified` | boolean | Whether email is verified | | `type` | string | Object type (admin.list) | ### Close Conversation in Intercom [#close-conversation-in-intercom] Close a conversation in Intercom #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------- | | `conversationId` | string | Yes | The ID of the conversation to close | | `admin_id` | string | Yes | The ID of the admin performing the action | | `body` | string | No | Optional closing message to add to the conversation | #### Output [#output-18] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------- | | `conversation` | object | The closed conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `state` | string | State of the conversation (closed) | | ↳ `open` | boolean | Whether the conversation is open (false) | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | `conversationId` | string | ID of the closed conversation | | `state` | string | State of the conversation (closed) | ### Open Conversation in Intercom [#open-conversation-in-intercom] Open a closed or snoozed conversation in Intercom #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------- | | `conversationId` | string | Yes | The ID of the conversation to open | | `admin_id` | string | Yes | The ID of the admin performing the action | #### Output [#output-19] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------- | | `conversation` | object | The opened conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `state` | string | State of the conversation (open) | | ↳ `open` | boolean | Whether the conversation is open (true) | | ↳ `read` | boolean | Whether the conversation has been read | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | `conversationId` | string | ID of the opened conversation | | `state` | string | State of the conversation (open) | ### Snooze Conversation in Intercom [#snooze-conversation-in-intercom] Snooze a conversation to reopen at a future time #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------ | | `conversationId` | string | Yes | The ID of the conversation to snooze | | `admin_id` | string | Yes | The ID of the admin performing the action | | `snoozed_until` | number | Yes | Unix timestamp for when the conversation should reopen | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------- | | `conversation` | object | The snoozed conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `state` | string | State of the conversation (snoozed) | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `snoozed_until` | number | Unix timestamp when conversation will reopen | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | `conversationId` | string | ID of the snoozed conversation | | `state` | string | State of the conversation (snoozed) | | `snoozed_until` | number | Unix timestamp when conversation will reopen | ### Assign Conversation in Intercom [#assign-conversation-in-intercom] Assign a conversation to an admin or team in Intercom #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `conversationId` | string | Yes | The ID of the conversation to assign | | `admin_id` | string | Yes | The ID of the admin performing the assignment | | `assignee_id` | string | Yes | The ID of the admin or team to assign the conversation to. Set to "0" to unassign. | | `body` | string | No | Optional message to add when assigning (e.g., "Passing to the support team") | #### Output [#output-21] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------- | | `conversation` | object | The assigned conversation object | | ↳ `id` | string | Unique identifier for the conversation | | ↳ `type` | string | Object type (conversation) | | ↳ `state` | string | State of the conversation | | ↳ `open` | boolean | Whether the conversation is open | | ↳ `admin_assignee_id` | number | ID of the assigned admin | | ↳ `team_assignee_id` | string | ID of the assigned team | | ↳ `created_at` | number | Unix timestamp when conversation was created | | ↳ `updated_at` | number | Unix timestamp when conversation was last updated | | `conversationId` | string | ID of the assigned conversation | | `admin_assignee_id` | number | ID of the assigned admin | | `team_assignee_id` | string | ID of the assigned team | ### List Tags from Intercom [#list-tags-from-intercom] Fetch a list of all tags in the workspace #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `tags` | array | Array of tag objects | | ↳ `id` | string | Unique identifier for the tag | | ↳ `type` | string | Object type (tag) | | ↳ `name` | string | Name of the tag | | `type` | string | Object type (list) | ### Create Tag in Intercom [#create-tag-in-intercom] Create a new tag or update an existing tag name #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `name` | string | Yes | The name of the tag. Will create a new tag if not found, or update the name if id is provided. | | `id` | string | No | The ID of an existing tag to update. Omit to create a new tag. | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `id` | string | Unique identifier for the tag | | `name` | string | Name of the tag | | `type` | string | Object type (tag) | ### Tag Contact in Intercom [#tag-contact-in-intercom] Add a tag to a specific contact #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | `contactId` | string | Yes | The ID of the contact to tag | | `tagId` | string | Yes | The ID of the tag to apply | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `id` | string | Unique identifier for the tag | | `name` | string | Name of the tag | | `type` | string | Object type (tag) | ### Untag Contact in Intercom [#untag-contact-in-intercom] Remove a tag from a specific contact #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------ | | `contactId` | string | Yes | The ID of the contact to untag | | `tagId` | string | Yes | The ID of the tag to remove | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------- | | `id` | string | Unique identifier for the tag that was removed | | `name` | string | Name of the tag that was removed | | `type` | string | Object type (tag) | ### Tag Conversation in Intercom [#tag-conversation-in-intercom] Add a tag to a specific conversation #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------ | | `conversationId` | string | Yes | The ID of the conversation to tag | | `tagId` | string | Yes | The ID of the tag to apply | | `admin_id` | string | Yes | The ID of the admin applying the tag | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `id` | string | Unique identifier for the tag | | `name` | string | Name of the tag | | `type` | string | Object type (tag) | ### Create Note in Intercom [#create-note-in-intercom] Add a note to a specific contact #### Input [#input-27] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------- | | `contactId` | string | Yes | The ID of the contact to add the note to | | `body` | string | Yes | The text content of the note | | `admin_id` | string | No | The ID of the admin creating the note | #### Output [#output-27] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `id` | string | Unique identifier for the note | | `body` | string | The text content of the note | | `created_at` | number | Unix timestamp when the note was created | | `type` | string | Object type (note) | | `author` | object | The admin who created the note | | ↳ `type` | string | Author type (admin) | | ↳ `id` | string | Author ID | | ↳ `name` | string | Author name | | ↳ `email` | string | Author email | | `contact` | object | The contact the note was created for | | ↳ `type` | string | Contact type | | ↳ `id` | string | Contact ID | ### Create Event in Intercom [#create-event-in-intercom] Track a custom event for a contact in Intercom #### Input [#input-28] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `event_name` | string | Yes | The name of the event (e.g., "order-completed"). Use past-tense verb-noun format for readability. | | `created_at` | number | No | Unix timestamp for when the event occurred. Strongly recommended for uniqueness. | | `user_id` | string | No | Your identifier for the user (external\_id) | | `email` | string | No | Email address of the user. Use only if your app uses email to uniquely identify users. | | `id` | string | No | The Intercom contact ID | | `metadata` | string | No | JSON object with up to 10 metadata key-value pairs about the event (e.g., \{"order\_value": 99.99}) | #### Output [#output-28] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------- | | `accepted` | boolean | Whether the event was accepted (202 Accepted) | ### Attach Contact to Company in Intercom [#attach-contact-to-company-in-intercom] Attach a contact to a company in Intercom #### Input [#input-29] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------- | | `contactId` | string | Yes | The ID of the contact to attach to the company | | `companyId` | string | Yes | The ID of the company to attach the contact to | #### Output [#output-29] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------- | | `company` | object | The company object the contact was attached to | | ↳ `id` | string | Unique identifier for the company | | ↳ `type` | string | Object type (company) | | ↳ `company_id` | string | The company\_id you defined | | ↳ `name` | string | Name of the company | | ↳ `created_at` | number | Unix timestamp when company was created | | ↳ `updated_at` | number | Unix timestamp when company was updated | | ↳ `user_count` | number | Number of users in the company | | ↳ `session_count` | number | Number of sessions | | ↳ `monthly_spend` | number | Monthly spend amount | | ↳ `plan` | object | Company plan details | | `companyId` | string | ID of the company | | `name` | string | Name of the company | ### Detach Contact from Company in Intercom [#detach-contact-from-company-in-intercom] Remove a contact from a company in Intercom #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------ | | `contactId` | string | Yes | The ID of the contact to detach from the company | | `companyId` | string | Yes | The ID of the company to detach the contact from | #### Output [#output-30] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `company` | object | The company object the contact was detached from | | ↳ `id` | string | Unique identifier for the company | | ↳ `type` | string | Object type (company) | | ↳ `company_id` | string | The company\_id you defined | | ↳ `name` | string | Name of the company | | `companyId` | string | ID of the company | | `name` | string | Name of the company | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Intercom Contact Created [#intercom-contact-created] Trigger workflow when a new lead is created in Intercom #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-31] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the contact object. Access via data.item for contact details including id, role, email, name, phone, external\_id, custom\_attributes, location, avatar, tags, companies, and timestamps | *** ### Intercom Conversation Closed [#intercom-conversation-closed] Trigger workflow when a conversation is closed in Intercom #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-32] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source | *** ### Intercom Conversation Created [#intercom-conversation-created] Trigger workflow when a new conversation is created in Intercom #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-33] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source | *** ### Intercom Conversation Reply [#intercom-conversation-reply] Trigger workflow when someone replies to an Intercom conversation #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-34] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the conversation object. Access via data.item for conversation details including id, state, open, assignee, contacts, conversation\_parts, tags, and source | *** ### Intercom User Created [#intercom-user-created] Trigger workflow when a new user is created in Intercom #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-35] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the contact object. Access via data.item for contact details including id, role, email, name, phone, external\_id, custom\_attributes, location, avatar, tags, companies, and timestamps | *** ### Intercom Webhook (All Events) [#intercom-webhook-all-events] Trigger workflow on any Intercom webhook event #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Your app's Client Secret from the Developer Hub. Used to verify webhook authenticity via X-Hub-Signature. | #### Output [#output-36] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | | `topic` | string | The webhook topic (e.g., conversation.user.created) | | `id` | string | Unique notification ID | | `app_id` | string | Your Intercom app ID | | `created_at` | number | Unix timestamp when the event occurred | | `delivery_attempts` | number | Number of delivery attempts for this notification | | `first_sent_at` | number | Unix timestamp of first delivery attempt | | `data` | json | Event data containing the affected object. Access via data.item for the resource (conversation, contact, company, ticket, etc.) | --- # Microsoft Intune (/integrations/intune) ## Usage Instructions [#usage-instructions] Read managed device and detected application inventories, inspect compliance policy status and device configuration metadata, and request device sync, restart, remote lock, or retirement. Uses Microsoft Graph v1.0 with a work or school account and an active Intune tenant license. Remote actions depend on device platform and the connected administrator’s Intune permissions. ## Actions [#actions] ### Microsoft Intune List Devices [#microsoft-intune-list-devices] Read one page of devices from Microsoft Intune #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | | `filter` | string | No | OData filter, for example complianceState eq 'noncompliant'; ignored with nextLink | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `devices` | array | List Devices | | ↳ `id` | string | Intune managed device ID | | ↳ `deviceName` | string | Device name | | ↳ `managedDeviceOwnerType` | string | Ownership: company, personal, or unknown | | ↳ `managementState` | string | Current device management state | | ↳ `enrolledDateTime` | string | Enrollment time | | ↳ `lastSyncDateTime` | string | Last check-in time | | ↳ `operatingSystem` | string | Operating system | | ↳ `osVersion` | string | Operating system version | | ↳ `complianceState` | string | Device compliance state | | ↳ `isEncrypted` | boolean | Whether device storage is encrypted | | ↳ `userId` | string | Primary user ID | | ↳ `userPrincipalName` | string | Primary user principal name | | ↳ `userDisplayName` | string | Primary user display name | | ↳ `emailAddress` | string | User email address | | ↳ `azureADDeviceId` | string | Microsoft Entra device ID | | ↳ `serialNumber` | string | Device serial number | | ↳ `manufacturer` | string | Device manufacturer | | ↳ `model` | string | Device model | | ↳ `totalStorageSpaceInBytes` | number | Total storage capacity in bytes | | ↳ `freeStorageSpaceInBytes` | number | Available storage in bytes | ### Microsoft Intune Get Device [#microsoft-intune-get-device] Read device details from Microsoft Intune #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------ | | `managedDeviceId` | string | Yes | Intune managed device ID (not the Microsoft Entra device ID) | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ---------------------------------------- | | `device` | json | Get Device | | ↳ `id` | string | Intune managed device ID | | ↳ `deviceName` | string | Device name | | ↳ `managedDeviceOwnerType` | string | Ownership: company, personal, or unknown | | ↳ `managementState` | string | Current device management state | | ↳ `enrolledDateTime` | string | Enrollment time | | ↳ `lastSyncDateTime` | string | Last check-in time | | ↳ `operatingSystem` | string | Operating system | | ↳ `osVersion` | string | Operating system version | | ↳ `complianceState` | string | Device compliance state | | ↳ `isEncrypted` | boolean | Whether device storage is encrypted | | ↳ `userId` | string | Primary user ID | | ↳ `userPrincipalName` | string | Primary user principal name | | ↳ `userDisplayName` | string | Primary user display name | | ↳ `emailAddress` | string | User email address | | ↳ `azureADDeviceId` | string | Microsoft Entra device ID | | ↳ `serialNumber` | string | Device serial number | | ↳ `manufacturer` | string | Device manufacturer | | ↳ `model` | string | Device model | | ↳ `totalStorageSpaceInBytes` | number | Total storage capacity in bytes | | ↳ `freeStorageSpaceInBytes` | number | Available storage in bytes | ### Microsoft Intune List Detected Apps [#microsoft-intune-list-detected-apps] Read one page of detected apps from Microsoft Intune #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `apps` | array | List Detected Apps | | ↳ `id` | string | Detected application ID | | ↳ `displayName` | string | Application display name | | ↳ `version` | string | Application version | | ↳ `sizeInByte` | number | Application size in bytes | | ↳ `deviceCount` | number | Number of devices with this application | | ↳ `publisher` | string | Application publisher | | ↳ `platform` | string | Application platform | ### Microsoft Intune Get Detected App [#microsoft-intune-get-detected-app] Read detected app details from Microsoft Intune #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------- | | `detectedAppId` | string | Yes | Detected application ID | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `app` | json | Get Detected App | | ↳ `id` | string | Detected application ID | | ↳ `displayName` | string | Application display name | | ↳ `version` | string | Application version | | ↳ `sizeInByte` | number | Application size in bytes | | ↳ `deviceCount` | number | Number of devices with this application | | ↳ `publisher` | string | Application publisher | | ↳ `platform` | string | Application platform | ### Microsoft Intune List App Devices [#microsoft-intune-list-app-devices] Read one page of managed devices that have a detected application installed #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | | `detectedAppId` | string | Yes | Detected application ID | #### Output [#output-4] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `devices` | array | List App Devices | | ↳ `id` | string | Intune managed device ID | | ↳ `deviceName` | string | Device name | | ↳ `managedDeviceOwnerType` | string | Ownership: company, personal, or unknown | | ↳ `managementState` | string | Current device management state | | ↳ `enrolledDateTime` | string | Enrollment time | | ↳ `lastSyncDateTime` | string | Last check-in time | | ↳ `operatingSystem` | string | Operating system | | ↳ `osVersion` | string | Operating system version | | ↳ `complianceState` | string | Device compliance state | | ↳ `isEncrypted` | boolean | Whether device storage is encrypted | | ↳ `userId` | string | Primary user ID | | ↳ `userPrincipalName` | string | Primary user principal name | | ↳ `userDisplayName` | string | Primary user display name | | ↳ `emailAddress` | string | User email address | | ↳ `azureADDeviceId` | string | Microsoft Entra device ID | | ↳ `serialNumber` | string | Device serial number | | ↳ `manufacturer` | string | Device manufacturer | | ↳ `model` | string | Device model | | ↳ `totalStorageSpaceInBytes` | number | Total storage capacity in bytes | | ↳ `freeStorageSpaceInBytes` | number | Available storage in bytes | ### Microsoft Intune List Compliance Policies [#microsoft-intune-list-compliance-policies] Read one page of compliance policies from Microsoft Intune #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `policies` | array | List Compliance Policies | | ↳ `id` | string | Policy or configuration ID | | ↳ `displayName` | string | Policy or configuration name | | ↳ `description` | string | Administrator-provided description | | ↳ `createdDateTime` | string | Creation time | | ↳ `lastModifiedDateTime` | string | Last modification time | | ↳ `version` | number | Policy or configuration version | ### Microsoft Intune Get Compliance Policy [#microsoft-intune-get-compliance-policy] Read common metadata for an Intune compliance policy #### Input [#input-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------- | | `compliancePolicyId` | string | Yes | Device compliance policy ID | #### Output [#output-6] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------- | | `policy` | json | Get Compliance Policy | | ↳ `id` | string | Policy or configuration ID | | ↳ `displayName` | string | Policy or configuration name | | ↳ `description` | string | Administrator-provided description | | ↳ `createdDateTime` | string | Creation time | | ↳ `lastModifiedDateTime` | string | Last modification time | | ↳ `version` | number | Policy or configuration version | ### Microsoft Intune List Compliance Policy Device Statuses [#microsoft-intune-list-compliance-policy-device-statuses] Read one page of compliance policy device statuses from Microsoft Intune #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | | `compliancePolicyId` | string | Yes | Device compliance policy ID | #### Output [#output-7] | Parameter | Type | Description | | ------------------------------------------- | ------ | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `deviceStatuses` | array | List Compliance Policy Device Statuses | | ↳ `id` | string | Device status record ID | | ↳ `deviceDisplayName` | string | Device display name | | ↳ `userName` | string | User name | | ↳ `deviceModel` | string | Device model | | ↳ `status` | string | Reported compliance status | | ↳ `lastReportedDateTime` | string | Last status report time | | ↳ `userPrincipalName` | string | User principal name | | ↳ `complianceGracePeriodExpirationDateTime` | string | Compliance grace period expiration | ### Microsoft Intune List Device Configurations [#microsoft-intune-list-device-configurations] Read one page of device configurations from Microsoft Intune #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------- | | `top` | number | No | Requested page size from 1 to 1000 (default: 100); ignored with nextLink | | `nextLink` | string | No | The nextLink from the previous response for this same operation and resource | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------------------------------------- | | `nextLink` | string | Continuation URL for the next page; null when this is the final page | | `configurations` | array | List Device Configurations | | ↳ `id` | string | Policy or configuration ID | | ↳ `displayName` | string | Policy or configuration name | | ↳ `description` | string | Administrator-provided description | | ↳ `createdDateTime` | string | Creation time | | ↳ `lastModifiedDateTime` | string | Last modification time | | ↳ `version` | number | Policy or configuration version | ### Microsoft Intune Get Device Configuration [#microsoft-intune-get-device-configuration] Read common metadata for an Intune device configuration #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------- | | `configurationId` | string | Yes | Device configuration ID | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------- | | `configuration` | json | Get Device Configuration | | ↳ `id` | string | Policy or configuration ID | | ↳ `displayName` | string | Policy or configuration name | | ↳ `description` | string | Administrator-provided description | | ↳ `createdDateTime` | string | Creation time | | ↳ `lastModifiedDateTime` | string | Last modification time | | ↳ `version` | number | Policy or configuration version | ### Microsoft Intune Sync Device [#microsoft-intune-sync-device] Request a device check-in to receive pending Intune policies and actions #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------ | | `managedDeviceId` | string | Yes | Intune managed device ID (not the Microsoft Entra device ID) | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------------------------------ | | `accepted` | boolean | Microsoft Intune accepted the request; device completion is asynchronous | ### Microsoft Intune Reboot Device [#microsoft-intune-reboot-device] Request a device restart after explicit confirmation; may interrupt the signed-in user #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `managedDeviceId` | string | Yes | Intune managed device ID (not the Microsoft Entra device ID) | | `confirmAction` | boolean | Yes | Explicit user confirmation to perform this disruptive device action | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------------------------------ | | `accepted` | boolean | Microsoft Intune accepted the request; device completion is asynchronous | ### Microsoft Intune Remote Lock Device [#microsoft-intune-remote-lock-device] Request a remote device lock after explicit confirmation on supported platforms #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `managedDeviceId` | string | Yes | Intune managed device ID (not the Microsoft Entra device ID) | | `confirmAction` | boolean | Yes | Explicit user confirmation to perform this disruptive device action | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------------------------------ | | `accepted` | boolean | Microsoft Intune accepted the request; device completion is asynchronous | ### Microsoft Intune Retire Device [#microsoft-intune-retire-device] Retire a device after explicit confirmation, removing company data and management #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------- | | `managedDeviceId` | string | Yes | Intune managed device ID (not the Microsoft Entra device ID) | | `confirmAction` | boolean | Yes | Explicit user confirmation to perform this disruptive device action | #### Output [#output-13] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------------------------------ | | `accepted` | boolean | Microsoft Intune accepted the request; device completion is asynchronous | --- # Jina (/integrations/jina) {/* MANUAL-CONTENT-START:intro */} Use [Jina AI](https://jina.ai/) Reader to extract content from a URL, or Search to retrieve web results. Configure the parsing and output-format options for the content your downstream blocks need. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Jina AI into the workflow. Search the web and get LLM-friendly results, or extract clean content from specific URLs with advanced parsing options. ## Actions [#actions] ### Jina Reader [#jina-reader] Extract and process web content into clean, LLM-friendly text using Jina AI Reader. Supports advanced content parsing, link gathering, and multiple output formats with configurable processing options. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `url` | string | Yes | The URL to read and convert to markdown (e.g., "[https://example.com/page](https://example.com/page)") | | `useReaderLMv2` | boolean | No | Whether to use ReaderLM-v2 for better quality (3x token cost) | | `gatherLinks` | boolean | No | Whether to gather all links at the end | | `jsonResponse` | boolean | No | Whether to return response in JSON format | | `apiKey` | string | Yes | Your Jina AI API key | | `withImagesummary` | boolean | No | Gather all images from the page with metadata | | `retainImages` | string | No | Control image inclusion: "none" removes all, "all" keeps all | | `returnFormat` | string | No | Output format: markdown, html, text, screenshot, or pageshot | | `withIframe` | boolean | No | Include iframe content in extraction | | `withShadowDom` | boolean | No | Extract Shadow DOM content | | `noCache` | boolean | No | Bypass cached content for real-time retrieval | | `withGeneratedAlt` | boolean | No | Generate alt text for images using VLM | | `robotsTxt` | string | No | Bot User-Agent for robots.txt checking | | `dnt` | boolean | No | Do Not Track - prevents caching/tracking | | `noGfm` | boolean | No | Disable GitHub Flavored Markdown | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------------- | | `content` | string | The extracted content from the URL, processed into clean, LLM-friendly text | | `tokensUsed` | number | Number of Jina tokens consumed by this request | ### Jina Search [#jina-search] Search the web and return top 5 results with LLM-friendly content. Each result is automatically processed through Jina Reader API. Supports geographic filtering, site restrictions, and pagination. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `q` | string | Yes | Search query string (e.g., "machine learning tutorials") | | `apiKey` | string | Yes | Your Jina AI API key | | `num` | number | No | Maximum number of results per page (default: 5) | | `site` | string | No | Restrict results to specific domain(s). Can be comma-separated for multiple sites (e.g., "jina.ai,github.com") | | `withFavicon` | boolean | No | Include website favicons in results | | `withImagesummary` | boolean | No | Gather all images from result pages with metadata | | `withLinksummary` | boolean | No | Gather all links from result pages | | `retainImages` | string | No | Control image inclusion: "none" removes all, "all" keeps all | | `noCache` | boolean | No | Bypass cached content for real-time retrieval | | `withGeneratedAlt` | boolean | No | Generate alt text for images using VLM | | `respondWith` | string | No | Set to "no-content" to get only metadata without page content | | `returnFormat` | string | No | Output format: markdown, html, text, screenshot, or pageshot | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------ | | `results` | array | Array of search results, each containing title, description, url, and LLM-friendly content | | ↳ `title` | string | Page title | | ↳ `description` | string | Page description or meta description | | ↳ `url` | string | Page URL | | ↳ `content` | string | LLM-friendly extracted content | | ↳ `usage` | object | Token usage information | | ↳ `tokens` | number | Number of tokens consumed by this request | | `tokensUsed` | number | Number of Jina tokens consumed by this request | --- # Jira (/integrations/jira) {/* MANUAL-CONTENT-START:intro */} [Jira](https://www.atlassian.com/jira) is a leading project management and issue tracking platform from Atlassian that helps teams plan, track, and manage agile software development projects. Jira supports Scrum and Kanban methodologies with customizable boards, workflows, and advanced reporting. With the Jira integration in Agent Serve, you can: * **Manage issues**: Create, retrieve, update, delete, and bulk-read issues in your Jira projects * **Transition issues**: Move issues through workflow stages programmatically * **Assign issues**: Set or change issue assignees * **Search issues**: Use JQL (Jira Query Language) to find and filter issues * **Manage comments**: Add, retrieve, update, and delete comments on issues * **Handle attachments**: Upload, retrieve, and delete file attachments on issues * **Track work**: Add, retrieve, update, and delete worklogs for time tracking * **Link issues**: Create and delete issue links to establish relationships between issues * **Manage watchers**: Add or remove watchers from issues * **Access users**: Retrieve user information from your Jira instance In Agent Serve, the Jira integration enables your agents to interact with your project management workflow as part of automated processes. Agents can create issues from external triggers, update statuses, track progress, and manage project data—enabling intelligent project management automation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Jira into the workflow. Can read, write, and update issues. Can also trigger workflows based on Jira webhook events. ## Actions [#actions] ### Jira Retrieve [#jira-retrieve] Retrieve detailed information about a specific Jira issue #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to retrieve (e.g., PROJ-123) | | `includeAttachments` | boolean | No | Download attachment file contents and include them as files in the output | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Issue ID | | `key` | string | Issue key (e.g., PROJ-123) | | `self` | string | REST API URL for this issue | | `summary` | string | Issue summary | | `description` | string | Issue description text (extracted from ADF) | | `status` | object | Issue status | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name (e.g., Open, In Progress, Done) | | ↳ `description` | string | Status description | | ↳ `statusCategory` | object | Status category grouping | | ↳ `id` | number | Status category ID | | ↳ `key` | string | Status category key (e.g., new, indeterminate, done) | | ↳ `name` | string | Status category name (e.g., To Do, In Progress, Done) | | ↳ `colorName` | string | Status category color (e.g., blue-gray, yellow, green) | | `statusName` | string | Issue status name (e.g., Open, In Progress, Done) | | `issuetype` | object | Issue type | | ↳ `id` | string | Issue type ID | | ↳ `name` | string | Issue type name (e.g., Task, Bug, Story, Epic) | | ↳ `description` | string | Issue type description | | ↳ `subtask` | boolean | Whether this is a subtask type | | ↳ `iconUrl` | string | URL to the issue type icon | | `project` | object | Project the issue belongs to | | ↳ `id` | string | Project ID | | ↳ `key` | string | Project key (e.g., PROJ) | | ↳ `name` | string | Project name | | ↳ `projectTypeKey` | string | Project type key (e.g., software, business) | | `priority` | object | Issue priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name (e.g., Highest, High, Medium, Low, Lowest) | | ↳ `iconUrl` | string | URL to the priority icon | | `assignee` | object | Assigned user | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `assigneeName` | string | Assignee display name or account ID | | `reporter` | object | Reporter user | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `creator` | object | Issue creator | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `labels` | array | Issue labels | | `components` | array | Issue components | | ↳ `id` | string | Component ID | | ↳ `name` | string | Component name | | ↳ `description` | string | Component description | | `fixVersions` | array | Fix versions | | ↳ `id` | string | Version ID | | ↳ `name` | string | Version name | | ↳ `released` | boolean | Whether the version is released | | ↳ `releaseDate` | string | Release date (YYYY-MM-DD) | | `resolution` | object | Issue resolution | | ↳ `id` | string | Resolution ID | | ↳ `name` | string | Resolution name (e.g., Fixed, Duplicate, Won't Fix) | | ↳ `description` | string | Resolution description | | `duedate` | string | Due date (YYYY-MM-DD) | | `created` | string | ISO 8601 timestamp when the issue was created | | `updated` | string | ISO 8601 timestamp when the issue was last updated | | `resolutiondate` | string | ISO 8601 timestamp when the issue was resolved | | `timetracking` | object | Time tracking information | | ↳ `originalEstimate` | string | Original estimate in human-readable format (e.g., 1w 2d) | | ↳ `remainingEstimate` | string | Remaining estimate in human-readable format | | ↳ `timeSpent` | string | Time spent in human-readable format | | ↳ `originalEstimateSeconds` | number | Original estimate in seconds | | ↳ `remainingEstimateSeconds` | number | Remaining estimate in seconds | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | `parent` | object | Parent issue (for subtasks) | | ↳ `id` | string | Parent issue ID | | ↳ `key` | string | Parent issue key | | ↳ `summary` | string | Parent issue summary | | `issuelinks` | array | Linked issues | | ↳ `id` | string | Issue link ID | | ↳ `type` | object | Link type information | | ↳ `id` | string | Link type ID | | ↳ `name` | string | Link type name (e.g., Blocks, Relates) | | ↳ `inward` | string | Inward description (e.g., is blocked by) | | ↳ `outward` | string | Outward description (e.g., blocks) | | ↳ `inwardIssue` | object | Inward linked issue | | ↳ `id` | string | Issue ID | | ↳ `key` | string | Issue key | | ↳ `statusName` | string | Issue status name | | ↳ `summary` | string | Issue summary | | ↳ `outwardIssue` | object | Outward linked issue | | ↳ `id` | string | Issue ID | | ↳ `key` | string | Issue key | | ↳ `statusName` | string | Issue status name | | ↳ `summary` | string | Issue summary | | `subtasks` | array | Subtask issues | | ↳ `id` | string | Subtask issue ID | | ↳ `key` | string | Subtask issue key | | ↳ `summary` | string | Subtask summary | | ↳ `statusName` | string | Subtask status name | | ↳ `issueTypeName` | string | Subtask issue type name | | `votes` | object | Vote information | | ↳ `votes` | number | Number of votes | | ↳ `hasVoted` | boolean | Whether the current user has voted | | `watches` | object | Watch information | | ↳ `watchCount` | number | Number of watchers | | ↳ `isWatching` | boolean | Whether the current user is watching | | `comments` | array | Issue comments (fetched separately) | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment body text (extracted from ADF) | | ↳ `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Comment author display name | | ↳ `updateAuthor` | object | User who last updated the comment | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `created` | string | ISO 8601 timestamp when the comment was created | | ↳ `updated` | string | ISO 8601 timestamp when the comment was last updated | | ↳ `visibility` | object | Comment visibility restriction | | ↳ `type` | string | Restriction type (e.g., role, group) | | ↳ `value` | string | Restriction value (e.g., Administrators) | | `worklogs` | array | Issue worklogs (fetched separately) | | ↳ `id` | string | Worklog ID | | ↳ `author` | object | Worklog author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Worklog author display name | | ↳ `updateAuthor` | object | User who last updated the worklog | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `comment` | string | Worklog comment text | | ↳ `started` | string | ISO 8601 timestamp when the work started | | ↳ `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `created` | string | ISO 8601 timestamp when the worklog was created | | ↳ `updated` | string | ISO 8601 timestamp when the worklog was last updated | | `attachments` | array | Issue attachments | | ↳ `id` | string | Attachment ID | | ↳ `filename` | string | Attachment file name | | ↳ `mimeType` | string | MIME type of the attachment | | ↳ `size` | number | File size in bytes | | ↳ `content` | string | URL to download the attachment content | | ↳ `thumbnail` | string | URL to the attachment thumbnail | | ↳ `author` | object | Attachment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Attachment author display name | | ↳ `created` | string | ISO 8601 timestamp when the attachment was created | | `issueKey` | string | Issue key (e.g., PROJ-123) | | `issue` | json | Complete raw Jira issue object from the API | | `files` | file\[] | Downloaded attachment files (only when includeAttachments is true) | ### Jira Update [#jira-update] Update a Jira issue #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to update (e.g., PROJ-123) | | `summary` | string | No | New summary for the issue | | `description` | string | No | New description for the issue. Accepts plain text (auto-wrapped in ADF) or a raw ADF document object | | `priority` | string | No | New priority ID or name for the issue (e.g., "High") | | `assignee` | string | No | New assignee account ID for the issue | | `labels` | json | No | Labels to set on the issue (array of label name strings) | | `components` | json | No | Components to set on the issue (array of component name strings) | | `duedate` | string | No | Due date for the issue (format: YYYY-MM-DD) | | `fixVersions` | json | No | Fix versions to set (array of version name strings) | | `environment` | string | No | Environment information for the issue | | `customFieldId` | string | No | Custom field ID to update (e.g., customfield\_10001) | | `customFieldValue` | string | No | Value for the custom field | | `notifyUsers` | boolean | No | Whether to send email notifications about this update (default: true) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Updated issue key (e.g., PROJ-123) | | `summary` | string | Issue summary after update | ### Jira Write [#jira-write] Create a new Jira issue #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `projectId` | string | Yes | Jira project key (e.g., PROJ) | | `summary` | string | Yes | Summary for the issue | | `description` | string | No | Description for the issue. Accepts plain text (auto-wrapped in ADF) or a raw ADF document object | | `priority` | string | No | Priority ID or name for the issue (e.g., "10000" or "High") | | `assignee` | string | No | Assignee account ID for the issue | | `issueType` | string | Yes | Type of issue to create (e.g., Task, Story, Bug, Epic, Sub-task) | | `parent` | json | No | Parent issue key for creating subtasks (e.g., \{ "key": "PROJ-123" }) | | `labels` | array | No | Labels for the issue (array of label names) | | `components` | array | No | Components for the issue (array of component names) | | `duedate` | string | No | Due date for the issue (format: YYYY-MM-DD) | | `fixVersions` | array | No | Fix versions for the issue (array of version names) | | `reporter` | string | No | Reporter account ID for the issue | | `environment` | string | No | Environment information for the issue | | `customFieldId` | string | No | Custom field ID (e.g., customfield\_10001) | | `customFieldValue` | string | No | Value for the custom field | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Created issue ID | | `issueKey` | string | Created issue key (e.g., PROJ-123) | | `self` | string | REST API URL for the created issue | | `summary` | string | Issue summary | | `success` | boolean | Whether the issue was created successfully | | `url` | string | URL to the created issue in Jira | | `assigneeId` | string | Account ID of the assigned user (null if no assignee was set) | ### Jira Bulk Read [#jira-bulk-read] Retrieve multiple Jira issues from a project in bulk #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `projectId` | string | Yes | Jira project key (e.g., PROJ) | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `total` | number | Total number of issues in the project (may not always be available) | | `issues` | array | Array of Jira issues | | ↳ `id` | string | Issue ID | | ↳ `key` | string | Issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `summary` | string | Issue summary | | ↳ `description` | string | Issue description text | | ↳ `status` | object | Issue status | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | | ↳ `issuetype` | object | Issue type | | ↳ `id` | string | Issue type ID | | ↳ `name` | string | Issue type name | | ↳ `priority` | object | Issue priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name | | ↳ `assignee` | object | Assigned user | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Display name | | ↳ `created` | string | ISO 8601 creation timestamp | | ↳ `updated` | string | ISO 8601 last updated timestamp | | `nextPageToken` | string | Cursor token for the next page. Null when no more results. | | `isLast` | boolean | Whether this is the last page of results | ### Jira Delete Issue [#jira-delete-issue] Delete a Jira issue #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to delete (e.g., PROJ-123) | | `deleteSubtasks` | boolean | No | Whether to delete subtasks. If false, parent issues with subtasks cannot be deleted. | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Deleted issue key | ### Jira Assign Issue [#jira-assign-issue] Assign a Jira issue to a user #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to assign (e.g., PROJ-123) | | `accountId` | string | Yes | Account ID of the user to assign the issue to. Use "-1" for automatic assignment, or leave empty / pass "null" to unassign. | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key that was assigned | | `assigneeId` | string | Account ID of the assignee (use "-1" for auto-assign, null to unassign) | ### Jira Transition Issue [#jira-transition-issue] Move a Jira issue between workflow statuses (e.g., To Do -> In Progress) #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to transition (e.g., PROJ-123) | | `transitionId` | string | Yes | ID of the transition to execute (e.g., "11" for "To Do", "21" for "In Progress") | | `comment` | string | No | Optional comment to add when transitioning the issue | | `resolution` | string | No | Resolution name to set during transition (e.g., "Fixed", "Won't Fix") | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key that was transitioned | | `transitionId` | string | Applied transition ID | | `transitionName` | string | Applied transition name | | `toStatus` | object | Target status after transition | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name | ### Jira Search Issues [#jira-search-issues] Search for Jira issues using JQL (Jira Query Language) #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `jql` | string | Yes | JQL query string to search for issues (e.g., "project = PROJ AND status = Open") | | `nextPageToken` | string | No | Cursor token for the next page of results. Omit for the first page. | | `maxResults` | number | No | Maximum number of results to return per page (default: 50) | | `fields` | array | No | Array of field names to return (default: all fields). | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issues` | array | Array of matching issues | | ↳ `id` | string | Issue ID | | ↳ `key` | string | Issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `summary` | string | Issue summary | | ↳ `description` | string | Issue description text (extracted from ADF) | | ↳ `status` | object | Issue status | | ↳ `id` | string | Status ID | | ↳ `name` | string | Status name (e.g., Open, In Progress, Done) | | ↳ `description` | string | Status description | | ↳ `statusCategory` | object | Status category grouping | | ↳ `id` | number | Status category ID | | ↳ `key` | string | Status category key (e.g., new, indeterminate, done) | | ↳ `name` | string | Status category name (e.g., To Do, In Progress, Done) | | ↳ `colorName` | string | Status category color (e.g., blue-gray, yellow, green) | | ↳ `statusName` | string | Issue status name (e.g., Open, In Progress, Done) | | ↳ `issuetype` | object | Issue type | | ↳ `id` | string | Issue type ID | | ↳ `name` | string | Issue type name (e.g., Task, Bug, Story, Epic) | | ↳ `description` | string | Issue type description | | ↳ `subtask` | boolean | Whether this is a subtask type | | ↳ `iconUrl` | string | URL to the issue type icon | | ↳ `project` | object | Project the issue belongs to | | ↳ `id` | string | Project ID | | ↳ `key` | string | Project key (e.g., PROJ) | | ↳ `name` | string | Project name | | ↳ `projectTypeKey` | string | Project type key (e.g., software, business) | | ↳ `priority` | object | Issue priority | | ↳ `id` | string | Priority ID | | ↳ `name` | string | Priority name (e.g., Highest, High, Medium, Low, Lowest) | | ↳ `iconUrl` | string | URL to the priority icon | | ↳ `assignee` | object | Assigned user | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `assigneeName` | string | Assignee display name or account ID | | ↳ `reporter` | object | Reporter user | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `labels` | array | Issue labels | | ↳ `components` | array | Issue components | | ↳ `id` | string | Component ID | | ↳ `name` | string | Component name | | ↳ `description` | string | Component description | | ↳ `resolution` | object | Issue resolution | | ↳ `id` | string | Resolution ID | | ↳ `name` | string | Resolution name (e.g., Fixed, Duplicate, Won't Fix) | | ↳ `description` | string | Resolution description | | ↳ `duedate` | string | Due date (YYYY-MM-DD) | | ↳ `created` | string | ISO 8601 timestamp when the issue was created | | ↳ `updated` | string | ISO 8601 timestamp when the issue was last updated | | `nextPageToken` | string | Cursor token for the next page. Null when no more results. | | `isLast` | boolean | Whether this is the last page of results | | `total` | number | Always null. The Jira /search/jql endpoint does not return a total count; use isLast and nextPageToken for pagination. | ### Jira Add Comment [#jira-add-comment] Add a comment to a Jira issue #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to add comment to (e.g., PROJ-123) | | `body` | string | Yes | Comment body text | | `visibility` | json | No | Restrict comment visibility. Object with "type" ("role" or "group") and "value" (role/group name). | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key the comment was added to | | `commentId` | string | Created comment ID | | `body` | string | Comment text content | | `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `created` | string | ISO 8601 timestamp when the comment was created | | `updated` | string | ISO 8601 timestamp when the comment was last updated | ### Jira Get Comments [#jira-get-comments] Get all comments from a Jira issue #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to get comments from (e.g., PROJ-123) | | `startAt` | number | No | Index of the first comment to return (default: 0) | | `maxResults` | number | No | Maximum number of comments to return (default: 50) | | `orderBy` | string | No | Sort order for comments: "-created" for newest first, "created" for oldest first | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issueKey` | string | Issue key | | `total` | number | Total number of comments | | `startAt` | number | Pagination start index | | `maxResults` | number | Maximum results per page | | `comments` | array | Array of comments | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment body text (extracted from ADF) | | ↳ `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Comment author display name | | ↳ `updateAuthor` | object | User who last updated the comment | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `created` | string | ISO 8601 timestamp when the comment was created | | ↳ `updated` | string | ISO 8601 timestamp when the comment was last updated | | ↳ `visibility` | object | Comment visibility restriction | | ↳ `type` | string | Restriction type (e.g., role, group) | | ↳ `value` | string | Restriction value (e.g., Administrators) | ### Jira Update Comment [#jira-update-comment] Update an existing comment on a Jira issue #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key containing the comment (e.g., PROJ-123) | | `commentId` | string | Yes | ID of the comment to update | | `body` | string | Yes | Updated comment text | | `visibility` | json | No | Restrict comment visibility. Object with "type" ("role" or "group") and "value" (role/group name). | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `commentId` | string | Updated comment ID | | `body` | string | Updated comment text | | `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `created` | string | ISO 8601 timestamp when the comment was created | | `updated` | string | ISO 8601 timestamp when the comment was last updated | ### Jira Delete Comment [#jira-delete-comment] Delete a comment from a Jira issue #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key containing the comment (e.g., PROJ-123) | | `commentId` | string | Yes | ID of the comment to delete | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `commentId` | string | Deleted comment ID | ### Jira Get Attachments [#jira-get-attachments] Get all attachments from a Jira issue #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to get attachments from (e.g., PROJ-123) | | `includeAttachments` | boolean | No | Download attachment file contents and include them as files in the output | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------------ | | `ts` | string | ISO 8601 timestamp of the operation | | `issueKey` | string | Issue key | | `attachments` | array | Array of attachments | | ↳ `id` | string | Attachment ID | | ↳ `filename` | string | Attachment file name | | ↳ `mimeType` | string | MIME type of the attachment | | ↳ `size` | number | File size in bytes | | ↳ `content` | string | URL to download the attachment content | | ↳ `thumbnail` | string | URL to the attachment thumbnail | | ↳ `author` | object | Attachment author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Attachment author display name | | ↳ `created` | string | ISO 8601 timestamp when the attachment was created | | `files` | file\[] | Downloaded attachment files (only when includeAttachments is true) | ### Jira Add Attachment [#jira-add-attachment] Add attachments to a Jira issue #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to add attachments to (e.g., PROJ-123) | | `files` | file\[] | Yes | Files to attach to the Jira issue | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issueKey` | string | Issue key | | `attachments` | array | Uploaded attachments | | ↳ `id` | string | Attachment ID | | ↳ `filename` | string | Attachment file name | | ↳ `mimeType` | string | MIME type | | ↳ `size` | number | File size in bytes | | ↳ `content` | string | URL to download the attachment | | `attachmentIds` | array | Array of attachment IDs | | `files` | file\[] | Uploaded attachment files | ### Jira Delete Attachment [#jira-delete-attachment] Delete an attachment from a Jira issue #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `attachmentId` | string | Yes | ID of the attachment to delete | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `attachmentId` | string | Deleted attachment ID | ### Jira Add Worklog [#jira-add-worklog] Add a time tracking worklog entry to a Jira issue #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to add worklog to (e.g., PROJ-123) | | `timeSpentSeconds` | number | Yes | Time spent in seconds | | `comment` | string | No | Optional comment for the worklog entry | | `started` | string | No | Optional start time in ISO format (defaults to current time) | | `visibility` | json | No | Restrict worklog visibility. Object with "type" ("role" or "group") and "value" (role/group name). | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key the worklog was added to | | `worklogId` | string | Created worklog ID | | `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) | | `timeSpentSeconds` | number | Time spent in seconds | | `author` | object | Worklog author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `started` | string | ISO 8601 timestamp when the work started | | `created` | string | ISO 8601 timestamp when the worklog was created | ### Jira Get Worklogs [#jira-get-worklogs] Get all worklog entries from a Jira issue #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to get worklogs from (e.g., PROJ-123) | | `startAt` | number | No | Index of the first worklog to return (default: 0) | | `maxResults` | number | No | Maximum number of worklogs to return (default: 50) | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issueKey` | string | Issue key | | `total` | number | Total number of worklogs | | `startAt` | number | Pagination start index | | `maxResults` | number | Maximum results per page | | `worklogs` | array | Array of worklogs | | ↳ `id` | string | Worklog ID | | ↳ `author` | object | Worklog author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `authorName` | string | Worklog author display name | | ↳ `updateAuthor` | object | User who last updated the worklog | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `comment` | string | Worklog comment text | | ↳ `started` | string | ISO 8601 timestamp when the work started | | ↳ `timeSpent` | string | Time spent in human-readable format (e.g., 3h 20m) | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `created` | string | ISO 8601 timestamp when the worklog was created | | ↳ `updated` | string | ISO 8601 timestamp when the worklog was last updated | ### Jira Update Worklog [#jira-update-worklog] Update an existing worklog entry on a Jira issue #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key containing the worklog (e.g., PROJ-123) | | `worklogId` | string | Yes | ID of the worklog entry to update | | `timeSpentSeconds` | number | No | Time spent in seconds | | `comment` | string | No | Optional comment for the worklog entry | | `started` | string | No | Optional start time in ISO format | | `visibility` | json | No | Restrict worklog visibility. Object with "type" ("role" or "group") and "value" (role/group name). | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------ | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `worklogId` | string | Updated worklog ID | | `timeSpent` | string | Human-readable time spent (e.g., "3h 20m") | | `timeSpentSeconds` | number | Time spent in seconds | | `comment` | string | Worklog comment text | | `author` | object | Worklog author | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `updateAuthor` | object | User who last updated the worklog | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | `started` | string | Worklog start time in ISO format | | `created` | string | Worklog creation time | | `updated` | string | Worklog last update time | ### Jira Delete Worklog [#jira-delete-worklog] Delete a worklog entry from a Jira issue #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key containing the worklog (e.g., PROJ-123) | | `worklogId` | string | Yes | ID of the worklog entry to delete | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `worklogId` | string | Deleted worklog ID | ### Jira Create Issue Link [#jira-create-issue-link] Create a link relationship between two Jira issues #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `inwardIssueKey` | string | Yes | Jira issue key for the inward issue (e.g., PROJ-123) | | `outwardIssueKey` | string | Yes | Jira issue key for the outward issue (e.g., PROJ-456) | | `linkType` | string | Yes | The type of link relationship (e.g., "Blocks", "Relates to", "Duplicates") | | `comment` | string | No | Optional comment to add to the issue link | #### Output [#output-19] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `inwardIssue` | string | Inward issue key | | `outwardIssue` | string | Outward issue key | | `linkType` | string | Type of issue link | | `linkId` | string | Created link ID | ### Jira Delete Issue Link [#jira-delete-issue-link] Delete a link between two Jira issues #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `linkId` | string | Yes | ID of the issue link to delete | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `linkId` | string | Deleted link ID | ### Jira Add Watcher [#jira-add-watcher] Add a watcher to a Jira issue to receive notifications about updates #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to add watcher to (e.g., PROJ-123) | | `accountId` | string | Yes | Account ID of the user to add as watcher | #### Output [#output-21] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `watcherAccountId` | string | Added watcher account ID | ### Jira Remove Watcher [#jira-remove-watcher] Remove a watcher from a Jira issue #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | Jira issue key to remove watcher from (e.g., PROJ-123) | | `accountId` | string | Yes | Account ID of the user to remove as watcher | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `success` | boolean | Operation success status | | `issueKey` | string | Issue key | | `watcherAccountId` | string | Removed watcher account ID | ### Jira Get Users [#jira-get-users] Get Jira users. If an account ID is provided, returns a single user. Otherwise, returns a list of all users. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `accountId` | string | No | Optional account ID to get a specific user. If not provided, returns all users. | | `startAt` | number | No | The index of the first user to return (for pagination, default: 0) | | `maxResults` | number | No | Maximum number of users to return (default: 50) | #### Output [#output-23] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `users` | array | Array of Jira users | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `avatarUrls` | json | User avatar URLs in multiple sizes (16x16, 24x24, 32x32, 48x48) | | ↳ `self` | string | REST API URL for this user | | `total` | number | Total number of users returned | | `startAt` | number | Pagination start index | | `maxResults` | number | Maximum results per page | ### Jira Search Users [#jira-search-users] Search for Jira users by email address or display name. Returns matching users with their accountId, displayName, and emailAddress. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `query` | string | Yes | A query string to search for users. Can be an email address, display name, or partial match. | | `maxResults` | number | No | Maximum number of users to return (default: 50, max: 1000) | | `startAt` | number | No | The index of the first user to return (for pagination, default: 0) | #### Output [#output-24] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `users` | array | Array of matching Jira users | | ↳ `accountId` | string | Atlassian account ID of the user | | ↳ `displayName` | string | Display name of the user | | ↳ `active` | boolean | Whether the user account is active | | ↳ `emailAddress` | string | Email address of the user | | ↳ `accountType` | string | Type of account (e.g., atlassian, app, customer) | | ↳ `avatarUrl` | string | URL to the user avatar (48x48) | | ↳ `timeZone` | string | User timezone | | ↳ `self` | string | REST API URL for this user | | `total` | number | Number of users returned in this page (may be less than total matches) | | `startAt` | number | Pagination start index | | `maxResults` | number | Maximum results per page | ### Jira List Projects [#jira-list-projects] List Jira projects visible to the user, with optional name/key filtering and pagination. Returns each project with id, key, name, and type. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `query` | string | No | Filter projects by partial name or key match | | `startAt` | number | No | The index of the first project to return (for pagination, default: 0) | | `maxResults` | number | No | Maximum number of projects to return (default: 50, max: 100) | #### Output [#output-25] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `projects` | array | Array of Jira projects | | ↳ `id` | string | Project ID | | ↳ `key` | string | Project key (e.g., PROJ) | | ↳ `name` | string | Project name | | ↳ `projectTypeKey` | string | Project type key (e.g., software, service\_desk, business) | | ↳ `simplified` | boolean | Whether the project is a simplified (team-managed) project | | ↳ `style` | string | Project style (e.g., classic, next-gen) | | ↳ `isPrivate` | boolean | Whether the project is private | | ↳ `url` | string | REST API URL for this project | | ↳ `leadDisplayName` | string | Display name of the project lead | | ↳ `leadAccountId` | string | Account ID of the project lead | | `total` | number | Total number of matching projects | | `startAt` | number | Pagination start index | | `maxResults` | number | Maximum results per page | | `isLast` | boolean | Whether this is the last page of results | ### Jira Get Project [#jira-get-project] Get the details of a single Jira project by its ID or key, including its type, lead, components, issue types, and versions. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `projectId` | string | Yes | The project ID or key (e.g., "PROJ" or "10000") | #### Output [#output-26] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `id` | string | Project ID | | `key` | string | Project key (e.g., PROJ) | | `name` | string | Project name | | `description` | string | Project description | | `projectTypeKey` | string | Project type key (e.g., software, service\_desk, business) | | `simplified` | boolean | Whether the project is a simplified (team-managed) project | | `style` | string | Project style (e.g., classic, next-gen) | | `isPrivate` | boolean | Whether the project is private | | `url` | string | REST API URL for this project | | `leadDisplayName` | string | Display name of the project lead | | `leadAccountId` | string | Account ID of the project lead | | `issueTypes` | array | Issue types available in this project | | ↳ `id` | string | Issue type ID | | ↳ `name` | string | Issue type name (e.g., Task, Bug, Story) | | ↳ `subtask` | boolean | Whether this issue type is a subtask | ### Jira Get Transitions [#jira-get-transitions] Get the workflow transitions available for an issue in its current status. Use the returned transition IDs with the Transition Issue operation. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueKey` | string | Yes | The issue key or ID (e.g., PROJ-123) | #### Output [#output-27] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issueKey` | string | Issue key the transitions belong to | | `transitions` | array | Available workflow transitions for the issue | | ↳ `id` | string | Transition ID (use with Transition Issue) | | ↳ `name` | string | Transition name (e.g., "Start Progress") | | ↳ `toStatusId` | string | ID of the status the issue moves to | | ↳ `toStatusName` | string | Name of the status the issue moves to | | ↳ `toStatusCategory` | string | Status category key of the target status (new, indeterminate, done) | | ↳ `isAvailable` | boolean | Whether the transition can currently be performed | | ↳ `hasScreen` | boolean | Whether the transition requires a screen with fields | | `total` | number | Number of available transitions | ### Jira List Issue Types [#jira-list-issue-types] List all issue types visible to the user across projects (e.g., Task, Bug, Story, Epic, Subtask). Useful for discovering valid issue types before creating an issue. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | #### Output [#output-28] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `issueTypes` | array | Array of issue types | | ↳ `id` | string | Issue type ID | | ↳ `name` | string | Issue type name (e.g., Task, Bug, Story) | | ↳ `description` | string | Issue type description | | ↳ `subtask` | boolean | Whether this issue type is a subtask | | ↳ `hierarchyLevel` | number | Hierarchy level (0 = standard, 1 = epic, -1 = subtask) | | ↳ `iconUrl` | string | URL of the issue type icon | | ↳ `scope` | string | Project ID if this issue type is scoped to a team-managed project | | `total` | number | Number of issue types returned | ### Jira Get Fields [#jira-get-fields] Get all system and custom fields defined in the Jira instance. Useful for discovering custom field IDs (e.g., customfield\_10001) to use when writing or updating issues. #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | #### Output [#output-29] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------- | | `ts` | string | ISO 8601 timestamp of the operation | | `fields` | array | Array of Jira fields (system and custom) | | ↳ `id` | string | Field ID (e.g., summary, customfield\_10001) | | ↳ `key` | string | Field key | | ↳ `name` | string | Human-readable field name | | ↳ `custom` | boolean | Whether this is a custom field | | ↳ `navigable` | boolean | Whether the field is navigable in issue views | | ↳ `searchable` | boolean | Whether the field can be used in JQL searches | | ↳ `schemaType` | string | Field value type (e.g., string, number, array, user) | | ↳ `customType` | string | Custom field type identifier (only for custom fields) | | `total` | number | Number of fields returned | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Jira Comment Deleted [#jira-comment-deleted] Trigger workflow when a comment is deleted from a Jira issue #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which comment deletions trigger this workflow using JQL | #### Output [#output-30] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the comment | | ↳ `accountId` | string | Account ID of the user who last updated the comment | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | | ↳ `self` | string | REST API URL for this comment | *** ### Jira Comment Updated [#jira-comment-updated] Trigger workflow when a comment is updated on a Jira issue #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which comment updates trigger this workflow using JQL | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the comment | | ↳ `accountId` | string | Account ID of the user who last updated the comment | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | | ↳ `self` | string | REST API URL for this comment | *** ### Jira Issue Commented [#jira-issue-commented] Trigger workflow when a comment is added to a Jira issue #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which issue comments trigger this workflow using JQL | #### Output [#output-32] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the comment | | ↳ `accountId` | string | Account ID of the user who last updated the comment | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | | ↳ `self` | string | REST API URL for this comment | *** ### Jira Issue Created [#jira-issue-created] Trigger workflow when a new issue is created in Jira #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which issues trigger this workflow using JQL (Jira Query Language) | #### Output [#output-33] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `issue_event_type_name` | string | Issue event type name from Jira (only present in issue events) | *** ### Jira Issue Deleted [#jira-issue-deleted] Trigger workflow when an issue is deleted in Jira #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which issue deletions trigger this workflow using JQL | #### Output [#output-34] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `issue_event_type_name` | string | Issue event type name from Jira (only present in issue events) | *** ### Jira Issue Updated [#jira-issue-updated] Trigger workflow when an issue is updated in Jira #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which issue updates trigger this workflow using JQL | | `fieldFilters` | string | No | Comma-separated list of Jira field names. Only trigger when one of these fields changes. Leave empty to trigger on any field change. | #### Output [#output-35] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `issue_event_type_name` | string | Issue event type name from Jira (only present in issue events) | | `changelog` | object | changelog output from the tool | | ↳ `id` | string | Changelog ID | *** ### Jira Project Created [#jira-project-created] Trigger workflow when a project is created in Jira #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-36] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------- | | `webhookEvent` | string | The webhook event type (project\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `self` | string | REST API URL for this project | | ↳ `projectTypeKey` | string | Project type (e.g., software, business) | | ↳ `lead` | object | lead output from the tool | | ↳ `displayName` | string | Project lead display name | | ↳ `accountId` | string | Project lead account ID | *** ### Jira Sprint Closed [#jira-sprint-closed] Trigger workflow when a sprint is closed in Jira #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-37] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., sprint\_started, sprint\_closed) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `sprint` | object | sprint output from the tool | | ↳ `id` | number | Sprint ID | | ↳ `self` | string | REST API URL for this sprint | | ↳ `state` | string | Sprint state (future, active, closed) | | ↳ `name` | string | Sprint name | | ↳ `startDate` | string | Sprint start date (ISO format) | | ↳ `endDate` | string | Sprint end date (ISO format) | | ↳ `completeDate` | string | Sprint completion date (ISO format) | | ↳ `originBoardId` | number | Board ID the sprint belongs to | | ↳ `goal` | string | Sprint goal | | ↳ `createdDate` | string | Sprint creation date (ISO format) | *** ### Jira Sprint Created [#jira-sprint-created] Trigger workflow when a sprint is created in Jira #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-38] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., sprint\_started, sprint\_closed) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `sprint` | object | sprint output from the tool | | ↳ `id` | number | Sprint ID | | ↳ `self` | string | REST API URL for this sprint | | ↳ `state` | string | Sprint state (future, active, closed) | | ↳ `name` | string | Sprint name | | ↳ `startDate` | string | Sprint start date (ISO format) | | ↳ `endDate` | string | Sprint end date (ISO format) | | ↳ `completeDate` | string | Sprint completion date (ISO format) | | ↳ `originBoardId` | number | Board ID the sprint belongs to | | ↳ `goal` | string | Sprint goal | | ↳ `createdDate` | string | Sprint creation date (ISO format) | *** ### Jira Sprint Started [#jira-sprint-started] Trigger workflow when a sprint is started in Jira #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-39] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., sprint\_started, sprint\_closed) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `sprint` | object | sprint output from the tool | | ↳ `id` | number | Sprint ID | | ↳ `self` | string | REST API URL for this sprint | | ↳ `state` | string | Sprint state (future, active, closed) | | ↳ `name` | string | Sprint name | | ↳ `startDate` | string | Sprint start date (ISO format) | | ↳ `endDate` | string | Sprint end date (ISO format) | | ↳ `completeDate` | string | Sprint completion date (ISO format) | | ↳ `originBoardId` | number | Board ID the sprint belongs to | | ↳ `goal` | string | Sprint goal | | ↳ `createdDate` | string | Sprint creation date (ISO format) | *** ### Jira Version Released [#jira-version-released] Trigger workflow when a version is released in Jira #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-40] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------- | | `webhookEvent` | string | The webhook event type (jira:version\_released) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `version` | object | version output from the tool | | ↳ `id` | string | Version ID | | ↳ `name` | string | Version name | | ↳ `self` | string | REST API URL for this version | | ↳ `released` | boolean | Whether the version is released | | ↳ `releaseDate` | string | Release date (ISO format) | | ↳ `projectId` | number | Project ID the version belongs to | | ↳ `description` | string | Version description | | ↳ `archived` | boolean | Whether the version is archived | *** ### Jira Webhook (All Events) [#jira-webhook-all-events] Trigger workflow on any Jira webhook event #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | #### Output [#output-41] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `issue_event_type_name` | string | Issue event type name from Jira (only present in issue events) | | `changelog` | object | changelog output from the tool | | ↳ `id` | string | Changelog ID | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the comment | | ↳ `accountId` | string | Account ID of the user who last updated the comment | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | | ↳ `self` | string | REST API URL for this comment | | `worklog` | object | worklog output from the tool | | ↳ `id` | string | Worklog entry ID | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Worklog author display name | | ↳ `accountId` | string | Worklog author account ID | | ↳ `emailAddress` | string | Worklog author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the worklog | | ↳ `accountId` | string | Account ID of the user who last updated the worklog | | ↳ `timeSpent` | string | Time spent (e.g., "2h 30m") | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `comment` | string | Worklog comment/description | | ↳ `started` | string | When the work was started (ISO format) | | ↳ `created` | string | When the worklog entry was created (ISO format) | | ↳ `updated` | string | When the worklog entry was last updated (ISO format) | | ↳ `issueId` | string | ID of the issue this worklog belongs to | | ↳ `self` | string | REST API URL for this worklog entry | | `sprint` | object | sprint output from the tool | | ↳ `id` | number | Sprint ID | | ↳ `self` | string | REST API URL for this sprint | | ↳ `state` | string | Sprint state (future, active, closed) | | ↳ `name` | string | Sprint name | | ↳ `startDate` | string | Sprint start date (ISO format) | | ↳ `endDate` | string | Sprint end date (ISO format) | | ↳ `completeDate` | string | Sprint completion date (ISO format) | | ↳ `originBoardId` | number | Board ID the sprint belongs to | | ↳ `goal` | string | Sprint goal | | ↳ `createdDate` | string | Sprint creation date (ISO format) | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `self` | string | REST API URL for this project | | ↳ `projectTypeKey` | string | Project type (e.g., software, business) | | ↳ `lead` | object | lead output from the tool | | ↳ `displayName` | string | Project lead display name | | ↳ `accountId` | string | Project lead account ID | | `version` | object | version output from the tool | | ↳ `id` | string | Version ID | | ↳ `name` | string | Version name | | ↳ `self` | string | REST API URL for this version | | ↳ `released` | boolean | Whether the version is released | | ↳ `releaseDate` | string | Release date (ISO format) | | ↳ `projectId` | number | Project ID the version belongs to | | ↳ `description` | string | Version description | | ↳ `archived` | boolean | Whether the version is archived | *** ### Jira Worklog Created [#jira-worklog-created] Trigger workflow when time is logged on a Jira issue #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which worklog entries trigger this workflow using JQL | #### Output [#output-42] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `worklog` | object | worklog output from the tool | | ↳ `id` | string | Worklog entry ID | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Worklog author display name | | ↳ `accountId` | string | Worklog author account ID | | ↳ `emailAddress` | string | Worklog author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the worklog | | ↳ `accountId` | string | Account ID of the user who last updated the worklog | | ↳ `timeSpent` | string | Time spent (e.g., "2h 30m") | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `comment` | string | Worklog comment/description | | ↳ `started` | string | When the work was started (ISO format) | | ↳ `created` | string | When the worklog entry was created (ISO format) | | ↳ `updated` | string | When the worklog entry was last updated (ISO format) | | ↳ `issueId` | string | ID of the issue this worklog belongs to | | ↳ `self` | string | REST API URL for this worklog entry | *** ### Jira Worklog Deleted [#jira-worklog-deleted] Trigger workflow when a worklog entry is deleted from a Jira issue #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which worklog deletions trigger this workflow using JQL | #### Output [#output-43] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `worklog` | object | worklog output from the tool | | ↳ `id` | string | Worklog entry ID | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Worklog author display name | | ↳ `accountId` | string | Worklog author account ID | | ↳ `emailAddress` | string | Worklog author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the worklog | | ↳ `accountId` | string | Account ID of the user who last updated the worklog | | ↳ `timeSpent` | string | Time spent (e.g., "2h 30m") | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `comment` | string | Worklog comment/description | | ↳ `started` | string | When the work was started (ISO format) | | ↳ `created` | string | When the worklog entry was created (ISO format) | | ↳ `updated` | string | When the worklog entry was last updated (ISO format) | | ↳ `issueId` | string | ID of the issue this worklog belongs to | | ↳ `self` | string | REST API URL for this worklog entry | *** ### Jira Worklog Updated [#jira-worklog-updated] Trigger workflow when a worklog entry is updated on a Jira issue #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which worklog updates trigger this workflow using JQL | #### Output [#output-44] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, comment\_created, worklog\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | ↳ `emailAddress` | string | Email address of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Jira issue key (e.g., PROJ-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `votes` | json | Votes on this issue | | ↳ `labels` | array | Array of labels applied to this issue | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `created` | string | Issue creation date (ISO format) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `duedate` | string | Due date for the issue | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `summary` | string | Issue summary/title | | ↳ `description` | json | Issue description in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `watches` | json | Watchers information | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `progress` | json | Progress tracking information | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `security` | string | Security level | | ↳ `subtasks` | array | Array of subtask objects | | ↳ `versions` | array | Array of affected versions | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name | | ↳ `id` | string | Issue type ID | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | ↳ `components` | array | Array of component objects associated with this issue | | ↳ `fixVersions` | array | Array of fix version objects for this issue | | `worklog` | object | worklog output from the tool | | ↳ `id` | string | Worklog entry ID | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Worklog author display name | | ↳ `accountId` | string | Worklog author account ID | | ↳ `emailAddress` | string | Worklog author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the worklog | | ↳ `accountId` | string | Account ID of the user who last updated the worklog | | ↳ `timeSpent` | string | Time spent (e.g., "2h 30m") | | ↳ `timeSpentSeconds` | number | Time spent in seconds | | ↳ `comment` | string | Worklog comment/description | | ↳ `started` | string | When the work was started (ISO format) | | ↳ `created` | string | When the worklog entry was created (ISO format) | | ↳ `updated` | string | When the worklog entry was last updated (ISO format) | | ↳ `issueId` | string | ID of the issue this worklog belongs to | | ↳ `self` | string | REST API URL for this worklog entry | --- # Jira Service Management (/integrations/jira_service_management) {/* MANUAL-CONTENT-START:intro */} Use [Jira Service Management](https://www.atlassian.com/software/jira/service-management) in Agent Serve to manage service requests, customers, organizations, SLAs, and queues. The actions below document the supported service-desk operations and their required fields. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with Jira Service Management for IT service management. Create and manage service requests, handle customers and organizations, track SLAs, and manage queues. ## Actions [#actions] ### JSM Get Service Desks [#jsm-get-service-desks] Get all service desks from Jira Service Management #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `expand` | string | No | Comma-separated fields to expand in the response | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `serviceDesks` | array | List of service desks | | ↳ `id` | string | Service desk ID | | ↳ `projectId` | string | Associated Jira project ID | | ↳ `projectName` | string | Associated project name | | ↳ `projectKey` | string | Associated project key | | ↳ `name` | string | Service desk name | | ↳ `description` | string | Service desk description | | ↳ `leadDisplayName` | string | Project lead display name | | `total` | number | Total number of service desks | | `isLastPage` | boolean | Whether this is the last page | ### JSM Get Request Types [#jsm-get-request-types] Get request types for a service desk in Jira Service Management #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `searchQuery` | string | No | Filter request types by name | | `groupId` | string | No | Filter by request type group ID | | `expand` | string | No | Comma-separated fields to expand in the response | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------- | | `ts` | string | Timestamp of the operation | | `requestTypes` | array | List of request types | | ↳ `id` | string | Request type ID | | ↳ `name` | string | Request type name | | ↳ `description` | string | Request type description | | ↳ `helpText` | string | Help text for customers | | ↳ `issueTypeId` | string | Associated Jira issue type ID | | ↳ `serviceDeskId` | string | Parent service desk ID | | ↳ `groupIds` | json | Groups this request type belongs to | | ↳ `icon` | json | Request type icon with id and links | | ↳ `restrictionStatus` | string | OPEN or RESTRICTED | | `total` | number | Total number of request types | | `isLastPage` | boolean | Whether this is the last page | ### JSM Create Request [#jsm-create-request] Create a new service request in Jira Service Management #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `requestTypeId` | string | Yes | Request Type ID (e.g., "10", "15") | | `summary` | string | No | Summary/title for the service request (required unless using Form Answers) | | `description` | string | No | Description for the service request | | `raiseOnBehalfOf` | string | No | Account ID of customer to raise request on behalf of | | `requestFieldValues` | json | No | Request field values as key-value pairs (overrides summary/description if provided) | | `formAnswers` | json | No | Form answers using numeric form question IDs as keys (e.g., \{"1": \{"text": "Title"}, "4": \{"choices": \["5"]}}). Keys are question IDs from the Jira Form, not Jira field names. | | `requestParticipants` | string | No | Comma-separated account IDs to add as request participants | | `channel` | string | No | Channel the request originates from (e.g., portal, email) | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueId` | string | Created request issue ID | | `issueKey` | string | Created request issue key (e.g., SD-123) | | `requestTypeId` | string | Request type ID | | `serviceDeskId` | string | Service desk ID | | `createdDate` | json | Creation date with iso8601, friendly, epochMillis | | `currentStatus` | json | Current status with status name and category | | `reporter` | json | Reporter user with accountId, displayName, emailAddress | | `success` | boolean | Whether the request was created successfully | | `url` | string | URL to the created request | ### JSM Get Request [#jsm-get-request] Get a single service request from Jira Service Management #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `expand` | string | No | Comma-separated fields to expand: participant, status, sla, requestType, serviceDesk, attachment, comment, action | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------ | | `ts` | string | Timestamp of the operation | | `issueId` | string | Jira issue ID | | `issueKey` | string | Issue key (e.g., SD-123) | | `requestTypeId` | string | Request type ID | | `serviceDeskId` | string | Service desk ID | | `createdDate` | json | Creation date with iso8601, friendly, epochMillis | | `currentStatus` | object | Current request status | | ↳ `status` | string | Status name | | ↳ `statusCategory` | string | Status category (NEW, INDETERMINATE, DONE) | | ↳ `statusDate` | json | Status change date with iso8601, friendly, epochMillis | | `reporter` | object | Reporter user details | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `active` | boolean | Whether the account is active | | `requestFieldValues` | array | Request field values | | ↳ `fieldId` | string | Field identifier | | ↳ `label` | string | Human-readable field label | | ↳ `value` | json | Field value | | ↳ `renderedValue` | json | HTML-rendered field value | | `url` | string | URL to the request | | `request` | json | The service request object | ### JSM Get Requests [#jsm-get-requests] Get multiple service requests from Jira Service Management #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | No | Filter by service desk ID (e.g., "1", "2") | | `requestOwnership` | string | No | Filter by ownership: OWNED\_REQUESTS, PARTICIPATED\_REQUESTS, APPROVER, ALL\_REQUESTS | | `requestStatus` | string | No | Filter by status: OPEN\_REQUESTS, CLOSED\_REQUESTS, ALL\_REQUESTS | | `requestTypeId` | string | No | Filter by request type ID | | `searchTerm` | string | No | Search term to filter requests (e.g., "password reset", "laptop") | | `expand` | string | No | Comma-separated fields to expand: participant, status, sla, requestType, serviceDesk, attachment, comment, action | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------ | | `ts` | string | Timestamp of the operation | | `requests` | array | List of service requests | | ↳ `issueId` | string | Jira issue ID | | ↳ `issueKey` | string | Issue key (e.g., SD-123) | | ↳ `requestTypeId` | string | Request type ID | | ↳ `serviceDeskId` | string | Service desk ID | | ↳ `createdDate` | json | Creation date with iso8601, friendly, epochMillis | | ↳ `currentStatus` | object | Current request status | | ↳ `status` | string | Status name | | ↳ `statusCategory` | string | Status category (NEW, INDETERMINATE, DONE) | | ↳ `statusDate` | json | Status change date with iso8601, friendly, epochMillis | | ↳ `reporter` | object | Reporter user details | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `active` | boolean | Whether the account is active | | ↳ `requestFieldValues` | array | Request field values | | ↳ `fieldId` | string | Field identifier | | ↳ `label` | string | Human-readable field label | | ↳ `value` | json | Field value | | ↳ `renderedValue` | json | HTML-rendered field value | | `total` | number | Total number of requests in current page | | `isLastPage` | boolean | Whether this is the last page | ### JSM Add Comment [#jsm-add-comment] Add a comment (public or internal) to a service request in Jira Service Management #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `body` | string | Yes | Comment body text | | `isPublic` | boolean | Yes | Whether the comment is public (visible to customer) or internal (true/false) | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `commentId` | string | Created comment ID | | `body` | string | Comment body text | | `isPublic` | boolean | Whether the comment is public | | `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `active` | boolean | Whether the account is active | | `createdDate` | json | Comment creation date with iso8601, friendly, epochMillis | | `success` | boolean | Whether the comment was added successfully | ### JSM Get Comments [#jsm-get-comments] Get comments for a service request in Jira Service Management #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `isPublic` | boolean | No | Filter to only public comments (true/false) | | `internal` | boolean | No | Filter to only internal comments (true/false) | | `expand` | string | No | Comma-separated fields to expand: renderedBody, attachment | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `comments` | array | List of comments | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment body text | | ↳ `public` | boolean | Whether the comment is public | | ↳ `author` | object | Comment author | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `active` | boolean | Whether the account is active | | ↳ `created` | json | Creation date with iso8601, friendly, epochMillis | | ↳ `renderedBody` | json | HTML-rendered comment body (when expand=renderedBody) | | `total` | number | Total number of comments | | `isLastPage` | boolean | Whether this is the last page | ### JSM Get Customers [#jsm-get-customers] Get customers for a service desk in Jira Service Management #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `query` | string | No | Search query to filter customers (e.g., "john", "acme") | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `customers` | array | List of customers | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Display name | | ↳ `emailAddress` | string | Email address | | ↳ `active` | boolean | Whether the account is active | | ↳ `timeZone` | string | User timezone | | `total` | number | Total number of customers | | `isLastPage` | boolean | Whether this is the last page | ### JSM Add Customer [#jsm-add-customer] Add customers to a service desk in Jira Service Management #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `accountIds` | string | Yes | Comma-separated Atlassian account IDs to add as customers | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------- | | `ts` | string | Timestamp of the operation | | `serviceDeskId` | string | Service desk ID | | `success` | boolean | Whether customers were added successfully | ### JSM Get Organizations [#jsm-get-organizations] Get organizations for a service desk in Jira Service Management #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `organizations` | array | List of organizations | | ↳ `id` | string | Organization ID | | ↳ `name` | string | Organization name | | `total` | number | Total number of organizations | | `isLastPage` | boolean | Whether this is the last page | ### JSM Create Organization [#jsm-create-organization] Create a new organization in Jira Service Management #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `name` | string | Yes | Name of the organization to create | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------- | | `ts` | string | Timestamp of the operation | | `organizationId` | string | ID of the created organization | | `name` | string | Name of the created organization | | `success` | boolean | Whether the operation succeeded | ### JSM Add Organization [#jsm-add-organization] Add an organization to a service desk in Jira Service Management #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `organizationId` | string | Yes | Organization ID to add to the service desk | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `ts` | string | Timestamp of the operation | | `serviceDeskId` | string | Service Desk ID | | `organizationId` | string | Organization ID added | | `success` | boolean | Whether the operation succeeded | ### JSM Get Queues [#jsm-get-queues] Get queues for a service desk in Jira Service Management #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `includeCount` | boolean | No | Include issue count for each queue (true/false) | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `queues` | array | List of queues | | ↳ `id` | string | Queue ID | | ↳ `name` | string | Queue name | | ↳ `jql` | string | JQL filter for the queue | | ↳ `fields` | json | Fields displayed in the queue | | ↳ `issueCount` | number | Number of issues in the queue | | `total` | number | Total number of queues | | `isLastPage` | boolean | Whether this is the last page | ### JSM Get SLA [#jsm-get-sla] Get SLA information for a service request in Jira Service Management #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `slas` | array | List of SLA metrics | | ↳ `id` | string | SLA metric ID | | ↳ `name` | string | SLA metric name | | ↳ `completedCycles` | json | Completed SLA cycles with startTime, stopTime, breachTime, breached, goalDuration, elapsedTime, remainingTime (each time as DateDTO, durations as DurationDTO) | | ↳ `ongoingCycle` | json | Ongoing SLA cycle with startTime, breachTime, breached, paused, withinCalendarHours, goalDuration, elapsedTime, remainingTime | | `total` | number | Total number of SLAs | | `isLastPage` | boolean | Whether this is the last page | ### JSM Get Transitions [#jsm-get-transitions] Get available transitions for a service request in Jira Service Management #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `transitions` | array | List of available transitions | | ↳ `id` | string | Transition ID | | ↳ `name` | string | Transition name | | `total` | number | Total number of transitions | | `isLastPage` | boolean | Whether this is the last page | ### JSM Transition Request [#jsm-transition-request] Transition a service request to a new status in Jira Service Management #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `transitionId` | string | Yes | Transition ID to apply | | `comment` | string | No | Optional comment to add during transition | #### Output [#output-15] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `transitionId` | string | Applied transition ID | | `success` | boolean | Whether the transition was successful | ### JSM Get Participants [#jsm-get-participants] Get participants for a request in Jira Service Management #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-16] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `participants` | array | List of participants | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Display name | | ↳ `emailAddress` | string | Email address | | ↳ `active` | boolean | Whether the account is active | | `total` | number | Total number of participants | | `isLastPage` | boolean | Whether this is the last page | ### JSM Add Participants [#jsm-add-participants] Add participants to a request in Jira Service Management #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `accountIds` | string | Yes | Comma-separated account IDs to add as participants | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `participants` | array | List of added participants | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | Display name | | ↳ `emailAddress` | string | Email address | | ↳ `active` | boolean | Whether the account is active | | `success` | boolean | Whether the operation succeeded | ### JSM Get Approvals [#jsm-get-approvals] Get approvals for a request in Jira Service Management #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `start` | number | No | Start index for pagination (e.g., 0, 50, 100) | | `limit` | number | No | Maximum results to return (e.g., 10, 25, 50) | #### Output [#output-18] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `approvals` | array | List of approvals | | ↳ `id` | string | Approval ID | | ↳ `name` | string | Approval description | | ↳ `finalDecision` | string | Final decision: pending, approved, or declined | | ↳ `canAnswerApproval` | boolean | Whether current user can respond | | ↳ `approvers` | array | List of approvers with their decisions | | ↳ `approver` | object | Approver user details | | ↳ `accountId` | string | Atlassian account ID | | ↳ `displayName` | string | User display name | | ↳ `emailAddress` | string | User email address | | ↳ `active` | boolean | Whether the account is active | | ↳ `approverDecision` | string | Decision: pending, approved, or declined | | ↳ `createdDate` | json | Creation date | | ↳ `completedDate` | json | Completion date | | `total` | number | Total number of approvals | | `isLastPage` | boolean | Whether this is the last page | ### JSM Answer Approval [#jsm-answer-approval] Approve or decline an approval request in Jira Service Management #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., SD-123) | | `approvalId` | string | Yes | Approval ID to answer | | `decision` | string | Yes | Decision: "approve" or "decline" | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `approvalId` | string | Approval ID | | `decision` | string | Decision made (approve/decline) | | `id` | string | Approval ID from response | | `name` | string | Approval description | | `finalDecision` | string | Final approval decision: pending, approved, or declined | | `canAnswerApproval` | boolean | Whether the current user can still respond | | `approvers` | array | Updated list of approvers with decisions | | ↳ `approver` | object | Approver user details | | ↳ `accountId` | string | Approver account ID | | ↳ `displayName` | string | Approver display name | | ↳ `emailAddress` | string | Approver email | | ↳ `active` | boolean | Whether the account is active | | ↳ `approverDecision` | string | Individual approver decision | | `createdDate` | json | Approval creation date | | `completedDate` | json | Approval completion date | | `approval` | json | The approval object | | `success` | boolean | Whether the operation succeeded | ### JSM Get Request Type Fields [#jsm-get-request-type-fields] Get the fields required to create a request of a specific type in Jira Service Management #### Input [#input-20] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `serviceDeskId` | string | Yes | Service Desk ID (e.g., "1", "2") | | `requestTypeId` | string | Yes | Request Type ID (e.g., "10", "15") | #### Output [#output-20] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `serviceDeskId` | string | Service desk ID | | `requestTypeId` | string | Request type ID | | `canAddRequestParticipants` | boolean | Whether participants can be added to requests of this type | | `canRaiseOnBehalfOf` | boolean | Whether requests can be raised on behalf of another user | | `requestTypeFields` | array | List of fields for this request type | | ↳ `fieldId` | string | Field identifier (e.g., summary, description, customfield\_10010) | | ↳ `name` | string | Human-readable field name | | ↳ `description` | string | Help text for the field | | ↳ `required` | boolean | Whether the field is required | | ↳ `visible` | boolean | Whether the field is visible | | ↳ `validValues` | json | Allowed values for select fields | | ↳ `presetValues` | json | Pre-populated values | | ↳ `defaultValues` | json | Default values for the field | | ↳ `jiraSchema` | json | Jira field schema with type, system, custom, customId | ### JSM Get Form Templates [#jsm-get-form-templates] List forms (ProForma/JSM Forms) in a Jira project to discover form IDs for request types #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `projectIdOrKey` | string | Yes | Jira project ID or key (e.g., "10001" or "SD") | #### Output [#output-21] | Parameter | Type | Description | | ---------------------------------- | ------ | ----------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `projectIdOrKey` | string | Project ID or key | | `templates` | array | List of forms in the project | | ↳ `id` | string | Form template ID (UUID) | | ↳ `name` | string | Form template name | | ↳ `updated` | string | Last updated timestamp (ISO 8601) | | ↳ `issueCreateIssueTypeIds` | json | Issue type IDs that auto-attach this form on issue create | | ↳ `issueCreateRequestTypeIds` | json | Request type IDs that auto-attach this form on issue create | | ↳ `portalRequestTypeIds` | json | Request type IDs that show this form on the customer portal | | ↳ `recommendedIssueRequestTypeIds` | json | Request type IDs that recommend this form | | `total` | number | Total number of forms | ### JSM Get Form Structure [#jsm-get-form-structure] Get the full structure of a ProForma/JSM form including all questions, field types, choices, layout, and conditions #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `projectIdOrKey` | string | Yes | Jira project ID or key (e.g., "10001" or "SD") | | `formId` | string | Yes | Form ID (UUID from Get Form Templates) | #### Output [#output-22] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `projectIdOrKey` | string | Project ID or key | | `formId` | string | Form ID | | `design` | json | Full form design with questions (field types, labels, choices, validation), layout (field ordering), and conditions | | `updated` | string | Last updated timestamp | | `publish` | json | Publishing and request type configuration | ### JSM Get Issue Forms [#jsm-get-issue-forms] List forms (ProForma/JSM Forms) attached to a Jira issue with metadata (name, submitted status, lock) #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123", "10001") | #### Output [#output-23] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `forms` | array | List of forms attached to the issue | | ↳ `id` | string | Form instance ID (UUID) | | ↳ `name` | string | Form name | | ↳ `updated` | string | Last updated timestamp (ISO 8601) | | ↳ `submitted` | boolean | Whether the form has been submitted | | ↳ `lock` | boolean | Whether the form is locked | | ↳ `internal` | boolean | Whether the form is internal-only | | ↳ `formTemplateId` | string | Source form template ID (UUID) | | `total` | number | Total number of forms | ### JSM Attach Form [#jsm-attach-form] Attach a form template to an existing Jira issue or JSM request #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key to attach the form to (e.g., "SD-123") | | `formTemplateId` | string | Yes | Form template UUID (from Get Form Templates) | #### Output [#output-24] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `id` | string | Attached form instance ID (UUID) | | `name` | string | Form name | | `updated` | string | Last updated timestamp | | `submitted` | boolean | Whether the form has been submitted | | `lock` | boolean | Whether the form is locked | | `internal` | boolean | Whether the form is internal only | | `formTemplateId` | string | Form template ID | ### JSM Save Form Answers [#jsm-save-form-answers] Save answers to a form attached to a Jira issue or JSM request #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID (from Attach Form or Get Issue Forms) | | `answers` | json | Yes | Form answers using numeric question IDs as keys (e.g., \{"1": \{"text": "Title"}, "4": \{"choices": \["5"]}}) | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `state` | json | Form state with status (open, submitted, locked) | | `updated` | string | Last updated timestamp | ### JSM Submit Form [#jsm-submit-form] Submit a form on a Jira issue or JSM request, locking it from further edits #### Input [#input-26] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID (from Attach Form or Get Issue Forms) | #### Output [#output-26] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------ | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `status` | string | Form status after submission (open, submitted, locked) | ### JSM Get Form [#jsm-get-form] Get a single form with full design, state, and answers from a Jira issue #### Input [#input-27] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID (from Attach Form or Get Issue Forms) | #### Output [#output-27] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `design` | json | Full form design with questions, layout, conditions, sections, settings | | `state` | json | Form state with answers map, status (o=open, s=submitted, l=locked), visibility (i=internal, e=external) | | `updated` | string | Last updated timestamp | ### JSM Get Form Answers [#jsm-get-form-answers] Get simplified answers from a form attached to a Jira issue or JSM request #### Input [#input-28] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID (from Attach Form or Get Issue Forms) | #### Output [#output-28] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `answers` | json | Simplified form answers as key-value pairs (question label to answer text/choices) | ### JSM Reopen Form [#jsm-reopen-form] Reopen a submitted form on a Jira issue or JSM request, allowing further edits #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID (from Get Issue Forms) | #### Output [#output-29] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `status` | string | Form status after reopening (open, submitted, locked) | ### JSM Delete Form [#jsm-delete-form] Remove a form from a Jira issue or JSM request #### Input [#input-30] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID to delete | #### Output [#output-30] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Deleted form instance UUID | | `deleted` | boolean | Whether the form was successfully deleted | ### JSM Externalise Form [#jsm-externalise-form] Make a form visible to customers on a Jira issue or JSM request #### Input [#input-31] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID | #### Output [#output-31] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `visibility` | string | Form visibility after change (internal or external) | ### JSM Internalise Form [#jsm-internalise-form] Make a form internal only (not visible to customers) on a Jira issue or JSM request #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `issueIdOrKey` | string | Yes | Issue ID or key (e.g., "SD-123") | | `formId` | string | Yes | Form instance UUID | #### Output [#output-32] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `issueIdOrKey` | string | Issue ID or key | | `formId` | string | Form instance UUID | | `visibility` | string | Form visibility after change (internal or external) | ### JSM Copy Forms [#jsm-copy-forms] Copy forms from one Jira issue to another #### Input [#input-33] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `sourceIssueIdOrKey` | string | Yes | Source issue ID or key to copy forms from (e.g., "SD-123") | | `targetIssueIdOrKey` | string | Yes | Target issue ID or key to copy forms to (e.g., "SD-456") | | `formIds` | json | No | Optional JSON array of form UUIDs to copy (e.g., \["uuid1", "uuid2"]). If omitted, copies all forms. | #### Output [#output-33] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------- | | `ts` | string | Timestamp of the operation | | `sourceIssueIdOrKey` | string | Source issue ID or key | | `targetIssueIdOrKey` | string | Target issue ID or key | | `copiedForms` | json | Array of successfully copied forms | | `errors` | json | Array of errors encountered during copy | ### JSM List Asset Schemas [#jsm-list-asset-schemas] List Assets (Insight/CMDB) object schemas in Jira Service Management #### Input [#input-34] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `startAt` | number | No | Pagination start index (e.g., 0, 50) | | `maxResults` | number | No | Maximum schemas to return (e.g., 25, 50) | | `includeCounts` | boolean | No | Include object and object-type counts per schema | #### Output [#output-34] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------- | | `ts` | string | Timestamp of the operation | | `schemas` | array | List of Assets object schemas | | ↳ `id` | string | Schema ID | | ↳ `name` | string | Schema name | | ↳ `objectSchemaKey` | string | Schema key | | ↳ `status` | string | Schema status | | ↳ `description` | string | Schema description | | ↳ `objectCount` | number | Number of objects | | ↳ `objectTypeCount` | number | Number of object types | | `total` | number | Total number of schemas | | `isLast` | boolean | Whether this is the last page | ### JSM Get Asset Schema [#jsm-get-asset-schema] Get a single Assets (Insight/CMDB) object schema by ID #### Input [#input-35] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `schemaId` | string | Yes | The Assets object schema ID | #### Output [#output-35] | Parameter | Type | Description | | ------------------- | ------ | -------------------------- | | `ts` | string | Timestamp of the operation | | `schema` | json | The Assets object schema | | ↳ `id` | string | Schema ID | | ↳ `name` | string | Schema name | | ↳ `objectSchemaKey` | string | Schema key | | ↳ `status` | string | Schema status | | ↳ `description` | string | Schema description | | ↳ `objectCount` | number | Number of objects | | ↳ `objectTypeCount` | number | Number of object types | ### JSM List Asset Object Types [#jsm-list-asset-object-types] List object types within an Assets (Insight/CMDB) object schema #### Input [#input-36] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `schemaId` | string | Yes | The Assets object schema ID to list object types for | | `excludeAbstract` | boolean | No | Exclude abstract object types from the result | #### Output [#output-36] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------ | | `ts` | string | Timestamp of the operation | | `objectTypes` | array | List of object types in the schema | | ↳ `id` | string | Object type ID | | ↳ `name` | string | Object type name | | ↳ `description` | string | Object type description | | ↳ `objectSchemaId` | string | Parent schema ID | | ↳ `objectCount` | number | Number of objects | | ↳ `abstractObjectType` | boolean | Whether the type is abstract | | ↳ `inherited` | boolean | Whether the type inherits attributes | | `total` | number | Total number of object types | ### JSM Get Asset Object Type Attributes [#jsm-get-asset-object-type-attributes] Get the attribute definitions for an Assets (Insight/CMDB) object type. Use the returned attribute IDs to build create/update payloads or map columns. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `objectTypeId` | string | Yes | The Assets object type ID | | `onlyValueEditable` | boolean | No | Return only attributes whose values can be edited | | `query` | string | No | Filter attributes by a search query | #### Output [#output-37] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `attributes` | array | Attribute definitions for the object type | | ↳ `id` | string | Attribute definition ID — use as objectTypeAttributeId in create/update | | ↳ `name` | string | Attribute name | | ↳ `label` | boolean | Whether this attribute is the object label | | ↳ `type` | number | Data type discriminator (integer enum) | | ↳ `defaultType` | json | Default data type \{ id, name } | | ↳ `editable` | boolean | Whether the value is editable | | ↳ `minimumCardinality` | number | Minimum number of values (>= 1 means required) | | ↳ `maximumCardinality` | number | Maximum number of values | | ↳ `uniqueAttribute` | boolean | Whether values must be unique | | `total` | number | Total number of attributes | ### JSM Search Assets (AQL) [#jsm-search-assets-aql] Search Assets (Insight/CMDB) objects using AQL (Assets Query Language), e.g. objectType = "Host" AND Status = "Running". Supports pagination. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `qlQuery` | string | Yes | AQL query string (e.g., objectType = "Host" AND "Operating System" = "Ubuntu") | | `page` | number | No | Page number (1-based, defaults to 1) | | `resultsPerPage` | number | No | Results per page (e.g., 25, 50) | | `includeAttributes` | boolean | No | Include resolved attribute values on each object (defaults to true) | | `objectTypeId` | string | No | Optionally scope the search to a single object type ID | | `objectSchemaId` | string | No | Optionally scope the search to a single object schema ID | #### Output [#output-38] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------- | | `ts` | string | Timestamp of the operation | | `objects` | array | Matching Assets objects | | ↳ `id` | string | Object ID | | ↳ `label` | string | Object label | | ↳ `objectKey` | string | Object key (e.g., HOST-123) | | ↳ `objectType` | json | Object type metadata | | ↳ `attributes` | json | Resolved attribute values | | `total` | number | Total number of matching objects (totalFilterCount) | | `pageNumber` | number | Current page number | | `pageSize` | number | Number of objects on this page | ### JSM Get Asset Object [#jsm-get-asset-object] Get a single Assets (Insight/CMDB) object by ID, including its attribute values #### Input [#input-39] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `objectId` | string | Yes | The Assets object ID | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------- | | `ts` | string | Timestamp of the operation | | `object` | json | The Assets object | | ↳ `id` | string | Object ID | | ↳ `label` | string | Human-readable object label | | ↳ `objectKey` | string | Object key (e.g., HOST-123) | | ↳ `globalId` | string | Global object ID | | ↳ `objectType` | json | Object type metadata | | ↳ `attributes` | json | Resolved attribute values for the object | | ↳ `hasAvatar` | boolean | Whether the object has an avatar | | ↳ `created` | string | Creation timestamp | | ↳ `updated` | string | Last update timestamp | | ↳ `link` | string | Self link to the object | ### JSM Create Asset Object [#jsm-create-asset-object] Create an Assets (Insight/CMDB) object of a given object type. Attributes use objectTypeAttributeId values from the object type definition. #### Input [#input-40] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `objectTypeId` | string | Yes | The object type ID to create the object under | | `attributes` | json | Yes | Array of attributes: \[\{ objectTypeAttributeId, objectAttributeValues: \[\{ value }] }] | #### Output [#output-40] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------- | | `ts` | string | Timestamp of the operation | | `object` | json | The created Assets object | | ↳ `id` | string | Object ID | | ↳ `label` | string | Human-readable object label | | ↳ `objectKey` | string | Object key (e.g., HOST-123) | | ↳ `globalId` | string | Global object ID | | ↳ `objectType` | json | Object type metadata | | ↳ `attributes` | json | Resolved attribute values for the object | | ↳ `hasAvatar` | boolean | Whether the object has an avatar | | ↳ `created` | string | Creation timestamp | | ↳ `updated` | string | Last update timestamp | | ↳ `link` | string | Self link to the object | ### JSM Update Asset Object [#jsm-update-asset-object] Update an existing Assets (Insight/CMDB) object. Provide the attributes to change using their objectTypeAttributeId values. #### Input [#input-41] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `objectId` | string | Yes | The Assets object ID to update | | `attributes` | json | Yes | Array of attributes to set: \[\{ objectTypeAttributeId, objectAttributeValues: \[\{ value }] }] | | `objectTypeId` | string | No | Optional object type ID (only if changing the type) | #### Output [#output-41] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------- | | `ts` | string | Timestamp of the operation | | `object` | json | The updated Assets object | | ↳ `id` | string | Object ID | | ↳ `label` | string | Human-readable object label | | ↳ `objectKey` | string | Object key (e.g., HOST-123) | | ↳ `globalId` | string | Global object ID | | ↳ `objectType` | json | Object type metadata | | ↳ `attributes` | json | Resolved attribute values for the object | | ↳ `hasAvatar` | boolean | Whether the object has an avatar | | ↳ `created` | string | Creation timestamp | | ↳ `updated` | string | Last update timestamp | | ↳ `link` | string | Self link to the object | ### JSM Delete Asset Object [#jsm-delete-asset-object] Delete an Assets (Insight/CMDB) object by ID #### Input [#input-42] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `domain` | string | Yes | Your Jira domain (e.g., yourcompany.atlassian.net) | | `workspaceId` | string | No | Assets workspace ID (resolved automatically when omitted) | | `objectId` | string | Yes | The Assets object ID to delete | #### Output [#output-42] | Parameter | Type | Description | | ---------- | ------- | ------------------------------ | | `ts` | string | Timestamp of the operation | | `objectId` | string | The deleted object ID | | `deleted` | boolean | Whether the object was deleted | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### JSM Request Commented [#jsm-request-commented] Trigger workflow when a comment is added to a Jira Service Management request #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which service desk requests trigger this workflow using JQL (Jira Query Language) | #### Output [#output-43] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, jira:issue\_updated, comment\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Issue key (e.g., SD-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `summary` | string | Request summary/title | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Current status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name (e.g., Service Request, Incident) | | ↳ `id` | string | Issue type ID | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `created` | string | Request creation date (ISO format) | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `duedate` | string | Due date for the request | | ↳ `labels` | array | Array of labels applied to this request | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `updateAuthor` | object | updateAuthor output from the tool | | ↳ `displayName` | string | Display name of the user who last updated the comment | | ↳ `accountId` | string | Account ID of the user who last updated the comment | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | *** ### JSM Request Created [#jsm-request-created] Trigger workflow when a new service request is created in Jira Service Management #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which service desk requests trigger this workflow using JQL (Jira Query Language) | #### Output [#output-44] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, jira:issue\_updated, comment\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Issue key (e.g., SD-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `summary` | string | Request summary/title | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Current status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name (e.g., Service Request, Incident) | | ↳ `id` | string | Issue type ID | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `created` | string | Request creation date (ISO format) | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `duedate` | string | Due date for the request | | ↳ `labels` | array | Array of labels applied to this request | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | `issue_event_type_name` | string | Issue event type name from Jira | *** ### JSM Request Resolved [#jsm-request-resolved] Trigger workflow when a service request is resolved in Jira Service Management #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which service desk requests trigger this workflow using JQL (Jira Query Language) | #### Output [#output-45] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, jira:issue\_updated, comment\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Issue key (e.g., SD-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `summary` | string | Request summary/title | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Current status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name (e.g., Service Request, Incident) | | ↳ `id` | string | Issue type ID | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `created` | string | Request creation date (ISO format) | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `duedate` | string | Due date for the request | | ↳ `labels` | array | Array of labels applied to this request | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | `issue_event_type_name` | string | Issue event type name from Jira | | `changelog` | object | changelog output from the tool | | ↳ `id` | string | Changelog ID | *** ### JSM Request Updated [#jsm-request-updated] Trigger workflow when a service request is updated in Jira Service Management #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which service desk requests trigger this workflow using JQL (Jira Query Language) | #### Output [#output-46] | Parameter | Type | Description | | ----------------------- | ------ | ----------------------------------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, jira:issue\_updated, comment\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Issue key (e.g., SD-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `summary` | string | Request summary/title | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Current status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name (e.g., Service Request, Incident) | | ↳ `id` | string | Issue type ID | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `created` | string | Request creation date (ISO format) | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `duedate` | string | Due date for the request | | ↳ `labels` | array | Array of labels applied to this request | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | `issue_event_type_name` | string | Issue event type name from Jira | | `changelog` | object | changelog output from the tool | | ↳ `id` | string | Changelog ID | *** ### JSM Webhook (All Events) [#jsm-webhook-all-events] Trigger workflow on any Jira Service Management webhook event #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature | | `jqlFilter` | string | No | Filter which service desk requests trigger this workflow using JQL (Jira Query Language) | #### Output [#output-47] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------- | | `webhookEvent` | string | The webhook event type (e.g., jira:issue\_created, jira:issue\_updated, comment\_created) | | `timestamp` | number | Timestamp of the webhook event | | `user` | object | user output from the tool | | ↳ `displayName` | string | Display name of the user who triggered the event | | ↳ `accountId` | string | Account ID of the user who triggered the event | | `issue` | object | issue output from the tool | | ↳ `id` | string | Jira issue ID | | ↳ `key` | string | Issue key (e.g., SD-123) | | ↳ `self` | string | REST API URL for this issue | | ↳ `fields` | object | fields output from the tool | | ↳ `summary` | string | Request summary/title | | ↳ `status` | object | status output from the tool | | ↳ `name` | string | Current status name | | ↳ `id` | string | Status ID | | ↳ `statusCategory` | json | Status category information | | ↳ `priority` | object | priority output from the tool | | ↳ `name` | string | Priority name | | ↳ `id` | string | Priority ID | | ↳ `issuetype` | object | issuetype output from the tool | | ↳ `name` | string | Issue type name (e.g., Service Request, Incident) | | ↳ `id` | string | Issue type ID | | ↳ `project` | object | project output from the tool | | ↳ `key` | string | Project key | | ↳ `name` | string | Project name | | ↳ `id` | string | Project ID | | ↳ `reporter` | object | reporter output from the tool | | ↳ `displayName` | string | Reporter display name | | ↳ `accountId` | string | Reporter account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `assignee` | object | assignee output from the tool | | ↳ `displayName` | string | Assignee display name | | ↳ `accountId` | string | Assignee account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `creator` | object | creator output from the tool | | ↳ `displayName` | string | Creator display name | | ↳ `accountId` | string | Creator account ID | | ↳ `emailAddress` | string | Email address (Jira Server only — not available in Jira Cloud webhook payloads) | | ↳ `created` | string | Request creation date (ISO format) | | ↳ `updated` | string | Last updated date (ISO format) | | ↳ `duedate` | string | Due date for the request | | ↳ `labels` | array | Array of labels applied to this request | | ↳ `resolution` | object | resolution output from the tool | | ↳ `name` | string | Resolution name (e.g., Done, Fixed) | | ↳ `id` | string | Resolution ID | | `issue_event_type_name` | string | Issue event type name from Jira | | `changelog` | object | changelog output from the tool | | ↳ `id` | string | Changelog ID | | `comment` | object | comment output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | json | Comment body in Atlassian Document Format (ADF). On Jira Server this may be a plain string. | | ↳ `author` | object | author output from the tool | | ↳ `displayName` | string | Comment author display name | | ↳ `accountId` | string | Comment author account ID | | ↳ `emailAddress` | string | Comment author email address | | ↳ `created` | string | Comment creation date (ISO format) | | ↳ `updated` | string | Comment last updated date (ISO format) | --- # Jotform (/integrations/jotform) {/* MANUAL-CONTENT-START:intro */} Use [Jotform](https://www.jotform.com/) to manage forms and submissions, create reports, and configure submission webhooks. Submission answers are available by question ID and question label; writes require the question IDs described below. ## Authentication and regions [#authentication-and-regions] The integration authenticates with a Jotform API key, created under **Account Settings → API**. Keys are scoped to read-only or full access, so create the key at the level your operations need — creating submissions, editing forms, and managing webhooks all require full access. An API key is only valid on the host that issued it. Use the **Region** field to match where the account lives: `us` (default), `eu` for EU data residency accounts, or `hipaa` for HIPAA-compliant accounts. A key used against the wrong host returns an authentication error. Jotform enforces a daily API call limit that varies by plan. Schedule high-frequency polling with that budget in mind — or prefer a webhook, which costs no API calls at all. ## A note on question IDs [#a-note-on-question-ids] Submissions are keyed by question ID, not by label. Run **List Questions** on a form first to map each label to its `qid`; those IDs are what **Create Submission** and **Update Submission** expect. Multi-field questions such as full name or address accept either a nested object (`{"3": {"first": "Bart", "last": "Simpson"}}`) or the shorthand Jotform documents (`{"3_first": "Bart"}`). ## Folders and labels [#folders-and-labels] Jotform has deprecated its folder endpoints in favor of labels. This integration implements labels only; if you have existing automations built on folder IDs, migrate them to the label operations. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Jotform into your workflow to list and read form submissions with their answers resolved to question labels, build and edit forms and their questions, create shareable reports, register submission webhooks, and check account usage. ## Actions [#actions] ### Jotform List Forms [#jotform-list-forms] List the forms on a Jotform account with their titles, status, and submission counts. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `offset` | string | No | Index of the first result to return. Default 0 | | `limit` | string | No | Number of forms to return. Default 20, maximum 1000 | | `orderby` | string | No | Field to order by: id, username, title, status, created\_at, updated\_at, new, count, or slug | | `direction` | string | No | Sort direction: ASC or DESC | | `filter` | json | No | Filter object, e.g. \{"status":"ENABLED"} or \{"created\_at:gt":"2024-01-01 00:00:00"} | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------- | | `forms` | array | Forms on the account | | ↳ `id` | string | Form ID | | ↳ `username` | string | Account that owns the form | | ↳ `title` | string | Form title | | ↳ `height` | string | Form height in pixels | | ↳ `status` | string | ENABLED, DISABLED, or DELETED | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `last_submission` | string | Time of the most recent submission | | ↳ `new` | string | Unread submission count | | ↳ `count` | string | Total submission count | | ↳ `type` | string | LEGACY or CARD | | ↳ `favorite` | string | 1 when the form is favorited, otherwise 0 | | ↳ `archived` | string | 1 when the form is archived, otherwise 0 | | ↳ `url` | string | Public form URL | | `pagination` | object | Result window reported by the API | | ↳ `offset` | number | Index of the first returned form | | ↳ `limit` | number | Page size applied | | ↳ `count` | number | Number of forms returned | ### Jotform Get Form [#jotform-get-form] Get the details of a single Jotform form, including its status, URL, and submission counts. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | Form ID, the numeric segment of the form URL | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------- | | `form` | object | The requested form | | ↳ `id` | string | Form ID | | ↳ `username` | string | Account that owns the form | | ↳ `title` | string | Form title | | ↳ `height` | string | Form height in pixels | | ↳ `status` | string | ENABLED, DISABLED, or DELETED | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `last_submission` | string | Time of the most recent submission | | ↳ `new` | string | Unread submission count | | ↳ `count` | string | Total submission count | | ↳ `type` | string | LEGACY or CARD | | ↳ `favorite` | string | 1 when the form is favorited, otherwise 0 | | ↳ `archived` | string | 1 when the form is archived, otherwise 0 | | ↳ `url` | string | Public form URL | ### Jotform Create Form [#jotform-create-form] Create a new Jotform form from a list of questions, plus optional form properties and notification emails. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `questions` | json | Yes | Array of question objects, each with type, text, order, and name, e.g. \[\{"type":"control\_email","text":"Email","order":"1","name":"email"}] | | `properties` | json | No | Form properties object, e.g. \{"title":"Contact Us","height":"600"} | | `emails` | json | No | Array of email objects, each with type (notification or autorespond), from, to, subject, html, and body | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `form` | object | The created form | | ↳ `id` | string | ID of the created form | | ↳ `username` | string | Account that owns the form | | ↳ `title` | string | Form title | | ↳ `height` | string | Form height in pixels | | ↳ `status` | string | ENABLED, DISABLED, or DELETED | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `new` | string | Unread submission count | | ↳ `count` | string | Total submission count | | ↳ `url` | string | Public form URL | ### Jotform Clone Form [#jotform-clone-form] Clone an existing Jotform form and return the copy. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to clone | #### Output [#output-3] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------- | | `form` | object | The newly created copy | | ↳ `id` | string | ID of the cloned form | | ↳ `username` | string | Account that owns the clone | | ↳ `title` | string | Form title | | ↳ `height` | string | Form height in pixels | | ↳ `status` | string | ENABLED, DISABLED, or DELETED | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `last_submission` | string | Time of the most recent submission | | ↳ `new` | string | Unread submission count | | ↳ `count` | string | Total submission count | | ↳ `type` | string | LEGACY or CARD | | ↳ `favorite` | string | 1 when the form is favorited, otherwise 0 | | ↳ `archived` | string | 1 when the form is archived, otherwise 0 | | ↳ `url` | string | Public URL of the cloned form | ### Jotform Delete Form [#jotform-delete-form] Delete a Jotform form. The API returns the form with status DELETED. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to delete | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------ | | `form` | object | The deleted form, as the API reports it after deletion | | ↳ `id` | string | Form ID | | ↳ `username` | string | Account that owned the form | | ↳ `title` | string | Form title | | ↳ `height` | string | Form height in pixels | | ↳ `status` | string | DELETED after a successful delete | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Deletion time, YYYY-MM-DD HH:MM:SS | | ↳ `new` | string | Unread submission count | | ↳ `count` | string | Total submission count | ### Jotform Get Form Properties [#jotform-get-form-properties] Get the settings of a form: layout, limits, redirect behavior, notification emails, and validation strings. Supply a property key to read just one. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to read properties from | | `propertyKey` | string | No | Single property to read instead of the whole set, e.g. formWidth, thankurl, or activeRedirect | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `properties` | json | Form properties keyed by property name. The set varies by form; documented keys include formWidth, labelWidth, activeRedirect, thankurl, expireDate, limitSubmission, styles, emails, and formStrings. | ### Jotform Update Form Properties [#jotform-update-form-properties] Update form settings such as the thank-you redirect, submission limit, width, or styles. Only the supplied keys change. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to update | | `properties` | json | Yes | Properties to set, e.g. \{ "thankurl": "[https://example.com/thanks](https://example.com/thanks)", "activeRedirect": "thankurl", "formWidth": "650" } | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ---- | --------------------------------------------------------- | | `properties` | json | The property keys that were edited, with their new values | ### Jotform List Form Files [#jotform-list-form-files] List every file uploaded through a form, with its download URL, size, type, and the submission it came from. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form whose uploads to list | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------- | | `files` | array | Files uploaded through the form | | ↳ `name` | string | File name | | ↳ `type` | string | MIME type, e.g. image/png | | ↳ `size` | string | File size in bytes | | ↳ `username` | string | Account that owns the form | | ↳ `form_id` | string | Form the file was uploaded through | | ↳ `submission_id` | string | Submission the file belongs to | | ↳ `date` | string | Upload time, YYYY-MM-DD HH:MM:SS | | ↳ `url` | string | Download URL for the file | ### Jotform List Questions [#jotform-list-questions] List every question on a form with its question ID, label, and field type. Question IDs are what submissions are keyed by. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form whose questions to list | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `questions` | array | Questions on the form. Each entry also carries the type-specific properties Jotform stores for that field, such as validation, sublabels, or options. | | ↳ `qid` | string | Question ID, used to key submission answers | | ↳ `name` | string | Slug of the question label | | ↳ `order` | string | Position of the question on the form | | ↳ `text` | string | Question label | | ↳ `type` | string | Field type, e.g. control\_textbox, control\_textarea, control\_dropdown, control\_fullname, control\_email, control\_fileupload | | ↳ `required` | string | Yes when the question is required | ### Jotform Get Question [#jotform-get-question] Get every property of a single form question, including its validation rules and field-specific settings. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form the question belongs to | | `questionId` | string | Yes | Question ID, available from the List Questions operation | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------ | | `question` | object | The requested question. Also carries the type-specific properties Jotform stores for that field. | | ↳ `qid` | string | Question ID | | ↳ `name` | string | Slug of the question label | | ↳ `order` | string | Position of the question on the form | | ↳ `text` | string | Question label | | ↳ `type` | string | Field type, e.g. control\_head or control\_textbox | | ↳ `required` | string | Yes when the question is required | ### Jotform Create Question [#jotform-create-question] Add a question to an existing Jotform form. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to add the question to | | `questionType` | string | Yes | Field type, e.g. control\_textbox, control\_textarea, control\_dropdown, control\_radio, control\_checkbox, control\_fileupload, control\_fullname, control\_email, or control\_datetime | | `text` | string | No | Question label shown on the form | | `order` | string | No | Position of the question on the form | | `name` | string | No | Slug for the question label | | `questionProperties` | json | No | Additional type-specific properties merged into the question, e.g. \{"required":"Yes","validation":"Numeric"} | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------- | | `question` | object | The created question, as stored on the form | | ↳ `qid` | string | ID assigned to the new question | | ↳ `name` | string | Slug of the question label | | ↳ `order` | string | Position of the question on the form | | ↳ `text` | string | Question label | | ↳ `type` | string | Field type of the question | | ↳ `required` | string | Yes when the question is required | ### Jotform Update Question [#jotform-update-question] Edit the properties of a form question, such as its label, order, or validation. Only the supplied properties change. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form the question belongs to | | `questionId` | string | Yes | ID of the question to edit | | `text` | string | No | New question label | | `order` | string | No | New position of the question on the form | | `name` | string | No | New slug for the question label | | `questionProperties` | json | No | Additional type-specific properties to set, e.g. \{"required":"Yes","validation":"Email"} | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------- | | `question` | json | The question properties that were edited, with their new values. Jotform echoes only the changed keys, such as text, order, and type. | ### Jotform Delete Question [#jotform-delete-question] Delete a question from a Jotform form. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form the question belongs to | | `questionId` | string | Yes | ID of the question to delete | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `deleted` | boolean | True when Jotform accepted the deletion | | `message` | string | Confirmation text returned by Jotform | ### Jotform List Form Submissions [#jotform-list-form-submissions] List the submissions received by one form, with each answer available both by question ID and by question label. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form whose submissions to list | | `offset` | string | No | Index of the first result to return. Default 0 | | `limit` | string | No | Number of submissions to return. Default 20, maximum 1000 | | `orderby` | string | No | Field to order by: id, form\_id, IP, created\_at, status, new, flag, or updated\_at | | `direction` | string | No | Sort direction: ASC or DESC | | `filter` | json | No | Filter object, e.g. \{"created\_at:gt":"2024-01-01 00:00:00"}, \{"new":"1"}, or \{"fullText":"John Brown"} | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `submissions` | array | Submissions received by the form | | ↳ `id` | string | Submission ID | | ↳ `form_id` | string | Form the submission belongs to | | ↳ `ip` | string | IP address of the submitter | | ↳ `created_at` | string | Submission time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last edit time, YYYY-MM-DD HH:MM:SS | | ↳ `status` | string | ACTIVE or OVERQUOTA | | ↳ `new` | string | 1 when the submission is unread | | ↳ `workflowStatus` | string | Approval state, present only when the form feeds a workflow | | ↳ `answers` | json | Answers keyed by question ID. Each holds text (the question label), type, answer, and prettyFormat when Jotform renders one. | | ↳ `values` | json | The same answers re-keyed by question label, each rendered as a single string. A label shared by more than one question is suffixed with its question ID on every occurrence, so no answer is lost. | | `pagination` | object | Result window reported by the API | | ↳ `offset` | number | Index of the first returned submission | | ↳ `limit` | number | Page size applied | | ↳ `count` | number | Number of submissions returned | ### Jotform List Submissions [#jotform-list-submissions] List submissions across every form on the account, optionally narrowed to specific forms or a date range. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `offset` | string | No | Index of the first result to return. Default 0 | | `limit` | string | No | Number of submissions to return. Default 20, maximum 1000 | | `orderby` | string | No | Field to order by: id, form\_id, IP, created\_at, status, new, flag, or updated\_at | | `direction` | string | No | Sort direction: ASC or DESC | | `filter` | json | No | Filter object, e.g. \{"formIDs":\["231234567890"]}, \{"created\_at:gt":"2024-01-01 00:00:00"}, or \{"fullText":"John Brown"} | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `submissions` | array | Submissions across every form on the account | | ↳ `id` | string | Submission ID | | ↳ `form_id` | string | Form the submission belongs to | | ↳ `ip` | string | IP address of the submitter | | ↳ `created_at` | string | Submission time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last edit time, YYYY-MM-DD HH:MM:SS | | ↳ `status` | string | ACTIVE or OVERQUOTA | | ↳ `new` | string | 1 when the submission is unread | | ↳ `workflowStatus` | string | Approval state, present only when the form feeds a workflow | | ↳ `answers` | json | Answers keyed by question ID. Each holds text (the question label), type, answer, and prettyFormat when Jotform renders one. | | ↳ `values` | json | The same answers re-keyed by question label, each rendered as a single string. A label shared by more than one question is suffixed with its question ID on every occurrence, so no answer is lost. | | `pagination` | object | Result window reported by the API | | ↳ `offset` | number | Index of the first returned submission | | ↳ `limit` | number | Page size applied | | ↳ `count` | number | Number of submissions returned | ### Jotform Get Submission [#jotform-get-submission] Get a single Jotform submission, with its answers available both by question ID and by question label. #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `submissionId` | string | Yes | ID of the submission to read | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `submission` | object | The requested submission | | ↳ `id` | string | Submission ID | | ↳ `form_id` | string | Form the submission belongs to | | ↳ `ip` | string | IP address of the submitter | | ↳ `created_at` | string | Submission time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last edit time, YYYY-MM-DD HH:MM:SS | | ↳ `status` | string | ACTIVE or OVERQUOTA | | ↳ `new` | string | 1 when the submission is unread | | ↳ `workflowStatus` | string | Approval state, present only when the form feeds a workflow | | ↳ `answers` | json | Answers keyed by question ID. Each holds text (the question label), type, answer, and prettyFormat when Jotform renders one. | | ↳ `values` | json | The same answers re-keyed by question label, each rendered as a single string. A label shared by more than one question is suffixed with its question ID on every occurrence, so no answer is lost. | ### Jotform Create Submission [#jotform-create-submission] Submit an entry to a Jotform form. Answers are keyed by question ID, which the List Questions operation returns. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to submit to | | `answers` | json | Yes | Answers keyed by question ID. Multi-field questions take either a nested object or the documented shorthand, e.g. \{"3":\{"first":"Bart","last":"Simpson"},"4":"Hello"} or \{"3\_first":"Bart","3\_last":"Simpson"} | #### Output [#output-16] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `submissionId` | string | ID of the submission that was created | | `url` | string | API URL of the new submission | ### Jotform Update Submission [#jotform-update-submission] Edit an existing Jotform submission. Only the question IDs supplied are changed; the rest keep their stored answers. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `submissionId` | string | Yes | ID of the submission to edit | | `answers` | json | Yes | Answers to overwrite, keyed by question ID, e.g. \{"4":"Updated message","3":\{"first":"Lisa"}} or the shorthand \{"3\_first":"Lisa"}. The control keys new, flag, and status are passed through unchanged. | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------ | | `submissionId` | string | ID of the submission that was edited | | `url` | string | API URL of the submission | ### Jotform Delete Submission [#jotform-delete-submission] Delete a single Jotform submission. #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `submissionId` | string | Yes | ID of the submission to delete | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `deleted` | boolean | True when Jotform accepted the deletion | | `message` | string | Confirmation text returned by Jotform | ### Jotform List Reports [#jotform-list-reports] List every report on the account, across all forms, with the shareable URL for each Excel, CSV, grid, table, calendar, RSS, or visual report. #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------- | | `reports` | array | Reports across every form on the account | | ↳ `id` | string | Report ID | | ↳ `form_id` | string | Form the report is built from | | ↳ `title` | string | Report title | | ↳ `fields` | string | Comma-separated fields included in the report: ip, dt (submission date), and question IDs | | ↳ `list_type` | string | Report type: excel, csv, grid, table, calendar, rss, or visual | | ↳ `status` | string | ENABLED or DELETED | | ↳ `url` | string | Shareable URL of the report | | ↳ `isProtected` | boolean | True when the report is password protected | | ↳ `settings` | string | Report display settings, as a JSON string | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform List Form Reports [#jotform-list-form-reports] List the reports built from one form, each with its shareable URL. #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form whose reports to list | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------- | | `reports` | array | Reports built from the form | | ↳ `id` | string | Report ID | | ↳ `form_id` | string | Form the report is built from | | ↳ `title` | string | Report title | | ↳ `fields` | string | Comma-separated fields included in the report: ip, dt (submission date), and question IDs | | ↳ `list_type` | string | Report type: excel, csv, grid, table, calendar, rss, or visual | | ↳ `status` | string | ENABLED or DELETED | | ↳ `url` | string | Shareable URL of the report | | ↳ `isProtected` | boolean | True when the report is password protected | | ↳ `settings` | string | Report display settings, as a JSON string | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform Create Report [#jotform-create-report] Create a shareable report of a form, choosing the report type and which submission fields it shows. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to build the report from | | `title` | string | Yes | Title of the report | | `listType` | string | Yes | Report type: excel, csv, grid, table, calendar, rss, or visual | | `fields` | string | No | Comma-separated fields to include: ip, dt (submission date), and question IDs, e.g. "ip,dt,3,4" | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------- | | `report` | object | The created report | | ↳ `id` | string | Report ID | | ↳ `form_id` | string | Form the report is built from | | ↳ `title` | string | Report title | | ↳ `fields` | string | Comma-separated fields included in the report | | ↳ `list_type` | string | Report type that was created | | ↳ `status` | string | ENABLED or DELETED | | ↳ `url` | string | Shareable URL of the report | | ↳ `isProtected` | boolean | True when the report is password protected | ### Jotform Get Report [#jotform-get-report] Get the details and shareable URL of a single Jotform report. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `reportId` | string | Yes | ID of the report to read | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------- | | `report` | object | The requested report | | ↳ `id` | string | Report ID | | ↳ `form_id` | string | Form the report is built from | | ↳ `title` | string | Report title | | ↳ `fields` | string | Comma-separated fields included in the report | | ↳ `list_type` | string | Report type: excel, csv, grid, table, calendar, rss, or visual | | ↳ `status` | string | ENABLED or DELETED | | ↳ `url` | string | Shareable URL of the report | | ↳ `isProtected` | boolean | True when the report is password protected | | ↳ `settings` | string | Report display settings, as a JSON string | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform Delete Report [#jotform-delete-report] Delete an existing Jotform report. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `reportId` | string | Yes | ID of the report to delete | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `deleted` | boolean | True when Jotform accepted the deletion | | `message` | string | Confirmation text returned by Jotform | ### Jotform List Webhooks [#jotform-list-webhooks] List the webhooks registered on a form. The returned IDs are what the Delete Webhook operation takes. #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form whose webhooks to list | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------ | | `webhooks` | array | Webhooks registered on the form | | ↳ `id` | string | Webhook ID, used when deleting the webhook | | ↳ `url` | string | URL that receives submission notifications | ### Jotform Create Webhook [#jotform-create-webhook] Register a webhook on a form so every new submission is posted to the given URL. Returns the full webhook list for the form. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to add the webhook to | | `webhookUrl` | string | Yes | URL that Jotform posts submission data to | #### Output [#output-25] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------- | | `webhooks` | array | Webhooks registered on the form after the addition | | ↳ `id` | string | Webhook ID, used when deleting the webhook | | ↳ `url` | string | URL that receives submission notifications | ### Jotform Delete Webhook [#jotform-delete-webhook] Remove a webhook from a form. Returns the webhooks that remain registered on the form. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form the webhook belongs to | | `webhookId` | string | Yes | Webhook ID, available from the List Webhooks operation | #### Output [#output-26] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------- | | `webhooks` | array | Webhooks still registered on the form after the deletion | | ↳ `id` | string | Webhook ID | | ↳ `url` | string | URL that receives submission notifications | ### Jotform Get Account [#jotform-get-account] Get the Jotform account behind the API key, including its plan, status, time zone, and contact details. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | #### Output [#output-27] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `user` | object | The account the API key belongs to | | ↳ `username` | string | Jotform username | | ↳ `name` | string | Display name on the account | | ↳ `email` | string | Account email address | | ↳ `website` | string | Website recorded on the account | | ↳ `time_zone` | string | Account time zone, in IANA format | | ↳ `account_type` | string | URL of the plan the account is on | | ↳ `status` | string | ACTIVE, DELETED, or SUSPENDED | | ↳ `created_at` | string | Account creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `is_verified` | string | 1 when the account email is verified | | ↳ `industry` | string | Industry recorded on the account | | ↳ `company` | string | Company recorded on the account | | ↳ `language` | string | Account interface language, e.g. en-US | | ↳ `avatarUrl` | string | Avatar image URL | | ↳ `usage` | string | URL of the monthly usage endpoint | ### Jotform Get Usage [#jotform-get-usage] Get this month usage for the account: submissions received, payments, form views, upload space, and API calls made today. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | #### Output [#output-28] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------- | | `usage` | object | Usage counters for the current month | | ↳ `submissions` | string | Submissions received this month | | ↳ `ssl_submissions` | string | Secure submissions received this month | | ↳ `payments` | string | Payment submissions received this month | | ↳ `uploads` | string | Disk space used by uploaded files, in bytes | | ↳ `mobile_submissions` | string | Mobile submissions received this month | | ↳ `views` | string | Form views received this month | | ↳ `api` | string | API calls made today | ### Jotform Get History [#jotform-get-history] Read the account activity log: forms created, updated, deleted or purged, and account logins. #### Input [#input-29] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `action` | string | No | Activity to filter by: all (default), userCreation, userLogin, formCreation, formUpdate, formDelete, or formPurge | | `date` | string | No | Named date range to limit results to, e.g. lastWeek. Use startDate and endDate for an explicit range instead | | `sortBy` | string | No | Sort order: ASC or DESC | | `startDate` | string | No | Only return activity after this date. Format MM/DD/YYYY | | `endDate` | string | No | Only return activity before this date. Format MM/DD/YYYY | #### Output [#output-29] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------ | | `history` | array | Account activity entries | | ↳ `type` | string | Activity type: userCreation, userLogin, formCreation, formUpdate, formDelete, or formPurge | | ↳ `formID` | string | Form the activity applied to | | ↳ `username` | string | Account that performed the activity | | ↳ `formTitle` | string | Title of the affected form | | ↳ `formStatus` | string | Status of the form after the activity | | ↳ `ip` | string | IP address the activity came from | | ↳ `timestamp` | string | Unix timestamp of the activity, in seconds | ### Jotform Create Submissions [#jotform-create-submissions] Submit several entries to a Jotform form in one call. Each entry is keyed by question ID. #### Input [#input-30] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to submit to | | `submissions` | json | Yes | Array of submissions. Each entry maps a question ID to an object holding its answer, e.g. \[\{"1":\{"text":"Answer 1"},"2":\{"text":"Answer 2"}}] | #### Output [#output-30] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `submissions` | array | The submissions that were created | | ↳ `submissionId` | string | ID of the created submission | | ↳ `url` | string | API URL of the created submission | | `count` | number | Number of submissions created | ### Jotform Create Questions [#jotform-create-questions] Add several questions to an existing Jotform form in one call. #### Input [#input-31] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `formId` | string | Yes | ID of the form to add the questions to | | `questions` | json | Yes | Array of question objects, each with type, text, order, and name, e.g. \[\{"type":"control\_head","text":"Text 1","order":"1","name":"Header1"}] | #### Output [#output-31] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------- | | `questions` | array | The questions that were added, as stored on the form | | ↳ `qid` | string | ID assigned to the question | | ↳ `name` | string | Slug of the question label | | ↳ `order` | string | Position of the question on the form | | ↳ `text` | string | Question label | | ↳ `type` | string | Field type of the question | | ↳ `required` | string | Yes when the question is required | ### Jotform List Labels [#jotform-list-labels] List the labels on the account as a tree. Labels are how Jotform groups forms, workflows, sheets, and apps, replacing the older folder endpoints. #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `addResources` | string | No | Set to "true" to include the resources assigned to each label | #### Output [#output-32] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------- | | `labels` | array | Labels on the account. The API returns a root entry whose sublabels hold the user-visible labels, nested to arbitrary depth. | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `order` | string | Position among its siblings | | ↳ `color` | string | Label color, as a hex code | | ↳ `owner` | string | Account that owns the label | | ↳ `parent_label_id` | string | ID of the parent label | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `sublabels` | json | Nested labels beneath this one | ### Jotform Get Label [#jotform-get-label] Get the name, color, and owner of a single Jotform label. #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label to read, available from the List Labels operation | #### Output [#output-33] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `label` | object | The requested label | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `order` | string | Position among its siblings | | ↳ `color` | string | Label color, as a hex code | | ↳ `owner` | string | Account that owns the label | | ↳ `ownerType` | string | Owner kind, e.g. USER | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform Create Label [#jotform-create-label] Create a Jotform label for grouping forms and other assets, optionally nested under a parent label. #### Input [#input-34] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelName` | string | Yes | Name of the label, e.g. "IT Operations" | | `color` | string | No | Label color as a hex code, e.g. "#FFDC7B" | | `parent` | string | No | ID of the parent label to nest this label under | #### Output [#output-34] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `label` | object | The created label | | ↳ `id` | string | ID assigned to the new label | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color, as a hex code | | ↳ `owner` | string | Account that owns the label | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform Update Label [#jotform-update-label] Rename a Jotform label or change its color. #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label to update | | `labelName` | string | No | New name for the label | | `color` | string | No | New label color as a hex code, e.g. "#23FFDD" | #### Output [#output-35] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------------------------------------------------------------------------- | | `label` | json | The label fields that were edited, with their new values. Jotform echoes only the changed keys, such as name and color. | ### Jotform Delete Label [#jotform-delete-label] Delete a Jotform label along with all of its sublabels. #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label to delete | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `deleted` | boolean | True when Jotform accepted the deletion | | `message` | string | Confirmation text returned by Jotform | ### Jotform List Label Resources [#jotform-list-label-resources] List the assets assigned to a label — forms, workflows, sheets, and apps — with their status and titles. #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label whose assets to list | | `offset` | string | No | Index of the first result to return. Default 0 | | `limit` | string | No | Number of assets to return | | `orderby` | string | No | Field to order by, e.g. created\_at | | `status` | string | No | Filter by asset status, e.g. active | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------- | | `resources` | array | Assets assigned to the label | | ↳ `id` | string | Asset ID | | ↳ `username` | string | Account that owns the asset | | ↳ `title` | string | Asset title | | ↳ `status` | string | Asset status, e.g. ENABLED or AUTODISABLED | | ↳ `assetType` | string | Kind of asset: form, workflow, sheet, or portal | | ↳ `type` | string | Asset subtype, e.g. LEGACY, APP, or default | | ↳ `labels` | string | Label IDs the asset belongs to | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | ### Jotform Add Label Resources [#jotform-add-label-resources] Assign forms, workflows, sheets, or apps to a Jotform label. #### Input [#input-38] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label to assign the assets to | | `resources` | json | Yes | Assets to add, each with an id and a type of form, workflow, sheet, or portal, e.g. \[\{"id":"251464995493876","type":"form"}] | #### Output [#output-38] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------- | | `resources` | array | The assets now assigned to the label | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset kind, echoed uppercase: FORM, WORKFLOW, SHEET, or PORTAL | ### Jotform Remove Label Resources [#jotform-remove-label-resources] Unassign forms, workflows, sheets, or apps from a Jotform label. #### Input [#input-39] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `labelId` | string | Yes | ID of the label to remove the assets from | | `resources` | json | Yes | Assets to remove, each with an id and a type of form, workflow, sheet, or portal, e.g. \[\{"id":"251464995493876","type":"form"}] | #### Output [#output-39] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------- | | `resources` | array | The assets reported by the API after the removal | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset kind, echoed uppercase: FORM, WORKFLOW, SHEET, or PORTAL | ### Jotform List Sub-Users [#jotform-list-sub-users] List the sub-users on the account with the forms and folders each one can reach, and at what access level. #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | #### Output [#output-40] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------- | | `subusers` | array | Sub-users on the account | | ↳ `username` | string | Sub-user username | | ↳ `email` | string | Sub-user email address | | ↳ `owner` | string | Parent account that created the sub-user | | ↳ `status` | string | LIVE, DELETED, or PENDING while an invitation is unaccepted | | ↳ `created_at` | string | Creation time, YYYY-MM-DD HH:MM:SS | | ↳ `permissions` | json | What the sub-user can reach: each entry has type (FORM, FOLDER, or ALL), resource\_id, access\_type (full or readOnly), and title | ### Jotform Get Settings [#jotform-get-settings] Read the account settings behind the API key, including time zone, language, and contact details. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `settingsKey` | string | No | Single setting to read instead of the whole set, e.g. time\_zone | #### Output [#output-41] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------------------ | | `user` | object | Account settings. Reading a single setting fills only that field and leaves the rest null. | | ↳ `username` | string | Jotform username | | ↳ `name` | string | Display name on the account | | ↳ `email` | string | Account email address | | ↳ `website` | string | Website recorded on the account | | ↳ `time_zone` | string | Account time zone, in IANA format | | ↳ `account_type` | string | URL of the plan the account is on | | ↳ `status` | string | ACTIVE, DELETED, or SUSPENDED | | ↳ `created_at` | string | Account creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `is_verified` | string | 1 when the account email is verified | | ↳ `industry` | string | Industry recorded on the account | | ↳ `company` | string | Company recorded on the account | | ↳ `language` | string | Account interface language, e.g. en-US | | ↳ `avatarUrl` | string | Avatar image URL | | ↳ `usage` | string | URL of the monthly usage endpoint | ### Jotform Update Settings [#jotform-update-settings] Update account settings such as name, email, website, company, industry, or time zone. Only the supplied fields change. #### Input [#input-42] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Jotform API key | | `region` | string | No | Jotform data residency region the API key belongs to: "us" (default), "eu", or "hipaa" | | `settingsName` | string | No | New display name on the account | | `email` | string | No | New account email address | | `website` | string | No | New website recorded on the account | | `timeZone` | string | No | New account time zone in IANA format, e.g. America/New\_York | | `company` | string | No | New company recorded on the account | | `industry` | string | No | New industry recorded on the account | #### Output [#output-42] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------------------------------- | | `user` | object | The account after the update. Jotform returns null for the fields it did not echo back. | | ↳ `username` | string | Jotform username | | ↳ `name` | string | Display name on the account | | ↳ `email` | string | Account email address | | ↳ `website` | string | Website recorded on the account | | ↳ `time_zone` | string | Account time zone, in IANA format | | ↳ `account_type` | string | URL of the plan the account is on | | ↳ `status` | string | ACTIVE, DELETED, or SUSPENDED | | ↳ `created_at` | string | Account creation time, YYYY-MM-DD HH:MM:SS | | ↳ `updated_at` | string | Last update time, YYYY-MM-DD HH:MM:SS | | ↳ `is_verified` | string | 1 when the account email is verified | | ↳ `industry` | string | Industry recorded on the account | | ↳ `company` | string | Company recorded on the account | | ↳ `language` | string | Account interface language, e.g. en-US | | ↳ `avatarUrl` | string | Avatar image URL | | ↳ `usage` | string | URL of the monthly usage endpoint | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Jotform Webhook [#jotform-webhook] Trigger workflow when a Jotform form receives a new submission #### Configuration [#configuration] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `formId` | string | Yes | The form to watch. It is the numeric segment of the form URL, and the List Forms operation returns it. | | `apiKey` | string | Yes | Used to register the webhook on the form automatically. Create one under Account Settings > API. | | `apiRegion` | string | No | Data residency region the API key belongs to. A key only works on the host that issued it. | #### Output [#output-43] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `formId` | string | ID of the form that was submitted | | `submissionId` | string | ID of the new submission | | `formTitle` | string | Title of the form at the time of submission | | `username` | string | Jotform account username that owns the form | | `ip` | string | IP address the submission came from | | `submissionType` | string | How the submission was made, e.g. WEB | | `pretty` | string | Human-readable summary of the answers, as comma-separated "Question Label:Answer" pairs. Unanswered questions are left out. | | `rawRequest` | json | The submitted form body. Answers are keyed q\{questionId}\_\{slugifiedLabel} and hold a string, or an object for a multi-part question such as name or address. A file answer instead appears under the plain slugified label as an array of upload URLs, with the chosen filenames under temp\_upload. The body also carries form-internal fields such as slug, buildDate, submitSource, and jsExecutionTracker. | | `raw` | json | Complete original webhook payload from Jotform | --- # Jupyter (/integrations/jupyter) {/* MANUAL-CONTENT-START:intro */} [Jupyter](https://jupyter.org/) is an open-source platform for interactive computing, best known for the Jupyter Notebook interface that combines live code, visualizations, and narrative text. It runs as a server that exposes files, notebooks, kernels, and sessions over an HTTP API. With Jupyter, you can: * **Manage files and notebooks**: List, read, create, upload, rename, copy, and delete files, notebooks, and directories * **Control kernels**: List, start, stop, restart, and interrupt the runtimes that execute notebook code * **Manage sessions**: List, create, and delete sessions that bind a notebook path to a running kernel In Agent Serve, the Jupyter integration allows your agents to connect to a self-hosted Jupyter server and drive it programmatically—browsing and editing files and notebooks, uploading content, and managing kernels and sessions that bind notebooks to running code environments. This lets your agents automate notebook-based workflows, such as provisioning a kernel, writing or updating notebook content, and cleaning up sessions and files as part of a larger pipeline. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate a self-hosted Jupyter server into the workflow. Browse, read, create, upload, rename, copy, and delete files and notebooks; start, stop, restart, and interrupt kernels; and manage sessions that bind notebooks to kernels. ## Actions [#actions] ### Jupyter List Contents [#jupyter-list-contents] List files, notebooks, and subdirectories at a path on a Jupyter server #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | No | Directory path to list, relative to the server root. Leave blank for root. | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------- | | `items` | array | Directory entries at the requested path | | ↳ `name` | string | Entry name | | ↳ `path` | string | Entry path relative to server root | | ↳ `type` | string | directory, file, or notebook | | ↳ `writable` | boolean | Whether the entry is writable | | ↳ `created` | string | Creation timestamp | | ↳ `lastModified` | string | Last modified timestamp | | ↳ `size` | number | Size in bytes | | ↳ `mimetype` | string | MIME type (files only) | | ↳ `format` | string | json, text, or base64 | | `path` | string | The listed directory path | ### Jupyter Get Content [#jupyter-get-content] Download a file as a stored file, or read structured notebook and directory content #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Path of the file or notebook to read, relative to the server root | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------------- | | `file` | file | Downloaded file | | `text` | string | JSON-stringified notebook or directory content | | `name` | string | Notebook or directory name | | `path` | string | Notebook or directory path | | `mimetype` | string | Notebook or directory MIME type | ### Jupyter Create File [#jupyter-create-file] Create a file, notebook, or directory on a Jupyter server #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Path to create, relative to the server root | | `type` | string | Yes | Type of entry to create: file, notebook, or directory | | `content` | string | No | Content to write. For a file, plain text. For a notebook, a JSON-stringified nbformat document (defaults to an empty notebook). Ignored for directories. | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ---------------------------- | | `name` | string | Created entry name | | `path` | string | Created entry path | | `type` | string | directory, file, or notebook | | `createdAt` | string | Creation timestamp | | `lastModified` | string | Last modified timestamp | ### Jupyter Upload File [#jupyter-upload-file] Upload a file to a Jupyter server #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `directory` | string | No | Destination directory, relative to the server root. Leave blank to upload to the root directory. | | `file` | file | No | The file to upload (UserFile object) | | `fileName` | string | No | Optional filename override | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ----------------------- | | `name` | string | Uploaded file name | | `path` | string | Uploaded file path | | `size` | number | File size in bytes | | `lastModified` | string | Last modified timestamp | ### Jupyter Rename Content [#jupyter-rename-content] Rename or move a file, notebook, or directory on a Jupyter server #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Current path of the entry, relative to the server root | | `newPath` | string | Yes | New path for the entry, relative to the server root | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ----------------------- | | `name` | string | New entry name | | `path` | string | New entry path | | `lastModified` | string | Last modified timestamp | ### Jupyter Delete Content [#jupyter-delete-content] Delete a file, notebook, or directory on a Jupyter server #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Path of the entry to delete, relative to the server root | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `success` | boolean | Whether the entry was deleted | | `path` | string | Deleted entry path | ### Jupyter Copy Content [#jupyter-copy-content] Duplicate a file or notebook into a directory on a Jupyter server #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Destination directory path, relative to the server root | | `copyFromPath` | string | Yes | Path of the file or notebook to copy, relative to the server root | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `name` | string | Name of the copied entry | | `path` | string | Path of the copied entry | | `createdAt` | string | Creation timestamp | ### Jupyter List Kernels [#jupyter-list-kernels] List running kernels on a Jupyter server #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | ----------------------- | | `kernels` | array | Running kernels | | ↳ `id` | string | Kernel ID | | ↳ `name` | string | Kernel spec name | | ↳ `lastActivity` | string | Last activity timestamp | | ↳ `executionState` | string | Kernel execution state | | ↳ `connections` | number | Active connection count | ### Jupyter Start Kernel [#jupyter-start-kernel] Start a new kernel on a Jupyter server #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `kernelName` | string | No | Kernel spec name to start (e.g. python3). Defaults to the server default. | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | ----------------------- | | `id` | string | Kernel ID | | `name` | string | Kernel spec name | | `lastActivity` | string | Last activity timestamp | | `executionState` | string | Kernel execution state | | `connections` | number | Active connection count | ### Jupyter Stop Kernel [#jupyter-stop-kernel] Shut down a running kernel on a Jupyter server #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `kernelId` | string | Yes | ID of the kernel to shut down | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------- | -------------------------------- | | `success` | boolean | Whether the kernel was shut down | | `kernelId` | string | Shut down kernel ID | ### Jupyter Restart Kernel [#jupyter-restart-kernel] Restart a running kernel on a Jupyter server #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `kernelId` | string | Yes | ID of the kernel to restart | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ----------------------- | | `id` | string | Kernel ID | | `name` | string | Kernel spec name | | `lastActivity` | string | Last activity timestamp | | `executionState` | string | Kernel execution state | | `connections` | number | Active connection count | ### Jupyter Interrupt Kernel [#jupyter-interrupt-kernel] Interrupt a running kernel on a Jupyter server #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `kernelId` | string | Yes | ID of the kernel to interrupt | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ------------------------------ | | `success` | boolean | Whether the interrupt was sent | | `kernelId` | string | Interrupted kernel ID | ### Jupyter List Kernel Specs [#jupyter-list-kernel-specs] List available kernel specs (languages/runtimes) on a Jupyter server #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------ | --------------------------- | | `defaultKernelName` | string | Default kernel spec name | | `kernelspecs` | array | Available kernel specs | | ↳ `name` | string | Kernel spec name | | ↳ `displayName` | string | Human-readable display name | | ↳ `language` | string | Kernel language | | ↳ `argv` | array | Launch command arguments | | ↳ `interruptMode` | string | Interrupt mode | ### Jupyter List Sessions [#jupyter-list-sessions] List active sessions (notebook-to-kernel bindings) on a Jupyter server #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------- | | `sessions` | array | Active sessions | | ↳ `id` | string | Session ID | | ↳ `path` | string | Notebook path bound to this session | | ↳ `name` | string | Session name | | ↳ `type` | string | Session type | | ↳ `kernel` | object | Kernel bound to this session | | ↳ `id` | string | Kernel ID | | ↳ `name` | string | Kernel spec name | | ↳ `lastActivity` | string | Last activity timestamp | | ↳ `executionState` | string | Kernel execution state | | ↳ `connections` | number | Active connection count | ### Jupyter Create Session [#jupyter-create-session] Create a session that binds a notebook path to a (new or existing) kernel #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `path` | string | Yes | Notebook path to bind the session to, relative to the server root | | `kernelName` | string | No | Kernel spec name to start for this session (e.g. python3) | | `name` | string | No | Optional session name | | `type` | string | No | Session type, defaults to 'notebook' | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------- | | `id` | string | Session ID | | `path` | string | Notebook path bound to this session | | `name` | string | Session name | | `type` | string | Session type | | `kernel` | object | Kernel bound to this session | | ↳ `id` | string | Kernel ID | | ↳ `name` | string | Kernel spec name | | ↳ `lastActivity` | string | Last activity timestamp | | ↳ `executionState` | string | Kernel execution state | | ↳ `connections` | number | Active connection count | ### Jupyter Delete Session [#jupyter-delete-session] Delete a session on a Jupyter server (does not shut down its kernel) #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `serverUrl` | string | Yes | Base URL of the Jupyter server (e.g. [http://localhost:8888](http://localhost:8888)) | | `token` | string | Yes | Jupyter server authentication token | | `sessionId` | string | Yes | ID of the session to delete | #### Output [#output-15] | Parameter | Type | Description | | ----------- | ------- | ------------------------------- | | `success` | boolean | Whether the session was deleted | | `sessionId` | string | Deleted session ID | --- # JustCall (/integrations/justcall) ## Usage Instructions [#usage-instructions] Integrate the JustCall cloud phone and SMS dialer into the workflow. List and review calls, set call notes and dispositions, read JustCall AI summaries, send and read SMS, create, update, and search contacts, and list users and phone numbers. Can also run workflows on JustCall call, SMS, and contact events. Requires a JustCall API key and secret (Team plan or higher). ## Actions [#actions] ### JustCall List Calls [#justcall-list-calls] List JustCall calls, filtered by agent, direction, outcome, traits, disposition, contact number, JustCall number, or a date range. #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `agentId` | string | No | Only calls of this agent (user) ID | | `callDirection` | string | No | Incoming or Outgoing | | `callType` | string | No | Call outcome: OUTGOING\_ANSWERED, OUTGOING\_UNANSWERED, OUTGOING\_BUSY, OUTGOING\_FAILED, OUTGOING\_RESTRICTED, OUTGOING\_BLOCKED, OUTGOING\_CANCELLED, INCOMING\_ANSWERED, INCOMING\_BUSY, INCOMING\_FAILED, INCOMING\_MISSED, INCOMING\_ABANDONED, INCOMING\_VOICEMAIL | | `callTraits` | string | No | Comma-separated traits: QUEUE, CALLBACK, FORWARD, TRANSFER, MERGE, IVR, VOICE\_AGENT | | `dispositionCodes` | string | No | Comma-separated disposition codes in "List: Code" form, e.g. "Sales: Lead" | | `contactNumber` | string | No | Contact number with country code | | `justcallNumber` | string | No | JustCall number the calls went through | | `fromDatetime` | string | No | Start, as yyyy-mm-dd or yyyy-mm-dd hh:mm:ss in the user's timezone | | `toDatetime` | string | No | End, as yyyy-mm-dd or yyyy-mm-dd hh:mm:ss in the user's timezone | | `fetchAiData` | boolean | No | Include JustCall AI coaching data | | `fetchQueueData` | boolean | No | Include queue callback data | | `sort` | string | No | Sort by "id" (default) or "datetime" | | `order` | string | No | "desc" (default) or "asc" | | `page` | number | No | Page number | | `perPage` | number | No | Calls per page, 1 to 100 (default 20) | | `lastCallIdFetched` | string | No | ID of the last call of the previous page, to avoid duplicates | #### Output [#output] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `calls` | array | Calls in this page | ### JustCall Get Call [#justcall-get-call] Get a JustCall call by ID or call SID: direction, outcome, duration, contact, agent, recording, notes, and disposition. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `callId` | string | Yes | JustCall call ID (numeric) or call SID | | `fetchAiData` | boolean | No | Include JustCall AI coaching data | | `fetchQueueData` | boolean | No | Include queue callback data | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ----------- | | `call` | object | The call | ### JustCall Update Call [#justcall-update-call] Set the notes, disposition, or rating of a completed JustCall call. New notes replace the existing notes. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `callId` | string | Yes | JustCall call ID (numeric) or call SID | | `notes` | string | No | Call notes. Replaces any existing notes. | | `dispositionCode` | string | No | Existing disposition code in "List: Code" form, e.g. "Sales: Follow Up" for the Follow Up code of the Sales list | | `rating` | number | No | Rating from 0 to 5 in steps of 0.5 | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `call` | object | The updated call | ### JustCall Get Call AI Insights [#justcall-get-call-ai-insights] Get the JustCall AI analysis of a call: summary, action items, customer sentiment, call score, smart chapters, and optionally the transcript. Requires JustCall AI. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `callId` | string | Yes | Numeric JustCall call ID | | `platform` | string | No | "justcall" (default) or "sales\_dialer" | | `fetchTranscription` | boolean | No | Include the transcript (off by default) | | `fetchSummary` | boolean | No | Include the summary (on by default) | | `fetchActionItems` | boolean | No | Include action items (on by default) | | `fetchAiInsights` | boolean | No | Include coaching insights (on by default) | | `fetchSmartChapters` | boolean | No | Include smart chapters (on by default) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | -------------------------------- | | `insights` | object | JustCall AI analysis of the call | ### JustCall Send SMS [#justcall-send-sms] Send an SMS or MMS from a JustCall number to a contact, now or at a scheduled time. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `justcallNumber` | string | Yes | JustCall number to send from, in E.164 format (e.g. +14155550100) | | `contactNumber` | string | Yes | Recipient number in E.164 format | | `body` | string | Yes | Message text, up to 1600 characters | | `mediaUrl` | string | No | Comma-separated public media URLs to send as MMS (up to 10) | | `restrictOnce` | boolean | No | Skip the send if this recipient already got an SMS in the last 24 hours | | `scheduleAt` | string | No | Send later, as YYYY-MM-DD HH:mm:ss | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `sms` | object | The sent message | ### JustCall List SMS [#justcall-list-sms] List JustCall SMS messages, filtered by contact number, JustCall number, direction, content, or a date range. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `contactNumber` | string | No | Contact number in E.164 format | | `justcallNumber` | string | No | JustCall number in E.164 format | | `smsDirection` | string | No | incoming or outgoing | | `smsContent` | string | No | Keywords the message text contains | | `fromDatetime` | string | No | Start, as yyyy-mm-dd or yyyy-mm-dd hh:mm:ss in the user's timezone | | `toDatetime` | string | No | End, as yyyy-mm-dd or yyyy-mm-dd hh:mm:ss in the user's timezone | | `sort` | string | No | Sort by "id" (default) or "datetime" | | `order` | string | No | "asc" or "desc" | | `page` | number | No | Page number | | `perPage` | number | No | Messages per page, 1 to 100 (default 20) | | `lastSmsIdFetched` | string | No | ID of the last message of the previous page, to avoid duplicates | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ----- | --------------------- | | `messages` | array | Messages in this page | ### JustCall Get SMS [#justcall-get-sms] Get a JustCall SMS by ID: text, direction, contact, agent, and delivery status. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `smsId` | string | Yes | JustCall SMS ID | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------- | | `sms` | object | The message | ### JustCall Create Contact [#justcall-create-contact] Add a contact to JustCall with a name, phone number, and optional email, company, address, notes, and other numbers. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `firstName` | string | Yes | First name | | `contactNumber` | string | Yes | Primary phone number with country code | | `lastName` | string | No | Last name | | `email` | string | No | Email address | | `company` | string | No | Company | | `address` | string | No | Address | | `extension` | number | No | Extension to assign to the contact | | `otherNumbers` | string | No | Other phone numbers: comma-separated (labeled Mobile), or a JSON array of \{"label", "number"} objects | | `acrossTeam` | boolean | No | Apply to the contact of every agent instead of only the account owner | | `notes` | string | No | Notes about the contact | | `agentId` | string | No | Create the contact only for this agent ID | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `contact` | object | The created contact | ### JustCall Update Contact [#justcall-update-contact] Update a JustCall contact found by ID or phone number: name, email, company, address, notes, and other numbers. With an ID, a phone number replaces the contact's primary number. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `contactId` | string | No | JustCall contact ID. Leave empty to find the contact by phone number. | | `contactNumber` | string | No | Phone number. Without a contact ID it finds the contact; with one it becomes the new primary number. | | `firstName` | string | No | First name | | `lastName` | string | No | Last name | | `email` | string | No | Email address | | `company` | string | No | Company | | `address` | string | No | Address | | `extension` | number | No | Extension to assign to the contact | | `otherNumbers` | string | No | Other phone numbers: comma-separated (labeled Mobile), or a JSON array of \{"label", "number"} objects | | `acrossTeam` | boolean | No | Apply to the contact of every agent instead of only the account owner | | `notes` | string | No | A note to add, or a JSON array of notes | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `contact` | object | The updated contact | ### JustCall Get Contact [#justcall-get-contact] Get a JustCall contact by ID: name, numbers, email, company, notes, and DND/DNM/blacklist status. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `contactId` | string | Yes | JustCall contact ID | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ----------- | | `contact` | object | The contact | ### JustCall List Contacts [#justcall-list-contacts] List or search JustCall contacts by phone number, first or last name, DND/DNM/blacklist status, or agent. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `contactNumber` | string | No | Phone number to search for | | `firstName` | string | No | First name to search for | | `lastName` | string | No | Last name to search for | | `contactStatus` | string | No | Comma-separated statuses: blacklist, dnd, dnm | | `acrossTeam` | boolean | No | Include the contacts of every agent | | `agentIds` | string | No | Comma-separated agent IDs whose contacts to list | | `order` | string | No | Order by contact ID: "asc" or "desc" | | `page` | number | No | Page number, starting at 0 | | `perPage` | number | No | Contacts per page, 1 to 500 (default 50) | | `lastContactIdFetched` | string | No | ID of the last contact of the previous page, to avoid duplicates | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ----- | --------------------- | | `contacts` | array | Contacts in this page | ### JustCall List Users [#justcall-list-users] List JustCall users (agents) with their availability, on-call state, role, and numbers. Filter by email, role, group, or availability. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `available` | boolean | No | Only users available per their working hours | | `email` | string | No | Email of the user | | `groupId` | string | No | User group ID | | `role` | string | No | Role assigned in JustCall | | `order` | string | No | Order by agent ID: "desc" (default) or "asc" | | `page` | number | No | Page number, starting at 0 | | `perPage` | number | No | Users per page, 1 to 100 (default 50) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ----- | ------------------ | | `users` | array | Users in this page | ### JustCall List Phone Numbers [#justcall-list-phone-numbers] List the phone numbers in a JustCall account with their line name, type, capabilities, owner, and business hours setting. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | JustCall API key, from Profile > APIs and Webhooks | | `apiSecret` | string | Yes | JustCall API secret, from Profile > APIs and Webhooks | | `capabilities` | string | No | Only numbers capable of call, sms, or mms | | `numberType` | string | No | local, mobile, or toll\_free | | `availabilitySetting` | string | No | Always Open, Always Closed, or Custom Hours | | `justcallLineName` | string | No | Line name to search for | | `numberOwnerId` | string | No | Agent ID that owns the numbers | | `sharedAgentId` | string | No | Agent ID the numbers are shared with | | `sharedGroupId` | string | No | User group ID the numbers are shared with | | `order` | string | No | "ASC" or "DESC" | | `page` | number | No | Page number | | `perPage` | number | No | Numbers per page, 1 to 100 (default 30) | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ----- | -------------------------- | | `phoneNumbers` | array | Phone numbers in this page | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### JustCall Webhook [#justcall-webhook] Trigger a workflow on JustCall calls (completed, answered, missed, voicemail), SMS sent or received, and contact status changes. --- # Kalshi (/integrations/kalshi) {/* MANUAL-CONTENT-START:intro */} Use [Kalshi](https://kalshi.com) in Agent Serve to retrieve market and event data, inspect account balances and positions, read orders and trades, and place, cancel, or amend orders. The reference also covers orderbooks, candlesticks, fills, series, and exchange status. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Kalshi prediction markets into the workflow. Can get markets, market, events, event, balance, positions, orders, orderbook, trades, candlesticks, fills, series, exchange status, and place/cancel/amend trades. ## Actions [#actions] ### Get Markets from Kalshi V2 [#get-markets-from-kalshi-v2] Retrieve a list of prediction markets from Kalshi with all filtering options (V2 - full API response) #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `status` | string | No | Filter by market status: "unopened", "open", "closed", or "settled" | | `seriesTicker` | string | No | Filter by series ticker (e.g., "KXBTC", "INX", "FED-RATE") | | `eventTicker` | string | No | Filter by event ticker (e.g., "KXBTC-24DEC31", "INX-25JAN03") | | `minCreatedTs` | number | No | Minimum created timestamp in Unix seconds (e.g., 1704067200) | | `maxCreatedTs` | number | No | Maximum created timestamp in Unix seconds (e.g., 1704153600) | | `minUpdatedTs` | number | No | Minimum updated timestamp in Unix seconds (e.g., 1704067200) | | `minCloseTs` | number | No | Minimum close timestamp in Unix seconds (e.g., 1704067200) | | `maxCloseTs` | number | No | Maximum close timestamp in Unix seconds (e.g., 1704153600) | | `minSettledTs` | number | No | Minimum settled timestamp in Unix seconds (e.g., 1704067200) | | `maxSettledTs` | number | No | Maximum settled timestamp in Unix seconds (e.g., 1704153600) | | `tickers` | string | No | Comma-separated list of tickers (e.g., "KXBTC-24DEC31,INX-25JAN03") | | `mveFilter` | string | No | Multivariate event filter: "only" or "exclude" | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------- | | `markets` | array | Array of market objects with all API fields | | ↳ `ticker` | string | Unique market ticker identifier | | ↳ `event_ticker` | string | Parent event ticker | | ↳ `market_type` | string | Market type (binary, etc.) | | ↳ `title` | string | Market title/question | | ↳ `subtitle` | string | Market subtitle | | ↳ `yes_sub_title` | string | Yes outcome subtitle | | ↳ `no_sub_title` | string | No outcome subtitle | | ↳ `open_time` | string | Market open time (ISO 8601) | | ↳ `close_time` | string | Market close time (ISO 8601) | | ↳ `expiration_time` | string | Contract expiration time | | ↳ `status` | string | Market status (open, closed, settled, etc.) | | ↳ `yes_bid` | number | Current best yes bid price in cents | | ↳ `yes_ask` | number | Current best yes ask price in cents | | ↳ `no_bid` | number | Current best no bid price in cents | | ↳ `no_ask` | number | Current best no ask price in cents | | ↳ `last_price` | number | Last trade price in cents | | ↳ `previous_yes_bid` | number | Previous yes bid | | ↳ `previous_yes_ask` | number | Previous yes ask | | ↳ `previous_price` | number | Previous last price | | ↳ `volume` | number | Total volume (contracts traded) | | ↳ `volume_24h` | number | 24-hour trading volume | | ↳ `liquidity` | number | Market liquidity measure | | ↳ `open_interest` | number | Open interest (outstanding contracts) | | ↳ `result` | string | Settlement result (yes, no, null) | | ↳ `cap_strike` | number | Cap strike for ranged markets | | ↳ `floor_strike` | number | Floor strike for ranged markets | | ↳ `category` | string | Market category | | `cursor` | string | Pagination cursor for fetching more results | ### Get Market from Kalshi V2 [#get-market-from-kalshi-v2] Retrieve details of a specific prediction market by ticker (V2 - full API response) #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `ticker` | string | Yes | Market ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03-T4485.99") | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | --------------------------------- | | `market` | object | Market object with all API fields | | ↳ `ticker` | string | Market ticker | | ↳ `event_ticker` | string | Event ticker | | ↳ `market_type` | string | Market type | | ↳ `title` | string | Market title | | ↳ `subtitle` | string | Market subtitle | | ↳ `yes_sub_title` | string | Yes outcome subtitle | | ↳ `no_sub_title` | string | No outcome subtitle | | ↳ `open_time` | string | Market open time | | ↳ `close_time` | string | Market close time | | ↳ `expected_expiration_time` | string | Expected expiration time | | ↳ `expiration_time` | string | Expiration time | | ↳ `latest_expiration_time` | string | Latest expiration time | | ↳ `settlement_timer_seconds` | number | Settlement timer in seconds | | ↳ `status` | string | Market status | | ↳ `response_price_units` | string | Response price units | | ↳ `notional_value` | number | Notional value | | ↳ `tick_size` | number | Tick size | | ↳ `yes_bid` | number | Current yes bid price | | ↳ `yes_ask` | number | Current yes ask price | | ↳ `no_bid` | number | Current no bid price | | ↳ `no_ask` | number | Current no ask price | | ↳ `last_price` | number | Last trade price | | ↳ `previous_yes_bid` | number | Previous yes bid | | ↳ `previous_yes_ask` | number | Previous yes ask | | ↳ `previous_price` | number | Previous price | | ↳ `volume` | number | Total volume | | ↳ `volume_24h` | number | 24-hour volume | | ↳ `liquidity` | number | Market liquidity | | ↳ `open_interest` | number | Open interest | | ↳ `result` | string | Market result | | ↳ `cap_strike` | number | Cap strike | | ↳ `floor_strike` | number | Floor strike | | ↳ `can_close_early` | boolean | Can close early | | ↳ `expiration_value` | string | Expiration value | | ↳ `category` | string | Market category | | ↳ `risk_limit_cents` | number | Risk limit in cents | | ↳ `strike_type` | string | Strike type | | ↳ `rules_primary` | string | Primary rules | | ↳ `rules_secondary` | string | Secondary rules | | ↳ `settlement_source_url` | string | Settlement source URL | | ↳ `custom_strike` | object | Custom strike object | | ↳ `underlying` | string | Underlying asset | | ↳ `settlement_value` | number | Settlement value | | ↳ `cfd_contract_size` | number | CFD contract size | | ↳ `yes_fee_fp` | number | Yes fee (fixed-point) | | ↳ `no_fee_fp` | number | No fee (fixed-point) | | ↳ `last_price_fp` | number | Last price (fixed-point) | | ↳ `yes_bid_fp` | number | Yes bid (fixed-point) | | ↳ `yes_ask_fp` | number | Yes ask (fixed-point) | | ↳ `no_bid_fp` | number | No bid (fixed-point) | | ↳ `no_ask_fp` | number | No ask (fixed-point) | ### Get Events from Kalshi V2 [#get-events-from-kalshi-v2] Retrieve a list of events from Kalshi with optional filtering (V2 - exact API response) #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------- | | `status` | string | No | Filter by event status: "open", "closed", or "settled" | | `seriesTicker` | string | No | Filter by series ticker (e.g., "KXBTC", "INX", "FED-RATE") | | `withNestedMarkets` | string | No | Include nested markets in response: "true" or "false" | | `withMilestones` | string | No | Include milestones in response: "true" or "false" | | `minCloseTs` | number | No | Minimum close timestamp in Unix seconds (e.g., 1704067200) | | `limit` | string | No | Number of results to return (1-200, default: 200) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-2] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------- | | `events` | array | Array of event objects | | ↳ `event_ticker` | string | Unique event ticker identifier | | ↳ `series_ticker` | string | Parent series ticker | | ↳ `title` | string | Event title | | ↳ `sub_title` | string | Event subtitle | | ↳ `mutually_exclusive` | boolean | Whether markets are mutually exclusive | | ↳ `category` | string | Event category | | ↳ `strike_date` | string | Strike/settlement date | | ↳ `status` | string | Event status | | `milestones` | array | Array of milestone objects (if requested) | | ↳ `id` | string | Milestone ID | | ↳ `category` | string | Milestone category | | ↳ `type` | string | Milestone type | | ↳ `title` | string | Milestone title | | ↳ `start_date` | string | Milestone start date (ISO 8601) | | ↳ `end_date` | string | Milestone end date (ISO 8601) | | ↳ `notification_message` | string | Notification message | | ↳ `primary_event_tickers` | array | Primary event tickers | | ↳ `related_event_tickers` | array | Related event tickers | | ↳ `last_updated_ts` | string | Last updated time (ISO 8601) | | `cursor` | string | Pagination cursor for fetching more results | ### Get Event from Kalshi V2 [#get-event-from-kalshi-v2] Retrieve details of a specific event by ticker (V2 - exact API response) #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------- | | `eventTicker` | string | Yes | Event ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03") | | `withNestedMarkets` | string | No | Include nested markets in response (true/false) | #### Output [#output-3] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------------- | | `event` | object | Event object with full details matching Kalshi API response | | ↳ `event_ticker` | string | Event ticker | | ↳ `series_ticker` | string | Series ticker | | ↳ `title` | string | Event title | | ↳ `sub_title` | string | Event subtitle | | ↳ `mutually_exclusive` | boolean | Mutually exclusive markets | | ↳ `category` | string | Event category | | ↳ `collateral_return_type` | string | Collateral return type | | ↳ `strike_date` | string | Strike date | | ↳ `strike_period` | string | Strike period | | ↳ `available_on_brokers` | boolean | Available on brokers | | ↳ `product_metadata` | object | Product metadata | | ↳ `markets` | array | Nested markets (if requested) | ### Get Balance from Kalshi V2 [#get-balance-from-kalshi-v2] Retrieve your account balance and portfolio value from Kalshi (V2 - exact API response) #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------- | | `balance` | number | Account balance in cents | | `portfolio_value` | number | Portfolio value in cents | | `updated_ts` | number | Unix timestamp of last update (seconds) | ### Get Positions from Kalshi V2 [#get-positions-from-kalshi-v2] Retrieve your open positions from Kalshi (V2 - exact API response) #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `ticker` | string | No | Filter by market ticker (e.g., "KXBTC-24DEC31") | | `eventTicker` | string | No | Filter by event ticker, max 10 comma-separated (e.g., "KXBTC-24DEC31,INX-25JAN03") | | `countFilter` | string | No | Restrict to positions with non-zero values for the given fields (comma-separated): "position", "total\_traded" | | `subaccount` | string | No | Subaccount identifier to get positions for | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------- | | `market_positions` | array | Array of market position objects | | ↳ `ticker` | string | Market ticker | | ↳ `event_ticker` | string | Event ticker | | ↳ `event_title` | string | Event title | | ↳ `market_title` | string | Market title | | ↳ `position` | number | Net position (positive=yes, negative=no) | | ↳ `market_exposure` | number | Maximum potential loss in cents | | ↳ `realized_pnl` | number | Realized profit/loss in cents | | ↳ `total_traded` | number | Total contracts traded | | ↳ `resting_orders_count` | number | Number of resting orders | | ↳ `fees_paid` | number | Total fees paid in cents | | `event_positions` | array | Array of event position objects | | ↳ `event_ticker` | string | Event ticker | | ↳ `event_exposure` | number | Event-level exposure in cents | | ↳ `realized_pnl` | number | Realized P\&L in cents | | ↳ `total_cost` | number | Total cost basis in cents | | `cursor` | string | Pagination cursor for fetching more results | ### Get Orders from Kalshi V2 [#get-orders-from-kalshi-v2] Retrieve your orders from Kalshi with optional filtering (V2 with full API response) #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `ticker` | string | No | Filter by market ticker (e.g., "KXBTC-24DEC31") | | `eventTicker` | string | No | Filter by event ticker, max 10 comma-separated (e.g., "KXBTC-24DEC31,INX-25JAN03") | | `status` | string | No | Filter by order status: "resting", "canceled", or "executed" | | `minTs` | string | No | Minimum timestamp filter (Unix timestamp, e.g., "1704067200") | | `maxTs` | string | No | Maximum timestamp filter (Unix timestamp, e.g., "1704153600") | | `subaccount` | string | No | Subaccount identifier to filter orders | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------- | | `orders` | array | Array of order objects with full API response fields | | ↳ `order_id` | string | Unique order identifier | | ↳ `user_id` | string | User ID | | ↳ `client_order_id` | string | Client-provided order ID | | ↳ `ticker` | string | Market ticker | | ↳ `side` | string | Order side (yes/no) | | ↳ `action` | string | Order action (buy/sell) | | ↳ `type` | string | Order type (limit/market) | | ↳ `status` | string | Order status (resting, canceled, executed) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `fill_count` | number | Number of contracts filled | | ↳ `remaining_count` | number | Remaining contracts to fill | | ↳ `initial_count` | number | Initial order size | | ↳ `taker_fees` | number | Taker fees paid in cents | | ↳ `maker_fees` | number | Maker fees paid in cents | | ↳ `created_time` | string | Order creation time (ISO 8601) | | ↳ `expiration_time` | string | Order expiration time | | ↳ `last_update_time` | string | Last order update time | | `cursor` | string | Pagination cursor for fetching more results | ### Get Order from Kalshi V2 [#get-order-from-kalshi-v2] Retrieve details of a specific order by ID from Kalshi (V2 with full API response) #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `orderId` | string | Yes | Order ID to retrieve (e.g., "abc123-def456-ghi789") | #### Output [#output-7] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------ | | `order` | object | Order object with full API response fields | | ↳ `order_id` | string | Order ID | | ↳ `user_id` | string | User ID | | ↳ `client_order_id` | string | Client order ID | | ↳ `ticker` | string | Market ticker | | ↳ `side` | string | Order side (yes/no) | | ↳ `action` | string | Action (buy/sell) | | ↳ `type` | string | Order type (limit/market) | | ↳ `status` | string | Order status (resting/canceled/executed) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `yes_price_dollars` | string | Yes price in dollars | | ↳ `no_price_dollars` | string | No price in dollars | | ↳ `fill_count` | number | Filled contract count | | ↳ `fill_count_fp` | string | Filled count (fixed-point) | | ↳ `remaining_count` | number | Remaining contracts | | ↳ `remaining_count_fp` | string | Remaining count (fixed-point) | | ↳ `initial_count` | number | Initial contract count | | ↳ `initial_count_fp` | string | Initial count (fixed-point) | | ↳ `taker_fees` | number | Taker fees in cents | | ↳ `maker_fees` | number | Maker fees in cents | | ↳ `taker_fees_dollars` | string | Taker fees in dollars | | ↳ `maker_fees_dollars` | string | Maker fees in dollars | | ↳ `taker_fill_cost` | number | Taker fill cost in cents | | ↳ `maker_fill_cost` | number | Maker fill cost in cents | | ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars | | ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars | | ↳ `queue_position` | number | Queue position (deprecated) | | ↳ `expiration_time` | string | Order expiration time | | ↳ `created_time` | string | Order creation time | | ↳ `last_update_time` | string | Last update time | | ↳ `self_trade_prevention_type` | string | Self-trade prevention type | | ↳ `order_group_id` | string | Order group ID | | ↳ `cancel_order_on_pause` | boolean | Cancel on market pause | ### Get Market Orderbook from Kalshi V2 [#get-market-orderbook-from-kalshi-v2] Retrieve the orderbook (yes and no bids) for a specific market (V2 - includes depth and fp fields) #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `ticker` | string | Yes | Market ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03-T4485.99") | | `depth` | number | No | Number of price levels to return (e.g., 10, 20). Default: all levels | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------- | | `orderbook` | object | Orderbook with yes/no bids (legacy integer counts) | | ↳ `yes` | array | Yes side bids as tuples \[price\_cents, count] | | ↳ `no` | array | No side bids as tuples \[price\_cents, count] | | ↳ `yes_dollars` | array | Yes side bids as tuples \[dollars\_string, count] | | ↳ `no_dollars` | array | No side bids as tuples \[dollars\_string, count] | | `orderbook_fp` | object | Orderbook with fixed-point counts (preferred) | | ↳ `yes_dollars` | array | Yes side bids as tuples \[dollars\_string, fp\_count\_string] | | ↳ `no_dollars` | array | No side bids as tuples \[dollars\_string, fp\_count\_string] | ### Get Trades from Kalshi V2 [#get-trades-from-kalshi-v2] Retrieve recent trades with additional filtering options (V2 - includes trade\_id and count\_fp) #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `ticker` | string | No | Filter by market ticker (e.g., "KXBTC-24DEC31") | | `minTs` | number | No | Minimum timestamp in Unix seconds (e.g., 1704067200) | | `maxTs` | number | No | Maximum timestamp in Unix seconds (e.g., 1704153600) | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------- | | `trades` | array | Array of trade objects with trade\_id and count\_fp | | ↳ `ticker` | string | Market ticker | | ↳ `yes_price` | number | Trade price for yes in cents | | ↳ `no_price` | number | Trade price for no in cents | | ↳ `count` | number | Number of contracts traded | | ↳ `taker_side` | string | Taker side (yes/no) | | ↳ `created_time` | string | Trade time (ISO 8601) | | `cursor` | string | Pagination cursor for fetching more results | ### Get Market Candlesticks from Kalshi V2 [#get-market-candlesticks-from-kalshi-v2] Retrieve OHLC candlestick data for a specific market (V2 - full API response) #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------ | | `seriesTicker` | string | Yes | Series ticker identifier (e.g., "KXBTC", "INX", "FED-RATE") | | `ticker` | string | Yes | Market ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03-T4485.99") | | `startTs` | number | Yes | Start timestamp in Unix seconds (e.g., 1704067200) | | `endTs` | number | Yes | End timestamp in Unix seconds (e.g., 1704153600) | | `periodInterval` | number | Yes | Period interval: 1 (1 minute), 60 (1 hour), or 1440 (1 day) | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------------------- | | `ticker` | string | Market ticker | | `candlesticks` | array | Array of OHLC candlestick data with nested bid/ask/price objects | ### Get Event Candlesticks from Kalshi V2 [#get-event-candlesticks-from-kalshi-v2] Retrieve OHLC candlestick data aggregated across all markets in an event (V2 - full API response) #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------- | | `seriesTicker` | string | Yes | Series ticker identifier (e.g., "KXBTC", "INX", "FED-RATE") | | `eventTicker` | string | Yes | Event ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03") | | `startTs` | number | Yes | Start timestamp in Unix seconds (e.g., 1704067200) | | `endTs` | number | Yes | End timestamp in Unix seconds (e.g., 1704153600) | | `periodInterval` | number | Yes | Period interval: 1 (1 minute), 60 (1 hour), or 1440 (1 day) | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------- | | `market_tickers` | array | Market tickers included in the aggregated candlesticks | | `adjusted_end_ts` | number | Adjusted end timestamp used for the candlestick range (Unix seconds) | | `market_candlesticks` | array | Array of event-level aggregated OHLC candlestick data with nested bid/ask/price | ### Get Fills from Kalshi V2 [#get-fills-from-kalshi-v2] Retrieve your portfolio's fills/trades from Kalshi (V2 - exact API response) #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `ticker` | string | No | Filter by market ticker (e.g., "KXBTC-24DEC31") | | `orderId` | string | No | Filter by order ID (e.g., "abc123-def456-ghi789") | | `minTs` | number | No | Minimum timestamp in Unix seconds (e.g., 1704067200) | | `maxTs` | number | No | Maximum timestamp in Unix seconds (e.g., 1704153600) | | `subaccount` | string | No | Subaccount identifier to get fills for | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------- | | `fills` | array | Array of fill/trade objects with all API fields | | ↳ `trade_id` | string | Unique trade identifier | | ↳ `order_id` | string | Associated order ID | | ↳ `ticker` | string | Market ticker | | ↳ `side` | string | Trade side (yes/no) | | ↳ `action` | string | Trade action (buy/sell) | | ↳ `count` | number | Number of contracts | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `is_taker` | boolean | Whether this was a taker trade | | ↳ `created_time` | string | Trade execution time (ISO 8601) | | `cursor` | string | Pagination cursor for fetching more results | ### Get Settlements from Kalshi V2 [#get-settlements-from-kalshi-v2] Retrieve your portfolio settlement history from Kalshi (V2 - exact API response) #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `ticker` | string | No | Filter by market ticker (e.g., "KXBTC-24DEC31") | | `eventTicker` | string | No | Filter by event ticker (e.g., "KXBTC-24DEC31") | | `minTs` | number | No | Minimum settled timestamp in Unix seconds (e.g., 1704067200) | | `maxTs` | number | No | Maximum settled timestamp in Unix seconds (e.g., 1704153600) | | `subaccount` | string | No | Subaccount number (0 for primary, 1-63 for subaccounts) | | `limit` | string | No | Number of results to return (1-1000, default: 100) | | `cursor` | string | No | Pagination cursor from previous response for fetching next page | #### Output [#output-13] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------- | | `settlements` | array | Array of settlement objects with all API fields | | ↳ `ticker` | string | Market ticker | | ↳ `event_ticker` | string | Event ticker | | ↳ `market_result` | string | Settlement outcome (yes, no, scalar) | | ↳ `yes_count_fp` | string | Yes contracts owned (fixed-point) | | ↳ `yes_total_cost_dollars` | string | Yes cost basis in dollars | | ↳ `no_count_fp` | string | No contracts owned (fixed-point) | | ↳ `no_total_cost_dollars` | string | No cost basis in dollars | | ↳ `revenue` | number | Payout in cents | | ↳ `settled_time` | string | Settlement timestamp (ISO 8601) | | ↳ `fee_cost` | string | Fees in fixed-point dollars | | ↳ `value` | number | Single yes contract payout in cents | | `cursor` | string | Pagination cursor for fetching more results | ### Get Series by Ticker from Kalshi V2 [#get-series-by-ticker-from-kalshi-v2] Retrieve details of a specific market series by ticker (V2 - exact API response) #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------- | | `seriesTicker` | string | Yes | Series ticker identifier (e.g., "KXBTC", "INX", "FED-RATE") | | `includeVolume` | string | No | Include volume data in response (true/false) | #### Output [#output-14] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------------------------------ | | `series` | object | Series object with full details matching Kalshi API response | | ↳ `ticker` | string | Series ticker | | ↳ `title` | string | Series title | | ↳ `frequency` | string | Event frequency | | ↳ `category` | string | Series category | | ↳ `tags` | array | Series tags | | ↳ `settlement_sources` | array | Settlement sources | | ↳ `contract_url` | string | Contract URL | | ↳ `contract_terms_url` | string | Contract terms URL | | ↳ `fee_type` | string | Fee type | | ↳ `fee_multiplier` | number | Fee multiplier | | ↳ `additional_prohibitions` | array | Additional prohibitions | | ↳ `product_metadata` | object | Product metadata | | ↳ `volume` | number | Series volume | | ↳ `volume_fp` | number | Volume (fixed-point) | ### Get Series List from Kalshi V2 [#get-series-list-from-kalshi-v2] Retrieve a list of market series from Kalshi with optional filtering (V2 - exact API response) #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------ | | `category` | string | No | Filter by category (e.g., "Economics", "Politics", "Crypto") | | `tags` | string | No | Filter by comma-separated tags | | `includeProductMetadata` | string | No | Include product metadata in response (true/false) | | `includeVolume` | string | No | Include volume data in response (true/false) | | `minUpdatedTs` | number | No | Minimum updated timestamp in Unix seconds (e.g., 1704067200) | #### Output [#output-15] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------- | | `series` | array | Array of series objects with all API fields | | ↳ `ticker` | string | Unique series ticker | | ↳ `title` | string | Series title | | ↳ `frequency` | string | Event frequency (daily, weekly, etc.) | | ↳ `category` | string | Series category | | ↳ `tags` | array | Series tags | | ↳ `contract_url` | string | Contract rules URL | ### Get Exchange Status from Kalshi V2 [#get-exchange-status-from-kalshi-v2] Retrieve the current status of the Kalshi exchange (V2 - exact API response) #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-16] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------ | | `exchange_active` | boolean | Whether the exchange is active | | `trading_active` | boolean | Whether trading is active | | `exchange_estimated_resume_time` | string | Estimated time when exchange will resume (if inactive) | ### Get Exchange Schedule from Kalshi V2 [#get-exchange-schedule-from-kalshi-v2] Retrieve the Kalshi exchange trading schedule and maintenance windows (V2 - exact API response) #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-17] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------------------------------------- | | `schedule` | object | Exchange schedule (all times in ET) | | ↳ `standard_hours` | array | Weekly schedules with per-day open/close trading sessions | | ↳ `maintenance_windows` | array | Scheduled maintenance windows with start\_datetime and end\_datetime | ### Get Exchange Announcements from Kalshi V2 [#get-exchange-announcements-from-kalshi-v2] Retrieve exchange-wide announcements from Kalshi (V2 - exact API response) #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------- | | `announcements` | array | Array of exchange announcement objects | | ↳ `type` | string | Announcement severity (info, warning, error) | | ↳ `message` | string | Announcement message | | ↳ `delivery_time` | string | Delivery time (ISO 8601) | | ↳ `status` | string | Announcement status (active, inactive) | ### Create Order on Kalshi V2 [#create-order-on-kalshi-v2] Create a new order on a Kalshi prediction market (V2 with full API response) #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `ticker` | string | Yes | Market ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03-T4485.99") | | `side` | string | Yes | Side of the order: "yes" or "no" | | `action` | string | Yes | Action type: "buy" or "sell" | | `count` | string | No | Number of contracts to trade (e.g., "10", "100"). Provide count or countFp | | `type` | string | No | Order type: "limit" or "market" (default: "limit") | | `yesPrice` | string | No | Yes price in cents (1-99) | | `noPrice` | string | No | No price in cents (1-99) | | `yesPriceDollars` | string | No | Yes price in dollars (e.g., "0.56") | | `noPriceDollars` | string | No | No price in dollars (e.g., "0.56") | | `clientOrderId` | string | No | Custom order identifier | | `expirationTs` | string | No | Unix timestamp for order expiration | | `timeInForce` | string | No | Time in force: 'fill\_or\_kill', 'good\_till\_canceled', 'immediate\_or\_cancel' | | `buyMaxCost` | string | No | Maximum cost in cents (auto-enables fill\_or\_kill) | | `postOnly` | string | No | Set to 'true' for maker-only orders | | `reduceOnly` | string | No | Set to 'true' for position reduction only | | `selfTradePreventionType` | string | No | Self-trade prevention: 'taker\_at\_cross' or 'maker' | | `orderGroupId` | string | No | Associated order group ID | | `countFp` | string | No | Count in fixed-point for fractional contracts | | `cancelOrderOnPause` | string | No | Set to 'true' to cancel order on market pause | | `subaccount` | string | No | Subaccount to use for the order | #### Output [#output-19] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------------------ | | `order` | object | The created order object with full API response fields | | ↳ `order_id` | string | Order ID | | ↳ `user_id` | string | User ID | | ↳ `client_order_id` | string | Client order ID | | ↳ `ticker` | string | Market ticker | | ↳ `side` | string | Order side (yes/no) | | ↳ `action` | string | Action (buy/sell) | | ↳ `type` | string | Order type (limit/market) | | ↳ `status` | string | Order status (resting/canceled/executed) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `yes_price_dollars` | string | Yes price in dollars | | ↳ `no_price_dollars` | string | No price in dollars | | ↳ `fill_count` | number | Filled contract count | | ↳ `fill_count_fp` | string | Filled count (fixed-point) | | ↳ `remaining_count` | number | Remaining contracts | | ↳ `remaining_count_fp` | string | Remaining count (fixed-point) | | ↳ `initial_count` | number | Initial contract count | | ↳ `initial_count_fp` | string | Initial count (fixed-point) | | ↳ `taker_fees` | number | Taker fees in cents | | ↳ `maker_fees` | number | Maker fees in cents | | ↳ `taker_fees_dollars` | string | Taker fees in dollars | | ↳ `maker_fees_dollars` | string | Maker fees in dollars | | ↳ `taker_fill_cost` | number | Taker fill cost in cents | | ↳ `maker_fill_cost` | number | Maker fill cost in cents | | ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars | | ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars | | ↳ `queue_position` | number | Queue position (deprecated) | | ↳ `expiration_time` | string | Order expiration time | | ↳ `created_time` | string | Order creation time | | ↳ `last_update_time` | string | Last update time | | ↳ `self_trade_prevention_type` | string | Self-trade prevention type | | ↳ `order_group_id` | string | Order group ID | | ↳ `cancel_order_on_pause` | boolean | Cancel on market pause | ### Cancel Order on Kalshi V2 [#cancel-order-on-kalshi-v2] Cancel an existing order on Kalshi (V2 with full API response) #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------- | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `orderId` | string | Yes | Order ID to cancel (e.g., "abc123-def456-ghi789") | #### Output [#output-20] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------------------- | | `order` | object | The canceled order object with full API response fields | | ↳ `order_id` | string | Order ID | | ↳ `user_id` | string | User ID | | ↳ `client_order_id` | string | Client order ID | | ↳ `ticker` | string | Market ticker | | ↳ `side` | string | Order side (yes/no) | | ↳ `action` | string | Action (buy/sell) | | ↳ `type` | string | Order type (limit/market) | | ↳ `status` | string | Order status (resting/canceled/executed) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `yes_price_dollars` | string | Yes price in dollars | | ↳ `no_price_dollars` | string | No price in dollars | | ↳ `fill_count` | number | Filled contract count | | ↳ `fill_count_fp` | string | Filled count (fixed-point) | | ↳ `remaining_count` | number | Remaining contracts | | ↳ `remaining_count_fp` | string | Remaining count (fixed-point) | | ↳ `initial_count` | number | Initial contract count | | ↳ `initial_count_fp` | string | Initial count (fixed-point) | | ↳ `taker_fees` | number | Taker fees in cents | | ↳ `maker_fees` | number | Maker fees in cents | | ↳ `taker_fees_dollars` | string | Taker fees in dollars | | ↳ `maker_fees_dollars` | string | Maker fees in dollars | | ↳ `taker_fill_cost` | number | Taker fill cost in cents | | ↳ `maker_fill_cost` | number | Maker fill cost in cents | | ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars | | ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars | | ↳ `queue_position` | number | Queue position (deprecated) | | ↳ `expiration_time` | string | Order expiration time | | ↳ `created_time` | string | Order creation time | | ↳ `last_update_time` | string | Last update time | | ↳ `self_trade_prevention_type` | string | Self-trade prevention type | | ↳ `order_group_id` | string | Order group ID | | ↳ `cancel_order_on_pause` | boolean | Cancel on market pause | | `reduced_by` | number | Number of contracts canceled | | `reduced_by_fp` | string | Number of contracts canceled in fixed-point format | ### Amend Order on Kalshi V2 [#amend-order-on-kalshi-v2] Modify the price or quantity of an existing order on Kalshi (V2 with full API response) #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `keyId` | string | Yes | Your Kalshi API Key ID | | `privateKey` | string | Yes | Your RSA Private Key (PEM format) | | `orderId` | string | Yes | Order ID to amend (e.g., "abc123-def456-ghi789") | | `ticker` | string | Yes | Market ticker identifier (e.g., "KXBTC-24DEC31", "INX-25JAN03-T4485.99") | | `side` | string | Yes | Side of the order: "yes" or "no" | | `action` | string | Yes | Action type: "buy" or "sell" | | `clientOrderId` | string | No | Original client-specified order ID | | `updatedClientOrderId` | string | No | New client-specified order ID after amendment | | `count` | string | No | Updated quantity for the order (e.g., "10", "100") | | `yesPrice` | string | No | Updated yes price in cents (1-99) | | `noPrice` | string | No | Updated no price in cents (1-99) | | `yesPriceDollars` | string | No | Updated yes price in dollars (e.g., "0.56") | | `noPriceDollars` | string | No | Updated no price in dollars (e.g., "0.56") | | `countFp` | string | No | Count in fixed-point for fractional contracts | #### Output [#output-21] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------ | | `old_order` | object | The original order object before amendment | | ↳ `order_id` | string | Order ID | | ↳ `user_id` | string | User ID | | ↳ `ticker` | string | Market ticker | | ↳ `event_ticker` | string | Event ticker | | ↳ `status` | string | Order status | | ↳ `side` | string | Order side (yes/no) | | ↳ `type` | string | Order type (limit/market) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `action` | string | Action (buy/sell) | | ↳ `count` | number | Number of contracts | | ↳ `remaining_count` | number | Remaining contracts | | ↳ `created_time` | string | Order creation time | | ↳ `expiration_time` | string | Order expiration time | | ↳ `order_group_id` | string | Order group ID | | ↳ `client_order_id` | string | Client order ID | | ↳ `place_count` | number | Place count | | ↳ `decrease_count` | number | Decrease count | | ↳ `queue_position` | number | Queue position | | ↳ `maker_fill_count` | number | Maker fill count | | ↳ `taker_fill_count` | number | Taker fill count | | ↳ `maker_fees` | number | Maker fees | | ↳ `taker_fees` | number | Taker fees | | ↳ `last_update_time` | string | Last update time | | ↳ `take_profit_order_id` | string | Take profit order ID | | ↳ `stop_loss_order_id` | string | Stop loss order ID | | ↳ `amend_count` | number | Amend count | | ↳ `amend_taker_fill_count` | number | Amend taker fill count | | `order` | object | The amended order object with full API response fields | | ↳ `order_id` | string | Order ID | | ↳ `user_id` | string | User ID | | ↳ `ticker` | string | Market ticker | | ↳ `event_ticker` | string | Event ticker | | ↳ `status` | string | Order status | | ↳ `side` | string | Order side (yes/no) | | ↳ `type` | string | Order type (limit/market) | | ↳ `yes_price` | number | Yes price in cents | | ↳ `no_price` | number | No price in cents | | ↳ `action` | string | Action (buy/sell) | | ↳ `count` | number | Number of contracts | | ↳ `remaining_count` | number | Remaining contracts | | ↳ `created_time` | string | Order creation time | | ↳ `expiration_time` | string | Order expiration time | | ↳ `order_group_id` | string | Order group ID | | ↳ `client_order_id` | string | Client order ID | | ↳ `place_count` | number | Place count | | ↳ `decrease_count` | number | Decrease count | | ↳ `queue_position` | number | Queue position | | ↳ `maker_fill_count` | number | Maker fill count | | ↳ `taker_fill_count` | number | Taker fill count | | ↳ `maker_fees` | number | Maker fees | | ↳ `taker_fees` | number | Taker fees | | ↳ `last_update_time` | string | Last update time | | ↳ `take_profit_order_id` | string | Take profit order ID | | ↳ `stop_loss_order_id` | string | Stop loss order ID | | ↳ `amend_count` | number | Amend count | | ↳ `amend_taker_fill_count` | number | Amend taker fill count | --- # Ketch (/integrations/ketch) {/* MANUAL-CONTENT-START:intro */} Use [Ketch](https://www.ketch.com/) to read or update consent and subscription preferences and submit data-subject rights requests. To use Ketch, drop the Ketch block into your workflow and provide your organization code, property code, and environment code. The Ketch Web API is a public API — no API key or OAuth credentials are required. Identity is determined by the organization and property codes along with the data subject's identity (e.g., email address). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Ketch into the workflow. Retrieve and update consent preferences, manage subscription topics and controls, and submit data subject rights requests for access, deletion, correction, or processing restriction. ## Actions [#actions] ### Ketch Get Consent [#ketch-get-consent] Retrieve consent status for a data subject. Returns the current consent preferences for each configured purpose. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------ | | `organizationCode` | string | Yes | Ketch organization code | | `propertyCode` | string | Yes | Digital property code defined in Ketch | | `environmentCode` | string | Yes | Environment code defined in Ketch (e.g., "production") | | `jurisdictionCode` | string | No | Jurisdiction code (e.g., "gdpr", "ccpa") | | `identities` | json | Yes | Identity map (e.g., \{"email": "[user@example.com](mailto:user@example.com)"}) | | `purposes` | json | No | Optional purposes to filter the consent query | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------------------------- | | `purposes` | object | Map of purpose codes to consent status and legal basis | | ↳ `allowed` | string | Consent status for the purpose: "granted" or "denied" | | ↳ `legalBasisCode` | string | Legal basis code (e.g., "consent\_optin", "consent\_optout", "disclosure", "other") | | `vendors` | object | Map of vendor consent statuses | ### Ketch Set Consent [#ketch-set-consent] Update consent preferences for a data subject. Sets the consent status for specified purposes with the appropriate legal basis. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `organizationCode` | string | Yes | Ketch organization code | | `propertyCode` | string | Yes | Digital property code defined in Ketch | | `environmentCode` | string | Yes | Environment code defined in Ketch (e.g., "production") | | `jurisdictionCode` | string | No | Jurisdiction code (e.g., "gdpr", "ccpa") | | `identities` | json | Yes | Identity map (e.g., \{"email": "[user@example.com](mailto:user@example.com)"}) | | `purposes` | json | Yes | Map of purpose codes to consent settings (e.g., \{"analytics": \{"allowed": "granted", "legalBasisCode": "consent\_optin"}}) | | `collectedAt` | number | No | UNIX timestamp when consent was collected (defaults to current time) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------------------------- | | `purposes` | object | Updated consent status map of purpose codes to consent settings | | ↳ `allowed` | string | Consent status for the purpose: "granted" or "denied" | | ↳ `legalBasisCode` | string | Legal basis code (e.g., "consent\_optin", "consent\_optout", "disclosure", "other") | ### Ketch Get Subscriptions [#ketch-get-subscriptions] Retrieve subscription preferences for a data subject. Returns the current subscription topic and control statuses. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------ | | `organizationCode` | string | Yes | Ketch organization code | | `propertyCode` | string | Yes | Digital property code defined in Ketch | | `environmentCode` | string | Yes | Environment code defined in Ketch (e.g., "production") | | `identities` | json | Yes | Identity map (e.g., \{"email": "[user@example.com](mailto:user@example.com)"}) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------------------------------------------- | | `topics` | object | Map of topic codes to contact method settings (e.g., \{"newsletter": \{"email": \{"status": "granted"}}}) | | `controls` | object | Map of control codes to settings (e.g., \{"global\_unsubscribe": \{"status": "denied"}}) | ### Ketch Set Subscriptions [#ketch-set-subscriptions] Update subscription preferences for a data subject. Sets topic and control statuses for email, SMS, and other contact methods. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `organizationCode` | string | Yes | Ketch organization code | | `propertyCode` | string | Yes | Digital property code defined in Ketch | | `environmentCode` | string | Yes | Environment code defined in Ketch (e.g., "production") | | `identities` | json | Yes | Identity map (e.g., \{"email": "[user@example.com](mailto:user@example.com)"}) | | `topics` | json | No | Map of topic codes to contact method settings (e.g., \{"newsletter": \{"email": \{"status": "granted"}, "sms": \{"status": "denied"}}}) | | `controls` | json | No | Map of control codes to settings (e.g., \{"global\_unsubscribe": \{"status": "denied"}}) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------- | | `success` | boolean | Whether the subscription preferences were updated | ### Ketch Invoke Right [#ketch-invoke-right] Submit a data subject rights request (e.g., access, delete, correct, restrict processing). Initiates a privacy rights workflow in Ketch. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `organizationCode` | string | Yes | Ketch organization code | | `propertyCode` | string | Yes | Digital property code defined in Ketch | | `environmentCode` | string | Yes | Environment code defined in Ketch (e.g., "production") | | `jurisdictionCode` | string | Yes | Jurisdiction code (e.g., "gdpr", "ccpa") | | `rightCode` | string | Yes | Privacy right code to invoke (e.g., "access", "delete", "correct", "restrict\_processing") | | `identities` | json | Yes | Identity map (e.g., \{"email": "[user@example.com](mailto:user@example.com)"}) | | `userData` | json | No | Optional data subject information (e.g., \{"email": "[user@example.com](mailto:user@example.com)", "firstName": "John", "lastName": "Doe"}) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the rights request was submitted | | `message` | string | Response message from Ketch | --- # Knowledge (/integrations/knowledge) {/* MANUAL-CONTENT-START:intro */} Use the Knowledge block to search an Agent Serve knowledge base and manage its documents and chunks from a workflow. The reference below also covers tags, connector inspection, and connector sync. See [Using knowledge in workflows](/knowledgebase/using-in-workflows) for configuration and examples. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Knowledge into the workflow. Perform full CRUD operations on documents, chunks, and tags. ## Actions [#actions] ### Knowledge Search [#knowledge-search] Search for similar content in a knowledge base by relevance #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base to search in | | `query` | string | No | Search query text (optional when using tag filters) | | `topK` | number | No | Number of most similar results to return (1-100) | | `tagFilters` | array | No | Array of tag filters with tagName and tagValue properties | | `searchMode` | string | No | Retrieval mode: 'hybrid' fuses a full-text leg with semantic similarity, 'vector' uses semantic similarity only; omit for the workspace's default | | `rerankerEnabled` | boolean | No | Whether to rerank vector search results with a reranking model | | `rerankerModel` | string | No | Rerank model: a Cohere id (rerank-v4.0-pro, rerank-v4.0-fast, rerank-v3.5) or an OpenRouter rerank model as openrouter/\/\ | | `rerankerInputCount` | number | No | Number of vector results sent to the reranker (1–100). Defaults to topK × 4 capped at 100. | | `apiKey` | string | No | Cohere API key for direct Cohere reranking (self-hosted deployments only) | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | | `results` | array | Array of search results from the knowledge base | | ↳ `documentId` | string | Document ID | | ↳ `documentName` | string | Document name | | ↳ `sourceUrl` | string | URL to the original source document (e.g., Confluence page, Google Doc, Notion page). Null for documents without an external source. | | ↳ `content` | string | Content of the result | | ↳ `chunkIndex` | number | Index of the chunk within the document | | ↳ `similarity` | number | Similarity score of the result | | ↳ `metadata` | object | Metadata of the result, including tags | | `query` | string | The search query that was executed | | `totalResults` | number | Total number of results found | | `cost` | object | Cost information for the search operation | ### Knowledge Upload Chunk [#knowledge-upload-chunk] Upload a new chunk to a document in a knowledge base #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------ | | `knowledgeBaseId` | string | Yes | ID of the knowledge base containing the document | | `documentId` | string | Yes | ID of the document to upload the chunk to | | `content` | string | Yes | Content of the chunk to upload | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `data` | object | Information about the uploaded chunk | | ↳ `chunkId` | string | Chunk ID | | ↳ `chunkIndex` | number | Index of the chunk within the document | | ↳ `content` | string | Content of the chunk | | ↳ `contentLength` | number | Length of the content in characters | | ↳ `tokenCount` | number | Number of tokens in the chunk | | ↳ `enabled` | boolean | Whether the chunk is enabled | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `message` | string | Success or error message describing the operation result | | `documentId` | string | ID of the document the chunk was added to | | `documentName` | string | Name of the document the chunk was added to | | `cost` | object | Cost information for the upload operation | ### Knowledge Create Document [#knowledge-create-document] Create a new document in a knowledge base #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------ | | `knowledgeBaseId` | string | Yes | ID of the knowledge base containing the document | | `name` | string | Yes | Name of the document | | `content` | string | Yes | Content of the document | | `documentTags` | object | No | Document tags | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------- | | `data` | object | Information about the created document | | ↳ `documentId` | string | Document ID | | ↳ `documentName` | string | Document name | | ↳ `type` | string | Document type | | ↳ `enabled` | boolean | Whether the document is enabled | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `message` | string | Success or error message describing the operation result | | `documentId` | string | ID of the created document | ### Knowledge Upsert Document [#knowledge-upsert-document] Create or update a document in a knowledge base. If a document with the given ID or filename already exists, it will be replaced with the new content. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base containing the document | | `documentId` | string | No | Optional ID of an existing document to update. If not provided, lookup is done by filename. | | `name` | string | Yes | Name of the document | | `content` | string | Yes | Content of the document | | `documentTags` | json | No | Document tags | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `data` | object | Information about the upserted document | | ↳ `documentId` | string | Document ID | | ↳ `documentName` | string | Document name | | ↳ `type` | string | Document type | | ↳ `enabled` | boolean | Whether the document is enabled | | ↳ `isUpdate` | boolean | Whether an existing document was replaced | | ↳ `previousDocumentId` | string | ID of the document that was replaced, if any | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `message` | string | Success or error message describing the operation result | | `documentId` | string | ID of the upserted document | ### Knowledge List Tags [#knowledge-list-tags] List all tag definitions for a knowledge base #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base to list tags for | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------- | | `knowledgeBaseId` | string | ID of the knowledge base | | `tags` | array | Array of tag definitions for the knowledge base | | ↳ `id` | string | Tag definition ID | | ↳ `tagSlot` | string | Internal tag slot (e.g. tag1, number1) | | ↳ `displayName` | string | Human-readable tag name | | ↳ `fieldType` | string | Tag field type (text, number, date, boolean) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `totalTags` | number | Total number of tag definitions | ### Knowledge List Documents [#knowledge-list-documents] List documents in a knowledge base with optional filtering, search, and pagination #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base to list documents from | | `search` | string | No | Search query to filter documents by filename | | `enabledFilter` | string | No | Filter by enabled status: "all", "enabled", or "disabled" | | `limit` | number | No | Maximum number of documents to return (default: 50) | | `offset` | number | No | Number of documents to skip for pagination (default: 0) | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------ | | `knowledgeBaseId` | string | ID of the knowledge base | | `documents` | array | Array of documents in the knowledge base | | ↳ `id` | string | Document ID | | ↳ `filename` | string | Document filename | | ↳ `fileSize` | number | File size in bytes | | ↳ `mimeType` | string | MIME type of the document | | ↳ `enabled` | boolean | Whether the document is enabled | | ↳ `processingStatus` | string | Processing status (pending, processing, completed, failed) | | ↳ `chunkCount` | number | Number of chunks in the document | | ↳ `tokenCount` | number | Total token count across chunks | | ↳ `uploadedAt` | string | Upload timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `connectorId` | string | Connector ID if document was synced from an external source | | ↳ `connectorType` | string | Connector type (e.g. notion, github, confluence) if synced | | ↳ `sourceUrl` | string | Original URL in the source system if synced from a connector | | `totalDocuments` | number | Total number of documents matching the filter | | `limit` | number | Page size used | | `offset` | number | Offset used for pagination | ### Knowledge Get Document [#knowledge-get-document] Get full details of a single document including tags, connector metadata, and processing status #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------ | | `knowledgeBaseId` | string | Yes | ID of the knowledge base the document belongs to | | `documentId` | string | Yes | ID of the document to retrieve | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------- | | `id` | string | Document ID | | `filename` | string | Document filename | | `fileSize` | number | File size in bytes | | `mimeType` | string | MIME type of the document | | `enabled` | boolean | Whether the document is enabled | | `processingStatus` | string | Processing status (pending, processing, completed, failed) | | `processingError` | string | Error message if processing failed | | `chunkCount` | number | Number of chunks in the document | | `tokenCount` | number | Total token count across chunks | | `characterCount` | number | Total character count | | `uploadedAt` | string | Upload timestamp | | `updatedAt` | string | Last update timestamp | | `connectorId` | string | Connector ID if document was synced from an external source | | `sourceUrl` | string | Original URL in the source system if synced from a connector | | `externalId` | string | External ID from the source system | | `tags` | object | Tag values keyed by tag slot (tag1-7, number1-5, date1-2, boolean1-3) | ### Knowledge Delete Document [#knowledge-delete-document] Delete a document from a knowledge base #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------ | | `knowledgeBaseId` | string | Yes | ID of the knowledge base containing the document | | `documentId` | string | Yes | ID of the document to delete | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `documentId` | string | ID of the deleted document | | `message` | string | Confirmation message | ### Knowledge List Chunks [#knowledge-list-chunks] List chunks for a document in a knowledge base with optional filtering and pagination #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base | | `documentId` | string | Yes | ID of the document to list chunks from | | `search` | string | No | Search query to filter chunks by content | | `enabled` | string | No | Filter by enabled status: "true", "false", or "all" (default: "all") | | `limit` | number | No | Maximum number of chunks to return (1-100, default: 50) | | `offset` | number | No | Number of chunks to skip for pagination (default: 0) | #### Output [#output-8] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------ | | `knowledgeBaseId` | string | ID of the knowledge base | | `documentId` | string | ID of the document | | `chunks` | array | Array of chunks in the document | | ↳ `id` | string | Chunk ID | | ↳ `chunkIndex` | number | Index of the chunk within the document | | ↳ `content` | string | Chunk text content | | ↳ `contentLength` | number | Content length in characters | | ↳ `tokenCount` | number | Token count for the chunk | | ↳ `enabled` | boolean | Whether the chunk is enabled | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `totalChunks` | number | Total number of chunks matching the filter | | `limit` | number | Page size used | | `offset` | number | Offset used for pagination | ### Knowledge Update Chunk [#knowledge-update-chunk] Update the content or enabled status of a chunk in a knowledge base #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base | | `documentId` | string | Yes | ID of the document containing the chunk | | `chunkId` | string | Yes | ID of the chunk to update | | `content` | string | No | New content for the chunk | | `enabled` | boolean | No | Whether the chunk should be enabled or disabled | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------- | | `documentId` | string | ID of the parent document | | `id` | string | Chunk ID | | `chunkIndex` | number | Index of the chunk within the document | | `content` | string | Updated chunk content | | `contentLength` | number | Content length in characters | | `tokenCount` | number | Token count for the chunk | | `enabled` | boolean | Whether the chunk is enabled | | `updatedAt` | string | Last update timestamp | ### Knowledge Delete Chunk [#knowledge-delete-chunk] Delete a chunk from a document in a knowledge base #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base | | `documentId` | string | Yes | ID of the document containing the chunk | | `chunkId` | string | Yes | ID of the chunk to delete | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------ | ------------------------- | | `chunkId` | string | ID of the deleted chunk | | `documentId` | string | ID of the parent document | | `message` | string | Confirmation message | ### Knowledge List Connectors [#knowledge-list-connectors] List all connectors for a knowledge base, showing sync status, type, and document counts #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base to list connectors for | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------ | --------------------------------------------------- | | `knowledgeBaseId` | string | ID of the knowledge base | | `connectors` | array | Array of connectors for the knowledge base | | ↳ `id` | string | Connector ID | | ↳ `connectorType` | string | Type of connector (e.g. notion, github, confluence) | | ↳ `status` | string | Connector status (active, paused, syncing) | | ↳ `syncIntervalMinutes` | number | Sync interval in minutes (0 = manual only) | | ↳ `lastSyncAt` | string | Timestamp of last sync | | ↳ `lastSyncError` | string | Error from last sync if failed | | ↳ `lastSyncDocCount` | number | Number of documents synced in last sync | | ↳ `nextSyncAt` | string | Timestamp of next scheduled sync | | ↳ `consecutiveFailures` | number | Number of consecutive sync failures | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `totalConnectors` | number | Total number of connectors | ### Knowledge Get Connector [#knowledge-get-connector] Get detailed connector information including recent sync logs for monitoring sync health #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base the connector belongs to | | `connectorId` | string | Yes | ID of the connector to retrieve | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------ | | `connector` | object | Connector details | | ↳ `id` | string | Connector ID | | ↳ `connectorType` | string | Type of connector | | ↳ `status` | string | Connector status (active, paused, syncing) | | ↳ `syncIntervalMinutes` | number | Sync interval in minutes | | ↳ `lastSyncAt` | string | Timestamp of last sync | | ↳ `lastSyncError` | string | Error from last sync if failed | | ↳ `lastSyncDocCount` | number | Docs synced in last sync | | ↳ `nextSyncAt` | string | Next scheduled sync timestamp | | ↳ `consecutiveFailures` | number | Consecutive sync failures | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | `syncLogs` | array | Recent sync log entries | | ↳ `id` | string | Sync log ID | | ↳ `status` | string | Sync status | | ↳ `startedAt` | string | Sync start time | | ↳ `completedAt` | string | Sync completion time | | ↳ `docsAdded` | number | Documents added | | ↳ `docsUpdated` | number | Documents updated | | ↳ `docsDeleted` | number | Documents deleted | | ↳ `docsUnchanged` | number | Documents unchanged | | ↳ `errorMessage` | string | Error message if sync failed | ### Knowledge Trigger Sync [#knowledge-trigger-sync] Trigger a manual sync for a knowledge base connector #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------- | | `knowledgeBaseId` | string | Yes | ID of the knowledge base the connector belongs to | | `connectorId` | string | Yes | ID of the connector to trigger sync for | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------ | | `connectorId` | string | ID of the connector that was synced | | `message` | string | Status message from the sync trigger | --- # Lambda (/integrations/lambda) {/* MANUAL-CONTENT-START:intro */} [AWS Lambda](https://aws.amazon.com/lambda/) is a serverless compute service that runs your code in response to events and scales automatically, with no servers to manage. You package code as a .zip archive or a container image, give it an execution role, and Lambda handles provisioning, scaling, and logging. With the Lambda integration, you can: * **Invoke Function**: Run a function synchronously and read back its parsed response payload, queue it asynchronously, or dry-run it to verify permissions — with the decoded execution log tail when something fails * **Manage functions**: Create, read, update, and delete functions, including runtime, handler, memory, timeout, ephemeral storage, environment variables, VPC attachment, layers, X-Ray tracing, SnapStart, and CloudWatch log settings * **Version and alias**: Publish immutable versions, then point aliases such as `prod` at them — including weighted routing to shift a percentage of traffic to a new version for canary releases * **Wire up event sources**: Create and tune event source mappings for SQS, Kinesis, DynamoDB Streams, Amazon MQ, DocumentDB, Amazon MSK, and self-managed Kafka — with batch size, batching window, filter patterns, retry limits, success/failure destinations, broker authentication, and consumer group IDs * **Control concurrency**: Reserve a share of account concurrency for a function, allocate provisioned concurrency to a version or alias to eliminate cold starts, and read account-level limits and usage * **Expose function URLs**: Create dedicated HTTPS endpoints with `AWS_IAM` or public auth, buffered or streamed responses, and full CORS configuration * **Configure async behavior**: Set retry attempts, maximum event age, and on-success/on-failure destinations for asynchronous invocations * **Audit access**: Read a function's resource-based policy, add and remove permission statements for AWS services or accounts, and list function URL configurations to find publicly reachable endpoints * **Work with layers and tags**: List layers and their versions, fetch a layer version's download location, and list, add, or remove function tags ## Credentials and permissions [#credentials-and-permissions] The block authenticates with an AWS access key ID and secret access key scoped to a region. Grant the IAM principal only the Lambda actions the operations you use require — for example `lambda:InvokeFunction` for invocation, `lambda:GetFunction` and `lambda:ListFunctions` for read-only inventory, or `lambda:UpdateFunctionCode` and `lambda:PublishVersion` for deployments. ## Deployment packages [#deployment-packages] Function code is supplied from Amazon S3 (bucket, key, and optional object version) or from a container image URI in Amazon ECR. Uploading a .zip archive inline is not supported — publish the archive to S3 first, in the same region as the function, then point **Create Function** or **Update Function Code** at it. In Agent Serve, the Lambda integration lets your agents run existing serverless code as a step in a workflow, ship and roll back deployments with alias traffic shifting, and continuously audit functions for deprecated runtimes, over-permissive policies, and publicly exposed URLs. It pairs naturally with CloudWatch for metrics and logs, S3 for deployment artifacts, and SQS for event sources. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS Lambda into workflows. Invoke functions and read their response payload, create and update functions from Amazon S3 packages or container images, publish versions and aliases, wire up event source mappings, manage concurrency, function URLs, layers, permissions, and tags. Requires an AWS access key and secret access key. ## Actions [#actions] ### Lambda Invoke Function [#lambda-invoke-function] Invoke a Lambda function synchronously or asynchronously and return its response #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `payload` | json | No | JSON event payload passed to the function handler | | `invocationType` | string | No | RequestResponse waits for the result, Event queues the invocation, DryRun only validates permissions | | `logType` | string | No | Set to Tail to return the last 4 KB of the execution log | | `clientContext` | string | No | Base64-encoded JSON passed to the function in the client context object (max 3,583 bytes) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------- | | `statusCode` | number | HTTP status of the invocation (200 for RequestResponse, 202 for Event, 204 for DryRun) | | `payload` | json | The response returned by the function, parsed as JSON when possible | | `functionError` | string | Set to Handled or Unhandled when the function itself returned an error | | `logResult` | string | Decoded execution log tail, present only when logType is Tail | | `executedVersion` | string | The function version that was executed | ### Lambda List Functions [#lambda-list-functions] List Lambda functions with the version-specific configuration of each #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionVersion` | string | No | Set to ALL to include every published version of each function | | `masterRegion` | string | No | For Lambda\@Edge functions, the region of the master function. Requires functionVersion ALL | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-10000) | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------- | | `functions` | array | Lambda functions with their runtime, handler, memory, and state | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Get Function [#lambda-get-function] Get a function's configuration, code location, tags, and reserved concurrency #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-2] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | | `tagsError` | json | Why the tags could not be read, when a partial tag-read failure occurred | | `code` | json | Presigned download URL for the deployment package, or the container image URI | | `tags` | json | The function's tags | | `reservedConcurrentExecutions` | number | Concurrency reserved for this function, if any | ### Lambda Get Function Configuration [#lambda-get-function-configuration] Get a function's version-specific configuration #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ---- | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | ### Lambda Create Function [#lambda-create-function] Create a Lambda function from a deployment package in Amazon S3 or a container image #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `role` | string | Yes | ARN of the function's execution role | | `runtime` | string | No | Runtime identifier such as nodejs22.x or python3.13. Required for .zip packages, omit for container images | | `handler` | string | No | Entry point in your code, such as index.handler. Required for .zip packages | | `packageType` | string | No | Zip for a .zip file archive (default) or Image for a container image | | `s3Bucket` | string | No | Amazon S3 bucket holding the deployment package, in the same region as the function | | `s3Key` | string | No | Amazon S3 key of the .zip package | | `s3ObjectVersion` | string | No | Version of the Amazon S3 object to use | | `imageUri` | string | No | Amazon ECR URI of the container image to deploy | | `sourceKmsKeyArn` | string | No | ARN of the KMS customer managed key that encrypts the function's .zip deployment package | | `description` | string | No | Description of the function | | `functionTimeout` | number | No | Seconds Lambda allows the function to run before stopping it (1-900). Named functionTimeout because the shared tool executor reserves `timeout` for its own request deadline | | `memorySize` | number | No | Memory available to the function at runtime in MB (128-32768) | | `ephemeralStorageSize` | number | No | Size of the /tmp directory in MB (512-10240) | | `publish` | boolean | No | Publish the first version of the function atomically with creation | | `environment` | json | No | Environment variables as a flat key/value JSON object | | `tags` | json | No | Tags to apply to the function, as a flat key/value JSON object | | `architectures` | array | No | Instruction set architecture: exactly one of x86\_64 or arm64 | | `layers` | array | No | ARNs of layer versions to add to the function execution environment Pass \[] to remove all of them on an update. | | `vpcSubnetIds` | array | No | VPC subnet IDs the function should attach to Pass \[] to remove all of them on an update. | | `vpcSecurityGroupIds` | array | No | VPC security group IDs the function should use Pass \[] to remove all of them on an update. | | `tracingMode` | string | No | X-Ray tracing mode: Active samples and traces requests, PassThrough only traces sampled requests | | `deadLetterTargetArn` | string | No | ARN of an SQS queue or SNS topic that receives failed asynchronous invocations | | `kmsKeyArn` | string | No | ARN of the KMS customer managed key used to encrypt environment variables and snapshots | | `snapStartApplyOn` | string | No | Set to PublishedVersions to snapshot the initialized environment when a version is published | | `logFormat` | string | No | Format the function sends CloudWatch logs in | | `logGroup` | string | No | CloudWatch log group the function sends logs to | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ---- | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | ### Lambda Update Function Code [#lambda-update-function-code] Update a function's deployment package from Amazon S3 or a container image #### Input [#input-5] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `s3Bucket` | string | No | Amazon S3 bucket holding the new deployment package, in the same region as the function | | `s3Key` | string | No | Amazon S3 key of the .zip package | | `s3ObjectVersion` | string | No | Version of the Amazon S3 object to use | | `imageUri` | string | No | Amazon ECR URI of the container image to deploy | | `sourceKmsKeyArn` | string | No | ARN of the KMS customer managed key that encrypts the function's .zip deployment package | | `architectures` | array | No | Instruction set architecture: exactly one of x86\_64 or arm64 | | `publish` | boolean | No | Publish a new version after updating the code | | `dryRun` | boolean | No | Validate the request without updating the function | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-5] | Parameter | Type | Description | | --------------- | ---- | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | ### Lambda Update Function Configuration [#lambda-update-function-configuration] Update a function's settings such as memory, timeout, role, and environment variables #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `role` | string | No | ARN of the function's execution role | | `runtime` | string | No | Runtime identifier such as nodejs22.x or python3.13 | | `handler` | string | No | Entry point in your code, such as index.handler | | `description` | string | No | Description of the function | | `functionTimeout` | number | No | Seconds Lambda allows the function to run before stopping it (1-900). Named functionTimeout because the shared tool executor reserves `timeout` for its own request deadline | | `memorySize` | number | No | Memory available to the function at runtime in MB (128-32768) | | `ephemeralStorageSize` | number | No | Size of the /tmp directory in MB (512-10240) | | `environment` | json | No | Environment variables as a flat key/value JSON object. Replaces the existing set | | `layers` | array | No | ARNs of layer versions to add to the function execution environment Pass \[] to remove all of them on an update. | | `vpcSubnetIds` | array | No | VPC subnet IDs the function should attach to Pass \[] to remove all of them on an update. | | `vpcSecurityGroupIds` | array | No | VPC security group IDs the function should use Pass \[] to remove all of them on an update. | | `tracingMode` | string | No | X-Ray tracing mode: Active samples and traces requests, PassThrough only traces sampled requests | | `deadLetterTargetArn` | string | No | ARN of an SQS queue or SNS topic that receives failed asynchronous invocations | | `kmsKeyArn` | string | No | ARN of the KMS customer managed key used to encrypt environment variables and snapshots | | `snapStartApplyOn` | string | No | Set to PublishedVersions to snapshot the initialized environment when a version is published | | `logFormat` | string | No | Format the function sends CloudWatch logs in | | `logGroup` | string | No | CloudWatch log group the function sends logs to | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ---- | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | ### Lambda Delete Function [#lambda-delete-function] Delete a Lambda function, or a single published version of it #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number to delete. Omit to delete the whole function including all versions and aliases | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda Publish Version [#lambda-publish-version] Publish an immutable version from the current code and configuration of a function #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `codeSha256` | string | No | Publish only if the SHA256 hash of the deployment package matches this value | | `description` | string | No | Description of the version | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ---- | ------------------------------------------------------------------------------------------------------ | | `configuration` | json | The function's configuration (ARN, runtime, handler, memory, state, layers, VPC, and logging settings) | ### Lambda List Function Versions [#lambda-list-function-versions] List the published versions of a Lambda function, plus $LATEST #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-10000) | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------ | | `versions` | array | Published versions of the function, plus the unpublished $LATEST version | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Create Alias [#lambda-create-alias] Create an alias that points to a published function version #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `aliasName` | string | Yes | Name of the alias, such as prod or staging | | `aliasFunctionVersion` | string | Yes | Function version the alias points to | | `description` | string | No | Description of the alias | | `additionalVersionWeights` | json | No | Weighted routing as a JSON object mapping a second version to the fraction of traffic it receives, e.g. \{"2": 0.1} | #### Output [#output-10] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------------------- | | `alias` | json | The alias with its ARN, target version, and routing configuration | ### Lambda Get Alias [#lambda-get-alias] Get details about a Lambda function alias #### Input [#input-11] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `aliasName` | string | Yes | Name of the alias | #### Output [#output-11] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------------------- | | `alias` | json | The alias with its ARN, target version, and routing configuration | ### Lambda Update Alias [#lambda-update-alias] Update the target version, description, or traffic weights of an alias #### Input [#input-12] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `aliasName` | string | Yes | Name of the alias | | `aliasFunctionVersion` | string | No | Function version the alias should point to | | `description` | string | No | Description of the alias | | `additionalVersionWeights` | json | No | Weighted routing as a JSON object mapping a second version to the fraction of traffic it receives, e.g. \{"2": 0.1} | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-12] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------------------- | | `alias` | json | The alias with its ARN, target version, and routing configuration | ### Lambda Delete Alias [#lambda-delete-alias] Delete a Lambda function alias #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `aliasName` | string | Yes | Name of the alias | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda List Aliases [#lambda-list-aliases] List the aliases of a Lambda function #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `aliasFunctionVersion` | string | No | Return only aliases that point to this function version | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-10000) | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------- | | `aliases` | array | Aliases with their ARNs, target versions, and routing configuration | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Add Permission [#lambda-add-permission] Grant an AWS service, account, or organization permission to use a function #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `statementId` | string | Yes | Unique identifier for the policy statement (letters, numbers, hyphens, and underscores) | | `action` | string | Yes | Action the principal is granted, such as lambda:InvokeFunction | | `principal` | string | Yes | AWS service principal or account ID granted the permission, such as s3.amazonaws.com | | `sourceArn` | string | No | ARN of the AWS resource allowed to invoke the function | | `sourceAccount` | string | No | ID of the AWS account that owns the source resource | | `principalOrgId` | string | No | AWS Organizations ID to grant permission to every account in the organization | | `eventSourceToken` | string | No | Token that must be supplied by the invoker (Alexa Smart Home functions only) | | `functionUrlAuthType` | string | No | Auth type of the function URL this permission applies to | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-15] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------------------ | | `statement` | string | The permission statement that was added, as a JSON document string | ### Lambda Remove Permission [#lambda-remove-permission] Remove a statement from a function's resource-based policy #### Input [#input-16] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `statementId` | string | Yes | Identifier of the policy statement to remove | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | | `revisionId` | string | No | Update the resource only if its current revision ID matches this value | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda Get Policy [#lambda-get-policy] Get the resource-based IAM policy attached to a function, version, or alias #### Input [#input-17] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------- | | `policy` | string | The resource-based policy, as a JSON document string | | `revisionId` | string | Current revision ID of the policy | ### Lambda Create Event Source Mapping [#lambda-create-event-source-mapping] Map an event source such as SQS, Kinesis, DynamoDB Streams, or Kafka to a function #### Input [#input-18] | Parameter | Type | Required | Description | | ----------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `eventSourceArn` | string | No | ARN of the event source. Omit only for self-managed Kafka | | `enabled` | boolean | No | Whether the mapping is active | | `batchSize` | number | No | Maximum records sent to the function in a single batch | | `maximumBatchingWindowInSeconds` | number | No | Seconds to gather records before invoking the function (0-300) | | `startingPosition` | string | No | Position in the stream to start reading from. Required for Kinesis, DynamoDB Streams, and Kafka | | `startingPositionTimestamp` | string | No | ISO 8601 timestamp to start reading from, when startingPosition is AT\_TIMESTAMP | | `parallelizationFactor` | number | No | Number of concurrent batches to process from each shard (1-10) | | `maximumRecordAgeInSeconds` | number | No | Discard records older than this. Use -1 for infinite | | `maximumRetryAttempts` | number | No | Retries before a record is discarded. Use -1 for infinite | | `bisectBatchOnFunctionError` | boolean | No | Split a failing batch in two and retry each half | | `tumblingWindowInSeconds` | number | No | Duration of a processing window for stream aggregation (0-900) | | `maximumConcurrency` | number | No | Maximum concurrent function invocations from an SQS event source (2-1000) | | `topics` | array | No | Kafka topic names to consume | | `queues` | array | No | Amazon MQ broker destination queue names | | `functionResponseTypes` | array | No | Set to ReportBatchItemFailures to enable partial batch reporting Pass \[] to remove all of them on an update. | | `filterPatterns` | array | No | Event filter patterns, each a JSON string, that decide which records reach the function. Pass \[] to remove all filters on an update. | | `onSuccessDestination` | string | No | ARN of the destination that receives successfully processed records | | `onFailureDestination` | string | No | ARN of the destination that receives discarded records | | `kmsKeyArn` | string | No | ARN of the KMS customer managed key used to encrypt filter criteria | | `tags` | json | No | Tags to apply to the event source mapping, as a flat key/value JSON object | | `sourceAccessConfigurations` | json | No | Authentication for an Amazon MQ or self-managed Kafka source, as a JSON array of objects with "type" (e.g. BASIC\_AUTH, SASL\_SCRAM\_512\_AUTH, VPC\_SUBNET) and "uri" (the Secrets Manager or VPC resource ARN). Pass \[] to remove all of them on an update. | | `documentDbDatabaseName` | string | No | DocumentDB database to consume the change stream from | | `documentDbCollectionName` | string | No | DocumentDB collection to consume. Omit to consume the whole database | | `documentDbFullDocument` | string | No | UpdateLookup sends the full document on update, Default sends only the change delta | | `amazonManagedKafkaConsumerGroupId` | string | No | Consumer group ID to join on an Amazon MSK cluster | | `selfManagedKafkaConsumerGroupId` | string | No | Consumer group ID to join on a self-managed Kafka cluster | | `selfManagedKafkaBootstrapServers` | array | No | Bootstrap servers of a self-managed Kafka cluster (host:port). Required instead of eventSourceArn for self-managed Kafka | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ---- | ---------------------------------------------------------------------------- | | `eventSourceMapping` | json | The event source mapping with its UUID, state, batching, and filter settings | ### Lambda Get Event Source Mapping [#lambda-get-event-source-mapping] Get details about an event source mapping #### Input [#input-19] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `uuid` | string | Yes | Identifier of the event source mapping | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ---- | ---------------------------------------------------------------------------- | | `eventSourceMapping` | json | The event source mapping with its UUID, state, batching, and filter settings | ### Lambda Update Event Source Mapping [#lambda-update-event-source-mapping] Update the batching, retry, filtering, or enabled state of an event source mapping #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `uuid` | string | Yes | Identifier of the event source mapping | | `functionName` | string | No | Function the mapping should invoke | | `enabled` | boolean | No | Whether the mapping is active | | `batchSize` | number | No | Maximum records sent to the function in a single batch | | `maximumBatchingWindowInSeconds` | number | No | Seconds to gather records before invoking the function (0-300) | | `parallelizationFactor` | number | No | Number of concurrent batches to process from each shard (1-10) | | `maximumRecordAgeInSeconds` | number | No | Discard records older than this. Use -1 for infinite | | `maximumRetryAttempts` | number | No | Retries before a record is discarded. Use -1 for infinite | | `bisectBatchOnFunctionError` | boolean | No | Split a failing batch in two and retry each half | | `tumblingWindowInSeconds` | number | No | Duration of a processing window for stream aggregation (0-900) | | `maximumConcurrency` | number | No | Maximum concurrent function invocations from an SQS event source (2-1000) | | `functionResponseTypes` | array | No | Set to ReportBatchItemFailures to enable partial batch reporting Pass \[] to remove all of them on an update. | | `filterPatterns` | array | No | Event filter patterns, each a JSON string, that decide which records reach the function. Pass \[] to remove all filters on an update. | | `onSuccessDestination` | string | No | ARN of the destination that receives successfully processed records | | `onFailureDestination` | string | No | ARN of the destination that receives discarded records | | `kmsKeyArn` | string | No | ARN of the KMS customer managed key used to encrypt filter criteria | | `sourceAccessConfigurations` | json | No | Authentication for an Amazon MQ or self-managed Kafka source, as a JSON array of objects with "type" (e.g. BASIC\_AUTH, SASL\_SCRAM\_512\_AUTH, VPC\_SUBNET) and "uri" (the Secrets Manager or VPC resource ARN). Pass \[] to remove all of them on an update. | | `documentDbDatabaseName` | string | No | DocumentDB database to consume the change stream from | | `documentDbCollectionName` | string | No | DocumentDB collection to consume. Omit to consume the whole database | | `documentDbFullDocument` | string | No | UpdateLookup sends the full document on update, Default sends only the change delta | | `amazonManagedKafkaConsumerGroupId` | string | No | Consumer group ID to join on an Amazon MSK cluster | | `selfManagedKafkaConsumerGroupId` | string | No | Consumer group ID to join on a self-managed Kafka cluster | #### Output [#output-20] | Parameter | Type | Description | | -------------------- | ---- | ---------------------------------------------------------------------------- | | `eventSourceMapping` | json | The event source mapping with its UUID, state, batching, and filter settings | ### Lambda Delete Event Source Mapping [#lambda-delete-event-source-mapping] Delete an event source mapping #### Input [#input-21] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `uuid` | string | Yes | Identifier of the event source mapping | #### Output [#output-21] | Parameter | Type | Description | | -------------------- | ---- | --------------------------------------------------------------------- | | `eventSourceMapping` | json | The deleted event source mapping, whose state transitions to Deleting | ### Lambda List Event Source Mappings [#lambda-list-event-source-mappings] List event source mappings, optionally filtered by function or event source #### Input [#input-22] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | No | Return only mappings that invoke this function | | `eventSourceArn` | string | No | Return only mappings for this event source ARN | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-10000) | #### Output [#output-22] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------------------------------------- | | `eventSourceMappings` | array | Event source mappings with their UUIDs, state, and batching settings | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Get Function Concurrency [#lambda-get-function-concurrency] Get the reserved concurrency configured for a function #### Input [#input-23] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | #### Output [#output-23] | Parameter | Type | Description | | ------------------------------ | ------ | --------------------------------------------------------------------- | | `reservedConcurrentExecutions` | number | Concurrency reserved for this function, or null when none is reserved | ### Lambda Set Function Concurrency [#lambda-set-function-concurrency] Reserve a share of the account concurrency limit for a function #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `reservedConcurrentExecutions` | number | Yes | Number of simultaneous executions to reserve for this function | #### Output [#output-24] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------ | | `reservedConcurrentExecutions` | number | Concurrency now reserved for this function | ### Lambda Delete Function Concurrency [#lambda-delete-function-concurrency] Remove the reserved concurrency configuration from a function #### Input [#input-25] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda Get Provisioned Concurrency [#lambda-get-provisioned-concurrency] Get the provisioned concurrency configuration of a function version or alias #### Input [#input-26] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | Yes | Version number or alias name the configuration applies to | #### Output [#output-26] | Parameter | Type | Description | | ------------------------ | ---- | --------------------------------------------------------------------------- | | `provisionedConcurrency` | json | Requested, available, and allocated provisioned concurrency with its status | ### Lambda Set Provisioned Concurrency [#lambda-set-provisioned-concurrency] Allocate provisioned concurrency to a function version or alias #### Input [#input-27] | Parameter | Type | Required | Description | | --------------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | Yes | Version number or alias name the configuration applies to | | `provisionedConcurrentExecutions` | number | Yes | Number of pre-initialized execution environments to allocate | #### Output [#output-27] | Parameter | Type | Description | | ------------------------ | ---- | --------------------------------------------------------------------------- | | `provisionedConcurrency` | json | Requested, available, and allocated provisioned concurrency with its status | ### Lambda Delete Provisioned Concurrency [#lambda-delete-provisioned-concurrency] Remove the provisioned concurrency configuration from a function version or alias #### Input [#input-28] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | Yes | Version number or alias name the configuration applies to | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda List Provisioned Concurrency [#lambda-list-provisioned-concurrency] List the provisioned concurrency configurations of a function #### Input [#input-29] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-50) | #### Output [#output-29] | Parameter | Type | Description | | ------------------------------- | ------ | ------------------------------------------------------------------- | | `provisionedConcurrencyConfigs` | array | Provisioned concurrency configurations with their allocation status | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Create Function URL [#lambda-create-function-url] Create a dedicated HTTPS endpoint for a function #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `authType` | string | Yes | AWS\_IAM requires signed requests, NONE allows public unauthenticated access | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | | `invokeMode` | string | No | BUFFERED returns the whole response at once, RESPONSE\_STREAM streams it | | `corsAllowCredentials` | boolean | No | Whether the function URL sends the Access-Control-Allow-Credentials header | | `corsAllowOrigins` | array | No | Origins allowed to call the function URL, or \* for any | | `corsAllowMethods` | array | No | HTTP methods allowed when calling the function URL, or \* for any | | `corsAllowHeaders` | array | No | Headers browsers may send in a cross-origin request | | `corsExposeHeaders` | array | No | Response headers browsers may access from the response | | `corsMaxAge` | number | No | Seconds a browser may cache the CORS preflight result (0-86400) | #### Output [#output-30] | Parameter | Type | Description | | ------------------- | ---- | ------------------------------------------------------------------- | | `functionUrlConfig` | json | The function URL with its auth type, invoke mode, and CORS settings | ### Lambda Get Function URL [#lambda-get-function-url] Get details about a function URL #### Input [#input-31] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-31] | Parameter | Type | Description | | ------------------- | ---- | ------------------------------------------------------------------- | | `functionUrlConfig` | json | The function URL with its auth type, invoke mode, and CORS settings | ### Lambda Update Function URL [#lambda-update-function-url] Update the auth type, invoke mode, or CORS settings of a function URL #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `authType` | string | No | AWS\_IAM requires signed requests, NONE allows public unauthenticated access | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | | `invokeMode` | string | No | BUFFERED returns the whole response at once, RESPONSE\_STREAM streams it | | `corsAllowCredentials` | boolean | No | Whether the function URL sends the Access-Control-Allow-Credentials header | | `corsAllowOrigins` | array | No | Origins allowed to call the function URL, or \* for any | | `corsAllowMethods` | array | No | HTTP methods allowed when calling the function URL, or \* for any | | `corsAllowHeaders` | array | No | Headers browsers may send in a cross-origin request | | `corsExposeHeaders` | array | No | Response headers browsers may access from the response | | `corsMaxAge` | number | No | Seconds a browser may cache the CORS preflight result (0-86400) | #### Output [#output-32] | Parameter | Type | Description | | ------------------- | ---- | ------------------------------------------------------------------- | | `functionUrlConfig` | json | The function URL with its auth type, invoke mode, and CORS settings | ### Lambda Delete Function URL [#lambda-delete-function-url] Delete the URL configuration of a function #### Input [#input-33] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda List Function URLs [#lambda-list-function-urls] List the URL configurations of a function #### Input [#input-34] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-50) | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------- | | `functionUrlConfigs` | array | Function URLs with their auth types, invoke modes, and CORS settings | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Get Async Invoke Config [#lambda-get-async-invoke-config] Get the asynchronous invocation retry and destination settings of a function #### Input [#input-35] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-35] | Parameter | Type | Description | | ------------------- | ---- | --------------------------------------------------------------------- | | `eventInvokeConfig` | json | Asynchronous invocation retry limits and success/failure destinations | ### Lambda Set Async Invoke Config [#lambda-set-async-invoke-config] Configure retry limits and destinations for asynchronous invocations of a function #### Input [#input-36] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | | `maximumRetryAttempts` | number | No | Times Lambda retries a failed asynchronous invocation (0-2) | | `maximumEventAgeInSeconds` | number | No | Maximum age of an event Lambda will still process (60-21600) | | `onSuccessDestination` | string | No | ARN of the destination that receives successful invocation records | | `onFailureDestination` | string | No | ARN of the destination that receives failed invocation records | #### Output [#output-36] | Parameter | Type | Description | | ------------------- | ---- | --------------------------------------------------------------------- | | `eventInvokeConfig` | json | Asynchronous invocation retry limits and success/failure destinations | ### Lambda Delete Async Invoke Config [#lambda-delete-async-invoke-config] Remove the asynchronous invocation configuration of a function #### Input [#input-37] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-37] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda List Async Invoke Configs [#lambda-list-async-invoke-configs] List the asynchronous invocation configurations of a function #### Input [#input-38] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-50) | #### Output [#output-38] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------------------- | | `eventInvokeConfigs` | array | Asynchronous invocation configurations for the function versions and aliases | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda List Layers [#lambda-list-layers] List Lambda layers and the latest version of each #### Input [#input-39] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `compatibleRuntime` | string | No | Return only layers compatible with this runtime, such as python3.13 | | `compatibleArchitecture` | string | No | Return only layers compatible with this instruction set architecture | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-50) | #### Output [#output-39] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------ | | `layers` | array | Layers with their ARNs and latest matching version | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda List Layer Versions [#lambda-list-layer-versions] List the versions of a Lambda layer #### Input [#input-40] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `layerName` | string | Yes | The name or ARN of the layer | | `compatibleRuntime` | string | No | Return only versions compatible with this runtime, such as python3.13 | | `compatibleArchitecture` | string | No | Return only versions compatible with this instruction set architecture | | `marker` | string | No | Pagination token returned by a previous request | | `maxItems` | number | No | Maximum number of items to return (1-50) | #### Output [#output-40] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------- | | `layerVersions` | array | Layer versions with their ARNs, compatible runtimes, and license info | | `nextMarker` | string | Pagination token to pass as marker on the next request | ### Lambda Get Layer Version [#lambda-get-layer-version] Get details and a download link for a specific layer version #### Input [#input-41] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `layerName` | string | Yes | The name or ARN of the layer | | `versionNumber` | number | Yes | Version number of the layer | #### Output [#output-41] | Parameter | Type | Description | | -------------- | ---- | ----------------------------------------------------------------------------------------- | | `layerVersion` | json | The layer version with its ARN, compatible runtimes, and a presigned content download URL | ### Lambda List Tags [#lambda-list-tags] List the tags applied to a Lambda function #### Input [#input-42] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | The function's Amazon Resource Name (ARN) | #### Output [#output-42] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `tags` | json | The resource's tags as a key/value object | ### Lambda Tag Resource [#lambda-tag-resource] Add tags to a Lambda function #### Input [#input-43] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | The function's Amazon Resource Name (ARN) | | `tags` | json | Yes | Tags to apply, as a flat key/value JSON object | #### Output [#output-43] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda Untag Resource [#lambda-untag-resource] Remove tags from a Lambda function #### Input [#input-44] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | The function's Amazon Resource Name (ARN) | | `tagKeys` | array | Yes | Tag keys to remove | #### Output [#output-44] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | ### Lambda Get Account Settings [#lambda-get-account-settings] Get the Lambda limits and usage of the current AWS account and region #### Input [#input-45] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | #### Output [#output-45] | Parameter | Type | Description | | -------------- | ---- | ---------------------------------------------------------- | | `accountLimit` | json | Account-level storage and concurrency limits | | `accountUsage` | json | Current code storage used and number of functions deployed | ### Lambda Get Recursion Config [#lambda-get-recursion-config] Get the recursive loop detection setting of a function #### Input [#input-46] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | #### Output [#output-46] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------ | | `recursiveLoop` | string | Terminate stops the function after 16 recursive invocations, Allow permits recursion | ### Lambda Set Recursion Config [#lambda-set-recursion-config] Set whether Lambda stops a function that invokes itself recursively #### Input [#input-47] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `recursiveLoop` | string | Yes | Terminate stops the function after 16 recursive invocations, Allow permits recursion | #### Output [#output-47] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------- | | `recursiveLoop` | string | The recursion setting now in effect for the function | ### Lambda Get Runtime Management Config [#lambda-get-runtime-management-config] Get the runtime update policy of a function version #### Input [#input-48] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-48] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------ | | `updateRuntimeOn` | string | Auto, FunctionUpdate, or Manual runtime update policy | | `runtimeVersionArn` | string | ARN of the pinned runtime version, when the policy is Manual | | `functionArn` | string | ARN of the function the policy applies to | ### Lambda Set Runtime Management Config [#lambda-set-runtime-management-config] Set how and when Lambda applies runtime updates to a function version #### Input [#input-49] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `awsRegion` | string | Yes | AWS region (e.g., us-east-1) | | `awsAccessKeyId` | string | Yes | AWS access key ID | | `awsSecretAccessKey` | string | Yes | AWS secret access key | | `functionName` | string | Yes | Function name, ARN, or partial ARN (e.g. my-function, or arn:aws:lambda:us-east-1:123456789012:function:my-function) | | `updateRuntimeOn` | string | Yes | Auto applies updates automatically, FunctionUpdate applies them on the next function update, Manual pins a runtime version | | `runtimeVersionArn` | string | No | ARN of the runtime version to pin to. Required when updateRuntimeOn is Manual | | `qualifier` | string | No | Version number or alias name to act on. Omit to target the function itself | #### Output [#output-49] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------ | | `updateRuntimeOn` | string | The runtime update policy now in effect | | `runtimeVersionArn` | string | ARN of the pinned runtime version, when the policy is Manual | | `functionArn` | string | ARN of the function the policy applies to | --- # LangSmith (/integrations/langsmith) {/* MANUAL-CONTENT-START:intro */} Use [LangSmith](https://www.langchain.com/langsmith) to record workflow, tool, or model runs with inputs, outputs, tags, metadata, and parent-child relationships. Create or update runs, retrieve a run, and attach feedback using the actions below. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Send run data to LangSmith to trace executions, attach metadata, and monitor workflow performance. ## Actions [#actions] ### LangSmith Create Run [#langsmith-create-run] Forward a single run to LangSmith for ingestion. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | LangSmith API key | | `id` | string | No | Unique run identifier | | `name` | string | Yes | Run name | | `run_type` | string | Yes | Run type (tool, chain, llm, retriever, embedding, prompt, parser) | | `start_time` | string | No | Run start time in ISO-8601 format | | `end_time` | string | No | Run end time in ISO-8601 format | | `inputs` | json | No | Inputs payload | | `run_outputs` | json | No | Outputs payload | | `extra` | json | No | Additional metadata (extra) | | `tags` | json | No | Array of tag strings | | `parent_run_id` | string | No | Parent run ID | | `trace_id` | string | No | Trace ID | | `session_id` | string | No | Session ID | | `session_name` | string | No | Session name | | `status` | string | No | Run status | | `error` | string | No | Error details | | `dotted_order` | string | No | Dotted order string | | `events` | json | No | Structured events array | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------ | | `accepted` | boolean | Whether the run was accepted for ingestion | | `runId` | string | Run identifier provided in the request | | `message` | string | Response message from LangSmith | ### LangSmith Create Runs Batch [#langsmith-create-runs-batch] Forward multiple runs to LangSmith in a single batch. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | LangSmith API key | | `post` | json | No | Array of new runs to ingest | | `patch` | json | No | Array of runs to update/patch | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------- | | `accepted` | boolean | Whether the batch was accepted for ingestion | | `runIds` | array | Run identifiers provided in the request | | `message` | string | Response message from LangSmith | | `messages` | array | Per-run response messages, when provided | ### LangSmith Update Run [#langsmith-update-run] Patch an existing LangSmith run with outputs, status, or timing once it completes. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | LangSmith API key | | `runId` | string | Yes | ID of the run to update | | `name` | string | No | Corrected run name | | `end_time` | string | No | Run end time in ISO-8601 format | | `outputs` | json | No | Outputs payload | | `extra` | json | No | Additional metadata (extra) | | `tags` | json | No | Array of tag strings | | `status` | string | No | Run status | | `error` | string | No | Error details | | `events` | json | No | Structured events array | #### Output [#output-2] This tool does not produce any outputs. ### LangSmith Get Run [#langsmith-get-run] Retrieve a single LangSmith run by ID. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | LangSmith API key | | `runId` | string | Yes | ID of the run to retrieve | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------------- | | `id` | string | Run ID | | `runId` | string | Run ID (alias of id, for consistency with other operations) | | `name` | string | Run name | | `runType` | string | Run type (tool, chain, llm, retriever, embedding, prompt, parser) | | `status` | string | Run status | | `startTime` | string | Run start time (ISO) | | `endTime` | string | Run end time (ISO) | | `inputs` | json | Run inputs payload | | `outputs` | json | Run outputs payload | | `error` | string | Error details, if the run failed | | `tags` | array | Tags attached to the run | | `sessionId` | string | Project (session) ID the run belongs to | | `traceId` | string | Trace ID | | `parentRunId` | string | Parent run ID | | `totalTokens` | number | Total tokens consumed by the run | | `totalCost` | string | Total cost of the run | ### LangSmith Create Feedback [#langsmith-create-feedback] Attach a score, correction, or comment to a LangSmith run. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | LangSmith API key | | `runId` | string | Yes | ID of the run to attach feedback to | | `key` | string | Yes | Feedback metric name (e.g. "correctness", "user\_score") | | `score` | number | No | Numeric score for the feedback metric | | `value` | string | No | Categorical value for the feedback metric | | `comment` | string | No | Free-text comment explaining the feedback | | `correction` | json | No | Corrected output for the run | | `feedbackSourceType` | string | No | Origin of the feedback (api, app, or model) | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------- | | `id` | string | Feedback ID | | `key` | string | Feedback metric name | | `runId` | string | ID of the run the feedback was attached to | | `score` | number | Score recorded for the feedback | | `value` | string | Categorical value recorded for the feedback | | `comment` | string | Comment recorded for the feedback | | `createdAt` | string | When the feedback was created (ISO) | --- # LaTeX (/integrations/latex) {/* MANUAL-CONTENT-START:intro */} [LaTeX](https://www.latex-project.org/) compiles plain-text document source into PDFs. Provide the source, select a compiler, and attach any required images, included files, or bibliographies. You can also inspect the available TeX Live packages and system fonts. No OAuth connection or API key is required. Note: compilation runs on the public [LaTeX-on-HTTP](https://github.com/YtoTech/latex-on-http) service at latex.ytotech.com, so the document source and any attached resources are sent to that third-party service. Avoid compiling documents whose contents must not leave your environment. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates LaTeX into the workflow. Compiles LaTeX source into a PDF file with pdflatex, xelatex, lualatex, platex, uplatex, or context, and supports additional resources such as images, included .tex files, and bibliographies. Can also look up the TeX Live packages and system fonts available to the compiler. Does not require OAuth or an API key. Compilation runs on the public LaTeX-on-HTTP service (latex.ytotech.com), so document source and resources are sent to that third-party service. ## Actions [#actions] ### LaTeX Compile [#latex-compile] Compile a LaTeX document into a PDF via the public LaTeX-on-HTTP service (latex.ytotech.com). Supports pdflatex, xelatex, lualatex, platex, uplatex, and context, plus supporting resources such as images, included .tex files, and bibliographies. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `content` | string | Yes | LaTeX source of the main document, from \documentclass to \end\{document} | | `compiler` | string | No | LaTeX compiler: pdflatex (default), xelatex, lualatex, platex, uplatex, or context | | `fileName` | string | No | Name for the generated PDF file (default: document.pdf) | | `resources` | array | No | Supporting files for the compilation. Each entry has a "path" plus exactly one of "content" (plain text), "file" (base64), or "url" (remote file), e.g. \[\{"path": "refs.bib", "content": "..."}, \{"path": "logo.png", "url": "https\://..."}] | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | --------------------------------- | | `pdf` | file | Compiled PDF file | | `pdfUrl` | string | URL of the compiled PDF | | `fileName` | string | Name of the compiled PDF file | | `compiler` | string | LaTeX compiler used for the build | ### LaTeX Search Packages [#latex-search-packages] Search the TeX Live packages available to the LaTeX compiler by name or description, e.g. to check which packages can be used in a document. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `query` | string | Yes | Search terms matched against package names and descriptions | | `maxResults` | number | No | Maximum number of packages to return (default: 25, max: 100) | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------------------- | | `packages` | array | TeX Live packages matching the query | | ↳ `name` | string | Package name | | ↳ `shortDescription` | string | One-line package description | | ↳ `installed` | boolean | Whether the package is installed | | ↳ `ctanUrl` | string | CTAN page for the package | | `totalMatches` | number | Total number of packages matching the query, before truncation | ### LaTeX Get Package [#latex-get-package] Get details about a specific TeX Live package available to the LaTeX compiler, including whether it is installed, its description, license, and related packages. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `name` | string | Yes | Exact package name, e.g. amsmath, tikz, or biblatex | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------- | | `package` | json | TeX Live package details | | ↳ `name` | string | Package name | | ↳ `installed` | boolean | Whether the package is installed | | ↳ `shortDescription` | string | One-line package description | | ↳ `longDescription` | string | Full package description | | ↳ `category` | string | Package category | | ↳ `license` | string | Package license identifier | | ↳ `topics` | array | CTAN topic tags | | ↳ `relatedPackages` | array | Names of related packages | | ↳ `homepage` | string | Package homepage URL | | ↳ `ctanUrl` | string | CTAN page for the package | ### LaTeX List Fonts [#latex-list-fonts] List the system fonts available to the LaTeX compiler, optionally filtered by name, e.g. to pick a font for xelatex or lualatex documents using fontspec. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------ | | `query` | string | No | Filter matched against font family and full font name, e.g. "Noto Serif" | | `maxResults` | number | No | Maximum number of fonts to return (default: 50, max: 200) | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------ | | `fonts` | array | Fonts available to the LaTeX compiler | | ↳ `family` | string | Font family name | | ↳ `name` | string | Full font name | | ↳ `styles` | array | Available styles, e.g. Bold or Italic | | `totalMatches` | number | Total number of fonts matching the filter, before truncation | --- # LaunchDarkly (/integrations/launchdarkly) {/* MANUAL-CONTENT-START:intro */} [LaunchDarkly](https://launchdarkly.com/) is a feature management platform that enables teams to safely deploy, control, and measure their software features at scale. With the LaunchDarkly integration in Agent Serve, you can: * **Feature flag management** — List, create, update, toggle, and delete feature flags programmatically. Toggle flags on or off in specific environments using LaunchDarkly's semantic patch API. * **Flag status monitoring** — Check whether a flag is active, inactive, new, or launched in a given environment. Track the last time a flag was evaluated. * **Project and environment management** — List all projects and their environments to understand your LaunchDarkly organization structure. * **User segments** — List user segments within a project and environment to understand how your audience is organized for targeting. * **Team visibility** — List account members and their roles for auditing and access management workflows. * **Audit log** — Retrieve recent audit log entries to track who changed what, when. Filter entries by resource type for targeted monitoring. In Agent Serve, the LaunchDarkly integration enables your agents to automate feature flag operations as part of their workflows. This allows for automation scenarios such as toggling flags on/off based on deployment pipeline events, monitoring flag status and alerting on stale or unused flags, auditing flag changes by querying the audit log after deployments, syncing flag metadata with your project management tools, and listing all feature flags across projects for governance. ## Authentication [#authentication] This integration uses a LaunchDarkly API key. You can create personal access tokens or service tokens in the LaunchDarkly dashboard under **Account Settings > Authorization**. The API key is passed directly in the `Authorization` header (no `Bearer` prefix). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate LaunchDarkly into your workflow. List, create, update, toggle, and delete feature flags. Manage projects, environments, segments, members, and audit logs. Requires API Key. ## Actions [#actions] ### LaunchDarkly Create Flag [#launchdarkly-create-flag] Create a new feature flag in a LaunchDarkly project. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key to create the flag in | | `name` | string | Yes | Human-readable name for the feature flag | | `key` | string | Yes | Unique key for the feature flag (used in code) | | `description` | string | No | Description of the feature flag | | `tags` | string | No | Comma-separated list of tags | | `temporary` | boolean | No | Whether the flag is temporary (default true) | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `key` | string | The unique key of the feature flag | | `name` | string | The human-readable name of the feature flag | | `kind` | string | The type of flag (boolean or multivariate) | | `description` | string | Description of the feature flag | | `temporary` | boolean | Whether the flag is temporary | | `archived` | boolean | Whether the flag is archived | | `deprecated` | boolean | Whether the flag is deprecated | | `creationDate` | number | Unix timestamp in milliseconds when the flag was created | | `tags` | array | Tags applied to the flag | | `variations` | array | The variations for this feature flag | | ↳ `value` | string | The variation value (any JSON type, shown as text) | | ↳ `name` | string | The variation name | | ↳ `description` | string | The variation description | | `maintainerId` | string | The ID of the member who maintains this flag | | `maintainerEmail` | string | The email of the member who maintains this flag | ### LaunchDarkly Delete Flag [#launchdarkly-delete-flag] Delete a feature flag from a LaunchDarkly project. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `flagKey` | string | Yes | The feature flag key to delete | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `deleted` | boolean | Whether the flag was successfully deleted | ### LaunchDarkly Get Audit Log [#launchdarkly-get-audit-log] List audit log entries from your LaunchDarkly account. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `limit` | number | No | Maximum number of entries to return (default 10, max 20) | | `spec` | string | No | Resource specifier filter (e.g. "proj/*:env/*:flag/\*" for all flag changes, or "proj/default:env/production:flag/my-flag" for one flag in one environment) | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------------- | | `entries` | array | List of audit log entries | | ↳ `id` | string | The audit log entry ID | | ↳ `date` | number | Unix timestamp in milliseconds | | ↳ `kind` | string | The type of action performed | | ↳ `name` | string | The name of the resource acted on | | ↳ `description` | string | Full description of the action | | ↳ `shortDescription` | string | Short description of the action | | ↳ `memberEmail` | string | Email of the member who performed the action | | ↳ `targetName` | string | Name of the target resource | | ↳ `targetKind` | string | Resource specifier of the target (e.g. proj/default:env/production:flag/my-flag) | | `totalCount` | number | Total number of audit log entries | ### LaunchDarkly Get Flag [#launchdarkly-get-flag] Get a single feature flag by key from a LaunchDarkly project. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `flagKey` | string | Yes | The feature flag key | | `environmentKey` | string | No | Filter flag configuration to a specific environment | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `key` | string | The unique key of the feature flag | | `name` | string | The human-readable name of the feature flag | | `kind` | string | The type of flag (boolean or multivariate) | | `description` | string | Description of the feature flag | | `temporary` | boolean | Whether the flag is temporary | | `archived` | boolean | Whether the flag is archived | | `deprecated` | boolean | Whether the flag is deprecated | | `creationDate` | number | Unix timestamp in milliseconds when the flag was created | | `tags` | array | Tags applied to the flag | | `variations` | array | The variations for this feature flag | | ↳ `value` | string | The variation value (any JSON type, shown as text) | | ↳ `name` | string | The variation name | | ↳ `description` | string | The variation description | | `maintainerId` | string | The ID of the member who maintains this flag | | `maintainerEmail` | string | The email of the member who maintains this flag | | `on` | boolean | Whether the flag is on in the requested environment (null when the flag spans multiple environments and no environment key was provided) | ### LaunchDarkly Get Flag Status [#launchdarkly-get-flag-status] Get the status of a feature flag across environments (active, inactive, launched, etc.). #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `flagKey` | string | Yes | The feature flag key | | `environmentKey` | string | Yes | The environment key | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------- | | `name` | string | The flag status (new, active, inactive, launched) | | `lastRequested` | string | Timestamp of the last evaluation | | `defaultVal` | string | The default variation value | ### LaunchDarkly List Environments [#launchdarkly-list-environments] List environments in a LaunchDarkly project. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key to list environments for | | `limit` | number | No | Maximum number of environments to return (default 20) | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------- | | `environments` | array | List of environments | | ↳ `id` | string | The environment ID | | ↳ `key` | string | The unique environment key | | ↳ `name` | string | The environment name | | ↳ `color` | string | The color assigned to this environment | | ↳ `apiKey` | string | The server-side SDK key for this environment | | ↳ `mobileKey` | string | The mobile SDK key for this environment | | ↳ `tags` | array | Tags applied to the environment | | `totalCount` | number | Total number of environments | ### LaunchDarkly List Flags [#launchdarkly-list-flags] List feature flags in a LaunchDarkly project. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key to list flags for | | `environmentKey` | string | No | Filter flag configurations to a specific environment | | `tag` | string | No | Filter flags by tag name | | `limit` | number | No | Maximum number of flags to return (default 20) | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------- | | `flags` | array | List of feature flags | | ↳ `key` | string | The unique key of the feature flag | | ↳ `name` | string | The human-readable name of the feature flag | | ↳ `kind` | string | The type of flag (boolean or multivariate) | | ↳ `description` | string | Description of the feature flag | | ↳ `temporary` | boolean | Whether the flag is temporary | | ↳ `archived` | boolean | Whether the flag is archived | | ↳ `deprecated` | boolean | Whether the flag is deprecated | | ↳ `creationDate` | number | Unix timestamp in milliseconds when the flag was created | | ↳ `tags` | array | Tags applied to the flag | | ↳ `variations` | array | The variations for this feature flag | | ↳ `value` | string | The variation value (any JSON type, shown as text) | | ↳ `name` | string | The variation name | | ↳ `description` | string | The variation description | | ↳ `maintainerId` | string | The ID of the member who maintains this flag | | ↳ `maintainerEmail` | string | The email of the member who maintains this flag | | `totalCount` | number | Total number of flags | ### LaunchDarkly List Members [#launchdarkly-list-members] List account members in your LaunchDarkly organization. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | LaunchDarkly API key | | `limit` | number | No | Maximum number of members to return (default 20) | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------- | | `members` | array | List of account members | | ↳ `id` | string | The member ID | | ↳ `email` | string | The member email address | | ↳ `firstName` | string | The member first name | | ↳ `lastName` | string | The member last name | | ↳ `role` | string | The member role (reader, writer, admin, owner) | | ↳ `lastSeen` | number | Unix timestamp of last activity | | ↳ `creationDate` | number | Unix timestamp when the member was created | | ↳ `verified` | boolean | Whether the member email is verified | | `totalCount` | number | Total number of members | ### LaunchDarkly List Projects [#launchdarkly-list-projects] List all projects in your LaunchDarkly account. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `limit` | number | No | Maximum number of projects to return (default 20) | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------ | --------------------------- | | `projects` | array | List of projects | | ↳ `id` | string | The project ID | | ↳ `key` | string | The unique project key | | ↳ `name` | string | The project name | | ↳ `tags` | array | Tags applied to the project | | `totalCount` | number | Total number of projects | ### LaunchDarkly List Segments [#launchdarkly-list-segments] List user segments in a LaunchDarkly project and environment. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `environmentKey` | string | Yes | The environment key | | `limit` | number | No | Maximum number of segments to return (default 20) | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------- | | `segments` | array | List of user segments | | ↳ `key` | string | The unique segment key | | ↳ `name` | string | The segment name | | ↳ `description` | string | The segment description | | ↳ `tags` | array | Tags applied to the segment | | ↳ `creationDate` | number | Unix timestamp in milliseconds when the segment was created | | ↳ `unbounded` | boolean | Whether this is an unbounded (big) segment | | ↳ `included` | array | User keys explicitly included in the segment | | ↳ `excluded` | array | User keys explicitly excluded from the segment | | `totalCount` | number | Total number of segments | ### LaunchDarkly Toggle Flag [#launchdarkly-toggle-flag] Toggle a feature flag on or off in a specific LaunchDarkly environment. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `flagKey` | string | Yes | The feature flag key to toggle | | `environmentKey` | string | Yes | The environment key to toggle the flag in | | `enabled` | boolean | Yes | Whether to turn the flag on (true) or off (false) | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `key` | string | The unique key of the feature flag | | `name` | string | The human-readable name of the feature flag | | `kind` | string | The type of flag (boolean or multivariate) | | `description` | string | Description of the feature flag | | `temporary` | boolean | Whether the flag is temporary | | `archived` | boolean | Whether the flag is archived | | `deprecated` | boolean | Whether the flag is deprecated | | `creationDate` | number | Unix timestamp in milliseconds when the flag was created | | `tags` | array | Tags applied to the flag | | `variations` | array | The variations for this feature flag | | ↳ `value` | string | The variation value (any JSON type, shown as text) | | ↳ `name` | string | The variation name | | ↳ `description` | string | The variation description | | `maintainerId` | string | The ID of the member who maintains this flag | | `maintainerEmail` | string | The email of the member who maintains this flag | | `on` | boolean | Whether the flag is now on in the target environment | ### LaunchDarkly Update Flag [#launchdarkly-update-flag] Update feature flag metadata (name, description, tags, temporary, archived) using semantic patch. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------- | | `apiKey` | string | Yes | LaunchDarkly API key | | `projectKey` | string | Yes | The project key | | `flagKey` | string | Yes | The feature flag key to update | | `updateName` | string | No | New name for the flag | | `updateDescription` | string | No | New description for the flag | | `addTags` | string | No | Comma-separated tags to add | | `removeTags` | string | No | Comma-separated tags to remove | | `archive` | boolean | No | Set to true to archive, false to restore | | `comment` | string | No | Optional comment explaining the update | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `key` | string | The unique key of the feature flag | | `name` | string | The human-readable name of the feature flag | | `kind` | string | The type of flag (boolean or multivariate) | | `description` | string | Description of the feature flag | | `temporary` | boolean | Whether the flag is temporary | | `archived` | boolean | Whether the flag is archived | | `deprecated` | boolean | Whether the flag is deprecated | | `creationDate` | number | Unix timestamp in milliseconds when the flag was created | | `tags` | array | Tags applied to the flag | | `variations` | array | The variations for this feature flag | | ↳ `value` | string | The variation value (any JSON type, shown as text) | | ↳ `name` | string | The variation name | | ↳ `description` | string | The variation description | | `maintainerId` | string | The ID of the member who maintains this flag | | `maintainerEmail` | string | The email of the member who maintains this flag | --- # LeadMagic (/integrations/leadmagic) {/* MANUAL-CONTENT-START:intro */} Use [LeadMagic](https://leadmagic.io/) to find or verify contact details, enrich profiles and companies, and identify people in a given role. Check the credit balance before running large enrichment jobs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate LeadMagic to find verified work emails by name or company, validate email deliverability, find direct mobile numbers, enrich LinkedIn profiles, reverse-lookup profiles from emails, search companies by domain, identify role holders at accounts, and check account credit balance. ## Actions [#actions] ### LeadMagic Validate Email [#leadmagic-validate-email] Verify an email address for deliverability. Charges 0.25 credits for definitive SMTP results (valid/invalid); unknown and RFC-invalid results are free. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------- | | `email` | string | Yes | Email address to validate (e.g., [john@example.com](mailto:john@example.com)) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------- | | `email` | string | The validated email address | | `email_status` | string | Validation result: valid, invalid, or unknown | | `is_domain_catch_all` | boolean | Whether the domain accepts all emails (catch-all) | | `credits_consumed` | number | Credits charged for this request (0.25 for definitive results) | | `message` | string | Human-readable status message | | `mx_record` | string | MX record for the domain | | `mx_provider` | string | Email provider (e.g., Google, Microsoft) | | `mx_gateway` | string | MX gateway for the domain | | `mx_security_gateway` | boolean | Whether the domain uses a security gateway | | `company_name` | string | Company name associated with the email domain | | `company_industry` | string | Industry of the company | | `company_size` | string | Company size range | ### LeadMagic Find Email [#leadmagic-find-email] Find someone's verified work email from their name and company domain. Charges 1 credit when a valid email is found; free when no result. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------- | | `first_name` | string | No | Person's first name (use with last\_name, or use full\_name instead) | | `last_name` | string | No | Person's last name (use with first\_name, or use full\_name instead) | | `full_name` | string | No | Person's full name (alternative to first\_name + last\_name) | | `domain` | string | No | Company domain (preferred, e.g. stripe.com) | | `company_name` | string | No | Company name (fallback if domain is unavailable) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------- | | `email` | string | Found work email address | | `status` | string | Result status (valid, invalid, etc.) | | `credits_consumed` | number | Credits charged (1 when email found) | | `message` | string | Human-readable status message | | `employment_verified` | boolean | Whether employment at the company was verified | | `has_mx` | boolean | Whether the domain has a valid MX record | | `mx_record` | string | MX record for the email domain | | `mx_provider` | string | Email provider | | `company_name` | string | Company name | | `company_industry` | string | Company industry | | `company_size` | string | Company size range | | `company_profile_url` | string | Company LinkedIn/B2B profile URL | ### LeadMagic Find Mobile [#leadmagic-find-mobile] Find a person's direct mobile number from their LinkedIn profile URL or email. Charges 5 credits when a number is found; free when no result. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------- | | `profile_url` | string | No | LinkedIn profile URL (provide at least one identifier) | | `work_email` | string | No | Work email address (provide at least one identifier) | | `personal_email` | string | No | Personal email address (provide at least one identifier) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `profile_url` | string | LinkedIn profile URL used for lookup | | `email` | string | Email address associated with the profile | | `mobile_number` | string | Direct mobile phone number | | `credits_consumed` | number | Credits charged (5 when mobile found) | | `message` | string | Status message from the API | ### LeadMagic Profile Search [#leadmagic-profile-search] Enrich a LinkedIn profile with work history, education, skills, and contact data. Charges 1 credit per successful enrichment; free when profile not found. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `profile_url` | string | Yes | LinkedIn profile URL or username (e.g., [https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)) | | `extended_response` | boolean | No | Include additional profile image URL in the response (default: false) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------ | -------------------------------------- | | `profile_url` | string | LinkedIn profile URL | | `first_name` | string | First name | | `last_name` | string | Last name | | `full_name` | string | Full name | | `professional_title` | string | Current job title | | `bio` | string | Profile bio / summary | | `location` | string | Location string | | `country` | string | Country | | `followers_range` | string | LinkedIn follower range | | `company_name` | string | Current employer | | `company_industry` | string | Industry of current employer | | `company_website` | string | Company website | | `total_tenure_years` | string | Total professional tenure in years | | `total_tenure_months` | string | Total professional tenure in months | | `work_experience` | array | Work history entries | | `education` | array | Education history entries | | `certifications` | array | Professional certifications | | `credits_consumed` | number | Credits charged (1 when profile found) | | `message` | string | Human-readable status message | ### LeadMagic Profile to Email [#leadmagic-profile-to-email] Extract a verified work email from a LinkedIn profile URL. Charges 5 credits when an email is found; free when no result. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `profile_url` | string | Yes | LinkedIn profile URL or username (e.g., [https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `email` | string | Work email address found for this profile | | `profile_url` | string | LinkedIn profile URL used for lookup | | `credits_consumed` | number | Credits charged (5 when email found) | | `message` | string | Human-readable status message | ### LeadMagic Email to Profile [#leadmagic-email-to-profile] Retrieve a LinkedIn profile URL from a work or personal email address. Charges 10 credits when a profile is found; free when no result. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `work_email` | string | No | Work email address (provide at least one of work\_email or personal\_email) | | `personal_email` | string | No | Personal email address (provide at least one of work\_email or personal\_email) | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------- | | `profile_url` | string | LinkedIn profile URL for the provided email | | `credits_consumed` | number | Credits charged (10 when profile found) | | `message` | string | Human-readable status message | ### LeadMagic Company Search [#leadmagic-company-search] Enrich company data including firmographics, headcount, funding, and social profiles by domain, LinkedIn URL, or name. Charges 1 credit when a company is found; free when no result. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `company_domain` | string | No | Company website domain (e.g., stripe.com). Provide at least one identifier. | | `profile_url` | string | No | LinkedIn company profile URL (e.g., [https://linkedin.com/company/stripe](https://linkedin.com/company/stripe)). Provide at least one identifier. | | `company_name` | string | No | Company name (fallback if domain/URL unavailable). Provide at least one identifier. | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------- | | `companyName` | string | Company name | | `companyId` | number | Internal company identifier | | `industry` | string | Industry classification | | `employeeCount` | number | Number of employees | | `employeeRange` | string | Headcount range (e.g., 1001-5000) | | `founded` | number | Year the company was founded | | `headquarters` | json | Headquarters location object | | `revenue` | string | Revenue range | | `funding` | string | Total funding amount | | `description` | string | Company description | | `specialties` | array | Company specialties and focus areas | | `competitors` | array | Competitor companies | | `followerCount` | number | LinkedIn follower count | | `twitter_url` | string | Twitter/X profile URL | | `facebook_url` | string | Facebook page URL | | `b2b_profile_url` | string | LinkedIn company profile URL | | `logo_url` | string | Company logo URL | | `credits_consumed` | number | Credits charged (1 when company found) | | `message` | string | Human-readable status message | ### LeadMagic Role Finder [#leadmagic-role-finder] Find the person holding a specific job role at a company. Charges 2 credits when a matching person is found; free when no result. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `job_title` | string | Yes | Job role to search for (e.g., Head of Sales, CTO). Supports partial matching. | | `company_domain` | string | No | Company website domain (e.g., stripe.com). Provide domain or company\_name. | | `company_name` | string | No | Company name (fallback if domain unavailable). Provide domain or company\_name. | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------- | | `first_name` | string | First name of the person found | | `last_name` | string | Last name of the person found | | `full_name` | string | Full name of the person found | | `profile_url` | string | LinkedIn profile URL | | `job_title` | string | Verified job title at the company | | `company_name` | string | Company name | | `company_website` | string | Company website | | `credits_consumed` | number | Credits charged (2 when person found) | | `message` | string | Human-readable status message | ### LeadMagic Get Credits [#leadmagic-get-credits] Retrieve the current credit balance for the authenticated LeadMagic account. This endpoint is free and consumes no credits. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | LeadMagic API Key | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `credits` | number | Current credit balance | --- # LeadSquared (/integrations/leadsquared) ## Usage Instructions [#usage-instructions] Integrate LeadSquared CRM into the workflow. Create, update, upsert, look up, and search leads, change a lead owner or stage, log AI call and WhatsApp outcomes as activities, read a lead activity history, create and list follow-up tasks, add notes, and capture or update opportunities. Can also run workflows when LeadSquared posts a webhook. Requires a LeadSquared access key, secret key, and the API host of your region. ## Actions [#actions] ### LeadSquared Get Lead [#leadsquared-get-lead] Get one lead by its lead ID, email address, or phone number. Returns found=false when no lead matches. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `lookupBy` | string | Yes | How to find the lead: "id", "email", or "phone" | | `leadId` | string | No | Lead ID (ProspectID), when looking up by id | | `emailAddress` | string | No | Email address, when looking up by email | | `phone` | string | No | Phone number, when looking up by phone. With or without country code, but no spaces or hyphens. | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------- | | `leadId` | string | Lead ID (ProspectID) | | `firstName` | string | First name | | `lastName` | string | Last name | | `emailAddress` | string | Email address | | `phone` | string | Phone number | | `mobile` | string | Mobile number | | `stage` | string | Lead stage (ProspectStage) | | `ownerId` | string | User ID of the lead owner | | `ownerName` | string | Name of the lead owner | | `ownerEmailAddress` | string | Email address of the lead owner | | `source` | string | Lead source | | `score` | number | Lead score | | `engagementScore` | number | Engagement score | | `createdOn` | string | Created time (UTC) | | `modifiedOn` | string | Last modified time (UTC) | | `record` | json | Every field LeadSquared returned for the lead, keyed by schema name (mx\_ custom fields included) | | `found` | boolean | Whether a matching lead was found | ### LeadSquared Search Leads [#leadsquared-search-leads] Find leads with a quick search across name, email, phone, company, city, and country, or by a field criterion such as CreatedOn > 2026-01-01 or ProspectStage = Prospect. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `searchMode` | string | Yes | "quick" for a quick search, or "criteria" to match one field with an operator | | `quickSearchKey` | string | No | Text to quick search for, e.g. a name, email, or phone number | | `lookupName` | string | No | Criteria search: schema name of the field to match, e.g. "ProspectStage" | | `lookupValue` | string | No | Criteria search: value to compare with. Dates use "yyyy-MM-dd HH:mm:ss" in UTC. | | `sqlOperator` | string | No | Criteria search: one of =, LIKE, >, \<, \<=, >=, \<> (default =) | | `columns` | string | No | Criteria search: comma-separated schema names to return. Defaults to the standard contact, stage, and owner fields. | | `sortColumn` | string | No | Criteria search: schema name to sort by, e.g. "CreatedOn" | | `sortDirection` | string | No | Criteria search: "desc" (default) or "asc" | | `pageIndex` | number | No | Criteria search: page number, starting at 1 | | `pageSize` | number | No | Criteria search: leads per page (default 25, max 1000) | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------------------------- | | `leads` | array | Matching leads. A criteria search fills only the requested columns. | | ↳ `leadId` | string | Lead ID (ProspectID) | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `emailAddress` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `stage` | string | Lead stage (ProspectStage) | | ↳ `ownerId` | string | User ID of the lead owner | | ↳ `ownerName` | string | Name of the lead owner | | ↳ `ownerEmailAddress` | string | Email address of the lead owner | | ↳ `source` | string | Lead source | | ↳ `score` | number | Lead score | | ↳ `engagementScore` | number | Engagement score | | ↳ `createdOn` | string | Created time (UTC) | | ↳ `modifiedOn` | string | Last modified time (UTC) | | ↳ `record` | json | Every field LeadSquared returned for the lead, keyed by schema name (mx\_ custom fields included) | | `count` | number | Number of leads returned on this page | ### LeadSquared Create Lead [#leadsquared-create-lead] Create a new lead in LeadSquared. Pass at least one of FirstName, LastName, EmailAddress, or Phone; EmailAddress and Phone are unique by default, so creating a duplicate fails. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `fields` | json | No | Lead fields as a JSON object keyed by schema name, e.g. \{"FirstName": "Asha", "EmailAddress": "[asha@example.com](mailto:asha@example.com)", "Phone": "+91-9876543210", "mx\_City": "Pune"}. A nested object sets a custom field set. | | `ownerId` | string | No | User ID to assign as the lead owner (sets the OwnerId field) | | `stage` | string | No | Lead stage to set, e.g. "Prospect" or "Customer" (sets the ProspectStage field) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `leadId` | string | ID (ProspectID) of the new lead | ### LeadSquared Update Lead [#leadsquared-update-lead] Update fields on an existing lead by its lead ID, including changing the lead owner or stage. Only the fields you pass change. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `leadId` | string | Yes | ID (ProspectID) of the lead to update | | `fields` | json | No | Lead fields as a JSON object keyed by schema name, e.g. \{"FirstName": "Asha", "EmailAddress": "[asha@example.com](mailto:asha@example.com)", "Phone": "+91-9876543210", "mx\_City": "Pune"}. A nested object sets a custom field set. | | `ownerId` | string | No | User ID to assign as the lead owner (sets the OwnerId field) | | `stage` | string | No | Lead stage to set, e.g. "Prospect" or "Customer" (sets the ProspectStage field) | | `postUpdatedLead` | boolean | No | Run the automations, webhooks, and notifications configured for lead updates. LeadSquared skips them for API updates unless this is on. | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ----------------------- | | `affectedRows` | number | Number of leads updated | ### LeadSquared Create or Update Lead [#leadsquared-create-or-update-lead] Update the lead that matches the email address or phone (or the Search By field), or create a new lead when none matches. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `fields` | json | No | Lead fields as a JSON object keyed by schema name, e.g. \{"FirstName": "Asha", "EmailAddress": "[asha@example.com](mailto:asha@example.com)", "Phone": "+91-9876543210", "mx\_City": "Pune"}. A nested object sets a custom field set. | | `ownerId` | string | No | User ID to assign as the lead owner (sets the OwnerId field) | | `stage` | string | No | Lead stage to set, e.g. "Prospect" or "Customer" (sets the ProspectStage field) | | `searchBy` | string | No | Schema name of the field to match an existing lead on, e.g. "EmailAddress" or "Phone". Defaults to email address and phone. | | `postUpdatedLead` | boolean | No | Run the automations, webhooks, and notifications configured for lead updates | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------- | | `leadId` | string | ID (ProspectID) of the lead that was created or updated | | `affectedRows` | number | Number of leads affected | ### LeadSquared Post Activity [#leadsquared-post-activity] Post an activity on a lead, such as the outcome of an AI call or a WhatsApp conversation, with a note and custom activity fields. Find the activity event code under My Account > Settings > Customization > Custom Activities & Scores. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `leadId` | string | Yes | ID (ProspectID) of the lead to post the activity on | | `activityEvent` | number | Yes | Activity event code of the activity type, e.g. 201 for a custom activity | | `activityNote` | string | No | Activity note, e.g. a call summary or the conversation outcome | | `activityDateTime` | string | No | When the activity happened, in UTC as "yyyy-MM-dd HH:mm:ss". Defaults to now. | | `activityFields` | json | No | Custom activity fields as a JSON object keyed by schema name, e.g. \{"mx\_Custom\_1": "Interested", "mx\_Custom\_2": "180"} | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `id` | string | ID of the new activity | ### LeadSquared Get Activities [#leadsquared-get-activities] List the activities on a lead, optionally only one activity type, with each activity note and custom field values. Returns 25 activities unless a row count is set. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `leadId` | string | Yes | ID (ProspectID) of the lead | | `activityEvent` | number | No | Only return activities with this event code. Leave empty for all activities. | | `offset` | number | No | Page offset (default 0) | | `rowCount` | number | No | Activities per page (default 25) | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `recordCount` | number | Total activities matching the filter | | `activities` | array | Activities on the lead | | ↳ `activityId` | string | Activity ID | | ↳ `eventCode` | number | Activity event code | | ↳ `eventName` | string | Activity type name | | ↳ `activityScore` | number | Score of the activity | | ↳ `createdOn` | string | Created time (UTC) | | ↳ `modifiedOn` | string | Last modified time (UTC) | | ↳ `activityType` | number | Activity type code | | ↳ `type` | string | Direction, e.g. Inbound | | ↳ `leadId` | string | ID of the lead | | ↳ `data` | json | Activity properties keyed by name, e.g. CreatedByName, NotableEventDescription (the note), HasAttachments | | ↳ `fields` | json | Non-empty custom activity fields keyed by schema name | ### LeadSquared Create Task [#leadsquared-create-task] Create an appointment or to-do task, such as a callback, on a lead or an opportunity and assign it to a user. The task type name decides whether it is an appointment or a to-do. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `name` | string | Yes | Task subject, e.g. "Call back about the loan offer" | | `taskType` | string | Yes | Name of a task type configured in LeadSquared, e.g. "Meeting" or "Follow Up" | | `relatedEntity` | string | No | What the task is about: "lead" (default), "opportunity", or "none" | | `relatedEntityId` | string | No | Lead ID or opportunity ID the task is about | | `description` | string | No | Task description | | `dueDate` | string | No | Due date in UTC as "yyyy-MM-dd HH:mm:ss". Defaults to today. | | `endDate` | string | No | End date in UTC as "yyyy-MM-dd HH:mm:ss". The task turns overdue after it. | | `ownerId` | string | No | User ID to assign the task to | | `ownerEmailAddress` | string | No | Email of the user to assign the task to, when the user ID is not known | | `reminder` | number | No | Appointments: minutes before the due time to remind the owner | | `reminderBeforeDays` | number | No | To-dos: days before the due date to remind the owner | | `reminderTime` | string | No | To-dos: time of day for the reminder, as "hh:mm:ss" | | `notifyByEmail` | boolean | No | Email the task owner about the task | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `id` | string | ID of the new task | ### LeadSquared Get Tasks [#leadsquared-get-tasks] List the tasks on a lead, or the tasks assigned to a user with optional date range and completion filters. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `taskLookupBy` | string | Yes | "lead" for the tasks on one lead, or "owner" for the tasks assigned to a user | | `leadId` | string | No | Lead ID (ProspectID), when listing tasks on a lead | | `ownerId` | string | No | User ID of the task owner, when listing by owner | | `ownerEmailAddress` | string | No | Email of the task owner, when listing by owner and the user ID is not known | | `fromDate` | string | No | Owner lookup: only tasks from this UTC time ("yyyy-MM-dd HH:mm:ss") | | `toDate` | string | No | Owner lookup: only tasks up to this UTC time ("yyyy-MM-dd HH:mm:ss") | | `taskStatus` | string | No | Owner lookup: "incomplete", "complete", or "any" (default) | | `offset` | number | No | Owner lookup: number of tasks to skip (default 0) | | `rowCount` | number | No | Owner lookup: number of tasks to return (default 50) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------------------- | | `recordCount` | number | Total matching tasks | | `tasks` | array | Matching tasks | | ↳ `taskId` | string | Task ID | | ↳ `name` | string | Task subject | | ↳ `description` | string | Task description | | ↳ `dueDate` | string | Due date (UTC) | | ↳ `endDate` | string | End date (UTC), owner lookups only | | ↳ `status` | string | Task status, e.g. Pending, for lead lookups; Incomplete or Complete for owner lookups | | ↳ `ownerId` | string | User ID of the owner | | ↳ `ownerName` | string | Name of the owner | | ↳ `ownerEmailAddress` | string | Email of the owner, owner lookups only | | ↳ `createdBy` | string | User ID of the creator | | ↳ `createdByName` | string | Name of the creator | | ↳ `createdOn` | string | Created time (UTC) | | ↳ `reminder` | number | Reminder in minutes | | ↳ `taskTypeName` | string | Task type name, owner lookups only | ### LeadSquared Add Note [#leadsquared-add-note] Add a note to a lead, optionally with an attachment URL. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `leadId` | string | Yes | ID (ProspectID) of the lead | | `note` | string | Yes | Note text | | `attachmentUrl` | string | No | URL of a file to attach to the note | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `id` | string | ID of the new note | ### LeadSquared Create Opportunity [#leadsquared-create-opportunity] Capture an opportunity on a lead, creating the lead too when no lead matches. Duplicate detection rules may attach it to an existing opportunity instead of creating a new one. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `opportunityEventCode` | number | Yes | Event code of the opportunity type, from Settings > Opportunities > Opportunity Types, e.g. 12000 | | `leadId` | string | No | ID (ProspectID) of an existing lead. Use this or Lead Fields. | | `leadFields` | json | No | Unique lead fields to find or create the lead, as a JSON object, e.g. \{"EmailAddress": "[asha@example.com](mailto:asha@example.com)"} | | `searchBy` | string | No | Schema name of the lead field to match on, e.g. "EmailAddress" or "Phone". Defaults to the first lead field. | | `opportunityNote` | string | No | Note on the opportunity | | `opportunityDateTime` | string | No | Opportunity date in UTC as "yyyy-MM-dd HH:mm:ss" | | `opportunityFields` | json | No | Opportunity fields as a JSON object keyed by schema name, e.g. \{"mx\_Custom\_1": "Home loan", "Status": "Open"} | | `overwriteFields` | boolean | No | Overwrite the fields of a duplicate opportunity with the values passed | | `updateEmptyFields` | boolean | No | Fill empty fields of a duplicate opportunity with the values passed | | `doNotPostDuplicateActivity` | boolean | No | Do not post a duplicate-detected activity on the opportunity | | `doNotChangeOwner` | boolean | No | Keep the current owner of a duplicate opportunity | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------------------------------------------- | | `opportunityId` | string | ID of the new opportunity, null when a duplicate was detected | | `leadId` | string | ID of the lead the opportunity is on | | `activityId` | string | ID of the opportunity captured activity | | `isUnique` | boolean | False when the opportunity matched an existing one | | `conflictedOpportunityId` | string | ID of the existing opportunity matched as a duplicate | | `status` | number | 0 success, 2 partial success (secondary action failed) | | `primaryAction` | number | 0 none, 1 create opportunity, 2 opportunity captured activity, 3 duplicate detected activity | | `secondaryAction` | number | Second action taken, with the same codes as primaryAction | | `requestId` | string | LeadSquared request ID | ### LeadSquared Update Opportunity [#leadsquared-update-opportunity] Update fields or the note of an existing opportunity by its opportunity ID. Only the fields you pass change. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `apiHost` | string | Yes | Regional API host of the account, e.g. "api-in21.leadsquared.com" (Mumbai). Shown under My Account > Settings > API and Webhooks. | | `accessKey` | string | Yes | LeadSquared access key, from My Account > Settings > API and Webhooks | | `secretKey` | string | Yes | LeadSquared secret key, from My Account > Settings > API and Webhooks | | `opportunityId` | string | Yes | ID of the opportunity (ProspectOpportunityId), or its AutoId value | | `opportunityNote` | string | No | Note on the opportunity | | `opportunityFields` | json | No | Opportunity fields to change, as a JSON object keyed by schema name, e.g. \{"Status": "Won", "mx\_Custom\_7": "200000"} | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------- | | `id` | string | ID LeadSquared returns for the update (Message.Id) | --- # Lemlist (/integrations/lemlist) {/* MANUAL-CONTENT-START:intro */} Supercharge your sales outreach and engagement with [Lemlist](https://lemlist.com) – the personalized outreach automation platform trusted by thousands of sales teams. With Lemlist, you can automate multi-channel campaigns, nurture leads, and boost reply rates, all while keeping your communication highly personalized and authentic. With the Lemlist integration, you can: * **Automate outreach sequences:** Launch personalized email, LinkedIn, and calling campaigns at scale, tailored to each recipient. * **Track campaign activity:** Instantly monitor opens, clicks, replies, bounces, and every lead interaction for granular campaign insights. * **Centralize engagement data:** Fetch real-time activity and replies for each campaign or lead, and sync it directly into your workflow automation. * **Get lead details automatically:** Retrieve enriched lead information by email or ID to keep your CRM and processes up to date without manual data entry. * **Send targeted emails from your inbox:** Trigger bespoke emails to leads directly from the workflow, using up-to-date templates and data. * **Boost team collaboration and follow-up:** Assign leads, track outcomes, and ensure no prospect is lost thanks to Lemlist’s built-in tools—all accessible via automation. Lemlist empowers sales, marketing, and outbound teams to save time, personalize at scale, and convert more prospects. Automate and optimize your campaigns, integrate with your stack, and never miss a valuable opportunity. Drive more replies, book more meetings, and grow your pipeline by connecting Lemlist to your automated workflows today! {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Lemlist into your workflow. Retrieve campaign activities and replies, get lead information, and send emails through the Lemlist inbox. ## Actions [#actions] ### Lemlist Get Activities [#lemlist-get-activities] Retrieves campaign activities and steps performed, including email opens, clicks, replies, and other events. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Lemlist API key | | `type` | string | No | Filter by activity type (e.g., emailOpened, emailClicked, emailReplied, paused) | | `campaignId` | string | No | Filter by campaign ID (e.g., "cam\_abc123def456") | | `leadId` | string | No | Filter by lead ID (e.g., "lea\_abc123def456") | | `isFirst` | boolean | No | Filter for first activity only | | `limit` | number | No | Number of results per request (e.g., 50). Max 100, default 100 | | `offset` | number | No | Number of records to skip for pagination (e.g., 0, 100, 200) | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ----------------------------- | | `activities` | array | List of activities | | ↳ `_id` | string | Activity ID | | ↳ `type` | string | Activity type | | ↳ `leadId` | string | Associated lead ID | | ↳ `campaignId` | string | Campaign ID | | ↳ `sequenceId` | string | Sequence ID | | ↳ `stepId` | string | Step ID | | ↳ `createdAt` | string | When the activity occurred | | `count` | number | Number of activities returned | ### Lemlist Get Lead [#lemlist-get-lead] Retrieves lead information by email address or lead ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Lemlist API key | | `leadIdentifier` | string | Yes | Lead email address (e.g., "[john@example.com](mailto:john@example.com)") or lead ID (e.g., "lea\_abc123def456") | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ------------------------------- | | `_id` | string | Lead ID | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Company name | | `jobTitle` | string | Job title | | `companyDomain` | string | Company domain | | `isPaused` | boolean | Whether the lead is paused | | `campaignId` | string | Campaign ID the lead belongs to | | `contactId` | string | Contact ID | | `emailStatus` | string | Email deliverability status | ### Lemlist Send Email [#lemlist-send-email] Sends an email to a contact through the Lemlist inbox. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Lemlist API key | | `sendUserId` | string | Yes | Identifier for the user sending the message (e.g., "usr\_abc123def456") | | `sendUserEmail` | string | Yes | Email address of the sender (e.g., "[sales@company.com](mailto:sales@company.com)") | | `sendUserMailboxId` | string | Yes | Mailbox identifier for the sender (e.g., "mbx\_abc123def456") | | `contactId` | string | Yes | Recipient contact identifier (e.g., "con\_abc123def456") | | `leadId` | string | Yes | Associated lead identifier (e.g., "lea\_abc123def456") | | `subject` | string | Yes | Email subject line | | `message` | string | Yes | Email message body in HTML format | | `cc` | json | No | Array of CC email addresses | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `ok` | boolean | Whether the email was sent successfully | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Lemlist Email Bounced [#lemlist-email-bounced] Trigger workflow when an email bounces #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-3] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `messageId` | string | Email message ID that bounced | | `errorMessage` | string | Bounce error message | *** ### Lemlist Email Clicked [#lemlist-email-clicked] Trigger workflow when a lead clicks a link in an email #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `messageId` | string | Email message ID containing the clicked link | | `clickedUrl` | string | URL that was clicked | *** ### Lemlist Email Opened [#lemlist-email-opened] Trigger workflow when a lead opens an email #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-5] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `messageId` | string | Email message ID that was opened | *** ### Lemlist Email Replied [#lemlist-email-replied] Trigger workflow when a lead replies to an email #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `subject` | string | Email subject line | | `text` | string | Email body content (HTML) | | `messageId` | string | Email message ID (RFC 2822 format) | | `emailId` | string | Lemlist email identifier | *** ### Lemlist Email Sent [#lemlist-email-sent] Trigger workflow when an email is sent #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `subject` | string | Email subject line | | `text` | string | Email body content (HTML) | | `messageId` | string | Email message ID (RFC 2822 format) | | `emailId` | string | Lemlist email identifier | *** ### Lemlist Lead Interested [#lemlist-lead-interested] Trigger workflow when a lead is marked as interested #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | *** ### Lemlist Lead Not Interested [#lemlist-lead-not-interested] Trigger workflow when a lead is marked as not interested #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | *** ### Lemlist LinkedIn Replied [#lemlist-linkedin-replied] Trigger workflow when a lead replies to a LinkedIn message #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `text` | string | LinkedIn message content | *** ### Lemlist Webhook (All Events) [#lemlist-webhook-all-events] Trigger workflow on any Lemlist webhook event #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Lemlist. | | `campaignId` | string | No | Optionally scope the webhook to a specific campaign | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `_id` | string | Unique activity identifier | | `type` | string | Activity type (e.g., emailsSent, emailsReplied) | | `createdAt` | string | Activity creation timestamp (ISO 8601) | | `teamId` | string | Lemlist team identifier | | `leadId` | string | Lead identifier (only present for campaign activities) | | `campaignId` | string | Campaign identifier (only present for campaign activities) | | `campaignName` | string | Campaign name (only present for campaign activities) | | `email` | string | Lead email address | | `firstName` | string | Lead first name | | `lastName` | string | Lead last name | | `companyName` | string | Lead company name | | `linkedinUrl` | string | Lead LinkedIn profile URL | | `sequenceId` | string | Sequence identifier | | `sequenceStep` | number | Current step in the sequence (0-indexed) | | `totalSequenceStep` | number | Total number of steps in the sequence | | `isFirst` | boolean | Whether this is the first activity of this type for this step | | `sendUserId` | string | Sender user identifier | | `sendUserEmail` | string | Sender email address | | `sendUserName` | string | Sender display name | | `subject` | string | Email subject line | | `text` | string | Email body content (HTML) | | `messageId` | string | Email message ID (RFC 2822 format) | | `emailId` | string | Lemlist email identifier | | `clickedUrl` | string | URL that was clicked (for emailsClicked events) | | `errorMessage` | string | Error message (for bounce/failed events) | --- # Linear API Keys (/integrations/linear-service-account) Connect Linear with a personal API key. The key's permissions and team restrictions determine which operations and records the workflow can access. Keys are bound to the user who creates them: every action a workflow takes is attributed to that user, and the key stops working if the user is deactivated or leaves the workspace. For production workflows, create the key from a dedicated service user (e.g. `agentserve-bot@yourcompany.com`) rather than a personal account. ## Prerequisites [#prerequisites] A Linear account that is allowed to create API keys. Workspace admins can disable API-key creation for members (**Settings** → **Administration** → **API** → **Member API keys**) — if the option is missing for you, ask an admin, or have an admin create the key (the restriction doesn't apply to admins). ## Creating the API Key [#creating-the-api-key] Log in as the service user, open Linear **Settings**, and go to **Security & access** → **Personal API keys** {/* TODO(screenshot): Linear settings with Security & access → API keys highlighted */} Click **New API key** and give it a label (e.g. `Agent Serve Integration`) Choose the key's permissions. For full parity with Agent Serve's Linear blocks, create it with **full access** — or, if you restrict it, grant at least **Read** and **Write** with no team restriction. A key limited to specific teams will fail on issues and projects outside those teams {/* TODO(screenshot): Linear API key creation dialog with permission options visible */} Copy the key — it starts with `lin_api_` — and store it somewhere safe. The API key is limited by the creating user's access and any permissions or team restrictions selected for the key. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the key at rest. ## Adding the API Key to Agent Serve [#adding-the-api-key-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Linear" and open it, then click **Add to Agent Serve** and choose **Add API key** {/* TODO(screenshot): Linear integration page with the service-account connect option */} Paste the API key (`lin_api_...`) and optionally set a display name and description {/* TODO(screenshot): Add Linear API key dialog with the API key filled in */} Click **Add API key**. Agent Serve verifies the key by querying Linear's `viewer` — if it fails, you'll see a specific error explaining what went wrong. The key must be able to read its own user to pass connection validation. Grant write permissions only for workflows that write, and include the teams those workflows need. Successful validation does not prove access to every operation. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Linear block to your workflow. In the credential dropdown, select the saved Linear API key. Select it and configure the block as you normally would. {/* TODO(screenshot): Linear block in a workflow with the service account selected as the credential */} The block calls Linear's GraphQL API (`api.linear.app/graphql`) with the key. Everything the workflow does — creating issues, adding comments, updating projects — is attributed to the user who created the key. --- # Linear (/integrations/linear) {/* MANUAL-CONTENT-START:intro */} [Linear](https://linear.app) is a modern project management and issue tracking platform that helps teams plan, track, and manage their work with a streamlined interface. Linear supports agile methodologies with customizable workflows, cycles, and project milestones. With the Linear integration in Agent Serve, you can: * **Manage issues**: Create, read, update, search, archive, unarchive, and delete issues * **Manage labels**: Add or remove labels from issues, and create, update, or archive labels * **Comment on issues**: Create, update, delete, and list comments on issues * **Manage projects**: List, get, create, update, archive, and delete projects with milestones, labels, and statuses * **Track cycles**: List, get, and create cycles, and retrieve the active cycle * **Handle attachments**: Create, list, update, and delete attachments on issues * **Manage issue relations**: Create, list, and delete relationships between issues * **Access team data**: List users, teams, workflow states, notifications, and favorites * **Manage customers**: Create, update, delete, list, and merge customers with statuses, tiers, and requests In Agent Serve, the Linear integration enables your agents to interact with your project management workflow as part of automated processes. Agents can create issues from external triggers, update statuses, manage projects and cycles, and synchronize data—enabling intelligent project management automation at scale. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Linear into the workflow. Can manage issues, comments, projects, labels, workflow states, cycles, attachments, and more. Can also trigger workflows based on Linear webhook events. ## Actions [#actions] ### Linear Issue Reader [#linear-issue-reader] Fetch and filter issues from Linear #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------ | | `teamId` | string | No | Linear team ID (UUID format) to filter issues by team | | `projectId` | string | No | Linear project ID (UUID format) to filter issues by project | | `assigneeId` | string | No | User ID to filter by assignee | | `stateId` | string | No | Workflow state ID to filter by status | | `priority` | number | No | Priority to filter by (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | `labelIds` | array | No | Array of label IDs to filter by | | `createdAfter` | string | No | Filter issues created after this date (ISO 8601 format) | | `updatedAfter` | string | No | Filter issues updated after this date (ISO 8601 format) | | `includeArchived` | boolean | No | Include archived issues (default: false) | | `first` | number | No | Number of issues to return (default: 50, max: 250) | | `after` | string | No | Pagination cursor for next page | | `orderBy` | string | No | Sort order: "createdAt" or "updatedAt" (default: "updatedAt") | #### Output [#output] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------- | | `hasNextPage` | boolean | Whether there are more results | | `endCursor` | string | Cursor for the next page | | `issues` | array | Array of filtered issues from Linear | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `priority` | number | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | ↳ `estimate` | number | Estimate in points | | ↳ `url` | string | Issue URL | | ↳ `dueDate` | string | Due date (YYYY-MM-DD) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `state` | object | Workflow state/status | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `type` | string | State type (unstarted, started, completed, canceled) | | ↳ `assignee` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teamId` | string | Team ID | | ↳ `teamName` | string | Team name | | ↳ `projectId` | string | Project ID | | ↳ `projectName` | string | Project name | | ↳ `cycleId` | string | Cycle ID | | ↳ `cycleNumber` | number | Cycle number | | ↳ `cycleName` | string | Cycle name | | ↳ `labels` | array | Issue labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | ### Linear Get Issue [#linear-get-issue] Get a single issue by ID from Linear with full details #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------- | | `issueId` | string | Yes | Linear issue ID | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------- | | `issue` | object | The issue with full details | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `priority` | number | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | ↳ `estimate` | number | Estimate in points | | ↳ `url` | string | Issue URL | | ↳ `dueDate` | string | Due date (YYYY-MM-DD) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `completedAt` | string | Completion timestamp (ISO 8601) | | ↳ `canceledAt` | string | Cancellation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `state` | object | Workflow state/status | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `type` | string | State type (unstarted, started, completed, canceled) | | ↳ `assignee` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teamId` | string | Team ID | | ↳ `projectId` | string | Project ID | | ↳ `labels` | array | Issue labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | ### Linear Issue Writer [#linear-issue-writer] Create a new issue in Linear #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------ | | `teamId` | string | Yes | Linear team ID (UUID format) where the issue will be created | | `projectId` | string | No | Linear project ID (UUID format) to associate with the issue | | `title` | string | Yes | Issue title | | `description` | string | No | Issue description | | `stateId` | string | No | Workflow state ID (status) | | `assigneeId` | string | No | User ID to assign the issue to | | `priority` | number | No | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | `estimate` | number | No | Estimate in points | | `labelIds` | array | No | Array of label IDs to set on the issue | | `cycleId` | string | No | Cycle ID to assign the issue to | | `parentId` | string | No | Parent issue ID (for creating sub-issues) | | `dueDate` | string | No | Due date in ISO 8601 format (date only: YYYY-MM-DD) | | `subscriberIds` | array | No | Array of user IDs to subscribe to the issue | | `projectMilestoneId` | string | No | Project milestone ID to associate with the issue | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------------------------------- | | `issue` | object | The created issue with all its properties | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `priority` | number | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | ↳ `estimate` | number | Estimate in points | | ↳ `url` | string | Issue URL | | ↳ `dueDate` | string | Due date (YYYY-MM-DD) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `completedAt` | string | Completion timestamp (ISO 8601) | | ↳ `canceledAt` | string | Cancellation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `state` | object | Workflow state/status | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `type` | string | State type (unstarted, started, completed, canceled) | | ↳ `assignee` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teamId` | string | Team ID | | ↳ `projectId` | string | Project ID | | ↳ `labels` | array | Issue labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | | ↳ `cycleId` | string | Cycle ID | | ↳ `cycleNumber` | number | Cycle number | | ↳ `cycleName` | string | Cycle name | | ↳ `parentId` | string | Parent issue ID | | ↳ `parentTitle` | string | Parent issue title | | ↳ `projectMilestoneId` | string | Project milestone ID | | ↳ `projectMilestoneName` | string | Project milestone name | ### Linear Update Issue [#linear-update-issue] Update an existing issue in Linear #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `issueId` | string | Yes | Linear issue ID to update | | `title` | string | No | New issue title | | `description` | string | No | New issue description | | `stateId` | string | No | Workflow state ID (status) | | `assigneeId` | string | No | User ID to assign the issue to | | `priority` | number | No | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | `estimate` | number | No | Estimate in points | | `labelIds` | array | No | Array of label IDs to set on the issue (replaces all existing labels) | | `projectId` | string | No | Project ID to move the issue to | | `cycleId` | string | No | Cycle ID to assign the issue to | | `parentId` | string | No | Parent issue ID (for making this a sub-issue) | | `dueDate` | string | No | Due date in ISO 8601 format (date only: YYYY-MM-DD) | | `addedLabelIds` | array | No | Array of label IDs to add to the issue (without replacing existing labels) | | `removedLabelIds` | array | No | Array of label IDs to remove from the issue | #### Output [#output-3] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------------------------------- | | `issue` | object | The updated issue | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `priority` | number | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | ↳ `estimate` | number | Estimate in points | | ↳ `url` | string | Issue URL | | ↳ `dueDate` | string | Due date (YYYY-MM-DD) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `completedAt` | string | Completion timestamp (ISO 8601) | | ↳ `canceledAt` | string | Cancellation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `state` | object | Workflow state/status | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `type` | string | State type (unstarted, started, completed, canceled) | | ↳ `assignee` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teamId` | string | Team ID | | ↳ `projectId` | string | Project ID | | ↳ `labels` | array | Issue labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | | ↳ `cycleId` | string | Cycle ID | | ↳ `cycleNumber` | number | Cycle number | | ↳ `cycleName` | string | Cycle name | | ↳ `parentId` | string | Parent issue ID | | ↳ `parentTitle` | string | Parent issue title | | ↳ `projectMilestoneId` | string | Project milestone ID | | ↳ `projectMilestoneName` | string | Project milestone name | ### Linear Archive Issue [#linear-archive-issue] Archive an issue in Linear #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | `issueId` | string | Yes | Linear issue ID to archive | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the archive operation was successful | | `issueId` | string | The ID of the archived issue | ### Linear Unarchive Issue [#linear-unarchive-issue] Unarchive (restore) an archived issue in Linear #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `issueId` | string | Yes | Linear issue ID to unarchive | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the unarchive operation was successful | | `issueId` | string | The ID of the unarchived issue | ### Linear Delete Issue [#linear-delete-issue] Delete (trash) an issue in Linear #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `issueId` | string | Yes | Linear issue ID to delete | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the delete operation was successful | ### Linear Search Issues [#linear-search-issues] Search for issues in Linear using full-text search #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------- | | `query` | string | Yes | Search query string | | `teamId` | string | No | Filter by team ID | | `includeArchived` | boolean | No | Include archived issues in search results | | `first` | number | No | Number of results to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `issues` | array | Array of matching issues | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `priority` | number | Priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | | ↳ `estimate` | number | Estimate in points | | ↳ `url` | string | Issue URL | | ↳ `dueDate` | string | Due date (YYYY-MM-DD) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `completedAt` | string | Completion timestamp (ISO 8601) | | ↳ `canceledAt` | string | Cancellation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `state` | object | Workflow state/status | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `type` | string | State type (unstarted, started, completed, canceled) | | ↳ `assignee` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teamId` | string | Team ID | | ↳ `projectId` | string | Project ID | | ↳ `labels` | array | Issue labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | ### Linear Add Label to Issue [#linear-add-label-to-issue] Add a label to an issue in Linear #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `issueId` | string | Yes | Linear issue ID | | `labelId` | string | Yes | Label ID to add to the issue | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the label was successfully added | | `issueId` | string | The ID of the issue | ### Linear Remove Label from Issue [#linear-remove-label-from-issue] Remove a label from an issue in Linear #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `issueId` | string | Yes | Linear issue ID | | `labelId` | string | Yes | Label ID to remove from the issue | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the label was successfully removed | | `issueId` | string | The ID of the issue | ### Linear Create Comment [#linear-create-comment] Add a comment to an issue in Linear #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `issueId` | string | Yes | Linear issue ID to comment on | | `body` | string | Yes | Comment text (supports Markdown) | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `comment` | object | The created comment | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment text (Markdown) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `user` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `issue` | object | Issue object | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | ### Linear Update Comment [#linear-update-comment] Edit a comment in Linear #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `commentId` | string | Yes | Comment ID to update | | `body` | string | No | New comment text (supports Markdown) | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `comment` | object | The updated comment | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment text (Markdown) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `user` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `issue` | object | Issue object | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | ### Linear Delete Comment [#linear-delete-comment] Delete a comment from Linear #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `commentId` | string | Yes | Comment ID to delete | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the delete operation was successful | ### Linear List Comments [#linear-list-comments] List all comments on an issue in Linear #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `issueId` | string | Yes | Linear issue ID | | `first` | number | No | Number of comments to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `comments` | array | Array of comments on the issue | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment text (Markdown) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `user` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `issue` | object | Issue object | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | ### Linear List Projects [#linear-list-projects] List projects in Linear with optional filtering #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------ | | `teamId` | string | No | Filter by team ID | | `includeArchived` | boolean | No | Include archived projects | | `first` | number | No | Number of projects to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `projects` | array | Array of projects | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `state` | string | Project state (planned, started, paused, completed, canceled) | | ↳ `priority` | number | Project priority (0-4) | | ↳ `startDate` | string | Start date (YYYY-MM-DD) | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `url` | string | Project URL | | ↳ `lead` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teams` | array | Associated teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Get Project [#linear-get-project] Get a single project by ID from Linear #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------- | | `projectId` | string | Yes | Linear project ID | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------- | | `project` | object | The project with full details | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `state` | string | Project state (planned, started, paused, completed, canceled) | | ↳ `priority` | number | Project priority (0-4) | | ↳ `startDate` | string | Start date (YYYY-MM-DD) | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `url` | string | Project URL | | ↳ `lead` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teams` | array | Associated teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Create Project [#linear-create-project] Create a new project in Linear #### Input [#input-16] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------- | | `teamId` | string | Yes | Team ID to create the project in | | `name` | string | Yes | Project name | | `description` | string | No | Project description | | `leadId` | string | No | User ID of the project lead | | `startDate` | string | No | Project start date (ISO format) | | `targetDate` | string | No | Project target date (ISO format) | | `priority` | number | No | Project priority (0-4) | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------- | | `project` | object | The created project | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `state` | string | Project state (planned, started, paused, completed, canceled) | | ↳ `priority` | number | Project priority (0-4) | | ↳ `startDate` | string | Start date (YYYY-MM-DD) | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `url` | string | Project URL | | ↳ `lead` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teams` | array | Associated teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Update Project [#linear-update-project] Update an existing project in Linear #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------- | | `projectId` | string | Yes | Project ID to update | | `name` | string | No | New project name | | `description` | string | No | New project description | | `state` | string | No | Project state (planned, started, completed, canceled) | | `leadId` | string | No | User ID of the project lead | | `startDate` | string | No | Project start date (ISO format: YYYY-MM-DD) | | `targetDate` | string | No | Project target date (ISO format: YYYY-MM-DD) | | `priority` | number | No | Project priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low) | #### Output [#output-17] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------- | | `project` | object | The updated project | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `state` | string | Project state (planned, started, paused, completed, canceled) | | ↳ `priority` | number | Project priority (0-4) | | ↳ `startDate` | string | Start date (YYYY-MM-DD) | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `url` | string | Project URL | | ↳ `lead` | object | User object | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `teams` | array | Associated teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Archive Project [#linear-archive-project] Archive a project in Linear #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------- | | `projectId` | string | Yes | Project ID to archive | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the archive operation was successful | | `projectId` | string | The ID of the archived project | ### Linear List Users [#linear-list-users] List all users in the Linear workspace #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------- | | `includeDisabled` | boolean | No | Include disabled/inactive users | | `first` | number | No | Number of users to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------- | ------------------------------ | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `users` | array | Array of workspace users | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `displayName` | string | Display name | | ↳ `active` | boolean | Whether user is active | | ↳ `admin` | boolean | Whether user is admin | | ↳ `avatarUrl` | string | Avatar URL | ### Linear List Teams [#linear-list-teams] List all teams in the Linear workspace #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `first` | number | No | Number of teams to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------ | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `teams` | array | Array of teams | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | | ↳ `key` | string | Team key (used in issue identifiers) | | ↳ `description` | string | Team description | ### Linear Get Current User [#linear-get-current-user] Get the currently authenticated user (viewer) information #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `user` | object | The currently authenticated user | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `displayName` | string | Display name | | ↳ `active` | boolean | Whether user is active | | ↳ `admin` | boolean | Whether user is admin | | ↳ `avatarUrl` | string | Avatar URL | ### Linear List Labels [#linear-list-labels] List all labels in Linear workspace or team #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `teamId` | string | No | Filter by team ID | | `first` | number | No | Number of labels to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `labels` | array | Array of labels | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | | ↳ `description` | string | Label description | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Create Label [#linear-create-label] Create a new label in Linear #### Input [#input-23] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------- | | `name` | string | Yes | Label name | | `color` | string | No | Label color (hex format, e.g., "#ff0000") | | `description` | string | No | Label description | | `teamId` | string | No | Team ID (if omitted, creates workspace label) | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `label` | object | The created label | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | | ↳ `description` | string | Label description | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Update Label [#linear-update-label] Update an existing label in Linear #### Input [#input-24] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------- | | `labelId` | string | Yes | Label ID to update | | `name` | string | No | New label name | | `color` | string | No | New label color (hex format) | | `description` | string | No | New label description | #### Output [#output-24] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `label` | object | The updated label | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color (hex) | | ↳ `description` | string | Label description | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Archive Label [#linear-archive-label] Archive a label in Linear #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `labelId` | string | Yes | Label ID to archive | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the archive operation was successful | | `labelId` | string | The ID of the archived label | ### Linear List Workflow States [#linear-list-workflow-states] List all workflow states (statuses) in Linear #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `teamId` | string | No | Filter by team ID | | `first` | number | No | Number of states to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `states` | array | Array of workflow states | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `description` | string | State description | | ↳ `type` | string | State type (triage, backlog, unstarted, started, completed, canceled) | | ↳ `color` | string | State color (hex) | | ↳ `position` | number | State position in workflow | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Create Workflow State [#linear-create-workflow-state] Create a new workflow state (status) in Linear #### Input [#input-27] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------- | | `teamId` | string | Yes | Team ID to create the state in | | `name` | string | Yes | State name (e.g., "In Review") | | `color` | string | No | State color (hex format) | | `type` | string | Yes | State type: "backlog", "unstarted", "started", "completed", or "canceled" | | `description` | string | No | State description | | `position` | number | No | Position in the workflow | #### Output [#output-27] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------- | | `state` | object | The created workflow state | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `description` | string | State description | | ↳ `type` | string | State type (triage, backlog, unstarted, started, completed, canceled) | | ↳ `color` | string | State color (hex) | | ↳ `position` | number | State position in workflow | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Update Workflow State [#linear-update-workflow-state] Update an existing workflow state in Linear #### Input [#input-28] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------- | | `stateId` | string | Yes | Workflow state ID to update | | `name` | string | No | New state name | | `color` | string | No | New state color (hex format) | | `description` | string | No | New state description | | `position` | number | No | New position in workflow | #### Output [#output-28] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------- | | `state` | object | The updated workflow state | | ↳ `id` | string | State ID | | ↳ `name` | string | State name (e.g., "Todo", "In Progress") | | ↳ `description` | string | State description | | ↳ `type` | string | State type (triage, backlog, unstarted, started, completed, canceled) | | ↳ `color` | string | State color (hex) | | ↳ `position` | number | State position in workflow | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear List Cycles [#linear-list-cycles] List cycles (sprints/iterations) in Linear #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `teamId` | string | No | Filter by team ID | | `first` | number | No | Number of cycles to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-29] | Parameter | Type | Description | | --------------- | ------- | ------------------------------ | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `cycles` | array | Array of cycles | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `startsAt` | string | Start date (ISO 8601) | | ↳ `endsAt` | string | End date (ISO 8601) | | ↳ `completedAt` | string | Completion date (ISO 8601) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Get Cycle [#linear-get-cycle] Get a single cycle by ID from Linear #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `cycleId` | string | Yes | Cycle ID | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `cycle` | object | The cycle with full details | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `startsAt` | string | Start date (ISO 8601) | | ↳ `endsAt` | string | End date (ISO 8601) | | ↳ `completedAt` | string | Completion date (ISO 8601) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Create Cycle [#linear-create-cycle] Create a new cycle (sprint/iteration) in Linear #### Input [#input-31] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------- | | `teamId` | string | Yes | Team ID to create the cycle in | | `startsAt` | string | Yes | Cycle start date (ISO format) | | `endsAt` | string | Yes | Cycle end date (ISO format) | | `name` | string | No | Cycle name (optional, will be auto-generated if not provided) | #### Output [#output-31] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `cycle` | object | The created cycle | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `startsAt` | string | Start date (ISO 8601) | | ↳ `endsAt` | string | End date (ISO 8601) | | ↳ `completedAt` | string | Completion date (ISO 8601) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Get Active Cycle [#linear-get-active-cycle] Get the currently active cycle for a team #### Input [#input-32] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `teamId` | string | Yes | Team ID | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `cycle` | object | The active cycle (null if no active cycle) | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `startsAt` | string | Start date (ISO 8601) | | ↳ `endsAt` | string | End date (ISO 8601) | | ↳ `completedAt` | string | Completion date (ISO 8601) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | ### Linear Create Attachment [#linear-create-attachment] Add an attachment to an issue in Linear #### Input [#input-33] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------- | | `issueId` | string | Yes | Issue ID to attach to | | `url` | string | No | URL of the attachment | | `file` | file | No | File to attach | | `title` | string | Yes | Attachment title | | `subtitle` | string | No | Attachment subtitle/description | #### Output [#output-33] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `attachment` | object | The created attachment | | ↳ `id` | string | Attachment ID | | ↳ `title` | string | Attachment title | | ↳ `subtitle` | string | Attachment subtitle | | ↳ `url` | string | Attachment URL | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | ### Linear List Attachments [#linear-list-attachments] List all attachments on an issue in Linear #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------- | | `issueId` | string | Yes | Issue ID | | `first` | number | No | Number of attachments to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-34] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `attachments` | array | Array of attachments | | ↳ `id` | string | Attachment ID | | ↳ `title` | string | Attachment title | | ↳ `subtitle` | string | Attachment subtitle | | ↳ `url` | string | Attachment URL | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | ### Linear Update Attachment [#linear-update-attachment] Update an attachment metadata in Linear #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | `attachmentId` | string | Yes | Attachment ID to update | | `title` | string | Yes | New attachment title | | `subtitle` | string | No | New attachment subtitle | #### Output [#output-35] | Parameter | Type | Description | | ------------- | ------ | -------------------------------- | | `attachment` | object | The updated attachment | | ↳ `id` | string | Attachment ID | | ↳ `title` | string | Attachment title | | ↳ `subtitle` | string | Attachment subtitle | | ↳ `url` | string | Attachment URL | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | ### Linear Delete Attachment [#linear-delete-attachment] Delete an attachment from Linear #### Input [#input-36] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | `attachmentId` | string | Yes | Attachment ID to delete | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the delete operation was successful | ### Linear Create Issue Relation [#linear-create-issue-relation] Link two issues together in Linear (blocks, relates to, duplicates) #### Input [#input-37] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `issueId` | string | Yes | Source issue ID | | `relatedIssueId` | string | Yes | Target issue ID to link to | | `type` | string | Yes | Relation type: "blocks", "duplicate", or "related". Note: When creating "blocks" from A to B, the inverse relation (B blocked by A) is automatically created. | #### Output [#output-37] | Parameter | Type | Description | | ---------------- | ------ | -------------------------- | | `relation` | object | The created issue relation | | ↳ `id` | string | Relation ID | | ↳ `type` | string | Relation type | | ↳ `issue` | object | Source issue | | ↳ `relatedIssue` | object | Target issue | ### Linear List Issue Relations [#linear-list-issue-relations] List all relations (dependencies) for an issue in Linear #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `issueId` | string | Yes | Issue ID | | `first` | number | No | Number of relations to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-38] | Parameter | Type | Description | | ---------------- | ------ | ------------------------ | | `relations` | array | Array of issue relations | | ↳ `id` | string | Relation ID | | ↳ `type` | string | Relation type | | ↳ `issue` | object | Source issue | | ↳ `relatedIssue` | object | Target issue | | `pageInfo` | object | Pagination information | ### Linear Delete Issue Relation [#linear-delete-issue-relation] Remove a relation between two issues in Linear #### Input [#input-39] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `relationId` | string | Yes | Relation ID to delete | #### Output [#output-39] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the delete operation was successful | ### Linear Create Favorite [#linear-create-favorite] Bookmark an issue, project, cycle, or label in Linear #### Input [#input-40] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------- | | `issueId` | string | No | Issue ID to favorite | | `projectId` | string | No | Project ID to favorite | | `cycleId` | string | No | Cycle ID to favorite | | `labelId` | string | No | Label ID to favorite | #### Output [#output-40] | Parameter | Type | Description | | ----------- | ------ | --------------------------------- | | `favorite` | object | The created favorite | | ↳ `id` | string | Favorite ID | | ↳ `type` | string | Favorite type | | ↳ `issue` | object | Favorited issue (if applicable) | | ↳ `project` | object | Favorited project (if applicable) | | ↳ `cycle` | object | Favorited cycle (if applicable) | ### Linear List Favorites [#linear-list-favorites] List all bookmarked items for the current user in Linear #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `first` | number | No | Number of favorites to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-41] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `favorites` | array | Array of favorited items | | ↳ `id` | string | Favorite ID | | ↳ `type` | string | Favorite type | | ↳ `issue` | object | Favorited issue | | ↳ `project` | object | Favorited project | | ↳ `cycle` | object | Favorited cycle | | `pageInfo` | object | Pagination information | ### Linear Create Project Update [#linear-create-project-update] Post a status update for a project in Linear #### Input [#input-42] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------- | | `projectId` | string | Yes | Project ID to post update for | | `body` | string | Yes | Update message (supports Markdown) | | `health` | string | No | Project health: "onTrack", "atRisk", or "offTrack" | #### Output [#output-42] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `update` | object | The created project update | | ↳ `id` | string | Update ID | | ↳ `body` | string | Update message | | ↳ `health` | string | Project health status | | ↳ `createdAt` | string | Creation timestamp | | ↳ `user` | object | User who created the update | ### Linear List Project Updates [#linear-list-project-updates] List all status updates for a project in Linear #### Input [#input-43] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `projectId` | string | Yes | Project ID | | `first` | number | No | Number of updates to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-43] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `updates` | array | Array of project updates | | ↳ `id` | string | Update ID | | ↳ `body` | string | Update message | | ↳ `health` | string | Project health | | ↳ `createdAt` | string | Creation timestamp | | ↳ `user` | object | User who created the update | | `pageInfo` | object | Pagination information | ### Linear List Notifications [#linear-list-notifications] List notifications for the current user in Linear #### Input [#input-44] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------- | | `first` | number | No | Number of notifications to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-44] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `notifications` | array | Array of notifications | | ↳ `id` | string | Notification ID | | ↳ `type` | string | Notification type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `readAt` | string | Read timestamp (null if unread) | | ↳ `issue` | object | Related issue | | `pageInfo` | object | Pagination information | ### Linear Update Notification [#linear-update-notification] Mark a notification as read or unread in Linear #### Input [#input-45] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------- | | `notificationId` | string | Yes | Notification ID to update | | `readAt` | string | No | Timestamp to mark as read (ISO format). Pass null or omit to mark as unread | #### Output [#output-45] | Parameter | Type | Description | | -------------- | ------ | ------------------------ | | `notification` | object | The updated notification | | ↳ `id` | string | Notification ID | | ↳ `type` | string | Notification type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `readAt` | string | Read timestamp | | ↳ `issue` | object | Related issue | ### Linear Create Customer [#linear-create-customer] Create a new customer in Linear #### Input [#input-46] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------- | | `name` | string | Yes | Customer name | | `domains` | array | No | Domains associated with this customer | | `externalIds` | array | No | External IDs from other systems | | `logoUrl` | string | No | Customer's logo URL | | `ownerId` | string | No | ID of the user who owns this customer | | `revenue` | number | No | Annual revenue from this customer | | `size` | number | No | Size of the customer organization | | `statusId` | string | No | Customer status ID | | `tierId` | string | No | Customer tier ID | #### Output [#output-46] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------- | | `customer` | object | The created customer | | ↳ `id` | string | Customer ID | | ↳ `name` | string | Customer name | | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | | ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | | ↳ `revenue` | number | Annual revenue | | ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear List Customers [#linear-list-customers] List all customers in Linear #### Input [#input-47] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------- | | `first` | number | No | Number of customers to return (default: 50) | | `after` | string | No | Cursor for pagination | | `includeArchived` | boolean | No | Include archived customers (default: false) | #### Output [#output-47] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `customers` | array | Array of customers | | ↳ `id` | string | Customer ID | | ↳ `name` | string | Customer name | | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | | ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | | ↳ `revenue` | number | Annual revenue | | ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Create Customer Request [#linear-create-customer-request] Create a customer request (need) in Linear. Assign to customer, set urgency (priority: 0 = Not important, 1 = Important), and optionally link to an issue. #### Input [#input-48] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `customerId` | string | Yes | Customer ID to assign this request to | | `body` | string | No | Description of the customer request | | `priority` | number | No | Urgency level: 0 = Not important, 1 = Important (default: 0) | | `issueId` | string | No | Issue ID to link this request to | | `projectId` | string | No | Project ID to link this request to | #### Output [#output-48] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `customerNeed` | object | The created customer request | | ↳ `id` | string | Customer request ID | | ↳ `body` | string | Request description | | ↳ `priority` | number | Urgency level (0 = Not important, 1 = Important) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `archivedAt` | string | Archive timestamp (null if not archived) | | ↳ `customer` | object | Assigned customer | | ↳ `issue` | object | Linked issue (null if not linked) | | ↳ `project` | object | Linked project (null if not linked) | | ↳ `creator` | object | User who created the request | | ↳ `url` | string | URL to the customer request | ### Linear Update Customer Request [#linear-update-customer-request] Update a customer request (need) in Linear. Can change urgency, description, customer assignment, and linked issue. #### Input [#input-49] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `customerNeedId` | string | Yes | Customer request ID to update | | `body` | string | No | Updated description of the customer request | | `priority` | number | No | Updated urgency level: 0 = Not important, 1 = Important | | `customerId` | string | No | New customer ID to assign this request to | | `issueId` | string | No | New issue ID to link this request to | | `projectId` | string | No | New project ID to link this request to | #### Output [#output-49] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------ | | `customerNeed` | object | The updated customer request | | ↳ `id` | string | Customer request ID | | ↳ `body` | string | Request description | | ↳ `priority` | number | Urgency level (0 = Not important, 1 = Important) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `archivedAt` | string | Archive timestamp (null if not archived) | | ↳ `customer` | object | Assigned customer | | ↳ `issue` | object | Linked issue (null if not linked) | | ↳ `project` | object | Linked project (null if not linked) | | ↳ `creator` | object | User who created the request | | ↳ `url` | string | URL to the customer request | ### Linear List Customer Requests [#linear-list-customer-requests] List all customer requests (needs) in Linear #### Input [#input-50] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------- | | `first` | number | No | Number of customer requests to return (default: 50) | | `after` | string | No | Cursor for pagination | | `includeArchived` | boolean | No | Include archived customer requests (default: false) | #### Output [#output-50] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------ | | `customerNeeds` | array | Array of customer requests | | ↳ `id` | string | Customer request ID | | ↳ `body` | string | Request description | | ↳ `priority` | number | Urgency level (0 = Not important, 1 = Important) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `archivedAt` | string | Archive timestamp (null if not archived) | | ↳ `customer` | object | Assigned customer | | ↳ `issue` | object | Linked issue (null if not linked) | | ↳ `project` | object | Linked project (null if not linked) | | ↳ `creator` | object | User who created the request | | ↳ `url` | string | URL to the customer request | | `pageInfo` | object | Pagination information | ### Linear Get Customer [#linear-get-customer] Get a single customer by ID in Linear #### Input [#input-51] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------- | | `customerId` | string | Yes | Customer ID to retrieve | #### Output [#output-51] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------- | | `customer` | object | The customer data | | ↳ `id` | string | Customer ID | | ↳ `name` | string | Customer name | | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | | ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | | ↳ `revenue` | number | Annual revenue | | ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Customer [#linear-update-customer] Update a customer in Linear #### Input [#input-52] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------- | | `customerId` | string | Yes | Customer ID to update | | `name` | string | No | Updated customer name | | `domains` | array | No | Updated domains | | `externalIds` | array | No | Updated external IDs | | `logoUrl` | string | No | Updated logo URL | | `ownerId` | string | No | Updated owner user ID | | `revenue` | number | No | Updated annual revenue | | `size` | number | No | Updated organization size | | `statusId` | string | No | Updated customer status ID | | `tierId` | string | No | Updated customer tier ID | #### Output [#output-52] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------- | | `customer` | object | The updated customer | | ↳ `id` | string | Customer ID | | ↳ `name` | string | Customer name | | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | | ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | | ↳ `revenue` | number | Annual revenue | | ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Customer [#linear-delete-customer] Delete a customer in Linear #### Input [#input-53] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `customerId` | string | Yes | Customer ID to delete | #### Output [#output-53] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear Merge Customers [#linear-merge-customers] Merge two customers in Linear by moving all data from source to target #### Input [#input-54] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------ | | `sourceCustomerId` | string | Yes | Source customer ID (will be deleted after merge) | | `targetCustomerId` | string | Yes | Target customer ID (will receive all data) | #### Output [#output-54] | Parameter | Type | Description | | ---------- | ------ | -------------------------- | | `customer` | object | The merged target customer | ### Linear Create Customer Status [#linear-create-customer-status] Create a new customer status in Linear #### Input [#input-55] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------- | | `name` | string | Yes | Customer status name | | `color` | string | Yes | Status color (hex code) | | `description` | string | No | Status description | | `displayName` | string | No | Display name for the status | | `position` | number | No | Position in status list | #### Output [#output-55] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `customerStatus` | object | The created customer status | | ↳ `id` | string | Customer status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (active, inactive) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Customer Status [#linear-update-customer-status] Update a customer status in Linear #### Input [#input-56] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------- | | `statusId` | string | Yes | Customer status ID to update | | `name` | string | No | Updated status name | | `color` | string | No | Updated status color | | `description` | string | No | Updated description | | `displayName` | string | No | Updated display name | | `position` | number | No | Updated position | #### Output [#output-56] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `customerStatus` | object | The updated customer status | | ↳ `id` | string | Customer status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (active, inactive) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Customer Status [#linear-delete-customer-status] Delete a customer status in Linear #### Input [#input-57] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------- | | `statusId` | string | Yes | Customer status ID to delete | #### Output [#output-57] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear List Customer Statuses [#linear-list-customer-statuses] List all customer statuses in Linear #### Input [#input-58] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `first` | number | No | Number of statuses to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-58] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `customerStatuses` | array | List of customer statuses | | ↳ `id` | string | Customer status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (active, inactive) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Create Customer Tier [#linear-create-customer-tier] Create a new customer tier in Linear #### Input [#input-59] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------- | | `name` | string | Yes | Customer tier name | | `color` | string | Yes | Tier color (hex code) | | `displayName` | string | No | Display name for the tier | | `description` | string | No | Tier description | | `position` | number | No | Position in tier list | #### Output [#output-59] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `customerTier` | object | The created customer tier | | ↳ `id` | string | Customer tier ID | | ↳ `name` | string | Tier name | | ↳ `displayName` | string | Display name | | ↳ `description` | string | Tier description | | ↳ `color` | string | Tier color (hex) | | ↳ `position` | number | Position in list | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Customer Tier [#linear-update-customer-tier] Update a customer tier in Linear #### Input [#input-60] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------- | | `tierId` | string | Yes | Customer tier ID to update | | `name` | string | No | Updated tier name | | `color` | string | No | Updated tier color | | `displayName` | string | No | Updated display name | | `description` | string | No | Updated description | | `position` | number | No | Updated position | #### Output [#output-60] | Parameter | Type | Description | | -------------- | ------ | ------------------------- | | `customerTier` | object | The updated customer tier | ### Linear Delete Customer Tier [#linear-delete-customer-tier] Delete a customer tier in Linear #### Input [#input-61] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | `tierId` | string | Yes | Customer tier ID to delete | #### Output [#output-61] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear List Customer Tiers [#linear-list-customer-tiers] List all customer tiers in Linear #### Input [#input-62] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `first` | number | No | Number of tiers to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-62] | Parameter | Type | Description | | --------------- | ------- | ------------------------------ | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `customerTiers` | array | List of customer tiers | | ↳ `id` | string | Customer tier ID | | ↳ `name` | string | Tier name | | ↳ `displayName` | string | Display name | | ↳ `description` | string | Tier description | | ↳ `color` | string | Tier color (hex) | | ↳ `position` | number | Position in list | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Project [#linear-delete-project] Delete a project in Linear #### Input [#input-63] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `projectId` | string | Yes | Project ID to delete | #### Output [#output-63] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear Create Project Label [#linear-create-project-label] Create a new project label in Linear #### Input [#input-64] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------- | | `name` | string | Yes | Project label name | | `color` | string | No | Label color (hex code) | | `description` | string | No | Label description | | `isGroup` | boolean | No | Whether this is a label group | | `parentId` | string | No | Parent label group ID | #### Output [#output-64] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `projectLabel` | object | The created project label | | ↳ `id` | string | Project label ID | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color (hex) | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Project Label [#linear-update-project-label] Update a project label in Linear #### Input [#input-65] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------- | | `labelId` | string | Yes | Project label ID to update | | `name` | string | No | Updated label name | | `color` | string | No | Updated label color | | `description` | string | No | Updated description | #### Output [#output-65] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `projectLabel` | object | The updated project label | | ↳ `id` | string | Project label ID | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color (hex) | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Project Label [#linear-delete-project-label] Delete a project label in Linear #### Input [#input-66] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | `labelId` | string | Yes | Project label ID to delete | #### Output [#output-66] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear List Project Labels [#linear-list-project-labels] List all project labels in Linear #### Input [#input-67] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------- | | `projectId` | string | No | Optional project ID to filter labels for a specific project | | `first` | number | No | Number of labels to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-67] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `projectLabels` | array | List of project labels | | ↳ `id` | string | Project label ID | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color (hex) | | ↳ `isGroup` | boolean | Whether this label is a group | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Add Label to Project [#linear-add-label-to-project] Add a label to a project in Linear #### Input [#input-68] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------- | | `projectId` | string | Yes | Project ID | | `labelId` | string | Yes | Label ID to add | #### Output [#output-68] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the label was added successfully | | `projectId` | string | The project ID | ### Linear Remove Label from Project [#linear-remove-label-from-project] Remove a label from a project in Linear #### Input [#input-69] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------ | | `projectId` | string | Yes | Project ID | | `labelId` | string | Yes | Label ID to remove | #### Output [#output-69] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------ | | `success` | boolean | Whether the label was removed successfully | | `projectId` | string | The project ID | ### Linear Create Project Milestone [#linear-create-project-milestone] Create a new project milestone in Linear #### Input [#input-70] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------- | | `projectId` | string | Yes | Project ID | | `name` | string | Yes | Milestone name | | `description` | string | No | Milestone description | | `targetDate` | string | No | Target date (ISO 8601) | #### Output [#output-70] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------- | | `projectMilestone` | object | The created project milestone | | ↳ `id` | string | Project milestone ID | | ↳ `name` | string | Milestone name | | ↳ `description` | string | Milestone description | | ↳ `projectId` | string | Project ID | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `sortOrder` | number | Sort order within the project | | ↳ `status` | string | Milestone status (done, next, overdue, unstarted) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Project Milestone [#linear-update-project-milestone] Update a project milestone in Linear #### Input [#input-71] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------ | | `milestoneId` | string | Yes | Project milestone ID to update | | `name` | string | No | Updated milestone name | | `description` | string | No | Updated description | | `targetDate` | string | No | Updated target date (ISO 8601) | #### Output [#output-71] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------- | | `projectMilestone` | object | The updated project milestone | | ↳ `id` | string | Project milestone ID | | ↳ `name` | string | Milestone name | | ↳ `description` | string | Milestone description | | ↳ `projectId` | string | Project ID | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `sortOrder` | number | Sort order within the project | | ↳ `status` | string | Milestone status (done, next, overdue, unstarted) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Project Milestone [#linear-delete-project-milestone] Delete a project milestone in Linear #### Input [#input-72] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------ | | `milestoneId` | string | Yes | Project milestone ID to delete | #### Output [#output-72] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear List Project Milestones [#linear-list-project-milestones] List all milestones for a project in Linear #### Input [#input-73] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------- | | `projectId` | string | Yes | Project ID to list milestones for | | `first` | number | No | Number of milestones to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-73] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `projectMilestones` | array | List of project milestones | | ↳ `id` | string | Project milestone ID | | ↳ `name` | string | Milestone name | | ↳ `description` | string | Milestone description | | ↳ `projectId` | string | Project ID | | ↳ `targetDate` | string | Target date (YYYY-MM-DD) | | ↳ `progress` | number | Progress percentage (0-1) | | ↳ `sortOrder` | number | Sort order within the project | | ↳ `status` | string | Milestone status (done, next, overdue, unstarted) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Create Project Status [#linear-create-project-status] Create a new project status in Linear #### Input [#input-74] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `name` | string | Yes | Project status name | | `type` | string | Yes | Status type: "backlog", "planned", "started", "paused", "completed", or "canceled" | | `color` | string | Yes | Status color (hex code) | | `position` | number | Yes | Position in status list (e.g. 0, 1, 2...) | | `description` | string | No | Status description | | `indefinite` | boolean | No | Whether the status is indefinite | #### Output [#output-74] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------------- | | `projectStatus` | object | The created project status | | ↳ `id` | string | Project status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `indefinite` | boolean | Whether this status is indefinite | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (backlog, planned, started, paused, completed, canceled) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Update Project Status [#linear-update-project-status] Update a project status in Linear #### Input [#input-75] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------- | | `statusId` | string | Yes | Project status ID to update | | `name` | string | No | Updated status name | | `color` | string | No | Updated status color | | `description` | string | No | Updated description | | `indefinite` | boolean | No | Updated indefinite flag | | `position` | number | No | Updated position | #### Output [#output-75] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------------- | | `projectStatus` | object | The updated project status | | ↳ `id` | string | Project status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `indefinite` | boolean | Whether this status is indefinite | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (backlog, planned, started, paused, completed, canceled) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ### Linear Delete Project Status [#linear-delete-project-status] Delete a project status in Linear #### Input [#input-76] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------- | | `statusId` | string | Yes | Project status ID to delete | #### Output [#output-76] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | ### Linear List Project Statuses [#linear-list-project-statuses] List all project statuses in Linear #### Input [#input-77] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `first` | number | No | Number of statuses to return (default: 50) | | `after` | string | No | Cursor for pagination | #### Output [#output-77] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------------- | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether there are more results | | ↳ `endCursor` | string | Cursor for the next page | | `projectStatuses` | array | List of project statuses | | ↳ `id` | string | Project status ID | | ↳ `name` | string | Status name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color (hex) | | ↳ `indefinite` | boolean | Whether this status is indefinite | | ↳ `position` | number | Position in list | | ↳ `type` | string | Status type (backlog, planned, started, paused, completed, canceled) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `archivedAt` | string | Archive timestamp (ISO 8601) | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Linear Comment Created [#linear-comment-created] Trigger workflow when a new comment is created in Linear #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-78] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Comment) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment body text | | ↳ `edited` | boolean | Whether the comment body has been edited (Linear webhook payload field) | | ↳ `url` | string | Comment URL | | ↳ `issueId` | string | Issue ID this comment belongs to | | ↳ `userId` | string | User ID of the comment author | | ↳ `editedAt` | string | Last edited timestamp | | ↳ `createdAt` | string | Comment creation timestamp | | ↳ `updatedAt` | string | Comment last update timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `resolvedAt` | string | Resolved timestamp (for comment threads) | | ↳ `parent` | object | Parent comment object (if this is a reply) | | ↳ `reactionData` | object | Reaction data for the comment | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Comment Updated [#linear-comment-updated] Trigger workflow when a comment is updated in Linear #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-79] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Comment) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Comment ID | | ↳ `body` | string | Comment body text | | ↳ `edited` | boolean | Whether the comment body has been edited (Linear webhook payload field) | | ↳ `url` | string | Comment URL | | ↳ `issueId` | string | Issue ID this comment belongs to | | ↳ `userId` | string | User ID of the comment author | | ↳ `editedAt` | string | Last edited timestamp | | ↳ `createdAt` | string | Comment creation timestamp | | ↳ `updatedAt` | string | Comment last update timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `resolvedAt` | string | Resolved timestamp (for comment threads) | | ↳ `parent` | object | Parent comment object (if this is a reply) | | ↳ `reactionData` | object | Reaction data for the comment | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Customer Request Created [#linear-customer-request-created] Trigger workflow when a new customer request is created in Linear #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-80] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (CustomerNeed) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Customer request ID | | ↳ `body` | string | Request body content (Markdown) | | ↳ `priority` | number | Request priority (0 = Not important, 1 = Important) | | ↳ `customerId` | string | Customer ID | | ↳ `issueId` | string | Linked issue ID | | ↳ `projectId` | string | Associated project ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `url` | string | Customer request URL | | ↳ `createdAt` | string | Request creation timestamp | | ↳ `updatedAt` | string | Request last update timestamp | | ↳ `archivedAt` | string | Archived timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Customer Request Updated [#linear-customer-request-updated] Trigger workflow when a customer request is updated in Linear #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-81] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (CustomerNeed) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Customer request ID | | ↳ `body` | string | Request body content (Markdown) | | ↳ `priority` | number | Request priority (0 = Not important, 1 = Important) | | ↳ `customerId` | string | Customer ID | | ↳ `issueId` | string | Linked issue ID | | ↳ `projectId` | string | Associated project ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `url` | string | Customer request URL | | ↳ `createdAt` | string | Request creation timestamp | | ↳ `updatedAt` | string | Request last update timestamp | | ↳ `archivedAt` | string | Archived timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Cycle Created [#linear-cycle-created] Trigger workflow when a new cycle is created in Linear #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-82] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Cycle) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `description` | string | Cycle description | | ↳ `teamId` | string | Team ID | | ↳ `startsAt` | string | Cycle start date | | ↳ `endsAt` | string | Cycle end date | | ↳ `completedAt` | string | Completed timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `autoArchivedAt` | string | Auto-archived timestamp | | ↳ `createdAt` | string | Cycle creation timestamp | | ↳ `updatedAt` | string | Cycle last update timestamp | | ↳ `progress` | number | Cycle progress (0-1) | | ↳ `scopeHistory` | array | History of scope changes | | ↳ `completedScopeHistory` | array | History of completed scope | | ↳ `inProgressScopeHistory` | array | History of in-progress scope | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Cycle Updated [#linear-cycle-updated] Trigger workflow when a cycle is updated in Linear #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-83] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Cycle) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | | ↳ `description` | string | Cycle description | | ↳ `teamId` | string | Team ID | | ↳ `startsAt` | string | Cycle start date | | ↳ `endsAt` | string | Cycle end date | | ↳ `completedAt` | string | Completed timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `autoArchivedAt` | string | Auto-archived timestamp | | ↳ `createdAt` | string | Cycle creation timestamp | | ↳ `updatedAt` | string | Cycle last update timestamp | | ↳ `progress` | number | Cycle progress (0-1) | | ↳ `scopeHistory` | array | History of scope changes | | ↳ `completedScopeHistory` | array | History of completed scope | | ↳ `inProgressScopeHistory` | array | History of in-progress scope | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Issue Created [#linear-issue-created] Trigger workflow when a new issue is created in Linear #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-84] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Issue) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `identifier` | string | Issue identifier (e.g., ENG-123) | | ↳ `number` | number | Issue number | | ↳ `priority` | number | Issue priority (0 = None, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low) | | ↳ `estimate` | number | Issue estimate | | ↳ `sortOrder` | number | Issue sort order | | ↳ `teamId` | string | Team ID | | ↳ `stateId` | string | Workflow state ID | | ↳ `assigneeId` | string | Assignee user ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `projectId` | string | Project ID | | ↳ `cycleId` | string | Cycle ID | | ↳ `parentId` | string | Parent issue ID (for sub-issues) | | ↳ `labelIds` | array | Array of label IDs | | ↳ `subscriberIds` | array | Array of subscriber user IDs | | ↳ `url` | string | Issue URL | | ↳ `branchName` | string | Git branch name | | ↳ `customerTicketCount` | number | Number of customer tickets | | ↳ `dueDate` | string | Issue due date | | ↳ `snoozedUntilAt` | string | Snoozed until timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `canceledAt` | string | Canceled timestamp | | ↳ `completedAt` | string | Completed timestamp | | ↳ `startedAt` | string | Started timestamp | | ↳ `triagedAt` | string | Triaged timestamp | | ↳ `createdAt` | string | Issue creation timestamp | | ↳ `updatedAt` | string | Issue last update timestamp | | ↳ `autoArchivedAt` | string | Auto-archived timestamp | | ↳ `autoClosedAt` | string | Auto-closed timestamp | | ↳ `previousIdentifiers` | array | Array of previous issue identifiers (when an issue is moved between teams) | | ↳ `integrationSourceType` | string | Integration source type (if created from an integration) | | ↳ `slaStartedAt` | string | SLA timer started timestamp | | ↳ `slaBreachesAt` | string | SLA breach timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Issue Removed [#linear-issue-removed] Trigger workflow when an issue is removed/deleted in Linear #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-85] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Issue) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `identifier` | string | Issue identifier (e.g., ENG-123) | | ↳ `number` | number | Issue number | | ↳ `priority` | number | Issue priority (0 = None, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low) | | ↳ `estimate` | number | Issue estimate | | ↳ `sortOrder` | number | Issue sort order | | ↳ `teamId` | string | Team ID | | ↳ `stateId` | string | Workflow state ID | | ↳ `assigneeId` | string | Assignee user ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `projectId` | string | Project ID | | ↳ `cycleId` | string | Cycle ID | | ↳ `parentId` | string | Parent issue ID (for sub-issues) | | ↳ `labelIds` | array | Array of label IDs | | ↳ `subscriberIds` | array | Array of subscriber user IDs | | ↳ `url` | string | Issue URL | | ↳ `branchName` | string | Git branch name | | ↳ `customerTicketCount` | number | Number of customer tickets | | ↳ `dueDate` | string | Issue due date | | ↳ `snoozedUntilAt` | string | Snoozed until timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `canceledAt` | string | Canceled timestamp | | ↳ `completedAt` | string | Completed timestamp | | ↳ `startedAt` | string | Started timestamp | | ↳ `triagedAt` | string | Triaged timestamp | | ↳ `createdAt` | string | Issue creation timestamp | | ↳ `updatedAt` | string | Issue last update timestamp | | ↳ `autoArchivedAt` | string | Auto-archived timestamp | | ↳ `autoClosedAt` | string | Auto-closed timestamp | | ↳ `previousIdentifiers` | array | Array of previous issue identifiers (when an issue is moved between teams) | | ↳ `integrationSourceType` | string | Integration source type (if created from an integration) | | ↳ `slaStartedAt` | string | SLA timer started timestamp | | ↳ `slaBreachesAt` | string | SLA breach timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Issue Updated [#linear-issue-updated] Trigger workflow when an issue is updated in Linear #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-86] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Issue) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Issue ID | | ↳ `title` | string | Issue title | | ↳ `description` | string | Issue description | | ↳ `identifier` | string | Issue identifier (e.g., ENG-123) | | ↳ `number` | number | Issue number | | ↳ `priority` | number | Issue priority (0 = None, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low) | | ↳ `estimate` | number | Issue estimate | | ↳ `sortOrder` | number | Issue sort order | | ↳ `teamId` | string | Team ID | | ↳ `stateId` | string | Workflow state ID | | ↳ `assigneeId` | string | Assignee user ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `projectId` | string | Project ID | | ↳ `cycleId` | string | Cycle ID | | ↳ `parentId` | string | Parent issue ID (for sub-issues) | | ↳ `labelIds` | array | Array of label IDs | | ↳ `subscriberIds` | array | Array of subscriber user IDs | | ↳ `url` | string | Issue URL | | ↳ `branchName` | string | Git branch name | | ↳ `customerTicketCount` | number | Number of customer tickets | | ↳ `dueDate` | string | Issue due date | | ↳ `snoozedUntilAt` | string | Snoozed until timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `canceledAt` | string | Canceled timestamp | | ↳ `completedAt` | string | Completed timestamp | | ↳ `startedAt` | string | Started timestamp | | ↳ `triagedAt` | string | Triaged timestamp | | ↳ `createdAt` | string | Issue creation timestamp | | ↳ `updatedAt` | string | Issue last update timestamp | | ↳ `autoArchivedAt` | string | Auto-archived timestamp | | ↳ `autoClosedAt` | string | Auto-closed timestamp | | ↳ `previousIdentifiers` | array | Array of previous issue identifiers (when an issue is moved between teams) | | ↳ `integrationSourceType` | string | Integration source type (if created from an integration) | | ↳ `slaStartedAt` | string | SLA timer started timestamp | | ↳ `slaBreachesAt` | string | SLA breach timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Label Created [#linear-label-created] Trigger workflow when a new label is created in Linear #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-87] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (IssueLabel) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color (hex code) | | ↳ `organizationId` | string | Organization ID | | ↳ `teamId` | string | Team ID (if team-specific label) | | ↳ `creatorId` | string | Creator user ID | | ↳ `isGroup` | boolean | Whether this is a label group | | ↳ `parentId` | string | Parent label ID (for nested labels) | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `createdAt` | string | Label creation timestamp | | ↳ `updatedAt` | string | Label last update timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Label Updated [#linear-label-updated] Trigger workflow when a label is updated in Linear #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-88] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (IssueLabel) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color (hex code) | | ↳ `organizationId` | string | Organization ID | | ↳ `teamId` | string | Team ID (if team-specific label) | | ↳ `creatorId` | string | Creator user ID | | ↳ `isGroup` | boolean | Whether this is a label group | | ↳ `parentId` | string | Parent label ID (for nested labels) | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `createdAt` | string | Label creation timestamp | | ↳ `updatedAt` | string | Label last update timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Project Created [#linear-project-created] Trigger workflow when a new project is created in Linear #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-89] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Project) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `icon` | string | Project icon | | ↳ `color` | string | Project color | | ↳ `state` | string | Project state (planned, started, completed, canceled, backlog) | | ↳ `slugId` | string | Project slug ID | | ↳ `url` | string | Project URL | | ↳ `leadId` | string | Project lead user ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `memberIds` | array | Array of member user IDs | | ↳ `teamIds` | array | Array of team IDs | | ↳ `priority` | number | Project priority | | ↳ `sortOrder` | number | Project sort order | | ↳ `startDate` | string | Project start date | | ↳ `targetDate` | string | Project target date | | ↳ `startedAt` | string | Started timestamp | | ↳ `completedAt` | string | Completed timestamp | | ↳ `canceledAt` | string | Canceled timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `createdAt` | string | Project creation timestamp | | ↳ `updatedAt` | string | Project last update timestamp | | ↳ `progress` | number | Project progress (0-1) | | ↳ `scope` | number | Project scope estimate | | ↳ `statusId` | string | Project status ID | | ↳ `bodyData` | object | Project body data (rich text content) | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Project Update Created [#linear-project-update-created] Trigger workflow when a new project update is posted in Linear #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-90] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (ProjectUpdate) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Project update ID | | ↳ `body` | string | Update body content | | ↳ `url` | string | Project update URL | | ↳ `projectId` | string | Project ID | | ↳ `userId` | string | User ID of the author | | ↳ `health` | string | Project health (onTrack, atRisk, offTrack) | | ↳ `editedAt` | string | Last edited timestamp | | ↳ `createdAt` | string | Update creation timestamp | | ↳ `updatedAt` | string | Update last update timestamp | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Project Updated [#linear-project-updated] Trigger workflow when a project is updated in Linear #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-91] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Project) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | data output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `icon` | string | Project icon | | ↳ `color` | string | Project color | | ↳ `state` | string | Project state (planned, started, completed, canceled, backlog) | | ↳ `slugId` | string | Project slug ID | | ↳ `url` | string | Project URL | | ↳ `leadId` | string | Project lead user ID | | ↳ `creatorId` | string | Creator user ID | | ↳ `memberIds` | array | Array of member user IDs | | ↳ `teamIds` | array | Array of team IDs | | ↳ `priority` | number | Project priority | | ↳ `sortOrder` | number | Project sort order | | ↳ `startDate` | string | Project start date | | ↳ `targetDate` | string | Project target date | | ↳ `startedAt` | string | Started timestamp | | ↳ `completedAt` | string | Completed timestamp | | ↳ `canceledAt` | string | Canceled timestamp | | ↳ `archivedAt` | string | Archived timestamp | | ↳ `createdAt` | string | Project creation timestamp | | ↳ `updatedAt` | string | Project last update timestamp | | ↳ `progress` | number | Project progress (0-1) | | ↳ `scope` | number | Project scope estimate | | ↳ `statusId` | string | Project status ID | | ↳ `bodyData` | object | Project body data (rich text content) | | `updatedFrom` | object | Previous values for changed fields (only present on update) | *** ### Linear Webhook [#linear-webhook] Trigger workflow from Linear events you select when creating the webhook in Linear (not guaranteed to be every model or event type). #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | | `teamId` | string | No | Team ID | #### Output [#output-92] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------ | | `action` | string | Action performed (create, update, remove) | | `type` | string | Entity type (Issue, Comment, Project, Cycle, IssueLabel, ProjectUpdate, etc.) | | `webhookId` | string | Webhook ID | | `webhookTimestamp` | number | Webhook timestamp (milliseconds) | | `organizationId` | string | Organization ID | | `createdAt` | string | Event creation timestamp | | `url` | string | URL of the subject entity in Linear (top-level webhook payload) | | `actor` | object | actor output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | User display name | | ↳ `actorType` | string | Actor type from Linear (e.g. user, OauthClient, Integration) | | ↳ `email` | string | Actor email (present for user actors in Linear webhook payloads) | | ↳ `url` | string | Actor profile URL in Linear (distinct from the top-level subject entity `url`) | | `data` | object | Complete entity data object | | `updatedFrom` | object | Previous values for changed fields (only present on update) | --- # LinkedIn (/integrations/linkedin) {/* MANUAL-CONTENT-START:intro */} Use [LinkedIn](https://www.linkedin.com) to publish to your personal feed and retrieve your profile information from a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate LinkedIn into workflows. Share posts to your personal feed and access your LinkedIn profile information. ## Actions [#actions] ### Share Post on LinkedIn [#share-post-on-linkedin] Share a post to your personal LinkedIn feed #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------- | | `text` | string | Yes | The text content of your LinkedIn post | | `visibility` | string | No | Who can see this post: "PUBLIC" or "CONNECTIONS" (default: "PUBLIC") | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation success status | | `postId` | string | Created post ID | | `profile` | json | LinkedIn profile information | | `error` | string | Error message if operation failed | ### Get LinkedIn Profile [#get-linkedin-profile] Retrieve your LinkedIn profile information #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation success status | | `postId` | string | Created post ID | | `profile` | json | LinkedIn profile information | | `error` | string | Error message if operation failed | --- # LinkedIn Pages (/integrations/linkedin_pages) ## Usage Instructions [#usage-instructions] Manage LinkedIn Company Pages you administer through the Community Management API. Publish Page posts with text, an article link, or up to 20 images; list, read, and delete Page posts; read comments and reply as the Page; and pull organic impressions, clicks, and engagement. Requires a LinkedIn app approved for the Community Management API. ## Actions [#actions] ### LinkedIn Post as Page [#linkedin-post-as-page] Publish an organic post on a LinkedIn Company Page: text only, text with an article link, or text with 1–20 images uploaded through the Images API #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `organization` | string | Yes | Organization ID or URN of the Page to post as (urn:li:organization:\{id}) | | `text` | string | Yes | Post text (max 3000 characters) | | `textFormat` | string | No | plain (default) escapes LinkedIn's reserved little-text characters so the text appears as written, keeping #hashtags; little sends the text as-is so @\[Name]\(urn) mentions work | | `visibility` | string | No | PUBLIC (default) or LOGGED\_IN (signed-in members only) | | `feedDistribution` | string | No | MAIN\_FEED (default) or NONE to keep the post out of the feed | | `disableReshare` | boolean | No | Prevent members from resharing the post | | `articleUrl` | string | No | Link to share as an article card. LinkedIn does not scrape it, so set a title | | `articleTitle` | string | No | Article card title (required with an article URL) | | `articleDescription` | string | No | Article card description | | `articleThumbnail` | file | No | Optional JPG, PNG, or GIF thumbnail for the article card | | `images` | file\[] | No | JPG, PNG, or GIF images (1 for a single-image post, 2–20 for a multi-image post). Cannot be combined with an article link | | `imageAltText` | string | No | Alt text applied to the attached images | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------ | | `postId` | string | URN of the created post (urn:li:share:… or urn:li:ugcPost:…) | | `postUrl` | string | Feed URL of the created post | | `author` | string | Organization URN the post was published as | | `contentType` | string | text, article, image, or multiImage | | `imageUrns` | array | Image URNs uploaded for the post | ### LinkedIn List Page Posts [#linkedin-list-page-posts] List posts authored by a LinkedIn Company Page, newest first (organic and sponsored) #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------- | | `organization` | string | Yes | Organization ID or URN (urn:li:organization:\{id}) | | `count` | number | No | Posts per page (default 10, max 100) | | `start` | number | No | Index of the first post (default 0); use paging.nextStart for the next page | | `sortBy` | string | No | LAST\_MODIFIED (default) or CREATED, both descending | | `viewContext` | string | No | READER (default) or AUTHOR to include unpublished versions | #### Output [#output-1] | Parameter | Type | Description | | --------- | ----- | -------------------------- | | `posts` | array | Posts authored by the Page | ### LinkedIn Get Post [#linkedin-get-post] Retrieve a LinkedIn post by its share or ugcPost URN #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `postUrn` | string | Yes | Post URN, e.g. urn:li:share:6844785523593134080 or urn:li:ugcPost:… | | `viewContext` | string | No | READER (default) returns the published version; AUTHOR returns the latest version, including drafts and posts still processing | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ----------- | | `post` | object | The post | ### LinkedIn Delete Post [#linkedin-delete-post] Delete a LinkedIn post by URN. Deletion is idempotent: deleting an already deleted post also succeeds #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `postUrn` | string | Yes | URN of the post to delete (urn:li:share:… or urn:li:ugcPost:…) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `deleted` | boolean | Whether LinkedIn confirmed the deletion | | `postUrn` | string | URN of the deleted post | ### LinkedIn Get Post Comments [#linkedin-get-post-comments] List comments on a LinkedIn post, or replies to a comment when given a comment URN #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `postUrn` | string | Yes | Post URN (urn:li:share:… or urn:li:ugcPost:…), or a comment URN to list its replies | | `count` | number | No | Comments per page (default 10, max 100) | | `start` | number | No | Index of the first comment (default 0) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ----- | ---------------------------------------------- | | `comments` | array | Comments on the post or replies to the comment | ### LinkedIn Comment as Page [#linkedin-comment-as-page] Comment on a LinkedIn post, or reply to a comment, as a Company Page you administer #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `organization` | string | Yes | Organization ID or URN the comment is published as | | `postUrn` | string | Yes | URN of the post that holds the conversation (urn:li:share:… or urn:li:ugcPost:…) | | `text` | string | Yes | Comment text | | `parentCommentUrn` | string | No | Comment URN to reply to (urn:li:comment:(…)); omit to comment on the post itself | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `comment` | object | The created comment | ### LinkedIn Get Page Post Statistics [#linkedin-get-page-post-statistics] Get organic impressions, clicks, likes, comments, shares, and engagement for a Company Page: lifetime totals, daily or monthly buckets over a date range, or lifetime totals for specific posts (rolling 12-month window) #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `organization` | string | Yes | Organization ID or URN (the member must be a Page ADMINISTRATOR) | | `postUrns` | string | No | Comma-separated share or ugcPost URNs for per-post lifetime statistics (max 20). Cannot be combined with a time range | | `timeGranularity` | string | No | DAY or MONTH buckets for time-bound statistics (default DAY when a range is set) | | `startTime` | string | No | Inclusive range start as epoch milliseconds or an ISO-8601 date | | `endTime` | string | No | Exclusive range end as epoch milliseconds or an ISO-8601 date | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `statistics` | array | One element for lifetime totals, one per time bucket, or one per requested post. Posts with no activity are omitted and can be read as all zeros | ### LinkedIn List Administered Pages [#linkedin-list-administered-pages] List the LinkedIn Company Pages the connected member holds an approved role on (ADMINISTRATOR by default) #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `role` | string | No | Page role to filter by: ADMINISTRATOR (default), CONTENT\_ADMINISTRATOR, DIRECT\_SPONSORED\_CONTENT\_POSTER, ANALYST, CURATOR, RECRUITING\_POSTER, LEAD\_CAPTURE\_ADMINISTRATOR, or LEAD\_GEN\_FORMS\_MANAGER | | `start` | number | No | Index of the first result (default 0) | | `count` | number | No | Results per page (default 10, max 100) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------- | | `organizations` | array | Pages the member holds the requested role on | | ↳ `organizationUrn` | string | Organization URN (urn:li:organization:\{id}) | | ↳ `organizationId` | string | Numeric organization ID | | ↳ `role` | string | Page role | | ↳ `state` | string | Role state (APPROVED) | | ↳ `roleAssignee` | string | Member person URN | --- # Linkup (/integrations/linkup) {/* MANUAL-CONTENT-START:intro */} [Linkup](https://linkup.so) is a powerful web search tool that integrates seamlessly with Agent Serve, allowing your AI agents to access up-to-date information from the web with proper source attribution. Linkup enhances your AI agents by providing them with the ability to search the web for current information. When integrated into your agent's toolkit: * **Real-time Information Access**: Agents can retrieve the latest information from the web, keeping responses current and relevant. * **Source Attribution**: All information comes with proper citations, ensuring transparency and credibility. * **Simple Implementation**: Add Linkup to your agents toolset with minimal configuration. * **Contextual Awareness**: Agents can use web information while maintaining their personality and conversational style. To implement Linkup in your agent, simply add the tool to your agent's configuration. Your agent will then be able to search the web whenever they need to answer questions requiring current information. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Linkup into the workflow. Can search the web. ## Actions [#actions] ### Linkup Search [#linkup-search] Search the web for information using Linkup #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `q` | string | Yes | The search query (e.g., "latest AI research papers 2024") | | `depth` | string | Yes | Search depth: "standard" for quick results, "deep" for comprehensive search | | `outputType` | string | Yes | Output format: "sourcedAnswer" for AI-generated answer with citations, "searchResults" for raw results | | `apiKey` | string | Yes | Enter your Linkup API key | | `includeImages` | boolean | No | Whether to include images in search results | | `fromDate` | string | No | Start date for filtering results (YYYY-MM-DD format) | | `toDate` | string | No | End date for filtering results (YYYY-MM-DD format) | | `excludeDomains` | string | No | Comma-separated list of domain names to exclude from search results | | `includeDomains` | string | No | Comma-separated list of domain names to restrict search results to | | `includeInlineCitations` | boolean | No | Add inline citations to answers (only applies when outputType is "sourcedAnswer") | | `includeSources` | boolean | No | Include sources in response | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------------------- | | `answer` | string | The sourced answer to the search query | | `sources` | array | Array of sources used to compile the answer, each containing name, url, and snippet | --- # Linq (/integrations/linq) {/* MANUAL-CONTENT-START:intro */} [Linq](https://linqapp.com/) is an API-first messaging platform that lets you reach people on iMessage, SMS, and RCS through real conversations. Linq handles the messaging plumbing — Apple and carrier delivery, group chats, read receipts, typing indicators, reactions, and attachments — behind a single REST API designed for programmatic access. **Why Linq?** * **iMessage, SMS, and RCS in one API:** Send and receive across all three channels from the same chats and phone numbers, with automatic delivery over the best available service. * **Rich conversations:** Media, link previews, screen and bubble effects, tapback reactions, inline replies, voice memos, and editable messages — not just plain text. * **Group chat management:** Create groups, add and remove participants, rename chats, update icons, and leave conversations. * **Capability checks:** Verify whether an address supports iMessage or RCS before you send, so you pick the right channel every time. * **Real-time webhooks:** Subscribe to message, reaction, participant, and call events with HMAC-SHA256 signature verification. **Using Linq in Agent Serve** Agent Serve's Linq integration connects your agentic workflows directly to Linq using an API key. With 34 operations spanning chats, messages, attachments, phone numbers, capability checks, contact cards, and webhook subscriptions, you can build conversational messaging automations without writing backend code. **Key benefits of using Linq in Agent Serve:** * **Conversational agents:** Send and read messages in iMessage, SMS, or RCS chats, react with tapbacks, and reply inline to build natural two-way conversations. * **Reliable delivery:** Check iMessage/RCS capability and set a preferred service so each message goes out over the right channel. * **Files and voice:** Upload attachments up to 100MB and send media or voice memos straight from your workflow. * **Event-driven flows:** Manage webhook subscriptions so workflows can react to inbound messages, reactions, and participant changes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Reach people on iMessage, SMS, and RCS through Linq. Start chats, send messages with media, links, effects, and replies, send voice memos, react with tapbacks, manage group participants, check iMessage/RCS capability, configure contact cards, and subscribe to webhook events — all through a single Linq API key. ## Actions [#actions] ### Add Participant [#add-participant] Add a participant to a group chat (3+ existing participants) #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the group chat | | `handle` | string | Yes | Phone number (E.164 format) or email address of the participant to add | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `message` | string | Human-readable status message | | `status` | string | Queued action status | | `traceId` | string | Trace ID for the queued action | ### Check iMessage Capability [#check-imessage-capability] Check whether an address (phone number or email) supports iMessage #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `address` | string | Yes | Phone number (E.164 format) or email address to check | | `from` | string | No | Sender phone number to check from (defaults to an available number) | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------- | | `address` | string | The address that was checked | | `available` | boolean | Whether the address supports iMessage | ### Check RCS Capability [#check-rcs-capability] Check whether an address (phone number or email) supports RCS #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `address` | string | Yes | Phone number (E.164 format) to check | | `from` | string | No | Sender phone number to check from (defaults to an available number) | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | -------------------------------- | | `address` | string | The address that was checked | | `available` | boolean | Whether the address supports RCS | ### Upload Attachment [#upload-attachment] Upload a file to Linq as a reusable attachment (max 100MB) and get an attachment ID to send in messages #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `file` | file | No | File to upload (a UserFile from a file-upload field or a previous block) | | `filename` | string | No | Override the file name (defaults to the uploaded file name) | | `contentType` | string | No | Override the MIME type (defaults to the uploaded file type) | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------ | | `attachmentId` | string | Reusable attachment ID to reference when sending messages or voice memos | | `downloadUrl` | string | URL the attachment can be downloaded from | | `filename` | string | File name | | `contentType` | string | MIME type of the file | | `sizeBytes` | number | File size in bytes | | `status` | string | Upload status | ### Create Chat [#create-chat] Start a new iMessage, SMS, or RCS chat and send the first message #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `from` | string | Yes | Sender phone number in E.164 format (e.g. +14155551234) | | `to` | array | Yes | Recipient handles (phone numbers in E.164 format or email addresses) | | `text` | string | No | Text content of the first message. Optional, but at least one of text, media, attachment, or link is required | | `mediaUrl` | string | No | Optional publicly accessible HTTPS URL of an image, video, or file to attach | | `attachmentId` | string | No | Optional ID of a pre-uploaded attachment to send instead of a media URL | | `preferredService` | string | No | Preferred delivery service: iMessage, SMS, or RCS | | `effectName` | string | No | Optional iMessage effect name (e.g. confetti, fireworks, lasers) | | `effectType` | string | No | Optional effect type: screen or bubble | | `replyToMessageId` | string | No | Optional message ID to reply to inline | | `replyToPartIndex` | number | No | Optional part index of the message being replied to | | `idempotencyKey` | string | No | Optional idempotency key to safely retry the request | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------------- | | `chatId` | string | ID of the created chat | | `displayName` | string | Display name of the chat | | `isGroup` | boolean | Whether the chat is a group chat | | `service` | string | Delivery service used (iMessage, SMS, RCS) | | `handles` | json | Participant handles in the chat | | `healthStatus` | json | Messaging line health status | | `message` | json | The sent message object with parts and delivery info | ### Create Contact Card [#create-contact-card] Set up a contact card (Name and Photo Sharing) for a phone number #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `phoneNumber` | string | Yes | Phone number in E.164 format the card applies to | | `firstName` | string | Yes | First name to display | | `lastName` | string | No | Last name to display | | `imageUrl` | string | No | Profile photo URL | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------- | -------------------------------- | | `phoneNumber` | string | Phone number the card applies to | | `firstName` | string | First name | | `lastName` | string | Last name | | `imageUrl` | string | Profile photo URL | | `isActive` | boolean | Whether the card is active | ### Create Webhook Subscription [#create-webhook-subscription] Subscribe an HTTPS endpoint to Linq webhook events #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `targetUrl` | string | Yes | HTTPS endpoint that will receive webhook events | | `subscribedEvents` | array | Yes | Event types to subscribe to (e.g. message.sent, message.delivered) | | `phoneNumbers` | array | No | E.164 phone numbers to filter events by (omit for all numbers) | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------- | | `id` | string | Subscription ID | | `targetUrl` | string | Endpoint that receives events | | `subscribedEvents` | json | Subscribed event types | | `phoneNumbers` | json | Filtered phone numbers (null = all) | | `isActive` | boolean | Whether the subscription is active | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | | `signingSecret` | string | HMAC-SHA256 signing secret. Store securely — it cannot be retrieved again | ### Delete Attachment [#delete-attachment] Permanently delete an attachment owned by your account #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `attachmentId` | string | Yes | The unique identifier of the attachment to delete | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the attachment was deleted | ### Delete Message [#delete-message] Delete a message from the Linq API only (does not unsend it; recipients still see it) #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `messageId` | string | Yes | The unique identifier of the message to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the message was deleted | ### Delete Webhook Subscription [#delete-webhook-subscription] Delete a webhook subscription from your account #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `subscriptionId` | string | Yes | The unique identifier of the webhook subscription to delete | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the subscription was deleted | ### Edit Message [#edit-message] Edit the text of a sent message (up to 5 times, within 15 minutes of sending; iMessage only) #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `messageId` | string | Yes | The unique identifier of the message to edit | | `text` | string | Yes | New text content for the message part | | `partIndex` | number | No | Index of the message part to edit (defaults to 0) | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------------------------- | | `id` | string | Message ID | | `chatId` | string | ID of the chat the message belongs to | | `isFromMe` | boolean | Whether the message was sent by you | | `deliveryStatus` | string | Delivery status (pending, queued, sent, delivered, received, read, failed) | | `isDelivered` | boolean | Whether the message was delivered (deprecated; use deliveryStatus) | | `isRead` | boolean | Whether the message was read (deprecated; use deliveryStatus) | | `service` | string | Delivery service (iMessage, SMS, RCS) | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | | `sentAt` | string | ISO 8601 sent timestamp | | `parts` | json | Updated message parts with reactions | | `message` | json | The full updated message object | ### Get Attachment [#get-attachment] Retrieve metadata for an attachment, including its download URL and status #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `attachmentId` | string | Yes | The unique identifier of the attachment | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------- | | `id` | string | Attachment ID | | `filename` | string | File name | | `contentType` | string | MIME type of the file | | `sizeBytes` | number | File size in bytes | | `status` | string | Upload status (pending, complete, failed) | | `downloadUrl` | string | URL to download the file | | `createdAt` | string | ISO 8601 creation timestamp | ### Get Chat [#get-chat] Retrieve a chat by ID, including participants and line health #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------- | | `id` | string | Chat ID | | `displayName` | string | Display name of the chat | | `isGroup` | boolean | Whether the chat is a group chat | | `isArchived` | boolean | Whether the chat is archived | | `service` | string | Delivery service (iMessage, SMS, RCS) | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | | `handles` | json | Participant handles in the chat | | `healthStatus` | json | Messaging line health status | ### Get Contact Card [#get-contact-card] Retrieve contact cards, optionally filtered by phone number #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `phoneNumber` | string | No | E.164 phone number to filter by (omit to return all cards) | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------- | ---------------------------- | | `contactCards` | array | Contact cards on the account | | ↳ `phoneNumber` | string | Phone number in E.164 format | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `imageUrl` | string | Profile photo URL | | ↳ `isActive` | boolean | Whether the card is active | ### Get Message [#get-message] Retrieve a single message by ID, including parts, reactions, and delivery status #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `messageId` | string | Yes | The unique identifier of the message | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------------------------- | | `id` | string | Message ID | | `chatId` | string | ID of the chat the message belongs to | | `isFromMe` | boolean | Whether the message was sent by you | | `deliveryStatus` | string | Delivery status (pending, queued, sent, delivered, received, read, failed) | | `isDelivered` | boolean | Whether the message was delivered (deprecated; use deliveryStatus) | | `isRead` | boolean | Whether the message was read (deprecated; use deliveryStatus) | | `service` | string | Delivery service (iMessage, SMS, RCS) | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | | `sentAt` | string | ISO 8601 sent timestamp | | `parts` | json | Message parts (text, media, link) with reactions | | `message` | json | The full message object | ### Get Webhook Subscription [#get-webhook-subscription] Retrieve a webhook subscription by ID #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `subscriptionId` | string | Yes | The unique identifier of the webhook subscription | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `id` | string | Subscription ID | | `targetUrl` | string | Endpoint that receives events | | `subscribedEvents` | json | Subscribed event types | | `phoneNumbers` | json | Filtered phone numbers (null = all) | | `isActive` | boolean | Whether the subscription is active | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | ### Leave Chat [#leave-chat] Leave an iMessage group chat (4+ active participants; not supported for direct chats) #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the group chat | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `message` | string | Human-readable status message | | `status` | string | Queued action status (e.g. accepted) | | `traceId` | string | Trace ID for the queued action | ### List Chats [#list-chats] List chats, optionally filtered by sender or participant handle #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `from` | string | No | Filter by sender phone number in E.164 format | | `to` | string | No | Filter by participant handle (phone number or email) | | `limit` | number | No | Results per page (default 20, max 100) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------------------- | | `chats` | json | Array of chat objects | | `nextCursor` | string | Cursor for the next page, or null if there are no more results | ### List Messages [#list-messages] List messages in a chat with pagination #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | | `limit` | number | No | Maximum number of messages to return | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-18] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------------------- | | `messages` | json | Array of message objects with parts and reactions | | `nextCursor` | string | Cursor for the next page, or null if there are no more results | ### List Phone Numbers [#list-phone-numbers] List all phone numbers assigned to your partner account, with line health #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------ | | `apiKey` | string | Yes | Linq API key | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------ | | `phoneNumbers` | array | Phone numbers assigned to the account | | ↳ `id` | string | Phone number ID | | ↳ `phoneNumber` | string | Phone number in E.164 format | | ↳ `forwardingNumber` | string | Forwarding number in E.164 format, or null | | ↳ `healthStatus` | json | Line reputation/health status (status, doc\_url) | ### List Thread Messages [#list-thread-messages] List all messages in the thread that contains a given message #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `messageId` | string | Yes | The ID of any message in the thread | | `order` | string | No | Sort order: asc (oldest first) or desc (newest first) | | `limit` | number | No | Maximum number of messages to return | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-20] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------------------- | | `messages` | json | Array of message objects in the thread | | `nextCursor` | string | Cursor for the next page, or null if there are no more results | ### List Webhook Events [#list-webhook-events] List all webhook event types available to subscribe to #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------ | | `apiKey` | string | Yes | Linq API key | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `events` | json | Available webhook event type names | | `docUrl` | string | Documentation URL for webhook events | ### List Webhook Subscriptions [#list-webhook-subscriptions] List all webhook subscriptions on your account #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------ | | `apiKey` | string | Yes | Linq API key | #### Output [#output-22] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------- | | `subscriptions` | array | Webhook subscriptions | | ↳ `id` | string | Subscription ID | | ↳ `targetUrl` | string | Endpoint that receives events | | ↳ `subscribedEvents` | json | Subscribed event types | | ↳ `phoneNumbers` | json | Filtered phone numbers (null = all) | | ↳ `isActive` | boolean | Whether the subscription is active | | ↳ `createdAt` | string | ISO 8601 creation timestamp | | ↳ `updatedAt` | string | ISO 8601 update timestamp | ### Mark Chat as Read [#mark-chat-as-read] Mark messages in a chat as read (only applies to 1:1 iMessage/RCS; no effect on group chats) #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the chat was marked as read | ### React to Message [#react-to-message] Add or remove a tapback reaction on a message #### Input [#input-24] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `messageId` | string | Yes | The unique identifier of the message to react to | | `operation` | string | Yes | Whether to add or remove the reaction: add or remove | | `type` | string | Yes | Reaction type: love, like, dislike, laugh, emphasize, question, custom, or sticker | | `customEmoji` | string | No | Emoji to use when type is custom | | `partIndex` | number | No | Index of the message part to react to (defaults to the entire message) | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `message` | string | Human-readable status message | | `status` | string | Queued action status | | `traceId` | string | Trace ID for the queued action | ### Remove Participant [#remove-participant] Remove a participant from a group chat (minimum 3 participants must remain) #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the group chat | | `handle` | string | Yes | Phone number (E.164 format) or email address of the participant to remove | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `message` | string | Human-readable status message | | `status` | string | Queued action status | | `traceId` | string | Trace ID for the queued action | ### Send Message [#send-message] Send a message to an existing chat, with optional media, link, effect, or reply #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | | `text` | string | No | Text content of the message. Optional, but at least one of text, media, attachment, or link is required | | `mediaUrl` | string | No | Optional publicly accessible HTTPS URL of an image, video, or file to attach | | `attachmentId` | string | No | Optional ID of a pre-uploaded attachment to send instead of a media URL | | `linkUrl` | string | No | Optional URL to send as a rich link preview. Linq requires a link to be its own message, so when set, text and media are ignored | | `preferredService` | string | No | Preferred delivery service: iMessage, SMS, or RCS | | `effectName` | string | No | Optional iMessage effect name (e.g. confetti, fireworks, lasers) | | `effectType` | string | No | Optional effect type: screen or bubble | | `replyToMessageId` | string | No | Optional message ID to reply to inline | | `replyToPartIndex` | number | No | Optional part index of the message being replied to | | `idempotencyKey` | string | No | Optional idempotency key to safely retry the request | #### Output [#output-26] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------- | | `chatId` | string | ID of the chat the message was sent to | | `messageId` | string | ID of the sent message | | `deliveryStatus` | string | Delivery status (pending, queued, sent, delivered, received, read, failed) | | `sentAt` | string | ISO 8601 timestamp the message was sent | | `service` | string | Delivery service (iMessage, SMS, RCS) | | `message` | json | The full sent message object with parts | ### Send Voice Memo [#send-voice-memo] Send a voice memo to a chat from a URL or a pre-uploaded attachment #### Input [#input-27] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | | `voiceMemoUrl` | string | No | Publicly accessible HTTPS URL of the audio file (MP3, M4A, AAC, CAF, WAV, AIFF, AMR) | | `attachmentId` | string | No | ID of a pre-uploaded audio attachment (use instead of voiceMemoUrl) | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------------------------------ | | `id` | string | ID of the sent voice memo message | | `status` | string | Delivery status | | `from` | string | Sender handle | | `to` | json | Recipient handles | | `service` | string | Delivery service (iMessage, SMS, RCS) | | `voiceMemo` | json | Audio file metadata (id, filename, mime\_type, size\_bytes, url, duration\_ms) | ### Share Contact Card [#share-contact-card] Share your configured contact card (Name and Photo Sharing) with a chat #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the contact card was shared | ### Start Typing Indicator [#start-typing-indicator] Show a typing indicator in a one-on-one chat (iMessage only, not group chats) #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------- | ------------------------------------- | | `success` | boolean | Whether the typing indicator was sent | ### Stop Typing Indicator [#stop-typing-indicator] Stop the typing indicator in a one-on-one chat (iMessage only, not group chats) #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the typing indicator was stopped | ### Update Chat [#update-chat] Update chat properties such as group display name and icon #### Input [#input-31] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `chatId` | string | Yes | The unique identifier of the chat | | `displayName` | string | No | New display name for the group chat | | `groupChatIcon` | string | No | New group chat icon (publicly accessible image URL) | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `chatId` | string | ID of the updated chat | | `status` | string | Status of the queued update | ### Update Contact Card [#update-contact-card] Partially update an existing active contact card for a phone number #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `phoneNumber` | string | Yes | Phone number in E.164 format identifying the card to update | | `firstName` | string | No | New first name | | `lastName` | string | No | New last name | | `imageUrl` | string | No | New profile photo URL | #### Output [#output-32] | Parameter | Type | Description | | ------------- | ------- | -------------------------------- | | `phoneNumber` | string | Phone number the card applies to | | `firstName` | string | First name | | `lastName` | string | Last name | | `imageUrl` | string | Profile photo URL | | `isActive` | boolean | Whether the card is active | ### Update Webhook Subscription [#update-webhook-subscription] Update a webhook subscription (target URL, events, phone filter, or active state) #### Input [#input-33] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Linq API key | | `subscriptionId` | string | Yes | The unique identifier of the webhook subscription | | `targetUrl` | string | No | New HTTPS endpoint that will receive events | | `subscribedEvents` | array | No | New set of event types to subscribe to | | `phoneNumbers` | array | No | New set of E.164 phone numbers to filter by | | `isActive` | boolean | No | Whether the subscription should be active | #### Output [#output-33] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------- | | `id` | string | Subscription ID | | `targetUrl` | string | Endpoint that receives events | | `subscribedEvents` | json | Subscribed event types | | `phoneNumbers` | json | Filtered phone numbers (null = all) | | `isActive` | boolean | Whether the subscription is active | | `createdAt` | string | ISO 8601 creation timestamp | | `updatedAt` | string | ISO 8601 update timestamp | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Linq Message Delivered [#linq-message-delivered] Trigger workflow when a message is delivered #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-34] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | *** ### Linq Message Failed [#linq-message-failed] Trigger workflow when a message fails to deliver #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-35] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | *** ### Linq Message Read [#linq-message-read] Trigger workflow when a message is read #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-36] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | *** ### Linq Message Received [#linq-message-received] Trigger workflow when an inbound message is received #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-37] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | *** ### Linq Reaction Added [#linq-reaction-added] Trigger workflow when a reaction is added to a message #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-38] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | *** ### Linq Webhook (All Events) [#linq-webhook-all-events] Trigger on any Linq webhook event (messages, reactions, chats, and more) #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. | | `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. | #### Output [#output-39] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------------------- | | `eventType` | string | Event type (e.g. message.received, message.delivered, reaction.added) | | `eventId` | string | Unique event identifier used for deduplication | | `createdAt` | string | ISO 8601 timestamp of when the event occurred | | `webhookVersion` | string | Payload schema version of the delivered event | | `data` | json | Full event payload (shape varies by event type — message, reaction, chat, etc.) | --- # Logfire (/integrations/logfire) {/* MANUAL-CONTENT-START:intro */} [Pydantic Logfire](https://pydantic.dev/logfire) is an observability platform built on OpenTelemetry. It collects the traces, logs, and metrics your services emit, stores every span in a queryable `records` table, and exposes that table through a read-only SQL API. With Logfire, you can: * **Search spans and logs**: Filter by message text, service, span name, severity, deployment environment, and whether an exception was recorded — no SQL required. * **Run SQL directly**: Query the `records` and `metrics` tables with PostgreSQL-compatible syntax for aggregations like error rates and latency percentiles. * **Reconstruct a request**: Pull every span in a trace, ordered earliest to latest, and walk the parent-child tree to see where time went and where it failed. * **Confirm a credential**: Resolve which organization and project a read token targets before querying it. Agent Serve's Logfire integration lets agents read production telemetry as part of a run. Use it to triage errors against a live service, attach a root-cause summary to an incident ticket, or watch latency between deploys and page when it regresses. Authentication uses a Logfire **read token**, which you create per project under Settings → Read tokens. The region is detected from the token's prefix, so Cloud users on US and EU need no extra configuration. Self-hosted instances set the Host field to their own base URL, which must be reachable over HTTPS at a publicly resolvable domain. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Pydantic Logfire into workflows. Run SQL over your observability data, search spans and logs with structured filters, pull an entire trace by ID, and confirm which project a read token targets. ## Actions [#actions] ### Logfire Query [#logfire-query] Run a read-only SQL query against Logfire traces, logs, and metrics. Reads the records and metrics tables using PostgreSQL-compatible syntax. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Logfire read token | | `region` | string | No | Logfire data region: auto, us, or eu. Auto reads the region from the token. | | `host` | string | No | Base URL of a self-hosted Logfire instance, e.g. [https://logfire.example.com](https://logfire.example.com). Overrides region. Leave blank for Logfire Cloud. | | `sql` | string | Yes | SQL SELECT query to run against the records or metrics table | | `minTimestamp` | string | No | ISO 8601 lower bound on start\_timestamp. Defaults to 2020-01-01T00:00:00Z when omitted. | | `maxTimestamp` | string | No | ISO 8601 upper bound on start\_timestamp | | `limit` | number | No | Maximum rows to return. Logfire defaults to 100 and caps at 10000. | | `timezone` | string | No | IANA timezone used to evaluate the query, for example Europe/Paris | | `environment` | string | No | Restrict results to a single deployment environment | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------- | | `rows` | array | Result rows. Row fields depend on the query projection. | | `columns` | array | Column metadata for the result set | | ↳ `name` | string | Column name | | ↳ `datatype` | json | Arrow datatype of the column | | ↳ `nullable` | boolean | Whether the column is nullable | | `rowCount` | number | Number of rows returned | ### Logfire Search Records [#logfire-search-records] Search Logfire spans and logs using structured filters for message text, service, span name, severity, environment, and exceptions. Returns the most recent matches first without writing SQL. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Logfire read token | | `region` | string | No | Logfire data region: auto, us, or eu. Auto reads the region from the token. | | `host` | string | No | Base URL of a self-hosted Logfire instance, e.g. [https://logfire.example.com](https://logfire.example.com). Overrides region. Leave blank for Logfire Cloud. | | `query` | string | No | Case-insensitive text to match within the record message | | `service` | string | No | Exact service name to filter on | | `spanName` | string | No | Exact span name to filter on | | `minLevel` | string | No | Minimum severity to include: trace, debug, info, notice, warn, error, or fatal | | `exceptionsOnly` | boolean | No | Only return records that recorded an exception | | `environment` | string | No | Restrict results to a single deployment environment | | `minTimestamp` | string | No | ISO 8601 lower bound on start\_timestamp. Defaults to 2020-01-01T00:00:00Z when omitted. | | `maxTimestamp` | string | No | ISO 8601 upper bound on start\_timestamp | | `limit` | number | No | Maximum records to return. Logfire defaults to 100 and caps at 10000. | #### Output [#output-1] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------------------------- | | `rows` | array | Matching spans and logs, most recent first | | ↳ `startTimestamp` | string | UTC time the span started | | ↳ `endTimestamp` | string | UTC time the span ended | | ↳ `duration` | number | Span duration in seconds. Null for logs. | | ↳ `level` | string | Severity name, such as info, warn, or error | | ↳ `message` | string | Human-readable message | | ↳ `spanName` | string | Template label for similar records | | ↳ `kind` | string | Record kind: span, log, span\_event, or pending\_span | | ↳ `serviceName` | string | Service that emitted the record | | ↳ `deploymentEnvironment` | string | Deployment environment of the record | | ↳ `traceId` | string | Trace this record belongs to | | ↳ `spanId` | string | Identifier of this span | | ↳ `parentSpanId` | string | Parent span identifier | | ↳ `isException` | boolean | Whether an exception was recorded on the span | | ↳ `exceptionType` | string | Fully qualified exception class name | | ↳ `exceptionMessage` | string | Exception message | | `rowCount` | number | Number of rows returned | | `sql` | string | SQL query that was executed against Logfire | ### Logfire Get Trace [#logfire-get-trace] Fetch every span and log belonging to a Logfire trace, ordered from earliest to latest, so a single request can be reconstructed end to end. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Logfire read token | | `region` | string | No | Logfire data region: auto, us, or eu. Auto reads the region from the token. | | `host` | string | No | Base URL of a self-hosted Logfire instance, e.g. [https://logfire.example.com](https://logfire.example.com). Overrides region. Leave blank for Logfire Cloud. | | `traceId` | string | Yes | 32-character hexadecimal trace identifier | | `minTimestamp` | string | No | ISO 8601 lower bound on start\_timestamp. Defaults to 2020-01-01T00:00:00Z when omitted. | | `maxTimestamp` | string | No | ISO 8601 upper bound on start\_timestamp | | `limit` | number | No | Maximum spans to return. Logfire defaults to 100 and caps at 10000. | #### Output [#output-2] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------------------------- | | `rows` | array | Spans and logs in the trace, earliest first | | ↳ `startTimestamp` | string | UTC time the span started | | ↳ `endTimestamp` | string | UTC time the span ended | | ↳ `duration` | number | Span duration in seconds. Null for logs. | | ↳ `level` | string | Severity name, such as info, warn, or error | | ↳ `message` | string | Human-readable message | | ↳ `spanName` | string | Template label for similar records | | ↳ `kind` | string | Record kind: span, log, span\_event, or pending\_span | | ↳ `serviceName` | string | Service that emitted the record | | ↳ `deploymentEnvironment` | string | Deployment environment of the record | | ↳ `traceId` | string | Trace this record belongs to | | ↳ `spanId` | string | Identifier of this span | | ↳ `parentSpanId` | string | Parent span identifier | | ↳ `isException` | boolean | Whether an exception was recorded on the span | | ↳ `exceptionType` | string | Fully qualified exception class name | | ↳ `exceptionMessage` | string | Exception message | | `rowCount` | number | Number of rows returned | | `sql` | string | SQL query that was executed against Logfire | ### Logfire Get Token Info [#logfire-get-token-info] Resolve which Logfire organization and project a read token belongs to. Useful for confirming a credential targets the expected project before querying it. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Logfire read token | | `region` | string | No | Logfire data region: auto, us, or eu. Auto reads the region from the token. | | `host` | string | No | Base URL of a self-hosted Logfire instance, e.g. [https://logfire.example.com](https://logfire.example.com). Overrides region. Leave blank for Logfire Cloud. | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------ | --------------------------------------------------------------------------------------------------------- | | `organizationName` | string | Logfire organization the read token belongs to | | `projectName` | string | Logfire project the read token belongs to | | `expiresAt` | string | When the read token expires. Null when it never expires. | | `spendingCapReachedAt` | string | When the organization's spending cap was reached, which stops queries. Null when it has not been reached. | --- # LogRocket (/integrations/logrocket) {/* MANUAL-CONTENT-START:intro */} [LogRocket](https://logrocket.com/) is a session replay and product analytics platform for frontend applications. It records what users actually did — clicks, navigation, network requests, console output, and application state — so teams can see the exact path that led to a bug, a drop-off, or a support ticket instead of asking the customer to reproduce it. With LogRocket, you can: * **Summarize sessions with AI**: Galileo Highlights reads a user's sessions and answers a plain-English question about them, returning a markdown summary plus per-session breakdowns. * **Identify users**: Attach names, emails, and custom traits to a user so sessions can be segmented by plan, lifecycle stage, or account value. * **Export session data**: Pull download URLs for JSON Lines session exports and load them into a warehouse. * **Audit session access**: Page through the audit log to see who viewed which sessions and when. * **Tag releases**: Register a deployed version so uploaded source maps decode its stack traces. Agent Serve's LogRocket integration lets your agents run these operations programmatically. Use it to enrich a support ticket with a session summary, turn a vague bug report into reproduction steps, keep user traits in sync with your CRM, or register a release as part of a deploy workflow. Highlights requests are asynchronous: **Request Highlights** returns an ID and **Get Highlights** reports `PENDING` until generation finishes (typically one to three minutes), then `READY` or `FAILED`. Poll it rather than expecting the summary immediately. LogRocket has no REST API for querying sessions, issues, or metrics directly — that data is available through their [MCP server](https://docs.logrocket.com/docs/mcp) at `https://mcp.logrocket.com/mcp`, which you can add to Agent Serve as an MCP server connection alongside this block. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate LogRocket into your workflow to request AI session highlights for a user, poll for the result, list exported session files, read the audit log, create or update user profiles, and register releases so source maps decode their stack traces. ## Actions [#actions] ### LogRocket Request Highlights [#logrocket-request-highlights] Start a Galileo session highlights job for a user. Returns a request ID to poll with LogRocket's Get Highlights operation. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `userEmail` | string | No | Email of the user to summarize. Required if no user ID is given. | | `userID` | string | No | ID of the user to summarize. Required if no email is given. | | `question` | string | No | Question to focus the highlights on | | `startMs` | string | No | Start of the session window, in milliseconds since epoch | | `endMs` | string | No | End of the session window, in milliseconds since epoch | | `webhookURL` | string | No | URL notified when the highlights job finishes | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------- | | `id` | string | Request ID used to retrieve the highlights result | ### LogRocket Get Highlights [#logrocket-get-highlights] Retrieve the result of a Galileo session highlights request. Status is PENDING until generation finishes, then READY or FAILED. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `id` | string | Yes | Request ID returned by the Request Highlights operation | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------- | | `status` | string | Job status: PENDING, READY, or FAILED | | `requestID` | string | ID of the highlights request | | `appID` | string | LogRocket project the request belongs to | | `highlights` | string | Markdown summary across the matched sessions. Present when status is READY. | | `sessions` | array | Per-session highlights | | ↳ `recordingID` | string | LogRocket recording ID | | ↳ `sessionID` | number | Session number within the recording | | ↳ `highlights` | string | Highlights for this session | ### LogRocket List Exported Sessions [#logrocket-list-exported-sessions] List exported session files from the LogRocket Data Export API. Returns download URLs for JSON Lines exports, oldest first, plus a cursor for the next page. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `cursor` | string | No | Cursor from a previous page, used to fetch newer sessions | | `limit` | string | No | Results per page. Defaults to 10, maximum 100. | | `date` | string | No | Unix timestamp in milliseconds to start listing from | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------- | | `sessions` | array | Exported session files | | ↳ `url` | string | Download URL for the JSON Lines export file | | `cursor` | string | Opaque cursor for the next page of results | ### LogRocket Get Audit Logs [#logrocket-get-audit-logs] Export audit log entries from LogRocket, recording who viewed sessions and what actions were taken. Paginated with a cursor. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `limit` | string | No | Number of audit log records to return | | `cursor` | string | No | Cursor from a previous page, used to fetch the next page | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------- | | `logs` | array | Audit log entries | | ↳ `time` | string | Formatted timestamp of the action | | ↳ `createdDate` | string | ISO 8601 timestamp of the action | | ↳ `user` | string | Email or system ID of the actor | | ↳ `action` | string | Action taken, e.g. Viewed session | | ↳ `description` | string | Action details, e.g. the session ID | | `cursor` | string | Opaque cursor for the next page of results | | `hasNext` | boolean | Whether more audit logs exist beyond this page | ### LogRocket Identify User [#logrocket-identify-user] Create or update a LogRocket user profile with demographic, financial, and engagement traits. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `userId` | string | Yes | ID of the user to create or update | | `name` | string | No | Display name of the user. Maximum 1024 characters. | | `email` | string | No | Email of the user. Maximum 1024 characters. | | `timestamp` | string | No | Unix timestamp in milliseconds describing when the submitted data was true | | `traits` | string | No | JSON object of custom traits. Each key and value is limited to 1024 characters and stored as a string. | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------- | | `userID` | string | ID of the created or updated user | | `name` | string | Display name stored on the profile | | `email` | string | Email stored on the profile | | `traits` | json | Custom traits stored on the profile, with every value coerced to a string | ### LogRocket Create Release [#logrocket-create-release] Register a release version in LogRocket so uploaded source maps can decode stack traces for it. Fails with a conflict if the version already exists. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | LogRocket API key | | `orgId` | string | Yes | LogRocket organization ID | | `appId` | string | Yes | LogRocket project (app) ID | | `apiHost` | string | No | API host override for Private Cloud deployments | | `version` | string | Yes | Release version to register, e.g. 1.2.3 or a commit SHA | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ----------------------------------- | | `version` | string | Release version that was registered | --- # Logs (/integrations/logs) {/* MANUAL-CONTENT-START:intro */} The Logs block queries workflow run history in the current workspace. **Query Logs** filters runs and returns matching run IDs; **Get Run Details** retrieves one run’s status, trigger, timing, cost, final output, and trace spans. See [Using Logs in Workflows](/workflows/blocks/logs) for a query-and-inspect example. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Query workflow run logs in the current workspace with the same filters as the Logs page, returning matching run IDs. Fetch full details for a single run, including its trace spans. ## Actions [#actions] ### Query Logs [#query-logs] Query workflow run logs in the current workspace with the full Logs-page filter set. Returns matching run IDs. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `workflowIds` | string | No | Comma-separated workflow IDs to filter by | | `folderIds` | string | No | Comma-separated folder IDs to filter by (descendants included) | | `level` | string | No | Comma-separated statuses: 'info', 'error', 'running', 'pending', 'cancelled'. Omit for all. | | `triggers` | string | No | Comma-separated trigger types (api, webhook, schedule, manual, chat, mcp, workflow, agent\_serve, …) | | `startDate` | string | No | ISO 8601 timestamp; only runs at or after this time | | `endDate` | string | No | ISO 8601 timestamp; only runs at or before this time | | `search` | string | No | Free-text search across log fields | | `costOperator` | string | No | Cost comparison operator: '=', '>', '\<', '>=', '\<=', '!=' | | `costValue` | number | No | Cost threshold in credits, compared using costOperator | | `durationOperator` | string | No | Duration comparison operator: '=', '>', '\<', '>=', '\<=', '!=' | | `durationValue` | number | No | Duration threshold in milliseconds, compared using durationOperator | | `limit` | number | No | Max run IDs to return (default 100, max 200) | | `sortBy` | string | No | Sort field: 'date' (default), 'duration', 'cost', 'status' | | `sortOrder` | string | No | Sort order: 'desc' (default) or 'asc' | #### Output [#output] | Parameter | Type | Description | | --------- | ----- | ------------------------------------ | | `runIds` | array | IDs of the runs matching the filters | ### Get Run Details [#get-run-details] Fetch details for a single workflow run by its run ID, including the full trace spans. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `runId` | string | Yes | The run ID to fetch details for | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `runId` | string | The run ID | | `workflowId` | string | Workflow ID this run belongs to | | `workflowName` | string | Workflow name | | `status` | string | Run status | | `trigger` | string | How the run was triggered | | `startedAt` | string | Run start time (ISO 8601) | | `durationMs` | number | Run duration in milliseconds | | `cost` | number | Run cost in credits | | `traceSpans` | array | Full trace spans for the run | | `finalOutput` | json | Final output of the run | --- # Loops (/integrations/loops) {/* MANUAL-CONTENT-START:intro */} Use [Loops](https://loops.so/) to manage contacts, send transactional emails, and trigger email sequences with events. Update Contact creates a contact when no match exists. Configure an API key from Loops **Settings > API** before selecting an operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Loops into the workflow. Create and manage contacts, send transactional emails, and trigger event-based automations. ## Actions [#actions] ### Loops Create Contact [#loops-create-contact] Create a new contact in your Loops audience with an email address and optional properties like name, user group, and mailing list subscriptions. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | Yes | The email address for the new contact | | `firstName` | string | No | The contact first name | | `lastName` | string | No | The contact last name | | `source` | string | No | Custom source value replacing the default "API" | | `subscribed` | boolean | No | Whether the contact receives campaign emails (defaults to true) | | `userGroup` | string | No | Group to segment the contact into (one group per contact) | | `userId` | string | No | Unique user identifier from your application | | `mailingLists` | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) | | `customProperties` | json | No | Custom contact properties as key-value pairs (string, number, boolean, or date values) | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the contact was created successfully | | `id` | string | The Loops-assigned ID of the created contact | ### Loops Update Contact [#loops-update-contact] Update an existing contact in Loops by email or userId. Creates a new contact if no match is found (upsert). Can update name, subscription status, user group, mailing lists, and custom properties. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The contact email address (at least one of email or userId is required) | | `userId` | string | No | The contact userId (at least one of email or userId is required) | | `firstName` | string | No | The contact first name | | `lastName` | string | No | The contact last name | | `source` | string | No | Custom source value replacing the default "API" | | `subscribed` | boolean | No | Whether the contact receives campaign emails (sending true re-subscribes unsubscribed contacts) | | `userGroup` | string | No | Group to segment the contact into (one group per contact) | | `mailingLists` | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) | | `customProperties` | json | No | Custom contact properties as key-value pairs (send null to reset a property) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------- | | `success` | boolean | Whether the contact was updated successfully | | `id` | string | The Loops-assigned ID of the updated or created contact | ### Loops Find Contact [#loops-find-contact] Find a contact in Loops by email address or userId. Returns an array of matching contacts with all their properties including name, subscription status, user group, and mailing lists. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The contact email address to search for (at least one of email or userId is required) | | `userId` | string | No | The contact userId to search for (at least one of email or userId is required) | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------- | | `contacts` | array | Array of matching contact objects (empty array if no match found) | | ↳ `id` | string | Loops-assigned contact ID | | ↳ `email` | string | Contact email address | | ↳ `firstName` | string | Contact first name | | ↳ `lastName` | string | Contact last name | | ↳ `source` | string | Source the contact was created from | | ↳ `subscribed` | boolean | Whether the contact receives campaign emails | | ↳ `userGroup` | string | Contact user group | | ↳ `userId` | string | External user identifier | | ↳ `mailingLists` | object | Mailing list IDs mapped to subscription status | | ↳ `optInStatus` | string | Double opt-in status: pending, accepted, rejected, or null | ### Loops Delete Contact [#loops-delete-contact] Delete a contact from Loops by email address or userId. At least one identifier must be provided. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The email address of the contact to delete (at least one of email or userId is required) | | `userId` | string | No | The userId of the contact to delete (at least one of email or userId is required) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the contact was deleted successfully | | `message` | string | Status message from the API | ### Loops Send Transactional Email [#loops-send-transactional-email] Send a transactional email to a recipient using a Loops template. Supports dynamic data variables for personalization and optionally adds the recipient to your audience. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | Yes | The email address of the recipient | | `transactionalId` | string | Yes | The ID of the transactional email template to send | | `dataVariables` | json | No | Template data variables as key-value pairs (string or number values) | | `addToAudience` | boolean | No | Whether to create the recipient as a contact if they do not already exist (default: false) | | `attachments` | json | No | Array of file attachments. Each object must have filename (string), contentType (MIME type string), and data (base64-encoded string). | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the transactional email was sent successfully | ### Loops Send Event [#loops-send-event] Send an event to Loops to trigger automated email sequences for a contact. Identify the contact by email or userId and include optional event properties and mailing list changes. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The email address of the contact (at least one of email or userId is required) | | `userId` | string | No | The userId of the contact (at least one of email or userId is required) | | `eventName` | string | Yes | The name of the event to trigger | | `eventProperties` | json | No | Event data as key-value pairs (string, number, boolean, or date values) | | `mailingLists` | json | No | Mailing list IDs mapped to boolean values (true to subscribe, false to unsubscribe) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether the event was sent successfully | ### Loops List Mailing Lists [#loops-list-mailing-lists] Retrieve all mailing lists from your Loops account. Returns each list with its ID, name, description, and public/private status. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------- | | `mailingLists` | array | Array of mailing list objects | | ↳ `id` | string | The mailing list ID | | ↳ `name` | string | The mailing list name | | ↳ `description` | string | The mailing list description (null if not set) | | ↳ `isPublic` | boolean | Whether the list is public or private | ### Loops List Transactional Emails [#loops-list-transactional-emails] Retrieve a list of published transactional email templates from your Loops account. Returns each template with its ID, name, created/updated timestamps, and data variables. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `perPage` | string | No | Number of results per page (10-50, default: 20) | | `cursor` | string | No | Pagination cursor from a previous response to fetch the next page | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------------------- | | `transactionalEmails` | array | Array of published transactional email templates | | ↳ `id` | string | The transactional email template ID | | ↳ `name` | string | The template name | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last updated timestamp (ISO 8601) | | ↳ `lastUpdated` | string | Deprecated alias of updatedAt, kept for backwards compatibility | | ↳ `dataVariables` | array | Template data variable names | | `pagination` | object | Pagination information | | ↳ `totalResults` | number | Total number of results | | ↳ `returnedResults` | number | Number of results returned | | ↳ `perPage` | number | Results per page | | ↳ `totalPages` | number | Total number of pages | | ↳ `nextCursor` | string | Cursor for next page (null if no more pages) | | ↳ `nextPage` | string | URL for next page (null if no more pages) | ### Loops Create Contact Property [#loops-create-contact-property] Create a new custom contact property in your Loops account. The property name must be in camelCase format. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `name` | string | Yes | The property name in camelCase format (e.g., "favoriteColor") | | `type` | string | Yes | The property data type (e.g., "string", "number", "boolean", "date") | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the contact property was created successfully | ### Loops List Contact Properties [#loops-list-contact-properties] Retrieve a list of contact properties from your Loops account. Returns each property with its key, label, and data type. Can filter to show all properties or only custom ones. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `list` | string | No | Filter type: "all" for all properties (default) or "custom" for custom properties only | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------ | | `properties` | array | Array of contact property objects | | ↳ `key` | string | The property key (camelCase identifier) | | ↳ `label` | string | The property display label | | ↳ `type` | string | The property data type (string, number, boolean, date) | ### Loops Check Contact Suppression [#loops-check-contact-suppression] Check whether a Loops contact is on the suppression list (bounced, complained, or unsubscribed) by email address or userId. #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The contact email address to check (at least one of email or userId is required) | | `userId` | string | No | The contact userId to check (at least one of email or userId is required) | #### Output [#output-10] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `contactId` | string | The Loops-assigned contact ID | | `email` | string | The contact email address | | `userId` | string | The contact userId | | `isSuppressed` | boolean | Whether the contact is on the suppression list | | `removalQuotaLimit` | number | Total suppression-removal quota for the team | | `removalQuotaRemaining` | number | Remaining suppression-removal quota for the team | ### Loops Remove Contact Suppression [#loops-remove-contact-suppression] Remove a Loops contact from the suppression list by email address or userId, allowing them to receive emails again. Subject to a team removal quota. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Loops API key for authentication | | `email` | string | No | The contact email address to remove from suppression (at least one of email or userId is required) | | `userId` | string | No | The contact userId to remove from suppression (at least one of email or userId is required) | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------- | | `success` | boolean | Whether the contact was removed from suppression successfully | | `message` | string | Status message from the API | | `removalQuotaLimit` | number | Total suppression-removal quota for the team | | `removalQuotaRemaining` | number | Remaining suppression-removal quota for the team | ### Loops Get Transactional Email [#loops-get-transactional-email] Retrieve a single transactional email template from your Loops account by its ID, including its data variables and draft/published message IDs. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Loops API key for authentication | | `transactionalId` | string | Yes | The ID of the transactional email template to retrieve | #### Output [#output-12] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------------------------- | | `id` | string | The transactional email template ID | | `name` | string | The template name | | `draftEmailMessageId` | string | ID of the draft email message, if any | | `publishedEmailMessageId` | string | ID of the published email message, if any | | `transactionalGroupId` | string | ID of the transactional group this template belongs to, if any | | `createdAt` | string | Creation timestamp (ISO 8601) | | `updatedAt` | string | Last updated timestamp (ISO 8601) | | `dataVariables` | array | Template data variable names | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Loops Campaign Email Sent [#loops-campaign-email-sent] Trigger workflow when a Loops campaign email is sent #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-13] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------------------------------- | | `eventName` | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `campaignId` | string | Campaign ID, present on campaign.email.sent | | `campaignName` | string | Campaign name, present on campaign.email.sent | | `loopId` | string | Loop (workflow) ID, present on loop.email.sent | | `loopName` | string | Loop (workflow) name, present on loop.email.sent | | `transactionalId` | string | Transactional email ID, present on transactional.email.sent | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | | `mailingLists` | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends | *** ### Loops Email Clicked [#loops-email-clicked] Trigger workflow when a link in a Loops email is clicked #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-14] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------ | | `eventName` | string | Event type (e.g., email.delivered, email.opened, email.clicked) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `sourceType` | string | Source of the email: "campaign", "loop", or "transactional" | | `campaignId` | string | Campaign ID, present when sourceType is "campaign" | | `loopId` | string | Loop (workflow) ID, present when sourceType is "loop" | | `transactionalId` | string | Transactional email ID, present when sourceType is "transactional" | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | *** ### Loops Email Delivered [#loops-email-delivered] Trigger workflow when a Loops email is delivered #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------ | | `eventName` | string | Event type (e.g., email.delivered, email.opened, email.clicked) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `sourceType` | string | Source of the email: "campaign", "loop", or "transactional" | | `campaignId` | string | Campaign ID, present when sourceType is "campaign" | | `loopId` | string | Loop (workflow) ID, present when sourceType is "loop" | | `transactionalId` | string | Transactional email ID, present when sourceType is "transactional" | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | *** ### Loops Email Hard Bounced [#loops-email-hard-bounced] Trigger workflow when a Loops email hard bounces #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-16] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------ | | `eventName` | string | Event type (e.g., email.delivered, email.opened, email.clicked) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `sourceType` | string | Source of the email: "campaign", "loop", or "transactional" | | `campaignId` | string | Campaign ID, present when sourceType is "campaign" | | `loopId` | string | Loop (workflow) ID, present when sourceType is "loop" | | `transactionalId` | string | Transactional email ID, present when sourceType is "transactional" | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | *** ### Loops Email Opened [#loops-email-opened] Trigger workflow when a Loops email is opened #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-17] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------ | | `eventName` | string | Event type (e.g., email.delivered, email.opened, email.clicked) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `sourceType` | string | Source of the email: "campaign", "loop", or "transactional" | | `campaignId` | string | Campaign ID, present when sourceType is "campaign" | | `loopId` | string | Loop (workflow) ID, present when sourceType is "loop" | | `transactionalId` | string | Transactional email ID, present when sourceType is "transactional" | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | *** ### Loops Email Soft Bounced [#loops-email-soft-bounced] Trigger workflow when a Loops email soft bounces #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-18] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------ | | `eventName` | string | Event type (e.g., email.delivered, email.opened, email.clicked) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `sourceType` | string | Source of the email: "campaign", "loop", or "transactional" | | `campaignId` | string | Campaign ID, present when sourceType is "campaign" | | `loopId` | string | Loop (workflow) ID, present when sourceType is "loop" | | `transactionalId` | string | Transactional email ID, present when sourceType is "transactional" | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | *** ### Loops Loop Email Sent [#loops-loop-email-sent] Trigger workflow when a Loops loop email is sent #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-19] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------------------------------- | | `eventName` | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `campaignId` | string | Campaign ID, present on campaign.email.sent | | `campaignName` | string | Campaign name, present on campaign.email.sent | | `loopId` | string | Loop (workflow) ID, present on loop.email.sent | | `loopName` | string | Loop (workflow) name, present on loop.email.sent | | `transactionalId` | string | Transactional email ID, present on transactional.email.sent | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | | `mailingLists` | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends | *** ### Loops Transactional Email Sent [#loops-transactional-email-sent] Trigger workflow when a Loops transactional email is sent #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `signingSecret` | string | Yes | Required to verify the webhook signature from Loops. | #### Output [#output-20] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------------------------------------- | | `eventName` | string | Event type (e.g., campaign.email.sent, loop.email.sent, transactional.email.sent) | | `eventTime` | number | Unix timestamp (seconds) when the event occurred | | `webhookSchemaVersion` | string | Webhook schema version (e.g., "1.0.0") | | `campaignId` | string | Campaign ID, present on campaign.email.sent | | `campaignName` | string | Campaign name, present on campaign.email.sent | | `loopId` | string | Loop (workflow) ID, present on loop.email.sent | | `loopName` | string | Loop (workflow) name, present on loop.email.sent | | `transactionalId` | string | Transactional email ID, present on transactional.email.sent | | `email` | json | Email object from the payload (id, emailMessageId, subject) | | `emailId` | string | Unique email ID (payload `email.id`) | | `emailMessageId` | string | Sent email message ID (payload `email.emailMessageId`) | | `subject` | string | Email subject line (payload `email.subject`) | | `contactIdentity` | json | Contact identity object from the payload (id, email, userId) | | `contactId` | string | Contact ID (payload `contactIdentity.id`) | | `contactEmail` | string | Contact email address (payload `contactIdentity.email`) | | `userId` | string | Contact user ID, when set (payload `contactIdentity.userId`) | | `mailingLists` | json | Mailing lists the send targeted (id, name, description, isPublic); present on campaign and loop sends | --- # Luma (/integrations/luma) {/* MANUAL-CONTENT-START:intro */} [Luma](https://lu.ma/) is an event management platform that makes it easy to create, manage, and share events with your community. With Luma integrated into Agent Serve, your agents can: * **Create events**: Set up new events with name, time, timezone, description, and visibility settings. * **Update events**: Modify existing event details like name, time, description, and visibility. * **Get event details**: Retrieve full details for any event by its ID. * **List calendar events**: Browse your calendar's events with date range filtering and pagination. * **Manage guest lists**: View attendees for an event, filtered by approval status. * **Add guests**: Invite new guests to events programmatically. By connecting Agent Serve with Luma, you can automate event operations within your agent workflows. Automatically create events based on triggers, sync guest lists, monitor registrations, and manage your event calendar—all handled directly by your agents via the Luma API. Whether you're running community meetups, conferences, or internal team events, the Luma tool makes it easy to coordinate event management within your Agent Serve workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Luma into the workflow. Can create, update, look up, and cancel events, list calendar events, manage guest lists (get one or many, add guests, send invites, and update approval status). ## Actions [#actions] ### Luma Get Event [#luma-get-event] Retrieve details of a Luma event including name, time, location, hosts, and visibility settings. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID (starts with evt-) | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------ | | `event` | object | Event details | | ↳ `id` | string | Event ID | | ↳ `name` | string | Event name | | ↳ `startAt` | string | Event start time (ISO 8601) | | ↳ `endAt` | string | Event end time (ISO 8601) | | ↳ `timezone` | string | Event timezone (IANA) | | ↳ `durationInterval` | string | Event duration (ISO 8601 interval, e.g. PT2H) | | ↳ `createdAt` | string | Event creation timestamp (ISO 8601) | | ↳ `description` | string | Event description (plain text) | | ↳ `descriptionMd` | string | Event description (Markdown) | | ↳ `coverUrl` | string | Event cover image URL | | ↳ `url` | string | Event page URL on lu.ma | | ↳ `visibility` | string | Event visibility (public, members-only, private) | | ↳ `meetingUrl` | string | Virtual meeting URL | | ↳ `geoAddressJson` | json | Structured location/address data | | ↳ `geoLatitude` | string | Venue latitude coordinate | | ↳ `geoLongitude` | string | Venue longitude coordinate | | ↳ `calendarId` | string | Associated calendar ID | | `hosts` | array | Event hosts | | ↳ `id` | string | Host ID | | ↳ `name` | string | Host display name | | ↳ `firstName` | string | Host first name | | ↳ `lastName` | string | Host last name | | ↳ `email` | string | Host email address | | ↳ `avatarUrl` | string | Host avatar image URL | ### Luma Create Event [#luma-create-event] Create a new event on Luma with a name, start time, timezone, and optional details like description, location, and visibility. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Luma API key | | `name` | string | Yes | Event name/title | | `startAt` | string | Yes | Event start time in ISO 8601 format (e.g., 2025-03-15T18:00:00Z) | | `timezone` | string | Yes | IANA timezone (e.g., America/New\_York, Europe/London) | | `endAt` | string | No | Event end time in ISO 8601 format (e.g., 2025-03-15T20:00:00Z) | | `durationInterval` | string | No | Event duration as ISO 8601 interval (e.g., PT2H for 2 hours, PT30M for 30 minutes). Used if endAt is not provided. | | `descriptionMd` | string | No | Event description in Markdown format | | `meetingUrl` | string | No | Virtual meeting URL for online events (e.g., Zoom, Google Meet link) | | `visibility` | string | No | Event visibility: public, members-only, or private (defaults to public) | | `coverUrl` | string | No | Cover image URL (must be a Luma CDN URL from images.lumacdn.com) | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------ | | `event` | object | Created event details | | ↳ `id` | string | Event ID | | ↳ `name` | string | Event name | | ↳ `startAt` | string | Event start time (ISO 8601) | | ↳ `endAt` | string | Event end time (ISO 8601) | | ↳ `timezone` | string | Event timezone (IANA) | | ↳ `durationInterval` | string | Event duration (ISO 8601 interval, e.g. PT2H) | | ↳ `createdAt` | string | Event creation timestamp (ISO 8601) | | ↳ `description` | string | Event description (plain text) | | ↳ `descriptionMd` | string | Event description (Markdown) | | ↳ `coverUrl` | string | Event cover image URL | | ↳ `url` | string | Event page URL on lu.ma | | ↳ `visibility` | string | Event visibility (public, members-only, private) | | ↳ `meetingUrl` | string | Virtual meeting URL | | ↳ `geoAddressJson` | json | Structured location/address data | | ↳ `geoLatitude` | string | Venue latitude coordinate | | ↳ `geoLongitude` | string | Venue longitude coordinate | | ↳ `calendarId` | string | Associated calendar ID | | `hosts` | array | Event hosts | | ↳ `id` | string | Host ID | | ↳ `name` | string | Host display name | | ↳ `firstName` | string | Host first name | | ↳ `lastName` | string | Host last name | | ↳ `email` | string | Host email address | | ↳ `avatarUrl` | string | Host avatar image URL | ### Luma Update Event [#luma-update-event] Update an existing Luma event. Only the fields you provide will be changed; all other fields remain unchanged. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID to update (starts with evt-) | | `name` | string | No | New event name/title | | `startAt` | string | No | New start time in ISO 8601 format (e.g., 2025-03-15T18:00:00Z) | | `timezone` | string | No | New IANA timezone (e.g., America/New\_York, Europe/London) | | `endAt` | string | No | New end time in ISO 8601 format (e.g., 2025-03-15T20:00:00Z) | | `durationInterval` | string | No | New duration as ISO 8601 interval (e.g., PT2H for 2 hours). Used if endAt is not provided. | | `descriptionMd` | string | No | New event description in Markdown format | | `meetingUrl` | string | No | New virtual meeting URL (e.g., Zoom, Google Meet link) | | `visibility` | string | No | New visibility: public, members-only, or private | | `coverUrl` | string | No | New cover image URL (must be a Luma CDN URL from images.lumacdn.com) | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------ | | `event` | object | Updated event details | | ↳ `id` | string | Event ID | | ↳ `name` | string | Event name | | ↳ `startAt` | string | Event start time (ISO 8601) | | ↳ `endAt` | string | Event end time (ISO 8601) | | ↳ `timezone` | string | Event timezone (IANA) | | ↳ `durationInterval` | string | Event duration (ISO 8601 interval, e.g. PT2H) | | ↳ `createdAt` | string | Event creation timestamp (ISO 8601) | | ↳ `description` | string | Event description (plain text) | | ↳ `descriptionMd` | string | Event description (Markdown) | | ↳ `coverUrl` | string | Event cover image URL | | ↳ `url` | string | Event page URL on lu.ma | | ↳ `visibility` | string | Event visibility (public, members-only, private) | | ↳ `meetingUrl` | string | Virtual meeting URL | | ↳ `geoAddressJson` | json | Structured location/address data | | ↳ `geoLatitude` | string | Venue latitude coordinate | | ↳ `geoLongitude` | string | Venue longitude coordinate | | ↳ `calendarId` | string | Associated calendar ID | | `hosts` | array | Event hosts | | ↳ `id` | string | Host ID | | ↳ `name` | string | Host display name | | ↳ `firstName` | string | Host first name | | ↳ `lastName` | string | Host last name | | ↳ `email` | string | Host email address | | ↳ `avatarUrl` | string | Host avatar image URL | ### Luma List Events [#luma-list-events] List events from your Luma calendar with optional date range filtering, sorting, and pagination. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `after` | string | No | Return events after this ISO 8601 datetime (e.g., 2025-01-01T00:00:00Z) | | `before` | string | No | Return events before this ISO 8601 datetime (e.g., 2025-12-31T23:59:59Z) | | `paginationLimit` | number | No | Maximum number of events to return per page | | `paginationCursor` | string | No | Pagination cursor from a previous response (next\_cursor) to fetch the next page of results | | `sortColumn` | string | No | Column to sort by (only start\_at is supported) | | `sortDirection` | string | No | Sort direction: asc, desc, asc nulls last, or desc nulls last | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------- | | `events` | array | List of calendar events | | ↳ `id` | string | Event ID | | ↳ `name` | string | Event name | | ↳ `startAt` | string | Event start time (ISO 8601) | | ↳ `endAt` | string | Event end time (ISO 8601) | | ↳ `timezone` | string | Event timezone (IANA) | | ↳ `durationInterval` | string | Event duration (ISO 8601 interval, e.g. PT2H) | | ↳ `createdAt` | string | Event creation timestamp (ISO 8601) | | ↳ `description` | string | Event description (plain text) | | ↳ `descriptionMd` | string | Event description (Markdown) | | ↳ `coverUrl` | string | Event cover image URL | | ↳ `url` | string | Event page URL on lu.ma | | ↳ `visibility` | string | Event visibility (public, members-only, private) | | ↳ `meetingUrl` | string | Virtual meeting URL | | ↳ `geoAddressJson` | json | Structured location/address data | | ↳ `geoLatitude` | string | Venue latitude coordinate | | ↳ `geoLongitude` | string | Venue longitude coordinate | | ↳ `calendarId` | string | Associated calendar ID | | `hasMore` | boolean | Whether more results are available for pagination | | `nextCursor` | string | Cursor to pass as paginationCursor to fetch the next page | ### Luma Lookup Event [#luma-lookup-event] Look up an event by its public URL or event ID to resolve its canonical ID, API ID, and approval status. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `url` | string | No | Public event URL on lu.ma (provide this or an event ID) | | `eventId` | string | No | Event ID to look up (starts with evt-). Provide this or a URL. | | `platform` | string | No | Event platform to look up: luma or external (defaults to luma) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------- | | `found` | boolean | Whether a matching event was found | | `eventId` | string | Resolved event ID | | `apiId` | string | Resolved event API ID (deprecated identifier) | | `status` | string | Event approval status (approved, pending, rejected) | ### Luma Cancel Event [#luma-cancel-event] Cancel a Luma event. This is irreversible and notifies all registered guests. Requires a cancellation token obtained from the Request Event Cancellation endpoint. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID to cancel (starts with evt-) | | `cancellationToken` | string | Yes | Cancellation token from the Request Event Cancellation endpoint (POST /v1/event/cancel/request) | | `shouldRefund` | boolean | No | Whether to refund paid guests. Required if the event has paid registrations. | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `cancelled` | boolean | Whether the event was successfully cancelled | ### Luma Get Guests [#luma-get-guests] Retrieve the guest list for a Luma event with optional filtering by approval status, sorting, and pagination. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID (starts with evt-) | | `approvalStatus` | string | No | Filter by approval status: approved, session, pending\_approval, invited, declined, or waitlist | | `paginationLimit` | number | No | Maximum number of guests to return per page | | `paginationCursor` | string | No | Pagination cursor from a previous response (next\_cursor) to fetch the next page of results | | `sortColumn` | string | No | Column to sort by: name, email, created\_at, registered\_at, or checked\_in\_at | | `sortDirection` | string | No | Sort direction: asc, desc, asc nulls last, or desc nulls last | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------------------------------- | | `guests` | array | List of event guests | | ↳ `id` | string | Guest ID | | ↳ `email` | string | Guest email address | | ↳ `name` | string | Guest full name | | ↳ `firstName` | string | Guest first name | | ↳ `lastName` | string | Guest last name | | ↳ `approvalStatus` | string | Guest approval status (approved, session, pending\_approval, invited, declined, waitlist) | | ↳ `registeredAt` | string | Registration timestamp (ISO 8601) | | ↳ `invitedAt` | string | Invitation timestamp (ISO 8601) | | ↳ `joinedAt` | string | Join timestamp (ISO 8601) | | ↳ `checkedInAt` | string | Check-in timestamp from the first checked-in ticket (ISO 8601) | | ↳ `phoneNumber` | string | Guest phone number | | `hasMore` | boolean | Whether more results are available for pagination | | `nextCursor` | string | Cursor to pass as paginationCursor to fetch the next page | ### Luma Get Guest [#luma-get-guest] Retrieve a single guest's details on a Luma event, including approval status, registration timestamps, and contact info. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID the guest belongs to (starts with evt-) | | `guestIdentifier` | string | Yes | Guest ID (gst-...), guest key (g-...), ticket key, or the guest's email address | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------------------------------- | | `guest` | object | Guest details | | ↳ `id` | string | Guest ID | | ↳ `email` | string | Guest email address | | ↳ `name` | string | Guest full name | | ↳ `firstName` | string | Guest first name | | ↳ `lastName` | string | Guest last name | | ↳ `approvalStatus` | string | Guest approval status (approved, session, pending\_approval, invited, declined, waitlist) | | ↳ `registeredAt` | string | Registration timestamp (ISO 8601) | | ↳ `invitedAt` | string | Invitation timestamp (ISO 8601) | | ↳ `joinedAt` | string | Join timestamp (ISO 8601) | | ↳ `checkedInAt` | string | Check-in timestamp from the first checked-in ticket (ISO 8601) | | ↳ `phoneNumber` | string | Guest phone number | ### Luma Add Guests [#luma-add-guests] Add guests to a Luma event by email. Guests are added with Going (approved) status and receive one ticket of the default ticket type. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID (starts with evt-) | | `guests` | string | Yes | JSON array of guest objects. Each guest requires an "email" field and optionally "name", "first\_name", "last\_name". Example: \[\{"email": "[user@example.com](mailto:user@example.com)", "name": "John Doe"}] | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------------------------- | | `added` | number | Number of guests submitted to the event (added with Going/approved status) | ### Luma Send Invites [#luma-send-invites] Send email invitations to guests for a Luma event. Unlike Add Guests (which registers guests directly), this emails an invite that recipients can accept. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | Yes | Event ID to invite guests to (starts with evt-) | | `guests` | string | Yes | JSON array of guest objects. Each guest requires an "email" field and optionally "name". Example: \[\{"email": "[user@example.com](mailto:user@example.com)", "name": "John Doe"}] | | `message` | string | No | Optional custom message included in the invite email (max 200 characters) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `invited` | number | Number of guests invited to the event | ### Luma Update Guest Status [#luma-update-guest-status] Update a guest's approval status on a Luma event — approve, decline, waitlist, or set to pending. Identify the guest by email or guest ID. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Luma API key | | `eventId` | string | No | Event ID the guest belongs to (starts with evt-) | | `guestIdentifier` | string | Yes | Guest email address or guest ID (gst-...). Values containing '@' are treated as emails; otherwise as a guest ID. | | `status` | string | Yes | New approval status: approved, declined, pending\_approval, or waitlist | | `shouldRefund` | boolean | No | Refund a paid guest when moving them out of an approved state (defaults to false) | | `sendEmail` | boolean | No | Whether to email the guest about the status change (defaults to true) | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------- | | `status` | string | The approval status applied to the guest | | `guest` | string | The guest identifier (email or ID) that was updated | --- # Mailchimp (/integrations/mailchimp) {/* MANUAL-CONTENT-START:intro */} Use [Mailchimp](https://mailchimp.com/) in Agent Serve to manage audiences and members, campaigns, automations, templates, segments, tags, and reports. The actions below also cover merge fields, interest categories, landing pages, signup forms, and batch operations. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Mailchimp into the workflow. Can manage audiences (lists), list members, campaigns, automation workflows, templates, reports, segments, tags, merge fields, interest categories, landing pages, signup forms, and batch operations. ## Actions [#actions] ### Get Audiences from Mailchimp [#get-audiences-from-mailchimp] Retrieve a list of audiences (lists) from Mailchimp #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `success` | boolean | Whether the audiences were successfully retrieved | | `output` | object | Audiences data | | ↳ `lists` | json | Array of audience/list objects | | ↳ `total_items` | number | Total number of lists | | ↳ `total_returned` | number | Number of lists returned in this response | ### Get Audience from Mailchimp [#get-audience-from-mailchimp] Retrieve details of a specific audience (list) from Mailchimp #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the audience was successfully retrieved | | `output` | object | Audience data | | ↳ `list` | json | Audience/list object | | ↳ `list_id` | string | The unique ID of the audience | ### Create Audience in Mailchimp [#create-audience-in-mailchimp] Create a new audience (list) in Mailchimp #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `audienceName` | string | Yes | The name of the audience/list (e.g., "Newsletter Subscribers") | | `contact` | string | Yes | JSON object of contact information (e.g., \{"company": "Acme", "address1": "123 Main St", "city": "NYC", "state": "NY", "zip": "10001", "country": "US"}) | | `permissionReminder` | string | Yes | Permission reminder text shown to subscribers (e.g., "You signed up for updates on our website") | | `campaignDefaults` | string | Yes | JSON object of default campaign settings (e.g., \{"from\_name": "Acme", "from\_email": "[news@acme.com](mailto:news@acme.com)", "subject": "", "language": "en"}) | | `emailTypeOption` | string | Yes | Support multiple email formats: "true" or "false" | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created audience data | | ↳ `list` | json | Created audience/list object | | ↳ `list_id` | string | Created audience/list ID | | ↳ `success` | boolean | Operation success | ### Update Audience in Mailchimp [#update-audience-in-mailchimp] Update an existing audience (list) in Mailchimp #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `audienceName` | string | No | The name of the audience/list (e.g., "Newsletter Subscribers") | | `permissionReminder` | string | No | Permission reminder text shown to subscribers (e.g., "You signed up for updates on our website") | | `campaignDefaults` | string | No | JSON object of default campaign settings (e.g., \{"from\_name": "Acme", "from\_email": "[news@acme.com](mailto:news@acme.com)"}) | | `emailTypeOption` | string | No | Support multiple email formats: "true" or "false" | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated audience data | | ↳ `list` | object | Updated audience/list object | | ↳ `list_id` | string | List ID | | ↳ `success` | boolean | Operation success | ### Delete Audience from Mailchimp [#delete-audience-from-mailchimp] Delete an audience (list) from Mailchimp #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list to delete (e.g., "abc123def4") | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the audience was successfully deleted | ### Get Members from Mailchimp Audience [#get-members-from-mailchimp-audience] Retrieve a list of members from a Mailchimp audience #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `status` | string | No | Filter by status: "subscribed", "unsubscribed", "cleaned", or "pending" | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------- | | `success` | boolean | Whether the members were successfully retrieved | | `output` | object | Members data | | ↳ `members` | json | Array of member objects | | ↳ `total_items` | number | Total number of members | | ↳ `total_returned` | number | Number of members returned in this response | ### Get Member from Mailchimp Audience [#get-member-from-mailchimp-audience] Retrieve details of a specific member from a Mailchimp audience #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the member was successfully retrieved | | `output` | object | Member data | | ↳ `member` | json | Member object | | ↳ `subscriber_hash` | string | The MD5 hash of the member email address | ### Add Member to Mailchimp Audience [#add-member-to-mailchimp-audience] Add a new member to a Mailchimp audience #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `emailAddress` | string | Yes | Member email address (e.g., "[user@example.com](mailto:user@example.com)") | | `status` | string | Yes | Subscriber status: "subscribed", "unsubscribed", "cleaned", "pending", or "transactional" | | `mergeFields` | string | No | JSON object of merge fields (e.g., \{"FNAME": "John", "LNAME": "Doe"}) | | `interests` | string | No | JSON object of interest IDs and their boolean values (e.g., \{"abc123": true}) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Added member data | | ↳ `member` | json | Added member object | | ↳ `subscriber_hash` | string | Subscriber hash ID | | ↳ `success` | boolean | Operation success | ### Add or Update Member in Mailchimp Audience [#add-or-update-member-in-mailchimp-audience] Add a new member or update an existing member in a Mailchimp audience (upsert) #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | | `emailAddress` | string | Yes | Member email address (e.g., "[user@example.com](mailto:user@example.com)") | | `statusIfNew` | string | Yes | Subscriber status if new: "subscribed", "unsubscribed", "cleaned", "pending", or "transactional" | | `mergeFields` | string | No | JSON object of merge fields (e.g., \{"FNAME": "John", "LNAME": "Doe"}) | | `interests` | string | No | JSON object of interest IDs and their boolean values (e.g., \{"abc123": true}) | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Member data | | ↳ `member` | json | Member object | | ↳ `subscriber_hash` | string | Subscriber hash ID | | ↳ `success` | boolean | Operation success | ### Update Member in Mailchimp Audience [#update-member-in-mailchimp-audience] Update an existing member in a Mailchimp audience #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | | `emailAddress` | string | No | New member email address (e.g., "[user@example.com](mailto:user@example.com)") | | `status` | string | No | Subscriber status: "subscribed", "unsubscribed", "cleaned", "pending", or "transactional" | | `mergeFields` | string | No | JSON object of merge fields (e.g., \{"FNAME": "John", "LNAME": "Doe"}) | | `interests` | string | No | JSON object of interest IDs and their boolean values (e.g., \{"abc123": true}) | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated member data | | ↳ `member` | object | Updated member object | | ↳ `subscriber_hash` | string | Subscriber hash | | ↳ `success` | boolean | Operation success | ### Delete Member from Mailchimp Audience [#delete-member-from-mailchimp-audience] Delete a member from a Mailchimp audience #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the member was successfully deleted | ### Archive Member from Mailchimp Audience [#archive-member-from-mailchimp-audience] Permanently archive (delete) a member from a Mailchimp audience #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Archive confirmation | | ↳ `success` | boolean | Operation success | ### Unarchive Member in Mailchimp Audience [#unarchive-member-in-mailchimp-audience] Restore an archived member to a Mailchimp audience #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | | `emailAddress` | string | Yes | Member email address (e.g., "[user@example.com](mailto:user@example.com)") | | `status` | string | Yes | Subscriber status: "subscribed", "unsubscribed", "cleaned", "pending", or "transactional" | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Unarchived member data | | ↳ `member` | object | Unarchived member object | | ↳ `subscriber_hash` | string | Subscriber hash | | ↳ `success` | boolean | Operation success | ### Get Campaigns from Mailchimp [#get-campaigns-from-mailchimp] Retrieve a list of campaigns from Mailchimp #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignType` | string | No | Filter by campaign type: "regular", "plaintext", "absplit", "rss", or "variate" | | `status` | string | No | Filter by status: "save", "paused", "schedule", "sending", or "sent" | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `success` | boolean | Whether the campaigns were successfully retrieved | | `output` | object | Campaigns data | | ↳ `campaigns` | json | Array of campaign objects | | ↳ `total_items` | number | Total number of campaigns | | ↳ `total_returned` | number | Number of campaigns returned in this response | ### Get Campaign from Mailchimp [#get-campaign-from-mailchimp] Retrieve details of a specific campaign from Mailchimp #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign (e.g., "abc123def4") | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the campaign was successfully retrieved | | `output` | object | Campaign data | | ↳ `campaign` | json | Campaign object | | ↳ `campaign_id` | string | The unique ID of the campaign | ### Create Campaign in Mailchimp [#create-campaign-in-mailchimp] Create a new campaign in Mailchimp #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignType` | string | Yes | Campaign type: "regular", "plaintext", "absplit", "rss", or "variate" | | `campaignSettings` | string | Yes | JSON object of campaign settings (e.g., \{"subject\_line": "Newsletter", "from\_name": "Acme", "reply\_to": "[news@acme.com](mailto:news@acme.com)"}) | | `recipients` | string | No | JSON object of recipients (e.g., \{"list\_id": "abc123"}) | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created campaign data | | ↳ `campaign` | json | Created campaign object | | ↳ `campaign_id` | string | Created campaign ID | | ↳ `success` | boolean | Operation success | ### Update Campaign in Mailchimp [#update-campaign-in-mailchimp] Update an existing campaign in Mailchimp #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign (e.g., "abc123def4") | | `campaignSettings` | string | No | JSON object of campaign settings (e.g., \{"subject\_line": "Newsletter", "from\_name": "Acme"}) | | `recipients` | string | No | JSON object of recipients (e.g., \{"list\_id": "abc123"}) | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated campaign data | | ↳ `campaign` | object | Updated campaign object | | ↳ `campaign_id` | string | Campaign ID | | ↳ `success` | boolean | Operation success | ### Delete Campaign from Mailchimp [#delete-campaign-from-mailchimp] Delete a campaign from Mailchimp #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign to delete (e.g., "abc123def4") | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the campaign was successfully deleted | ### Send Campaign in Mailchimp [#send-campaign-in-mailchimp] Send a Mailchimp campaign #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign to send (e.g., "abc123def4") | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Send confirmation | | ↳ `success` | boolean | Operation success | ### Schedule Campaign in Mailchimp [#schedule-campaign-in-mailchimp] Schedule a Mailchimp campaign to be sent at a specific time #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign to schedule (e.g., "abc123def4") | | `scheduleTime` | string | Yes | Schedule time in ISO 8601 format (e.g., "2024-12-25T10:00:00Z") | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the campaign was successfully scheduled | ### Unschedule Campaign in Mailchimp [#unschedule-campaign-in-mailchimp] Unschedule a previously scheduled Mailchimp campaign #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign to unschedule (e.g., "abc123def4") | #### Output [#output-20] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Unschedule confirmation | | ↳ `success` | boolean | Operation success | ### Replicate Campaign in Mailchimp [#replicate-campaign-in-mailchimp] Create a copy of an existing Mailchimp campaign #### Input [#input-21] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign to replicate (e.g., "abc123def4") | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | -------------------------- | | `success` | boolean | Operation success status | | `output` | object | Replicated campaign data | | ↳ `campaign` | object | Replicated campaign object | | ↳ `campaign_id` | string | Campaign ID | | ↳ `success` | boolean | Operation success | ### Get Campaign Content from Mailchimp [#get-campaign-content-from-mailchimp] Retrieve the HTML and plain-text content for a Mailchimp campaign #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign (e.g., "abc123def4") | #### Output [#output-22] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Whether the campaign content was successfully retrieved | | `output` | object | Campaign content data | | ↳ `content` | json | Campaign content object | ### Set Campaign Content in Mailchimp [#set-campaign-content-in-mailchimp] Set the content for a Mailchimp campaign #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign (e.g., "abc123def4") | | `html` | string | No | The HTML content for the campaign | | `plainText` | string | No | The plain-text content for the campaign | | `templateId` | string | No | The unique ID of the template to use (e.g., "12345") | #### Output [#output-23] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Campaign content data | | ↳ `content` | object | Campaign content object | | ↳ `success` | boolean | Operation success | ### Get Automations from Mailchimp [#get-automations-from-mailchimp] Retrieve a list of automations from Mailchimp #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-24] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------- | | `success` | boolean | Whether the automations were successfully retrieved | | `output` | object | Automations data | | ↳ `automations` | json | Array of automation objects | | ↳ `total_items` | number | Total number of automations | | ↳ `total_returned` | number | Number of automations returned in this response | ### Get Automation from Mailchimp [#get-automation-from-mailchimp] Retrieve details of a specific automation from Mailchimp #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `workflowId` | string | Yes | The unique ID for the automation workflow (e.g., "abc123def4") | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------- | | `success` | boolean | Whether the automation was successfully retrieved | | `output` | object | Automation data | | ↳ `automation` | json | Automation object | | ↳ `workflow_id` | string | The unique ID of the automation workflow | ### Start Automation in Mailchimp [#start-automation-in-mailchimp] Start all emails in a Mailchimp automation workflow #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `workflowId` | string | Yes | The unique ID for the automation workflow (e.g., "abc123def4") | #### Output [#output-26] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Start confirmation | | ↳ `success` | boolean | Operation success | ### Pause Automation in Mailchimp [#pause-automation-in-mailchimp] Pause all emails in a Mailchimp automation workflow #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `workflowId` | string | Yes | The unique ID for the automation workflow (e.g., "abc123def4") | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Pause confirmation | | ↳ `success` | boolean | Operation success | ### Add Subscriber to Automation in Mailchimp [#add-subscriber-to-automation-in-mailchimp] Manually add a subscriber to a workflow email queue #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `workflowId` | string | Yes | The unique ID for the automation workflow (e.g., "abc123def4") | | `workflowEmailId` | string | Yes | The unique ID for the workflow email (e.g., "xyz789") | | `emailAddress` | string | Yes | Email address of the subscriber (e.g., "[user@example.com](mailto:user@example.com)") | #### Output [#output-28] | Parameter | Type | Description | | -------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Subscriber queue data | | ↳ `subscriber` | json | Subscriber object | | ↳ `success` | boolean | Operation success | ### Get Templates from Mailchimp [#get-templates-from-mailchimp] Retrieve a list of templates from Mailchimp #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-29] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `success` | boolean | Whether the templates were successfully retrieved | | `output` | object | Templates data | | ↳ `templates` | json | Array of template objects | | ↳ `total_items` | number | Total number of templates | | ↳ `total_returned` | number | Number of templates returned in this response | ### Get Template from Mailchimp [#get-template-from-mailchimp] Retrieve details of a specific template from Mailchimp #### Input [#input-30] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `templateId` | string | Yes | The unique ID for the template (e.g., "12345") | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the template was successfully retrieved | | `output` | object | Template data | | ↳ `template` | json | Template object | | ↳ `template_id` | string | The unique ID of the template | ### Create Template in Mailchimp [#create-template-in-mailchimp] Create a new template in Mailchimp #### Input [#input-31] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `templateName` | string | Yes | The name of the template (e.g., "Monthly Newsletter") | | `templateHtml` | string | Yes | The HTML content for the template | #### Output [#output-31] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created template data | | ↳ `template` | json | Created template object | | ↳ `template_id` | string | Created template ID | | ↳ `success` | boolean | Operation success | ### Update Template in Mailchimp [#update-template-in-mailchimp] Update an existing template in Mailchimp #### Input [#input-32] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `templateId` | string | Yes | The unique ID for the template (e.g., "12345") | | `templateName` | string | No | The name of the template (e.g., "Monthly Newsletter") | | `templateHtml` | string | No | The HTML content for the template | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated template data | | ↳ `template` | object | Updated template object | | ↳ `template_id` | string | Template ID | | ↳ `success` | boolean | Operation success | ### Delete Template from Mailchimp [#delete-template-from-mailchimp] Delete a template from Mailchimp #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `templateId` | string | Yes | The unique ID for the template to delete (e.g., "12345") | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the template was successfully deleted | ### Get Campaign Reports from Mailchimp [#get-campaign-reports-from-mailchimp] Retrieve a list of campaign reports from Mailchimp #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-34] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------------- | | `success` | boolean | Whether the campaign reports were successfully retrieved | | `output` | object | Campaign reports data | | ↳ `reports` | json | Array of campaign report objects | | ↳ `total_items` | number | Total number of reports | | ↳ `total_returned` | number | Number of reports returned in this response | ### Get Campaign Report from Mailchimp [#get-campaign-report-from-mailchimp] Retrieve the report for a specific campaign from Mailchimp #### Input [#input-35] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `campaignId` | string | Yes | The unique ID for the campaign (e.g., "abc123def4") | #### Output [#output-35] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------ | | `success` | boolean | Whether the campaign report was successfully retrieved | | `output` | object | Campaign report data | | ↳ `report` | json | Campaign report object | | ↳ `campaign_id` | string | The unique ID of the campaign | ### Get Segments from Mailchimp Audience [#get-segments-from-mailchimp-audience] Retrieve a list of segments from a Mailchimp audience #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-36] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------ | | `success` | boolean | Whether the segments were successfully retrieved | | `output` | object | Segments data | | ↳ `segments` | json | Array of segment objects | | ↳ `total_items` | number | Total number of segments | | ↳ `total_returned` | number | Number of segments returned in this response | ### Get Segment from Mailchimp Audience [#get-segment-from-mailchimp-audience] Retrieve details of a specific segment from a Mailchimp audience #### Input [#input-37] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment (e.g., "12345") | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the segment was successfully retrieved | | `output` | object | Segment data | | ↳ `segment` | json | Segment object | | ↳ `segment_id` | string | The unique ID of the segment | ### Create Segment in Mailchimp Audience [#create-segment-in-mailchimp-audience] Create a new segment in a Mailchimp audience #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentName` | string | Yes | The name of the segment (e.g., "VIP Customers") | | `segmentOptions` | string | No | JSON object of segment options for saved segments (e.g., \{"match": "all", "conditions": \[...]}) | #### Output [#output-38] | Parameter | Type | Description | | -------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created segment data | | ↳ `segment` | json | Created segment object | | ↳ `segment_id` | string | Created segment ID | | ↳ `success` | boolean | Operation success | ### Update Segment in Mailchimp Audience [#update-segment-in-mailchimp-audience] Update an existing segment in a Mailchimp audience #### Input [#input-39] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment (e.g., "12345") | | `segmentName` | string | No | The name of the segment (e.g., "VIP Customers") | | `segmentOptions` | string | No | JSON object of segment options (e.g., \{"match": "all", "conditions": \[...]}) | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated segment data | | ↳ `segment` | object | Updated segment object | | ↳ `segment_id` | string | Segment ID | | ↳ `success` | boolean | Operation success | ### Delete Segment from Mailchimp Audience [#delete-segment-from-mailchimp-audience] Delete a segment from a Mailchimp audience #### Input [#input-40] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment to delete (e.g., "12345") | #### Output [#output-40] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the segment was successfully deleted | ### Get Segment Members from Mailchimp [#get-segment-members-from-mailchimp] Retrieve members of a specific segment from a Mailchimp audience #### Input [#input-41] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment (e.g., "12345") | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-41] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------- | | `success` | boolean | Whether the segment members were successfully retrieved | | `output` | object | Segment members data | | ↳ `members` | json | Array of member objects | | ↳ `total_items` | number | Total number of members | | ↳ `total_returned` | number | Number of members returned in this response | ### Add Member to Segment in Mailchimp [#add-member-to-segment-in-mailchimp] Add a member to a specific segment in a Mailchimp audience #### Input [#input-42] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment (e.g., "12345") | | `emailAddress` | string | Yes | Email address of the member (e.g., "[user@example.com](mailto:user@example.com)") | #### Output [#output-42] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Added member data | | ↳ `member` | json | Added member object | | ↳ `success` | boolean | Operation success | ### Remove Member from Segment in Mailchimp [#remove-member-from-segment-in-mailchimp] Remove a member from a specific segment in a Mailchimp audience #### Input [#input-43] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `segmentId` | string | Yes | The unique ID for the segment (e.g., "12345") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | #### Output [#output-43] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Removal confirmation | | ↳ `success` | boolean | Operation success | ### Get Member Tags from Mailchimp [#get-member-tags-from-mailchimp] Retrieve tags associated with a member in a Mailchimp audience #### Input [#input-44] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | #### Output [#output-44] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------- | | `success` | boolean | Whether the member tags were successfully retrieved | | `output` | object | Member tags data | | ↳ `tags` | json | Array of tag objects | | ↳ `total_items` | number | Total number of tags | | ↳ `total_returned` | number | Number of tags returned in this response | ### Add Tags to Member in Mailchimp [#add-tags-to-member-in-mailchimp] Add tags to a member in a Mailchimp audience #### Input [#input-45] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | | `tags` | string | Yes | JSON array of tag objects (e.g., \[\{"name": "VIP", "status": "active"}]) | #### Output [#output-45] | Parameter | Type | Description | | ----------- | ------- | ------------------------- | | `success` | boolean | Operation success status | | `output` | object | Tag addition confirmation | | ↳ `success` | boolean | Operation success | ### Remove Tags from Member in Mailchimp [#remove-tags-from-member-in-mailchimp] Remove tags from a member in a Mailchimp audience #### Input [#input-46] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `subscriberEmail` | string | Yes | Member email address or MD5 hash of the lowercase email | | `tags` | string | Yes | JSON array of tag objects with inactive status (e.g., \[\{"name": "VIP", "status": "inactive"}]) | #### Output [#output-46] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Tag removal confirmation | | ↳ `success` | boolean | Operation success | ### Get Merge Fields from Mailchimp Audience [#get-merge-fields-from-mailchimp-audience] Retrieve a list of merge fields from a Mailchimp audience #### Input [#input-47] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-47] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------- | | `success` | boolean | Whether the merge fields were successfully retrieved | | `output` | object | Merge fields data | | ↳ `mergeFields` | json | Array of merge field objects | | ↳ `total_items` | number | Total number of merge fields | | ↳ `total_returned` | number | Number of merge fields returned in this response | ### Get Merge Field from Mailchimp Audience [#get-merge-field-from-mailchimp-audience] Retrieve details of a specific merge field from a Mailchimp audience #### Input [#input-48] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `mergeId` | string | Yes | The unique ID for the merge field (e.g., "1" or "FNAME") | #### Output [#output-48] | Parameter | Type | Description | | -------------- | ------- | -------------------------------------------------- | | `success` | boolean | Whether the merge field was successfully retrieved | | `output` | object | Merge field data | | ↳ `mergeField` | json | Merge field object | | ↳ `merge_id` | string | The unique ID of the merge field | ### Create Merge Field in Mailchimp Audience [#create-merge-field-in-mailchimp-audience] Create a new merge field in a Mailchimp audience #### Input [#input-49] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `mergeName` | string | Yes | The name of the merge field (e.g., "First Name") | | `mergeType` | string | Yes | The type of the merge field: "text", "number", "address", "phone", "date", "url", "imageurl", "radio", "dropdown", "birthday", or "zip" | #### Output [#output-49] | Parameter | Type | Description | | -------------- | ------- | -------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created merge field data | | ↳ `mergeField` | json | Created merge field object | | ↳ `merge_id` | string | Created merge field ID | | ↳ `success` | boolean | Operation success | ### Update Merge Field in Mailchimp Audience [#update-merge-field-in-mailchimp-audience] Update an existing merge field in a Mailchimp audience #### Input [#input-50] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `mergeId` | string | Yes | The unique ID for the merge field (e.g., "1" or "FNAME") | | `mergeName` | string | No | The name of the merge field (e.g., "First Name") | #### Output [#output-50] | Parameter | Type | Description | | -------------- | ------- | -------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated merge field data | | ↳ `mergeField` | object | Updated merge field object | | ↳ `merge_id` | string | Merge field ID | | ↳ `success` | boolean | Operation success | ### Delete Merge Field from Mailchimp Audience [#delete-merge-field-from-mailchimp-audience] Delete a merge field from a Mailchimp audience #### Input [#input-51] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `mergeId` | string | Yes | The unique ID for the merge field to delete (e.g., "1" or "FNAME") | #### Output [#output-51] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------ | | `success` | boolean | Whether the merge field was successfully deleted | ### Get Interest Categories from Mailchimp Audience [#get-interest-categories-from-mailchimp-audience] Retrieve a list of interest categories from a Mailchimp audience #### Input [#input-52] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-52] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------- | | `success` | boolean | Whether the interest categories were successfully retrieved | | `output` | object | Interest categories data | | ↳ `categories` | json | Array of interest category objects | | ↳ `total_items` | number | Total number of categories | | ↳ `total_returned` | number | Number of categories returned in this response | ### Get Interest Category from Mailchimp Audience [#get-interest-category-from-mailchimp-audience] Retrieve details of a specific interest category from a Mailchimp audience #### Input [#input-53] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | #### Output [#output-53] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------- | | `success` | boolean | Whether the interest category was successfully retrieved | | `output` | object | Interest category data | | ↳ `category` | json | Interest category object | | ↳ `interest_category_id` | string | The unique ID of the interest category | ### Create Interest Category in Mailchimp Audience [#create-interest-category-in-mailchimp-audience] Create a new interest category in a Mailchimp audience #### Input [#input-54] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryTitle` | string | Yes | The title of the interest category (e.g., "Email Preferences") | | `interestCategoryType` | string | Yes | The type of interest category: "checkboxes", "dropdown", "radio", or "hidden" | #### Output [#output-54] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created interest category data | | ↳ `category` | json | Created interest category object | | ↳ `interest_category_id` | string | Created interest category ID | | ↳ `success` | boolean | Operation success | ### Update Interest Category in Mailchimp Audience [#update-interest-category-in-mailchimp-audience] Update an existing interest category in a Mailchimp audience #### Input [#input-55] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `interestCategoryTitle` | string | No | The title of the interest category (e.g., "Email Preferences") | #### Output [#output-55] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated interest category data | | ↳ `category` | object | Updated interest category object | | ↳ `interest_category_id` | string | Interest category ID | | ↳ `success` | boolean | Operation success | ### Delete Interest Category from Mailchimp Audience [#delete-interest-category-from-mailchimp-audience] Delete an interest category from a Mailchimp audience #### Input [#input-56] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category to delete (e.g., "xyz789") | #### Output [#output-56] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------ | | `success` | boolean | Whether the interest category was successfully deleted | ### Get Interests from Mailchimp Interest Category [#get-interests-from-mailchimp-interest-category] Retrieve a list of interests from an interest category in a Mailchimp audience #### Input [#input-57] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-57] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `success` | boolean | Whether the interests were successfully retrieved | | `output` | object | Interests data | | ↳ `interests` | json | Array of interest objects | | ↳ `total_items` | number | Total number of interests | | ↳ `total_returned` | number | Number of interests returned in this response | ### Get Interest from Mailchimp Interest Category [#get-interest-from-mailchimp-interest-category] Retrieve details of a specific interest from an interest category in a Mailchimp audience #### Input [#input-58] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `interestId` | string | Yes | The unique ID for the interest (e.g., "def456") | #### Output [#output-58] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether the interest was successfully retrieved | | `output` | object | Interest data | | ↳ `interest` | json | Interest object | | ↳ `interest_id` | string | The unique ID of the interest | ### Create Interest in Mailchimp Interest Category [#create-interest-in-mailchimp-interest-category] Create a new interest in an interest category in a Mailchimp audience #### Input [#input-59] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `interestName` | string | Yes | The name of the interest (e.g., "Weekly Updates") | #### Output [#output-59] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created interest data | | ↳ `interest` | json | Created interest object | | ↳ `interest_id` | string | Created interest ID | | ↳ `success` | boolean | Operation success | ### Update Interest in Mailchimp Interest Category [#update-interest-in-mailchimp-interest-category] Update an existing interest in an interest category in a Mailchimp audience #### Input [#input-60] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `interestId` | string | Yes | The unique ID for the interest (e.g., "def456") | | `interestName` | string | No | The name of the interest (e.g., "Weekly Updates") | #### Output [#output-60] | Parameter | Type | Description | | --------------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated interest data | | ↳ `interest` | object | Updated interest object | | ↳ `interest_id` | string | Interest ID | | ↳ `success` | boolean | Operation success | ### Delete Interest from Mailchimp Interest Category [#delete-interest-from-mailchimp-interest-category] Delete an interest from an interest category in a Mailchimp audience #### Input [#input-61] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `listId` | string | Yes | The unique ID for the audience/list (e.g., "abc123def4") | | `interestCategoryId` | string | Yes | The unique ID for the interest category (e.g., "xyz789") | | `interestId` | string | Yes | The unique ID for the interest to delete (e.g., "def456") | #### Output [#output-61] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the interest was successfully deleted | ### Get Landing Pages from Mailchimp [#get-landing-pages-from-mailchimp] Retrieve a list of landing pages from Mailchimp #### Input [#input-62] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-62] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the landing pages were successfully retrieved | | `output` | object | Landing pages data | | ↳ `landingPages` | json | Array of landing page objects | | ↳ `total_items` | number | Total number of landing pages | | ↳ `total_returned` | number | Number of landing pages returned in this response | ### Get Landing Page from Mailchimp [#get-landing-page-from-mailchimp] Retrieve details of a specific landing page from Mailchimp #### Input [#input-63] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `pageId` | string | Yes | The unique ID for the landing page (e.g., "abc123def4") | #### Output [#output-63] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------------- | | `success` | boolean | Whether the landing page was successfully retrieved | | `output` | object | Landing page data | | ↳ `landingPage` | json | Landing page object | | ↳ `page_id` | string | The unique ID of the landing page | ### Create Landing Page in Mailchimp [#create-landing-page-in-mailchimp] Create a new landing page in Mailchimp #### Input [#input-64] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `landingPageType` | string | Yes | The type of landing page: "signup" | | `landingPageTitle` | string | No | The title of the landing page (e.g., "Join Our Newsletter") | #### Output [#output-64] | Parameter | Type | Description | | --------------- | ------- | --------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created landing page data | | ↳ `landingPage` | json | Created landing page object | | ↳ `page_id` | string | Created landing page ID | | ↳ `success` | boolean | Operation success | ### Update Landing Page in Mailchimp [#update-landing-page-in-mailchimp] Update an existing landing page in Mailchimp #### Input [#input-65] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `pageId` | string | Yes | The unique ID for the landing page (e.g., "abc123def4") | | `landingPageTitle` | string | No | The title of the landing page (e.g., "Join Our Newsletter") | #### Output [#output-65] | Parameter | Type | Description | | --------------- | ------- | --------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated landing page data | | ↳ `landingPage` | object | Updated landing page object | | ↳ `page_id` | string | Landing page ID | | ↳ `success` | boolean | Operation success | ### Delete Landing Page from Mailchimp [#delete-landing-page-from-mailchimp] Delete a landing page from Mailchimp #### Input [#input-66] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `pageId` | string | Yes | The unique ID for the landing page to delete (e.g., "abc123def4") | #### Output [#output-66] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------- | | `success` | boolean | Whether the landing page was successfully deleted | ### Publish Landing Page in Mailchimp [#publish-landing-page-in-mailchimp] Publish a landing page in Mailchimp #### Input [#input-67] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `pageId` | string | Yes | The unique ID for the landing page (e.g., "abc123def4") | #### Output [#output-67] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Publish confirmation | | ↳ `success` | boolean | Operation success | ### Unpublish Landing Page in Mailchimp [#unpublish-landing-page-in-mailchimp] Unpublish a landing page in Mailchimp #### Input [#input-68] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `pageId` | string | Yes | The unique ID for the landing page (e.g., "abc123def4") | #### Output [#output-68] | Parameter | Type | Description | | ----------- | ------- | ------------------------ | | `success` | boolean | Operation success status | | `output` | object | Unpublish confirmation | | ↳ `success` | boolean | Operation success | ### Get Batch Operations from Mailchimp [#get-batch-operations-from-mailchimp] Retrieve a list of batch operations from Mailchimp #### Input [#input-69] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `count` | string | No | Number of results to return (default: 10, max: 1000) | | `offset` | string | No | Number of results to skip for pagination | #### Output [#output-69] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------------- | | `success` | boolean | Whether the batch operations were successfully retrieved | | `output` | object | Batch operations data | | ↳ `batches` | json | Array of batch operation objects | | ↳ `total_items` | number | Total number of batch operations | | ↳ `total_returned` | number | Number of batch operations returned in this response | ### Get Batch Operation from Mailchimp [#get-batch-operation-from-mailchimp] Retrieve details of a specific batch operation from Mailchimp #### Input [#input-70] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `batchId` | string | Yes | The unique ID for the batch operation (e.g., "abc123def4") | #### Output [#output-70] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------ | | `success` | boolean | Whether the batch operation was successfully retrieved | | `output` | object | Batch operation data | | ↳ `batch` | json | Batch operation object | | ↳ `batch_id` | string | The unique ID of the batch operation | ### Create Batch Operation in Mailchimp [#create-batch-operation-in-mailchimp] Create a new batch operation in Mailchimp #### Input [#input-71] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `operations` | string | Yes | JSON array of batch operations (e.g., \[\{"method": "POST", "path": "/lists/\{list\_id}/members", "body": "..."}]) | #### Output [#output-71] | Parameter | Type | Description | | ------------ | ------- | ------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created batch operation data | | ↳ `batch` | json | Created batch operation object | | ↳ `batch_id` | string | Created batch operation ID | | ↳ `success` | boolean | Operation success | ### Delete Batch Operation from Mailchimp [#delete-batch-operation-from-mailchimp] Delete a batch operation from Mailchimp #### Input [#input-72] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailchimp API key with server prefix | | `batchId` | string | Yes | The unique ID for the batch operation to delete (e.g., "abc123def4") | #### Output [#output-72] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------------- | | `success` | boolean | Whether the batch operation was successfully deleted | --- # Mailgun (/integrations/mailgun) {/* MANUAL-CONTENT-START:intro */} Use [Mailgun](https://www.mailgun.com) to send text or HTML emails, retrieve messages and delivery events, manage mailing lists, and inspect sending domains. Tags help associate sent messages with a workflow or campaign. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Mailgun into your workflow. Send transactional emails, manage mailing lists and members, view domain information, and track email events. Supports text and HTML emails, tags for tracking, and comprehensive list management. ## Actions [#actions] ### Mailgun Send Message [#mailgun-send-message] Send an email using Mailgun API #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `domain` | string | Yes | Mailgun sending domain (e.g., mg.example.com) | | `from` | string | Yes | Sender email address (e.g., [sender@example.com](mailto:sender@example.com) or "Name \<[sender@example.com](mailto:sender@example.com)>") | | `to` | string | Yes | Recipient email address (e.g., [user@example.com](mailto:user@example.com)). Use comma-separated values for multiple recipients | | `subject` | string | Yes | Email subject line | | `text` | string | No | Plain text body of the email | | `html` | string | No | HTML body of the email (e.g., "\

      Hello\

      \

      Message content\

      ") | | `cc` | string | No | CC recipient email address (e.g., [cc@example.com](mailto:cc@example.com)). Use comma-separated values for multiple recipients | | `bcc` | string | No | BCC recipient email address (e.g., [bcc@example.com](mailto:bcc@example.com)). Use comma-separated values for multiple recipients | | `tags` | string | No | Tags for the email (comma-separated) | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the message was sent successfully | | `id` | string | Message ID | | `message` | string | Response message from Mailgun | ### Mailgun Get Message [#mailgun-get-message] Retrieve a stored message by its key #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `domain` | string | Yes | Mailgun domain for retrieving messages (e.g., mg.example.com) | | `messageKey` | string | Yes | Message storage key | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------- | | `success` | boolean | Whether the request was successful | | `recipients` | string | Message recipients | | `from` | string | Sender email | | `subject` | string | Message subject | | `bodyPlain` | string | Plain text body | | `strippedText` | string | Stripped text | | `strippedSignature` | string | Stripped signature | | `bodyHtml` | string | HTML body | | `strippedHtml` | string | Stripped HTML | | `attachmentCount` | number | Number of attachments | | `timestamp` | number | Message timestamp | | `messageHeaders` | json | Message headers | | `contentIdMap` | json | Content ID map | ### Mailgun List Messages [#mailgun-list-messages] List events (logs) for messages sent through Mailgun #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `domain` | string | Yes | Mailgun domain for listing events (e.g., mg.example.com) | | `event` | string | No | Filter by event type (accepted, delivered, failed, opened, clicked, etc.) | | `limit` | number | No | Maximum number of events to return (default: 100) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the request was successful | | `items` | json | Array of event items | | `paging` | json | Paging information | ### Mailgun Create Mailing List [#mailgun-create-mailing-list] Create a new mailing list #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `address` | string | Yes | Mailing list address (e.g., [newsletter@mg.example.com](mailto:newsletter@mg.example.com)) | | `name` | string | No | Mailing list name | | `description` | string | No | Mailing list description | | `accessLevel` | string | No | Access level: readonly, members, or everyone | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the list was created successfully | | `message` | string | Response message | | `list` | json | Created mailing list details | ### Mailgun Get Mailing List [#mailgun-get-mailing-list] Get details of a mailing list #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `address` | string | Yes | Mailing list address to retrieve (e.g., [newsletter@mg.example.com](mailto:newsletter@mg.example.com)) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the request was successful | | `list` | json | Mailing list details | ### Mailgun Add List Member [#mailgun-add-list-member] Add a member to a mailing list #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `listAddress` | string | Yes | Mailing list address (e.g., [list@mg.example.com](mailto:list@mg.example.com)) | | `address` | string | Yes | Member email address to add (e.g., [user@example.com](mailto:user@example.com)) | | `name` | string | No | Member name | | `vars` | string | No | JSON string of custom variables | | `subscribed` | boolean | No | Whether the member is subscribed | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the member was added successfully | | `message` | string | Response message | | `member` | json | Added member details | ### Mailgun List Domains [#mailgun-list-domains] List all domains for your Mailgun account #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------- | | `success` | boolean | Whether the request was successful | | `totalCount` | number | Total number of domains | | `items` | json | Array of domain objects | ### Mailgun Get Domain [#mailgun-get-domain] Get details of a specific domain #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Mailgun API key | | `region` | string | No | Mailgun account region: "us" (default) or "eu" | | `domain` | string | Yes | Domain name to retrieve details for (e.g., mg.example.com) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the request was successful | | `domain` | json | Domain details | --- # Claude Managed Agents (/integrations/managed_agent) {/* MANUAL-CONTENT-START:intro */} [Claude Managed Agents](https://www.anthropic.com/) are agents you build and host on the Claude Platform. Anthropic runs the agent loop, and the Claude Managed Agents block calls one from an Agent Serve workflow. With Claude Managed Agents, you can: * **Run a hosted agent**: Send a message to an agent in your Claude workspace and get its final response back * **Pick the environment**: Choose the agent and the environment it runs in, so the same workflow can target development or production * **Attach credential vaults**: Give the agent scoped access to the credentials it needs for the run * **Use a memory store**: Connect a memory store with read or write access and pass instructions for how the agent should use it * **Send files**: Attach files to the run for the agent to work with * **Tag runs with metadata**: Add key-value tags so runs can be traced and grouped later In Agent Serve, the Claude Managed Agents block lets a workflow hand work to an agent that lives on the Claude Platform instead of assembling the prompt, tools, and loop yourself. The block returns the agent's final text alongside its session ID and token counts, so you can chain the response into later blocks and track cost per run. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Invoke a Claude Platform Managed Agent from a workflow. Select a Claude Platform account, pick an agent and environment from that workspace, optionally attach vaults, a memory store, and files, and add metadata tags. Returns the assistant's final text. ## Actions [#actions] ### Managed Agent Run Session [#managed-agent-run-session] Open a Claude Platform Managed Agent session and return the assistant response as text. #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to run the agent with. | | `agent` | string | Yes | Managed-agent id inside the linked Claude workspace. | | `environment` | string | Yes | Environment id inside the linked Claude workspace. | | `environmentType` | string | No | Environment execution model hint ('cloud' \| 'self\_hosted'); the actual type is re-resolved server-side for routing. | | `userMessage` | string | Yes | The user message to send to the Managed Agent. | | `vaults` | array | No | Zero or more vault ids for MCP tool auth. | | `vaultsAck` | boolean | No | Acknowledgement that the author may use the attached vaults. | | `memoryStoreId` | string | No | Optional Agent Memory Store id. | | `memoryAccess` | string | No | Memory store access mode: 'read\_write' (default) or 'read\_only'. | | `memoryInstructions` | string | No | Per-attachment guidance for how the agent should use the memory store. | | `files` | array | No | File attachments (cloud envs only), as \[\{fileId, mountPath?}]. | | `sessionParameters` | object | No | Key/value session metadata forwarded to the session. | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------------------- | | `content` | string | Final assistant text from the Managed Agent session. | | `sessionId` | string | Anthropic session id (for logs / linking). | | `inputTokens` | number | Cumulative input tokens for the session. | | `outputTokens` | number | Cumulative output tokens for the session. | ### Managed Agent Create Session [#managed-agent-create-session] Create a Claude Platform Managed Agent session and return its id without waiting for a reply. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `agent` | string | Yes | Managed-agent id inside the linked Claude workspace. | | `environment` | string | Yes | Environment id inside the linked Claude workspace. | | `environmentType` | string | No | Environment execution model hint ('cloud' \| 'self\_hosted'). | | `userMessage` | string | No | Optional first message; seeds initial\_events and starts the agent immediately. | | `vaults` | array | No | Zero or more vault ids for MCP tool auth. | | `vaultsAck` | boolean | No | Acknowledgement that the author may use the attached vaults. | | `memoryStoreId` | string | No | Optional Agent Memory Store id. | | `memoryAccess` | string | No | Memory store access mode: 'read\_write' (default) or 'read\_only'. | | `memoryInstructions` | string | No | Per-attachment guidance for how the agent should use the memory store. | | `files` | array | No | File attachments (cloud envs only), as \[\{fileId, mountPath?}]. | | `sessionParameters` | object | No | Key/value session metadata forwarded to the session. | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------------------------------- | | `sessionId` | string | Anthropic session id (sesn\_...). | | `started` | boolean | True when a first message was seeded, so the agent is already running. | ### Managed Agent Send Message [#managed-agent-send-message] Send a user message to an existing Claude Platform Managed Agent session. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | | `userMessage` | string | Yes | The user message to send to the session. | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------------- | | `sessionId` | string | The session the message was sent to. | | `sent` | boolean | True when the event was accepted by the API. | ### Managed Agent Get Session [#managed-agent-get-session] Read a Managed Agent session: status, stop reason, token usage, metadata, and any tool calls awaiting approval. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | The session that was read. | | `status` | string | Session status — 'idle', 'running', 'rescheduling', or 'terminated'. | | `stopReason` | string | Why the session last stopped, e.g. 'end\_turn' or 'requires\_action'. | | `requiresAction` | boolean | True when the session is waiting on a tool confirmation or custom tool result. If this is true while pendingTools is empty, the session is blocked but the API named no blocking events — surface it rather than treating the session as done. | | `pendingTools` | json | Blocking tool calls — \[\{id, eventType, kind, name, input}]. Route by kind: 'confirmation' ids go to Respond To Tool Confirmation, 'custom\_tool\_result' ids go to Respond To Custom Tool. | | `metadata` | json | Session metadata. | | `title` | string | Session title. | | `inputTokens` | number | Cumulative input tokens. | | `outputTokens` | number | Cumulative output tokens. | ### Managed Agent List Events [#managed-agent-list-events] Read a Managed Agent session's event history and the agent's reply text. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | | `eventTypes` | array | No | Optional event-type filter, e.g. \['agent.message']. Omit to return every event. | | `limit` | number | No | Maximum events to return, keeping the most recent (default 500). | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------- | | `sessionId` | string | The session that was read. | | `events` | json | Session events, oldest first. | | `count` | number | Number of events returned. | | `assistantText` | string | Concatenated text of every persisted agent.message, in order. | | `truncated` | boolean | True when the limit was hit and older events were dropped. | ### Managed Agent Update Session [#managed-agent-update-session] Update a Managed Agent session's title or metadata. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | | `title` | string | No | New session title. | | `sessionParameters` | object | No | Replacement metadata map (replaces all stored metadata, not merged). Leaving it empty leaves the stored metadata unchanged — use clearMetadata to remove it. | | `clearMetadata` | boolean | No | Removes all of the session's stored metadata. Overrides any map supplied above. | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------- | | `sessionId` | string | The session that was updated. | | `updated` | boolean | True when the update was accepted. | | `metadata` | json | Metadata after the update. | | `title` | string | Title after the update. | ### Managed Agent Interrupt Session [#managed-agent-interrupt-session] Stop a running Managed Agent session; it stays usable afterwards. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------- | | `sessionId` | string | The session that was interrupted. | | `interrupted` | boolean | True when the interrupt was accepted. | ### Managed Agent Respond To Tool Confirmation [#managed-agent-respond-to-tool-confirmation] Allow or deny the tool calls a Managed Agent session is waiting on before it can continue. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | | `toolUseIds` | array | Yes | Blocking tool-use EVENT ids, from Get Session pendingTools\[].id where kind is 'confirmation' (not toolu\_ ids). | | `decision` | string | Yes | 'allow' to let the tools run, or 'deny' to reject them. | | `denyMessage` | string | No | Reason surfaced to the agent. Only sent when the decision is deny. | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------ | | `sessionId` | string | The session that was answered. | | `decision` | string | The decision applied — 'allow' or 'deny'. | | `confirmedToolUseIds` | json | The tool-use event ids that were answered. | ### Managed Agent Respond To Custom Tool [#managed-agent-respond-to-custom-tool] Return the result of a custom tool a Managed Agent session is waiting on so it can continue. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | | `customToolUseId` | string | Yes | The custom tool-use EVENT id being answered, from Get Session pendingTools\[].id where kind is 'custom\_tool\_result'. | | `result` | string | Yes | The tool's output, returned to the agent as text. | | `isError` | boolean | No | Mark the result as a failure so the agent can adjust its approach. | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------ | ----------------------------------------------- | | `sessionId` | string | The session that was answered. | | `answeredToolUseId` | string | The custom tool-use event id that was answered. | ### Managed Agent Archive Session [#managed-agent-archive-session] Archive a Managed Agent session, preserving its history. Not reversible. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `sessionId` | string | The session that was archived. | | `archived` | boolean | True when the archive was accepted. | ### Managed Agent Delete Session [#managed-agent-delete-session] Permanently delete a Managed Agent session, its events, and its sandbox. Not reversible. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `credential` | string | Yes | Claude Platform credential (Anthropic workspace API key) to act with. | | `sessionId` | string | Yes | Anthropic session id (sesn\_...) to act on. | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------- | | `sessionId` | string | The session that was deleted. | | `deleted` | boolean | True when the delete was accepted. | --- # ManageEngine ServiceDesk Plus (/integrations/manageengine_sdp) {/* MANUAL-CONTENT-START:intro */} [ManageEngine ServiceDesk Plus Cloud](https://www.manageengine.com/products/service-desk/) is ManageEngine's ITSM suite — the service desk that IT teams run requests, problems, changes, assets, and a knowledge base on. Agent Serve talks to its v3 REST API, which exposes the same operations available in the web client. **Why ServiceDesk Plus?** * **The whole ITIL spine in one product:** incidents and service requests, problem records, change workflow with stages and approvals, a CMDB-backed asset inventory, and a requester-facing knowledge base — all cross-referenceable by ID. * **Portal-defined everything:** statuses, priorities, categories, groups, and change stages are configured per portal. The API resolves them by name, so a workflow written against one portal's vocabulary reads naturally rather than hardcoding opaque IDs. * **A real query language on every list:** `search_criteria` supports `is`, `is not`, `contains`, `starts with`, `between`, and numeric and date comparisons, so filtering happens server-side instead of by pulling the queue and sifting it in a workflow. * **User-defined fields:** every module carries `udf_*` custom fields, which these operations read and write alongside the built-ins. **Using ServiceDesk Plus in Agent Serve** This integration covers 31 operations across five modules — full create, read, list, update, and delete on requests, problems, changes, assets, and knowledge base solutions, plus notes on requests, problems, and changes. Lookup fields (status, priority, category, technician, group, topic, product) are addressed by name or email rather than by internal ID, so an agent can act on a ticket without first resolving five reference tables. **Key benefits of using ServiceDesk Plus in Agent Serve:** * **Triage and routing:** read an incoming request, classify it from its content, then set category, priority, and support group in one update. * **SLA watch:** list open requests sorted on `due_by_time`, compare against now, and escalate or reassign what is breaching. * **Ticket deflection:** search solutions for an answer, then post it as a requester-visible note instead of queueing the ticket for a human. * **Knowledge capture:** turn a resolved request and its notes into a new solution filed under an existing topic. * **Problem management:** cluster recurring requests by category and open a problem record that links them. * **Change calendars and asset inventory:** page scheduled changes into a weekly summary, or mirror the asset list into an Agent Serve table for querying and charting. **Before you start** Connect your Zoho account from the block's credential field. Self-hosted deployments additionally need Agent Serve's Zoho OAuth client configured in the [Zoho API console](https://api-console.zoho.com/). The same client serves Zoho Desk and ServiceDesk Plus — Zoho scopes are chosen per authorization request, not per registered client, so no second app is needed. Three things shape what will work: * **Data center.** Connecting requires a Zoho account in the **US** data center. Agent Serve's authorize and token-exchange legs are pinned to `accounts.zoho.com`, and a Zoho access token is only valid in the data center that issued it. The **Data Center** field lists every documented host (US, EU, IN, AU, JP, CA, SA, UK, CN, AE) because that mapping is stable, but only US is reachable with a credential connected through Agent Serve today. * **Portal.** Accounts with more than one portal must set the **Portal** field to the portal's URL name — found under *ESM Directory → Service Desk Instances*. Leaving it empty addresses the account's default portal. * **Scopes.** The connection requests `SDPOnDemand.{requests,problems,changes,assets,solutions}` at the exact verbs these operations use, plus `aaaserver.profile.READ` to label the credential. Nothing broader is requested, so an operation whose module your Zoho user cannot access will fail at ServiceDesk Plus rather than being silently skipped. **Things worth knowing** * **Required fields differ per module.** Requests need a subject; problems a title; changes a title, stage, and status; assets a name and an existing product; solutions a title, content, and an existing topic. * **Editing a change's status requires a comment.** ServiceDesk Plus rejects the update otherwise, so the **Status Comment** field sits alongside the status on Update Change. * **Updates only send what you fill in.** Fields left empty are omitted from the request rather than sent as null, so changing a status never clears the technician or category. The two flags that cannot express this with a toggle — **Emergency Change** and **Visible to Requesters** — become *Leave unchanged / Yes / No* dropdowns on their update operations for the same reason. * **A solution only becomes requester-visible once approved.** ServiceDesk Plus ignores `is_public` until the article's approval status is Approved. * **Lists cap at 100 rows.** `Row Count` is clamped to the documented maximum; page with `Start Index` and watch `has_more_rows` in the returned `listInfo`. Set **Include Total Count** when you need the true size of a queue rather than the page size. * **The standalone Tasks module is not covered.** Its endpoints are documented but the ServiceDesk Plus scope table publishes no `tasks` entry, so requesting one would put an unverified scope on the consent screen. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Full read and write access to ManageEngine ServiceDesk Plus Cloud: create, search, update and delete requests, problems, changes, assets and knowledge base solutions, and add notes to requests, problems and changes. Supports multi-portal accounts. Connecting requires a Zoho account in the US data center. ## Actions [#actions] ### ManageEngine SDP Create Request [#manageengine-sdp-create-request] Create a request (ticket) in ManageEngine ServiceDesk Plus Cloud with a subject, description, requester and classification. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `subject` | string | Yes | Request subject (maximum 250 characters) | | `description` | string | No | Request description. HTML is supported | | `requesterEmail` | string | No | Email address of the requester. Defaults to the authenticated user | | `priority` | string | No | Priority name, e.g. High | | `status` | string | No | Status name, e.g. Open | | `category` | string | No | Category name | | `subcategory` | string | No | Subcategory name | | `group` | string | No | Support group name | | `technicianEmail` | string | No | Email address of the technician to assign | | `urgency` | string | No | Urgency name | | `impact` | string | No | Impact name | | `requestType` | string | No | Request type name, e.g. Incident or Service Request | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------- | | `request` | object | The created request | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number shown in the SDP UI | | ↳ `subject` | string | Request subject | | ↳ `description` | string | Request description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Status colour | | ↳ `in_progress` | boolean | Whether the status is in progress | | ↳ `internal_name` | string | Internal status name | | ↳ `stop_timer` | boolean | Whether the SLA timer stops | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `template` | json | Request template | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | SLA due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `resolved_time` | json | Resolution time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `completed_time` | json | Completion time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_service_request` | boolean | Whether this is a service request rather than an incident | | ↳ `has_notes` | boolean | Whether the request has notes | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP Get Request [#manageengine-sdp-get-request] Retrieve a single ManageEngine ServiceDesk Plus Cloud request by ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `requestId` | string | Yes | ID of the request to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------- | | `request` | object | The request | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number shown in the SDP UI | | ↳ `subject` | string | Request subject | | ↳ `description` | string | Request description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Status colour | | ↳ `in_progress` | boolean | Whether the status is in progress | | ↳ `internal_name` | string | Internal status name | | ↳ `stop_timer` | boolean | Whether the SLA timer stops | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `template` | json | Request template | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | SLA due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `resolved_time` | json | Resolution time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `completed_time` | json | Completion time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_service_request` | boolean | Whether this is a service request rather than an incident | | ↳ `has_notes` | boolean | Whether the request has notes | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP List Requests [#manageengine-sdp-list-requests] List ManageEngine ServiceDesk Plus Cloud requests, with optional search criteria, sorting and paging. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------------------------------- | | `requests` | array | Matching requests | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number shown in the SDP UI | | ↳ `subject` | string | Request subject | | ↳ `description` | string | Request description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Status colour | | ↳ `in_progress` | boolean | Whether the status is in progress | | ↳ `internal_name` | string | Internal status name | | ↳ `stop_timer` | boolean | Whether the SLA timer stops | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `template` | json | Request template | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | SLA due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `resolved_time` | json | Resolution time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `completed_time` | json | Completion time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_service_request` | boolean | Whether this is a service request rather than an incident | | ↳ `has_notes` | boolean | Whether the request has notes | | ↳ `udf_fields` | json | Portal-defined custom fields | | `count` | number | Number of requests returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Update Request [#manageengine-sdp-update-request] Update a ManageEngine ServiceDesk Plus Cloud request: change its status, priority, assignment, classification or description. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `requestId` | string | Yes | ID of the request to update | | `subject` | string | No | New subject (maximum 250 characters) | | `description` | string | No | New description. HTML is supported | | `priority` | string | No | Priority name to set, e.g. High | | `status` | string | No | Status name to set, e.g. Resolved | | `category` | string | No | Category name to set | | `subcategory` | string | No | Subcategory name to set | | `group` | string | No | Support group name to set | | `technicianEmail` | string | No | Email address of the technician to assign | | `urgency` | string | No | Urgency name to set | | `impact` | string | No | Impact name to set | | `udfFields` | json | No | Portal-defined custom fields to set, e.g. \{"udf\_char1":"value"} | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------- | | `request` | object | The updated request | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number shown in the SDP UI | | ↳ `subject` | string | Request subject | | ↳ `description` | string | Request description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Status colour | | ↳ `in_progress` | boolean | Whether the status is in progress | | ↳ `internal_name` | string | Internal status name | | ↳ `stop_timer` | boolean | Whether the SLA timer stops | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `template` | json | Request template | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | SLA due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `resolved_time` | json | Resolution time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `completed_time` | json | Completion time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_service_request` | boolean | Whether this is a service request rather than an incident | | ↳ `has_notes` | boolean | Whether the request has notes | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP Delete Request [#manageengine-sdp-delete-request] Move a ManageEngine ServiceDesk Plus Cloud request to the trash. Deleting a request also removes its notes, tasks and worklogs. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `requestId` | string | Yes | ID of the request to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the request was deleted | ### ManageEngine SDP Add Request Note [#manageengine-sdp-add-request-note] Add a note to a ManageEngine ServiceDesk Plus Cloud request, optionally making it visible to the requester. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `requestId` | string | Yes | ID of the request to add the note to | | `description` | string | Yes | Note body. HTML is supported | | `showToRequester` | boolean | No | Whether the requester can see this note | | `notifyTechnician` | boolean | No | Whether to notify the assigned technician | | `markFirstResponse` | boolean | No | Whether this note counts as the first response for SLA purposes | | `addToLinkedRequests` | boolean | No | Whether to copy the note to linked requests | #### Output [#output-5] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------- | | `note` | object | The created note | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `show_to_requester` | boolean | Whether the note is visible to the requester | | ↳ `notify_technician` | boolean | Whether the technician was notified | | ↳ `mark_first_response` | boolean | Whether the note counts as the first response | | ↳ `add_to_linked_requests` | boolean | Whether the note was copied to linked requests | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `request` | json | The request the note belongs to | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number | | ↳ `subject` | string | Request subject | ### ManageEngine SDP List Request Notes [#manageengine-sdp-list-request-notes] List the notes on a ManageEngine ServiceDesk Plus Cloud request. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `requestId` | string | Yes | ID of the request whose notes to list | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-6] | Parameter | Type | Description | | -------------------------- | ------- | ---------------------------------------------------------------------- | | `notes` | array | Notes on the request | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `show_to_requester` | boolean | Whether the note is visible to the requester | | ↳ `notify_technician` | boolean | Whether the technician was notified | | ↳ `mark_first_response` | boolean | Whether the note counts as the first response | | ↳ `add_to_linked_requests` | boolean | Whether the note was copied to linked requests | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `request` | json | The request the note belongs to | | ↳ `id` | string | Request ID | | ↳ `display_id` | string | Request number | | ↳ `subject` | string | Request subject | | `count` | number | Number of notes returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Create Problem [#manageengine-sdp-create-problem] Create a problem record in ManageEngine ServiceDesk Plus Cloud with a title, description and classification. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `title` | string | Yes | Problem title | | `description` | string | No | Problem description. HTML is supported | | `reportedByEmail` | string | No | Email address of the user reporting the problem | | `technicianEmail` | string | No | Email address of the technician to assign | | `priority` | string | No | Priority name, e.g. High | | `status` | string | No | Status name, e.g. Open | | `urgency` | string | No | Urgency name | | `impact` | string | No | Impact name | | `category` | string | No | Category name | | `subcategory` | string | No | Subcategory name | | `group` | string | No | Support group name | | `site` | string | No | Site name | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-7] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------- | | `problem` | object | The created problem | | ↳ `id` | string | Problem ID | | ↳ `display_id` | json | Problem number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reported_by` | json | User who reported the problem | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | Due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `root_cause` | json | Root cause analysis | | ↳ `workaround_details` | json | Documented workaround | | ↳ `resolution_details` | json | Documented resolution | | ↳ `known_error_details` | json | Known-error record details | | ↳ `notes_present` | boolean | Whether the problem has notes | ### ManageEngine SDP Get Problem [#manageengine-sdp-get-problem] Retrieve a single ManageEngine ServiceDesk Plus Cloud problem by ID. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `problemId` | string | Yes | ID of the problem to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------- | | `problem` | object | The problem | | ↳ `id` | string | Problem ID | | ↳ `display_id` | json | Problem number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reported_by` | json | User who reported the problem | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | Due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `root_cause` | json | Root cause analysis | | ↳ `workaround_details` | json | Documented workaround | | ↳ `resolution_details` | json | Documented resolution | | ↳ `known_error_details` | json | Known-error record details | | ↳ `notes_present` | boolean | Whether the problem has notes | ### ManageEngine SDP List Problems [#manageengine-sdp-list-problems] List ManageEngine ServiceDesk Plus Cloud problems, with optional search criteria, sorting and paging. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-9] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------- | | `problems` | array | Matching problems | | ↳ `id` | string | Problem ID | | ↳ `display_id` | json | Problem number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reported_by` | json | User who reported the problem | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | Due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `root_cause` | json | Root cause analysis | | ↳ `workaround_details` | json | Documented workaround | | ↳ `resolution_details` | json | Documented resolution | | ↳ `known_error_details` | json | Known-error record details | | ↳ `notes_present` | boolean | Whether the problem has notes | | `count` | number | Number of problems returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Update Problem [#manageengine-sdp-update-problem] Update a ManageEngine ServiceDesk Plus Cloud problem: change its title, status, assignment or classification. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `problemId` | string | Yes | ID of the problem to update | | `title` | string | No | New problem title | | `description` | string | No | Problem description. HTML is supported | | `reportedByEmail` | string | No | Email address of the user reporting the problem | | `technicianEmail` | string | No | Email address of the technician to assign | | `priority` | string | No | Priority name, e.g. High | | `status` | string | No | Status name, e.g. Open | | `urgency` | string | No | Urgency name | | `impact` | string | No | Impact name | | `category` | string | No | Category name | | `subcategory` | string | No | Subcategory name | | `group` | string | No | Support group name | | `site` | string | No | Site name | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-10] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------- | | `problem` | object | The updated problem | | ↳ `id` | string | Problem ID | | ↳ `display_id` | json | Problem number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `category` | json | Category | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `subcategory` | json | Subcategory | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reported_by` | json | User who reported the problem | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `technician` | json | Assigned technician | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `due_by_time` | json | Due time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `root_cause` | json | Root cause analysis | | ↳ `workaround_details` | json | Documented workaround | | ↳ `resolution_details` | json | Documented resolution | | ↳ `known_error_details` | json | Known-error record details | | ↳ `notes_present` | boolean | Whether the problem has notes | ### ManageEngine SDP Delete Problem [#manageengine-sdp-delete-problem] Delete a ManageEngine ServiceDesk Plus Cloud problem and its associated notes. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `problemId` | string | Yes | ID of the problem to delete | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the problem was deleted | ### ManageEngine SDP Add Problem Note [#manageengine-sdp-add-problem-note] Add a note to a ManageEngine ServiceDesk Plus Cloud problem. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `problemId` | string | Yes | ID of the problem to add the note to | | `description` | string | Yes | Note body. HTML is supported | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------- | | `note` | object | The created note | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `performed_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `performed_time` | json | Time the note was added | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | ### ManageEngine SDP List Problem Notes [#manageengine-sdp-list-problem-notes] List the notes on a ManageEngine ServiceDesk Plus Cloud problem. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `problemId` | string | Yes | ID of the problem whose notes to list | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `notes` | array | Notes on the problem | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `performed_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `performed_time` | json | Time the note was added | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | `count` | number | Number of notes returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Create Change [#manageengine-sdp-create-change] Create a change record in ManageEngine ServiceDesk Plus Cloud with a title, stage, status and schedule. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `title` | string | Yes | Change title | | `stage` | string | Yes | Change stage name, e.g. Submission | | `status` | string | Yes | Change status name, e.g. Open | | `description` | string | No | Change description. HTML is supported | | `changeTypeName` | string | No | Change type name, e.g. Standard | | `reasonForChange` | string | No | Reason-for-change name | | `priority` | string | No | Priority name | | `urgency` | string | No | Urgency name | | `impact` | string | No | Impact name | | `group` | string | No | Support group name | | `changeRequesterEmail` | string | No | Email address of the change requester | | `changeOwnerEmail` | string | No | Email address of the change owner | | `changeManagerEmail` | string | No | Email address of the change manager | | `scheduledStartTime` | string | No | Scheduled start, as an ISO 8601 timestamp or epoch milliseconds | | `scheduledEndTime` | string | No | Scheduled end, as an ISO 8601 timestamp or epoch milliseconds | | `emergency` | boolean | No | Whether this is an emergency change | | `comment` | string | No | Reason for the status update. ServiceDesk Plus requires this when status changes | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-14] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------- | | `change` | object | The created change | | ↳ `id` | string | Change ID | | ↳ `display_id` | json | Change number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `change_requester` | json | User who requested the change | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_owner` | json | Change owner | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_manager` | json | Change manager | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `roll_out_plan` | json | Roll-out plan | | ↳ `close_details` | json | Closure details | ### ManageEngine SDP Get Change [#manageengine-sdp-get-change] Retrieve a single ManageEngine ServiceDesk Plus Cloud change by ID. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `changeId` | string | Yes | ID of the change to retrieve | #### Output [#output-15] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------- | | `change` | object | The change | | ↳ `id` | string | Change ID | | ↳ `display_id` | json | Change number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `change_requester` | json | User who requested the change | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_owner` | json | Change owner | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_manager` | json | Change manager | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `roll_out_plan` | json | Roll-out plan | | ↳ `close_details` | json | Closure details | ### ManageEngine SDP List Changes [#manageengine-sdp-list-changes] List ManageEngine ServiceDesk Plus Cloud changes, with optional search criteria, sorting and paging. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-16] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------- | | `changes` | array | Matching changes | | ↳ `id` | string | Change ID | | ↳ `display_id` | json | Change number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `change_requester` | json | User who requested the change | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_owner` | json | Change owner | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_manager` | json | Change manager | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `roll_out_plan` | json | Roll-out plan | | ↳ `close_details` | json | Closure details | | `count` | number | Number of changes returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Update Change [#manageengine-sdp-update-change] Update a ManageEngine ServiceDesk Plus Cloud change: move its stage or status, reschedule it, or change its assignment. ServiceDesk Plus requires a comment whenever the status changes. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `changeId` | string | Yes | ID of the change to update | | `title` | string | No | New change title | | `stage` | string | No | Change stage name to set | | `status` | string | No | Change status name to set. Requires a comment | | `description` | string | No | Change description. HTML is supported | | `changeTypeName` | string | No | Change type name, e.g. Standard | | `reasonForChange` | string | No | Reason-for-change name | | `priority` | string | No | Priority name | | `urgency` | string | No | Urgency name | | `impact` | string | No | Impact name | | `group` | string | No | Support group name | | `changeRequesterEmail` | string | No | Email address of the change requester | | `changeOwnerEmail` | string | No | Email address of the change owner | | `changeManagerEmail` | string | No | Email address of the change manager | | `scheduledStartTime` | string | No | Scheduled start, as an ISO 8601 timestamp or epoch milliseconds | | `scheduledEndTime` | string | No | Scheduled end, as an ISO 8601 timestamp or epoch milliseconds | | `emergency` | boolean | No | Whether this is an emergency change | | `comment` | string | No | Reason for the status update. ServiceDesk Plus requires this when status changes | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-17] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------- | | `change` | object | The updated change | | ↳ `id` | string | Change ID | | ↳ `display_id` | json | Change number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `urgency` | json | Urgency | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `impact` | json | Impact | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `change_requester` | json | User who requested the change | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_owner` | json | Change owner | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `change_manager` | json | Change manager | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `group` | json | Support group | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `roll_out_plan` | json | Roll-out plan | | ↳ `close_details` | json | Closure details | ### ManageEngine SDP Delete Change [#manageengine-sdp-delete-change] Delete a ManageEngine ServiceDesk Plus Cloud change and its associated notes. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `changeId` | string | Yes | ID of the change to delete | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the change was deleted | ### ManageEngine SDP Add Change Note [#manageengine-sdp-add-change-note] Add a note to a ManageEngine ServiceDesk Plus Cloud change. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `changeId` | string | Yes | ID of the change to add the note to | | `description` | string | Yes | Note body. HTML is supported | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------- | | `note` | object | The created note | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `performed_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `performed_time` | json | Time the note was added | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | ### ManageEngine SDP List Change Notes [#manageengine-sdp-list-change-notes] List the notes on a ManageEngine ServiceDesk Plus Cloud change. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `changeId` | string | Yes | ID of the change whose notes to list | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `notes` | array | Notes on the change | | ↳ `id` | string | Note ID | | ↳ `description` | string | Note body (HTML) | | ↳ `performed_by` | json | Note author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `performed_time` | json | Time the note was added | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | `count` | number | Number of notes returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Create Asset [#manageengine-sdp-create-asset] Create an asset in the ManageEngine ServiceDesk Plus Cloud inventory. Requires a name and an existing product. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `name` | string | Yes | Asset name | | `product` | string | Yes | Name of an existing product this asset is an instance of | | `productType` | string | No | Product type name, e.g. Laptop | | `assetTag` | string | No | Asset tag | | `serialNumber` | string | No | Serial number | | `barcode` | string | No | Barcode | | `ipAddress` | string | No | IP address | | `macAddress` | string | No | MAC address | | `location` | string | No | Location | | `state` | string | No | Asset state name, e.g. In Use | | `vendor` | string | No | Vendor name | | `department` | string | No | Department name | | `site` | string | No | Site name | | `userEmail` | string | No | Email address of the user the asset is assigned to | | `stateHistoryComments` | string | No | Comment recorded against a state change | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-21] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `asset` | object | The created asset | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset name | | ↳ `asset_tag` | string | Asset tag | | ↳ `barcode` | string | Barcode | | ↳ `serial_number` | string | Serial number | | ↳ `ip_address` | string | IP address | | ↳ `mac_address` | string | MAC address | | ↳ `location` | string | Location | | ↳ `state` | json | Asset state (In Use, In Store, ...) | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `department` | json | Owning department | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `user` | json | User the asset is assigned to | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_loaned` | boolean | Whether the asset is on loan | | ↳ `is_in_contract` | boolean | Whether the asset is covered by a contract | ### ManageEngine SDP Get Asset [#manageengine-sdp-get-asset] Retrieve a single ManageEngine ServiceDesk Plus Cloud asset by ID. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `assetId` | string | Yes | ID of the asset to retrieve | #### Output [#output-22] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `asset` | object | The asset | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset name | | ↳ `asset_tag` | string | Asset tag | | ↳ `barcode` | string | Barcode | | ↳ `serial_number` | string | Serial number | | ↳ `ip_address` | string | IP address | | ↳ `mac_address` | string | MAC address | | ↳ `location` | string | Location | | ↳ `state` | json | Asset state (In Use, In Store, ...) | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `department` | json | Owning department | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `user` | json | User the asset is assigned to | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_loaned` | boolean | Whether the asset is on loan | | ↳ `is_in_contract` | boolean | Whether the asset is covered by a contract | ### ManageEngine SDP List Assets [#manageengine-sdp-list-assets] List ManageEngine ServiceDesk Plus Cloud assets, with optional search criteria, sorting and paging. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-23] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------- | | `assets` | array | Matching assets | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset name | | ↳ `asset_tag` | string | Asset tag | | ↳ `barcode` | string | Barcode | | ↳ `serial_number` | string | Serial number | | ↳ `ip_address` | string | IP address | | ↳ `mac_address` | string | MAC address | | ↳ `location` | string | Location | | ↳ `state` | json | Asset state (In Use, In Store, ...) | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `department` | json | Owning department | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `user` | json | User the asset is assigned to | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_loaned` | boolean | Whether the asset is on loan | | ↳ `is_in_contract` | boolean | Whether the asset is covered by a contract | | `count` | number | Number of assets returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Update Asset [#manageengine-sdp-update-asset] Update a ManageEngine ServiceDesk Plus Cloud asset: reassign it, change its state, or correct its inventory details. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `assetId` | string | Yes | ID of the asset to update | | `name` | string | No | New asset name | | `product` | string | No | Name of an existing product to reassign the asset to | | `productType` | string | No | Product type name, e.g. Laptop | | `assetTag` | string | No | Asset tag | | `serialNumber` | string | No | Serial number | | `barcode` | string | No | Barcode | | `ipAddress` | string | No | IP address | | `macAddress` | string | No | MAC address | | `location` | string | No | Location | | `state` | string | No | Asset state name, e.g. In Use | | `vendor` | string | No | Vendor name | | `department` | string | No | Department name | | `site` | string | No | Site name | | `userEmail` | string | No | Email address of the user the asset is assigned to | | `stateHistoryComments` | string | No | Comment recorded against a state change | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-24] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `asset` | object | The updated asset | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset name | | ↳ `asset_tag` | string | Asset tag | | ↳ `barcode` | string | Barcode | | ↳ `serial_number` | string | Serial number | | ↳ `ip_address` | string | IP address | | ↳ `mac_address` | string | MAC address | | ↳ `location` | string | Location | | ↳ `state` | json | Asset state (In Use, In Store, ...) | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `department` | json | Owning department | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `site` | json | Site | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `user` | json | User the asset is assigned to | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `is_loaned` | boolean | Whether the asset is on loan | | ↳ `is_in_contract` | boolean | Whether the asset is covered by a contract | ### ManageEngine SDP Delete Asset [#manageengine-sdp-delete-asset] Delete an asset from the ManageEngine ServiceDesk Plus Cloud inventory. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `assetId` | string | Yes | ID of the asset to delete | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the asset was deleted | ### ManageEngine SDP Create Solution [#manageengine-sdp-create-solution] Add an article to the ManageEngine ServiceDesk Plus Cloud knowledge base under an existing topic. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `title` | string | Yes | Solution title | | `description` | string | Yes | Solution body. HTML is supported | | `topic` | string | Yes | Name of an existing knowledge base topic to file the solution under | | `keywords` | string | No | Search keywords for the solution | | `isPublic` | boolean | No | Whether requesters can see the solution. Only takes effect once the solution is Approved | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-26] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------- | | `solution` | object | The created solution | | ↳ `id` | string | Solution ID | | ↳ `display_id` | json | Solution number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `keywords` | string | Search keywords | | ↳ `is_public` | boolean | Whether requesters can see the solution | | ↳ `likes` | number | Like count | | ↳ `dislikes` | number | Dislike count | | ↳ `no_of_hits` | number | View count | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `last_updated_time` | json | Last update time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP Get Solution [#manageengine-sdp-get-solution] Retrieve a single ManageEngine ServiceDesk Plus Cloud knowledge base solution by ID. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `solutionId` | string | Yes | ID of the solution to retrieve | #### Output [#output-27] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------- | | `solution` | object | The solution | | ↳ `id` | string | Solution ID | | ↳ `display_id` | json | Solution number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `keywords` | string | Search keywords | | ↳ `is_public` | boolean | Whether requesters can see the solution | | ↳ `likes` | number | Like count | | ↳ `dislikes` | number | Dislike count | | ↳ `no_of_hits` | number | View count | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `last_updated_time` | json | Last update time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP List Solutions [#manageengine-sdp-list-solutions] Search the ManageEngine ServiceDesk Plus Cloud knowledge base, with optional search criteria, sorting and paging. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `rowCount` | number | No | Rows to return (maximum 100) | | `startIndex` | number | No | One-based index of the first row to return | | `sortField` | string | No | Field to sort on, e.g. created\_time | | `sortOrder` | string | No | Sort direction: asc or desc | | `searchCriteria` | json | No | Search criteria object or array, e.g. \{"field":"status.name","condition":"is","value":"Open"} | | `fieldsRequired` | json | No | Array of field names to return, e.g. \["subject","status"] | | `getTotalCount` | boolean | No | Include the total matching row count in list\_info | #### Output [#output-28] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------------- | | `solutions` | array | Matching solutions | | ↳ `id` | string | Solution ID | | ↳ `display_id` | json | Solution number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `keywords` | string | Search keywords | | ↳ `is_public` | boolean | Whether requesters can see the solution | | ↳ `likes` | number | Like count | | ↳ `dislikes` | number | Dislike count | | ↳ `no_of_hits` | number | View count | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `last_updated_time` | json | Last update time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `udf_fields` | json | Portal-defined custom fields | | `count` | number | Number of solutions returned in this page | | `listInfo` | object | Paging metadata echoed by ServiceDesk Plus | | ↳ `row_count` | number | Rows returned | | ↳ `start_index` | number | Index the page started at | | ↳ `page` | number | Page number | | ↳ `has_more_rows` | boolean | Whether more rows are available after this page | | ↳ `sort_field` | string | Field the results were sorted on | | ↳ `sort_order` | string | Sort direction | | ↳ `total_count` | number | Total matching rows, present only when get\_total\_count was requested | ### ManageEngine SDP Update Solution [#manageengine-sdp-update-solution] Update a ManageEngine ServiceDesk Plus Cloud knowledge base solution: revise its body, retitle it, or move it to another topic. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `solutionId` | string | Yes | ID of the solution to update | | `title` | string | No | New solution title | | `description` | string | No | New solution body. HTML is supported | | `topic` | string | No | Name of an existing topic to move the solution to | | `keywords` | string | No | Search keywords for the solution | | `isPublic` | boolean | No | Whether requesters can see the solution. Only takes effect once the solution is Approved | | `udfFields` | json | No | Portal-defined custom fields, e.g. \{"udf\_char1":"value"} | #### Output [#output-29] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------- | | `solution` | object | The updated solution | | ↳ `id` | string | Solution ID | | ↳ `display_id` | json | Solution number shown in the SDP UI (display\_value, value) | | ↳ `display_value` | string | Record number as shown in the UI, e.g. PB-140 | | ↳ `value` | string | Bare sequence number, e.g. 140 | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `id` | string | Identifier | | ↳ `name` | string | Display name | | ↳ `keywords` | string | Search keywords | | ↳ `is_public` | boolean | Whether requesters can see the solution | | ↳ `likes` | number | Like count | | ↳ `dislikes` | number | Dislike count | | ↳ `no_of_hits` | number | View count | | ↳ `created_time` | json | Creation time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `last_updated_time` | json | Last update time | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `display_value` | string | Human-readable timestamp in the portal timezone | | ↳ `value` | string | Epoch milliseconds as a string | | ↳ `created_by` | json | Author | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email_id` | string | Email address | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `is_technician` | boolean | Whether the user is a technician | | ↳ `is_vip_user` | boolean | Whether the user is flagged VIP | | ↳ `job_title` | string | Job title | | ↳ `udf_fields` | json | Portal-defined custom fields | ### ManageEngine SDP Delete Solution [#manageengine-sdp-delete-solution] Delete an article from the ManageEngine ServiceDesk Plus Cloud knowledge base, along with its comments and versions. #### Input [#input-30] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dataCenter` | string | No | Zoho data center hosting the portal (US, EU, IN, AU, JP, CA, SA, UK, CN, AE). Credentials connected through Agent Serve are issued by the US accounts server and are only valid against US. | | `portal` | string | No | Portal URL name. Leave empty to use the account default portal | | `solutionId` | string | Yes | ID of the solution to delete | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the solution was deleted | --- # Mem0 (/integrations/mem0) {/* MANUAL-CONTENT-START:intro */} Use [Mem0](https://mem0.ai) to store persistent memories, search them by meaning, and retrieve memory records across workflow runs. Store conversation context or user preferences, then retrieve relevant memories for a later agent step. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Mem0 into the workflow. Can add, search, and retrieve memories. ## Actions [#actions] ### Add Memories [#add-memories] Add memories to Mem0 for persistent storage and retrieval #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID associated with the memory (e.g., "user\_123", "[alice@example.com](mailto:alice@example.com)") | | `messages` | json | Yes | Array of message objects with role and content (e.g., \[\{"role": "user", "content": "Hello"}]) | | `apiKey` | string | Yes | Your Mem0 API key | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------- | | `message` | string | Status message for the queued memory processing job | | `status` | string | Processing status returned by Mem0 | | `event_id` | string | Event ID for polling memory processing status | ### Search Memories [#search-memories] Search for memories in Mem0 using semantic search #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID to search memories for (e.g., "user\_123", "[alice@example.com](mailto:alice@example.com)") | | `query` | string | Yes | Search query to find relevant memories (e.g., "What are my favorite foods?") | | `limit` | number | No | Maximum number of results to return (e.g., 10, 50, 100) | | `apiKey` | string | Yes | Your Mem0 API key | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------------- | | `searchResults` | array | Array of search results with memory data and similarity scores | | ↳ `id` | string | Unique identifier for the memory | | ↳ `memory` | string | The content of the memory | | ↳ `user_id` | string | User ID associated with this memory | | ↳ `agent_id` | string | Agent ID associated with this memory | | ↳ `app_id` | string | App ID associated with this memory | | ↳ `run_id` | string | Run/session ID associated with this memory | | ↳ `hash` | string | Hash of the memory content | | ↳ `metadata` | json | Custom metadata associated with the memory | | ↳ `categories` | json | Auto-assigned categories for the memory | | ↳ `created_at` | string | ISO 8601 timestamp when the memory was created | | ↳ `updated_at` | string | ISO 8601 timestamp when the memory was last updated | | ↳ `score` | number | Similarity score from vector search | | `ids` | array | Array of memory IDs found in the search results | ### Get Memories [#get-memories] Retrieve memories from Mem0 by ID or filter criteria #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID to retrieve memories for (e.g., "user\_123", "[alice@example.com](mailto:alice@example.com)") | | `memoryId` | string | No | Specific memory ID to retrieve (e.g., "mem\_abc123") | | `startDate` | string | No | Start date for filtering by created\_at (e.g., "2024-01-15") | | `endDate` | string | No | End date for filtering by created\_at (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of results to return (e.g., 10, 50, 100) | | `page` | number | No | Page number to retrieve for paginated list results | | `apiKey` | string | Yes | Your Mem0 API key | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------- | | `memories` | array | Array of retrieved memory objects | | ↳ `id` | string | Unique identifier for the memory | | ↳ `memory` | string | The content of the memory | | ↳ `user_id` | string | User ID associated with this memory | | ↳ `agent_id` | string | Agent ID associated with this memory | | ↳ `app_id` | string | App ID associated with this memory | | ↳ `run_id` | string | Run/session ID associated with this memory | | ↳ `hash` | string | Hash of the memory content | | ↳ `metadata` | json | Custom metadata associated with the memory | | ↳ `categories` | json | Auto-assigned categories for the memory | | ↳ `created_at` | string | ISO 8601 timestamp when the memory was created | | ↳ `updated_at` | string | ISO 8601 timestamp when the memory was last updated | | `ids` | array | Array of memory IDs that were retrieved | | `count` | number | Total number of memories matching the filters | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | --- # Memory (/integrations/memory) {/* MANUAL-CONTENT-START:intro */} Use the Memory block to store and retrieve messages across workflow runs. Add messages with the same conversation identifier to append to an existing conversation, retrieve one conversation or all memories, and delete memories that are no longer needed. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Memory into the workflow. Can add, get a memory, get all memories, and delete memories. ## Actions [#actions] ### Add Memory [#add-memory] Add a new memory to the database or append to existing memory with the same ID. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | No | Conversation identifier (e.g., user-123, session-abc). If a memory with this conversationId already exists, the new message will be appended to it. | | `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. | | `role` | string | Yes | Role for agent memory (user, assistant, or system) | | `content` | string | Yes | Content for agent memory | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------------------------- | | `success` | boolean | Whether the memory was added successfully | | `memories` | array | Array of memory objects including the new or updated memory | | `error` | string | Error message if operation failed | ### Get Memory [#get-memory] Retrieve memory by conversationId. Returns matching memories. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | No | Conversation identifier (e.g., user-123, session-abc). Returns memories for this conversation. | | `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------------------------- | | `success` | boolean | Whether the memory was retrieved successfully | | `memories` | array | Array of memory objects with conversationId and data fields | | `message` | string | Success or error message | | `error` | string | Error message if operation failed | ### Get All Memories [#get-all-memories] Retrieve all memories from the database #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------- | | `success` | boolean | Whether all memories were retrieved successfully | | `memories` | array | Array of all memory objects with key, conversationId, and data fields | | `message` | string | Success or error message | | `error` | string | Error message if operation failed | ### Delete Memory [#delete-memory] Delete memories by conversationId. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | No | Conversation identifier (e.g., user-123, session-abc). Deletes all memories for this conversation. | | `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the memory was deleted successfully | | `message` | string | Success or error message | | `error` | string | Error message if operation failed | --- # Facebook Messenger (/integrations/messenger) ## Usage Instructions [#usage-instructions] Send Messenger messages from a Facebook Page: text, images and files, quick replies, button and card templates, and typing indicators. Look up a person by their Page-scoped ID and read past conversations. The Messenger trigger runs a workflow when someone messages the Page, taps a button or quick reply, reacts, or arrives from an m.me link or ad. Replies go out within 24 hours of the person's last message, or within 7 days from a person using the Human Agent tag. ## Actions [#actions] ### Messenger Get Conversation Messages [#messenger-get-conversation-messages] Get the most recent messages (up to 20) of a Messenger conversation with sender, recipients, text, attachments, and time, newest first. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `conversationId` | string | Yes | Conversation ID from List Conversations | | `limit` | number | No | Maximum messages to return (1-20; Meta only returns details for the 20 most recent) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------- | | `messages` | array | Messages, newest first | | ↳ `id` | string | Message ID (mid) | | ↳ `createdTime` | string | When the message was sent | | ↳ `text` | string | Message text (empty for attachment-only messages) | | ↳ `from` | object | Sender: the person or the Page | | ↳ `to` | array | Recipients | | ↳ `attachments` | array | Attached files and media | | ↳ `id` | string | Attachment ID | | ↳ `name` | string | File name | | ↳ `fileUrl` | string | File URL | | ↳ `imageUrl` | string | Image URL | | ↳ `videoUrl` | string | Video URL | ### Messenger Get User Profile [#messenger-get-user-profile] Get a Messenger user's name and profile picture (and, with extra permissions, locale, timezone, and gender) by their Page-scoped ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `psid` | string | Yes | Page-scoped ID (PSID) of the person, e.g. senderPsid from the Messenger trigger | | `fields` | string | No | Comma-separated fields: id, name, first\_name, last\_name, profile\_pic, locale, timezone, gender. Defaults to id,name,first\_name,last\_name,profile\_pic. | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------------- | | `id` | string | PSID | | `name` | string | First and last name | | `firstName` | string | First name | | `lastName` | string | Last name | | `profilePic` | string | Profile picture URL (the URL expires) | | `locale` | string | Facebook locale, e.g. en\_US | | `timezone` | number | Timezone offset from GMT in hours | | `gender` | string | Gender | | `profileAvailable` | boolean | False when Meta returned no profile data for this person | ### Messenger List Conversations [#messenger-list-conversations] List a Facebook Page's Messenger conversations with their participants and last update time, or find the conversation with one person by PSID. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `userId` | string | No | PSID of a person, to return only the conversation with them | | `limit` | number | No | Maximum conversations to return (1-100) | | `after` | string | No | Cursor from a previous call (nextCursor) to fetch the next page | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------- | | `conversations` | array | Conversations, most recently updated first | | ↳ `id` | string | Conversation ID; pass it to Get Conversation Messages | | ↳ `updatedTime` | string | When the last message was added | | ↳ `participants` | array | The person and the Page | | `nextCursor` | string | Pass as After to fetch the next page; null on the last page | | `hasMore` | boolean | Whether another page is available | ### Messenger Send Attachment [#messenger-send-attachment] Send an image, audio, video, or file to a person on Messenger from a public URL that Meta downloads. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `recipientId` | string | Yes | Page-scoped ID (PSID) of the person, e.g. senderPsid from the Messenger trigger | | `messagingType` | string | No | RESPONSE (default; replying within the standard messaging window), UPDATE (proactive, within the window), or MESSAGE\_TAG (outside the window; needs a tag) | | `tag` | string | No | Message tag for MESSAGE\_TAG, e.g. HUMAN\_AGENT (a person replying within 7 days of the last user message; needs the Human Agent permission) | | `notificationType` | string | No | Push notification type: REGULAR (default), SILENT\_PUSH, or NO\_PUSH | | `attachmentType` | string | Yes | image, audio, video, or file | | `url` | string | Yes | Public URL of the media for Meta to download | | `isReusable` | boolean | No | Save the media so it can be sent again by attachment ID (returns attachmentId) | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------- | | `recipientId` | string | PSID the message or action was sent to | | `messageId` | string | ID (mid) of the sent message | | `attachmentId` | string | Reusable attachment ID | | `senderAction` | string | The sender action that was sent | | `id` | string | PSID of the looked-up person | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `profilePic` | string | Profile picture URL (expires) | | `locale` | string | Facebook locale | | `timezone` | number | Timezone offset from GMT | | `gender` | string | Gender | | `profileAvailable` | boolean | Whether Meta returned profile data | | `conversations` | json | Conversations (id, updatedTime, participants with id, name, email) | | `messages` | json | Messages, newest first (id, createdTime, text, from, to, attachments) | | `nextCursor` | string | Cursor for the next page | | `hasMore` | boolean | Whether another page is available | ### Messenger Send Quick Replies [#messenger-send-quick-replies] Send a Messenger text message with up to 13 quick reply buttons, or buttons that ask for the person's phone number or email. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `recipientId` | string | Yes | Page-scoped ID (PSID) of the person, e.g. senderPsid from the Messenger trigger | | `messagingType` | string | No | RESPONSE (default; replying within the standard messaging window), UPDATE (proactive, within the window), or MESSAGE\_TAG (outside the window; needs a tag) | | `tag` | string | No | Message tag for MESSAGE\_TAG, e.g. HUMAN\_AGENT (a person replying within 7 days of the last user message; needs the Human Agent permission) | | `notificationType` | string | No | Push notification type: REGULAR (default), SILENT\_PUSH, or NO\_PUSH | | `text` | string | Yes | Message text shown above the quick replies | | `quickReplies` | json | Yes | Array of 1-13 quick replies. Each is a title string (also used as the payload) or \{ "title": "Yes" (max 20 chars), "payload": "YES" (max 1000 chars), "imageUrl": "https\://..." }, or \{ "contentType": "user\_phone\_number" } / \{ "contentType": "user\_email" }. | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------- | | `recipientId` | string | PSID the message or action was sent to | | `messageId` | string | ID (mid) of the sent message | | `attachmentId` | string | Reusable attachment ID | | `senderAction` | string | The sender action that was sent | | `id` | string | PSID of the looked-up person | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `profilePic` | string | Profile picture URL (expires) | | `locale` | string | Facebook locale | | `timezone` | number | Timezone offset from GMT | | `gender` | string | Gender | | `profileAvailable` | boolean | Whether Meta returned profile data | | `conversations` | json | Conversations (id, updatedTime, participants with id, name, email) | | `messages` | json | Messages, newest first (id, createdTime, text, from, to, attachments) | | `nextCursor` | string | Cursor for the next page | | `hasMore` | boolean | Whether another page is available | ### Messenger Send Sender Action [#messenger-send-sender-action] Show a typing indicator (typing\_on, typing\_off) or mark the person's messages as seen (mark\_seen) in a Messenger conversation. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `recipientId` | string | Yes | Page-scoped ID (PSID) of the person | | `senderAction` | string | Yes | typing\_on, typing\_off, or mark\_seen | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `recipientId` | string | PSID the action was shown to | | `senderAction` | string | The sender action that was sent | ### Messenger Send Template [#messenger-send-template] Send a Messenger button template (text with up to 3 URL, postback, or call buttons) or a generic template (a card or carousel of up to 10 cards). #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `recipientId` | string | Yes | Page-scoped ID (PSID) of the person, e.g. senderPsid from the Messenger trigger | | `messagingType` | string | No | RESPONSE (default; replying within the standard messaging window), UPDATE (proactive, within the window), or MESSAGE\_TAG (outside the window; needs a tag) | | `tag` | string | No | Message tag for MESSAGE\_TAG, e.g. HUMAN\_AGENT (a person replying within 7 days of the last user message; needs the Human Agent permission) | | `notificationType` | string | No | Push notification type: REGULAR (default), SILENT\_PUSH, or NO\_PUSH | | `templateType` | string | Yes | button or generic | | `text` | string | No | Button template text shown above the buttons (max 640 characters) | | `buttons` | json | No | Button template buttons, 1-3, e.g. \[\{ "type": "web\_url", "url": "https\://...", "title": "Book" }, \{ "type": "postback", "title": "Talk to us", "payload": "TALK" }, \{ "type": "phone\_number", "title": "Call", "payload": "+16505551234" }]. Titles max 20 characters. | | `elements` | json | No | Generic template elements, 1-10, each \{ "title" (max 80), "subtitle" (max 80), "image\_url", "default\_action": \{ "type": "web\_url", "url" }, "buttons": \[up to 3 buttons] } | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------- | | `recipientId` | string | PSID the message or action was sent to | | `messageId` | string | ID (mid) of the sent message | | `attachmentId` | string | Reusable attachment ID | | `senderAction` | string | The sender action that was sent | | `id` | string | PSID of the looked-up person | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `profilePic` | string | Profile picture URL (expires) | | `locale` | string | Facebook locale | | `timezone` | number | Timezone offset from GMT | | `gender` | string | Gender | | `profileAvailable` | boolean | Whether Meta returned profile data | | `conversations` | json | Conversations (id, updatedTime, participants with id, name, email) | | `messages` | json | Messages, newest first (id, createdTime, text, from, to, attachments) | | `nextCursor` | string | Cursor for the next page | | `hasMore` | boolean | Whether another page is available | ### Messenger Send Text [#messenger-send-text] Send a text message from a Facebook Page to a person on Messenger by their Page-scoped ID (PSID). #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can perform the MESSAGING task on the Page, with pages\_messaging, pages\_manage\_metadata, and pages\_read\_engagement | | `pageId` | string | No | Facebook Page ID. Defaults to the Page the access token belongs to (me). | | `recipientId` | string | Yes | Page-scoped ID (PSID) of the person, e.g. senderPsid from the Messenger trigger | | `messagingType` | string | No | RESPONSE (default; replying within the standard messaging window), UPDATE (proactive, within the window), or MESSAGE\_TAG (outside the window; needs a tag) | | `tag` | string | No | Message tag for MESSAGE\_TAG, e.g. HUMAN\_AGENT (a person replying within 7 days of the last user message; needs the Human Agent permission) | | `notificationType` | string | No | Push notification type: REGULAR (default), SILENT\_PUSH, or NO\_PUSH | | `text` | string | Yes | Message text | | `replyToMessageId` | string | No | Message ID (mid) to reply to, shown as a quoted reply in the thread | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------------- | | `recipientId` | string | PSID the message or action was sent to | | `messageId` | string | ID (mid) of the sent message | | `attachmentId` | string | Reusable attachment ID | | `senderAction` | string | The sender action that was sent | | `id` | string | PSID of the looked-up person | | `name` | string | Full name | | `firstName` | string | First name | | `lastName` | string | Last name | | `profilePic` | string | Profile picture URL (expires) | | `locale` | string | Facebook locale | | `timezone` | number | Timezone offset from GMT | | `gender` | string | Gender | | `profileAvailable` | boolean | Whether Meta returned profile data | | `conversations` | json | Conversations (id, updatedTime, participants with id, name, email) | | `messages` | json | Messages, newest first (id, createdTime, text, from, to, attachments) | | `nextCursor` | string | Cursor for the next page | | `hasMore` | boolean | Whether another page is available | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Messenger Webhook [#messenger-webhook] Trigger workflow when someone messages your Facebook Page on Messenger, taps a button or quick reply, reacts, reads, or arrives from an m.me link or ad #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `messengerVerifyToken` | string | Yes | Enter the same string in the Verify Token field of the Messenger webhook in the Meta App Dashboard. | | `messengerAppSecret` | string | Yes | Used to check the X-Hub-Signature-256 header Meta signs every delivery with. Deliveries that do not match are rejected. | | `messengerEventTypes` | string | No | Run only for the selected events. Leave empty for everything except read receipts, which fire for every message the person reads. | | `messengerIncludeEchoes` | boolean | No | Also run for messages your Page sends (Meta marks them is\_echo; subscribe to message\_echoes). Off by default so a reply sent by this workflow does not trigger it again. | | `messengerPageIds` | string | No | Page IDs | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `eventType` | string | message, postback, reaction, read, or referral | | `pageId` | string | Facebook Page ID that received the event | | `senderPsid` | string | Page-scoped ID (PSID) of the person. Pass it as the Recipient ID of a send operation. For echoes it is your Page ID. | | `userRef` | string | User ref instead of a PSID, sent for some plugin and Get Started postbacks before the person has a PSID | | `recipientId` | string | Recipient of the event: your Page ID, or the person for echoes | | `text` | string | Message text (the tapped quick reply title), or the title of the tapped postback button | | `messageId` | string | Message ID (mid) of the message or postback, or of the message reacted to | | `attachments` | json | Message attachments, each \{ type, url, title, stickerId } (image, audio, video, file, sticker, fallback, ...) | | `quickReplyPayload` | string | Payload of the tapped quick reply (the phone number or email for those quick replies) | | `postbackPayload` | string | Payload of the tapped postback button | | `postbackTitle` | string | Title of the tapped postback button | | `referral` | json | Referral from an m.me link, Click-to-Messenger ad, or Shops product page: \{ ref, source, type, adId, refererUri, adsContextData, productId } | | `reaction` | json | For reactions: \{ action: react \| unreact, reaction, emoji } | | `readWatermark` | string | For read receipts: every message sent at or before this time (ms) was read | | `isEcho` | boolean | True when the message was sent by your Page (only with Include Sent Messages) | | `timestamp` | string | When the event happened (ISO 8601) | | `raw` | json | This event as Meta sent it: \{ sender, recipient, timestamp, message \| postback \| reaction \| read \| referral } | | `events` | json | Every matching event in this delivery (Meta can batch several), each with the fields above | | `eventCount` | number | Number of matching events in this delivery | | `delivery` | json | The whole webhook payload exactly as Meta sent it: \{ object, entry } | --- # Meta Lead Ads (/integrations/meta_lead_ads) ## Usage Instructions [#usage-instructions] Read leads from Meta lead ads (instant forms on Facebook and Instagram). Get a lead with its answers as a flat object, list the leads on a form within a time range, list the forms on a Page, and read a form with its questions. The New Lead trigger runs a workflow as soon as Meta delivers a lead, so you can call, message, or route it within seconds. ## Actions [#actions] ### Meta Lead Ads Get Form [#meta-lead-ads-get-form] Get a Meta lead form with its status and questions, including each question key, label, type, and answer options. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can advertise on the Page, with leads\_retrieval, pages\_show\_list, pages\_read\_engagement, pages\_manage\_metadata, and ads\_management | | `formId` | string | Yes | Lead form ID | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------------------------------------------------- | | `questions` | array | Form questions. The key is the field ID used in lead answers; custom questions carry a label and options. | | ↳ `key` | string | Field ID the answer is stored under | | ↳ `label` | string | Question text (custom questions) | | ↳ `type` | string | Question type, e.g. EMAIL, PHONE, CUSTOM | | ↳ `options` | array | Answer options of a multiple-choice question | | ↳ `key` | string | Option key | | ↳ `value` | string | Option text | ### Meta Lead Ads Get Lead [#meta-lead-ads-get-lead] Get a Facebook or Instagram lead form submission by lead ID, with the person's answers as a flat object plus the ad, campaign, and form it came from. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can advertise on the Page, with leads\_retrieval, pages\_show\_list, pages\_read\_engagement, pages\_manage\_metadata, and ads\_management | | `leadId` | string | Yes | Lead ID (the leadgen\_id from the New Lead trigger) | #### Output [#output-1] | Parameter | Type | Description | | --------------------------- | ------- | ---------------------------------------------------------------------------------- | | `id` | string | Lead or form ID | | `createdTime` | string | When the lead was submitted | | `adId` | string | Ad the lead came from | | `formId` | string | Lead form ID | | `campaignId` | string | Campaign the lead came from | | `fields` | json | Lead answers keyed by form field ID, e.g. \{ "email": "...", "full\_name": "..." } | | `fieldData` | json | Raw field\_data entries (name, values) | | `customDisclaimerResponses` | json | Custom disclaimer checkbox responses (checkboxKey, isChecked) | | `leads` | json | Leads on this page (id, createdTime, adId, formId, campaignId, fields) | | `forms` | json | Lead forms on this page (id, name, status, locale) | | `name` | string | Form name | | `status` | string | Form status, e.g. ACTIVE or ARCHIVED | | `locale` | string | Form locale | | `questions` | json | Form questions (key, label, type, options) | | `nextCursor` | string | Cursor for the next page | | `hasMore` | boolean | Whether another page is available | ### Meta Lead Ads List Form Leads [#meta-lead-ads-list-form-leads] List the leads submitted to a Meta lead form, newest first, optionally only those submitted within a time range. Use the cursor to page through more. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can advertise on the Page, with leads\_retrieval, pages\_show\_list, pages\_read\_engagement, pages\_manage\_metadata, and ads\_management | | `formId` | string | Yes | Lead form ID | | `since` | string | No | Only leads submitted at or after this time (ISO 8601 such as 2026-10-01T00:00:00Z, or a Unix timestamp) | | `until` | string | No | Only leads submitted before this time (ISO 8601 or a Unix timestamp) | | `limit` | number | No | Maximum leads to return (1-100; Meta defaults to 25) | | `after` | string | No | Cursor from a previous call (nextCursor) to fetch the next page | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------- | | `leads` | array | Leads on this page | | `nextCursor` | string | Pass as After to fetch the next page; null on the last page | | `hasMore` | boolean | Whether another page is available | ### Meta Lead Ads List Page Forms [#meta-lead-ads-list-page-forms] List the lead forms (instant forms) on a Facebook Page with their ID, name, status, and locale. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pageAccessToken` | string | Yes | Long-lived Page access token from someone who can advertise on the Page, with leads\_retrieval, pages\_show\_list, pages\_read\_engagement, pages\_manage\_metadata, and ads\_management | | `pageId` | string | Yes | Facebook Page ID | | `limit` | number | No | Maximum forms to return (1-100; Meta defaults to 25) | | `after` | string | No | Cursor from a previous call (nextCursor) to fetch the next page | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------- | | `forms` | array | Lead forms on this page | | `nextCursor` | string | Pass as After to fetch the next page; null on the last page | | `hasMore` | boolean | Whether another page is available | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Meta Lead Ads New Lead [#meta-lead-ads-new-lead] Trigger workflow the moment someone submits a Facebook or Instagram lead form, with the lead IDs and, when a Page access token is set, their answers #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `metaVerifyToken` | string | Yes | Enter the same string in the Verify Token field of the Page webhook in the Meta App Dashboard. | | `metaAppSecret` | string | Yes | Used to check the X-Hub-Signature-256 header Meta signs every delivery with. Deliveries that do not match are rejected. | | `metaPageAccessToken` | string | No | When set, the trigger fetches each new lead's answers with this long-lived Page access token (needs leads\_retrieval). When empty, the trigger outputs IDs only. | | `metaPageIds` | string | No | Page IDs | | `metaFormIds` | string | No | Form IDs | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `leadgenId` | string | Lead ID; pass it to Get Lead to read the answers | | `formId` | string | Lead form ID | | `pageId` | string | Facebook Page ID the lead belongs to | | `adId` | string | Ad ID (empty for organic leads) | | `adgroupId` | string | Ad group ID from the webhook | | `createdTime` | string | When the lead was created (ISO 8601, from the webhook created\_time) | | `fields` | json | Answers keyed by form field ID, e.g. \{ "full\_name": "...", "email": "...", "phone\_number": "..." }. Empty unless a Page Access Token is set. | | `campaignId` | string | Campaign ID, when the answers were fetched and the token can see it | | `fieldsFetched` | boolean | Whether the answers were fetched with the Page Access Token | | `fetchError` | string | Why fetching the answers failed, if it did | | `leads` | json | Every lead in this delivery (Meta can batch several), each with leadgenId, formId, pageId, adId, adgroupId, createdTime, fields, campaignId, fieldsFetched, and fetchError | | `leadCount` | number | Number of leads in this delivery | | `raw` | json | The webhook payload exactly as Meta sent it | --- # Azure AD (/integrations/microsoft_ad) {/* MANUAL-CONTENT-START:intro */} [Azure Active Directory](https://entra.microsoft.com) (now Microsoft Entra ID) is Microsoft's cloud-based identity and access management service. It helps organizations manage users, groups, and access to applications and resources across cloud and on-premises environments. With the Azure AD integration in Agent Serve, you can: * **Manage users**: List, create, update, and delete user accounts in your directory * **Manage groups**: Create and configure security groups and Microsoft 365 groups * **Control group membership**: Add and remove members from groups programmatically * **Query directory data**: Search and filter users and groups using OData expressions * **Automate onboarding/offboarding**: Create new user accounts with initial passwords and enable/disable accounts as part of HR workflows In Agent Serve, the Azure AD integration enables your agents to programmatically manage your organization's identity infrastructure. This allows for automation scenarios such as provisioning new employees, updating user profiles in bulk, managing team group memberships, and auditing directory data. By connecting Agent Serve with Azure AD, you can streamline identity lifecycle management and ensure your directory stays in sync with your organization's needs. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Azure Active Directory into your workflows. Create, update, and delete users and groups, manage group memberships, assign and remove licenses, reset passwords, revoke sign-in sessions, read sign-in and directory audit logs, grant and revoke app and directory roles, and read registered devices and conditional access policies. Device writes are not supported. ## Actions [#actions] ### List Azure AD Users [#list-azure-ad-users] List users in Azure AD (Microsoft Entra ID) #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of users to return (default 100, max 999) | | `filter` | string | No | OData filter expression (e.g., "department eq 'Sales'") | | `search` | string | No | Search string to filter users by displayName or mail | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------------- | | `users` | array | List of users | | ↳ `id` | string | User ID | | ↳ `displayName` | string | Display name | | ↳ `givenName` | string | First name | | ↳ `surname` | string | Last name | | ↳ `userPrincipalName` | string | User principal name (email) | | ↳ `mail` | string | Email address | | ↳ `jobTitle` | string | Job title | | ↳ `department` | string | Department | | ↳ `officeLocation` | string | Office location | | ↳ `mobilePhone` | string | Mobile phone number | | ↳ `accountEnabled` | boolean | Whether the account is enabled | | `userCount` | number | Number of users returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Get Azure AD User [#get-azure-ad-user] Get a user by ID or user principal name from Azure AD #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `userId` | string | Yes | User ID or user principal name (e.g., "[user@example.com](mailto:user@example.com)") | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------ | | `user` | object | User details | | ↳ `id` | string | User ID | | ↳ `displayName` | string | Display name | | ↳ `givenName` | string | First name | | ↳ `surname` | string | Last name | | ↳ `userPrincipalName` | string | User principal name (email) | | ↳ `mail` | string | Email address | | ↳ `jobTitle` | string | Job title | | ↳ `department` | string | Department | | ↳ `officeLocation` | string | Office location | | ↳ `mobilePhone` | string | Mobile phone number | | ↳ `accountEnabled` | boolean | Whether the account is enabled | ### Create Azure AD User [#create-azure-ad-user] Create a new user in Azure AD (Microsoft Entra ID) #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `displayName` | string | Yes | Display name for the user | | `mailNickname` | string | Yes | Mail alias for the user | | `userPrincipalName` | string | Yes | User principal name (e.g., "[user@example.com](mailto:user@example.com)") | | `password` | string | Yes | Initial password for the user | | `accountEnabled` | boolean | Yes | Whether the account is enabled | | `givenName` | string | No | First name | | `surname` | string | No | Last name | | `jobTitle` | string | No | Job title | | `department` | string | No | Department | | `officeLocation` | string | No | Office location | | `mobilePhone` | string | No | Mobile phone number | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------ | --------------------------- | | `user` | object | Created user details | | ↳ `id` | string | User ID | | ↳ `displayName` | string | Display name | | ↳ `givenName` | string | First name | | ↳ `surname` | string | Last name | | ↳ `userPrincipalName` | string | User principal name (email) | | ↳ `mail` | string | Email address | | ↳ `jobTitle` | string | Job title | | ↳ `officeLocation` | string | Office location | | ↳ `mobilePhone` | string | Mobile phone number | | ↳ `businessPhones` | array | Business phone numbers | | ↳ `preferredLanguage` | string | Preferred language | ### Update Azure AD User [#update-azure-ad-user] Update user properties in Azure AD (Microsoft Entra ID) #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------ | | `userId` | string | Yes | User ID or user principal name | | `displayName` | string | No | Display name | | `givenName` | string | No | First name | | `surname` | string | No | Last name | | `jobTitle` | string | No | Job title | | `department` | string | No | Department | | `officeLocation` | string | No | Office location | | `mobilePhone` | string | No | Mobile phone number | | `accountEnabled` | boolean | No | Whether the account is enabled | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `updated` | boolean | Whether the update was successful | | `userId` | string | ID of the updated user | ### Delete Azure AD User [#delete-azure-ad-user] Delete a user from Azure AD (Microsoft Entra ID). The user is moved to a temporary container and can be restored within 30 days. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `userId` | string | Yes | User ID or user principal name | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `deleted` | boolean | Whether the deletion was successful | | `userId` | string | ID of the deleted user | ### List Azure AD Groups [#list-azure-ad-groups] List groups in Azure AD (Microsoft Entra ID) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of groups to return (default 100, max 999) | | `filter` | string | No | OData filter expression (e.g., "securityEnabled eq true") | | `search` | string | No | Search string to filter groups by displayName or description | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-5] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------------- | | `groups` | array | List of groups | | ↳ `id` | string | Group ID | | ↳ `displayName` | string | Display name | | ↳ `description` | string | Group description | | ↳ `mail` | string | Email address | | ↳ `mailEnabled` | boolean | Whether mail is enabled | | ↳ `mailNickname` | string | Mail nickname | | ↳ `securityEnabled` | boolean | Whether security is enabled | | ↳ `groupTypes` | array | Group types | | ↳ `visibility` | string | Group visibility | | ↳ `createdDateTime` | string | Creation date | | `groupCount` | number | Number of groups returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Get Azure AD Group [#get-azure-ad-group] Get a group by ID from Azure AD (Microsoft Entra ID) #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `groupId` | string | Yes | Group ID | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | --------------------------- | | `group` | object | Group details | | ↳ `id` | string | Group ID | | ↳ `displayName` | string | Display name | | ↳ `description` | string | Group description | | ↳ `mail` | string | Email address | | ↳ `mailEnabled` | boolean | Whether mail is enabled | | ↳ `mailNickname` | string | Mail nickname | | ↳ `securityEnabled` | boolean | Whether security is enabled | | ↳ `groupTypes` | array | Group types | | ↳ `visibility` | string | Group visibility | | ↳ `createdDateTime` | string | Creation date | ### Create Azure AD Group [#create-azure-ad-group] Create a new group in Azure AD (Microsoft Entra ID) #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `displayName` | string | Yes | Display name for the group | | `mailNickname` | string | Yes | Mail alias for the group (ASCII only, max 64 characters) | | `description` | string | No | Group description | | `mailEnabled` | boolean | Yes | Whether mail is enabled (true for Microsoft 365 groups) | | `securityEnabled` | boolean | Yes | Whether security is enabled (true for security groups) | | `groupTypes` | string | No | Group type: "Unified" for Microsoft 365 group, leave empty for security group | | `visibility` | string | No | Group visibility: "Private" or "Public" (can be changed later), or "HiddenMembership" (Microsoft 365 groups only; can only be set at creation and never changed afterward) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | --------------------------- | | `group` | object | Created group details | | ↳ `id` | string | Group ID | | ↳ `displayName` | string | Display name | | ↳ `description` | string | Group description | | ↳ `mail` | string | Email address | | ↳ `mailEnabled` | boolean | Whether mail is enabled | | ↳ `mailNickname` | string | Mail nickname | | ↳ `securityEnabled` | boolean | Whether security is enabled | | ↳ `groupTypes` | array | Group types | | ↳ `visibility` | string | Group visibility | | ↳ `createdDateTime` | string | Creation date | ### Update Azure AD Group [#update-azure-ad-group] Update group properties in Azure AD (Microsoft Entra ID) #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------- | | `groupId` | string | Yes | Group ID | | `displayName` | string | No | Display name | | `description` | string | No | Group description | | `mailNickname` | string | No | Mail alias | | `visibility` | string | No | Group visibility: "Private" or "Public" | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `updated` | boolean | Whether the update was successful | | `groupId` | string | ID of the updated group | ### Delete Azure AD Group [#delete-azure-ad-group] Delete a group from Azure AD (Microsoft Entra ID). Microsoft 365 and security groups can be restored within 30 days. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `groupId` | string | Yes | Group ID | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `deleted` | boolean | Whether the deletion was successful | | `groupId` | string | ID of the deleted group | ### List Azure AD Group Members [#list-azure-ad-group-members] List members of a group in Azure AD (Microsoft Entra ID) #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `groupId` | string | No | Group ID. Not needed when Next Page is provided to fetch a later page. | | `top` | number | No | Maximum number of members to return (default 100, max 999) | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------- | | `members` | array | List of group members | | ↳ `id` | string | Member ID | | ↳ `displayName` | string | Display name | | ↳ `mail` | string | Email address | | ↳ `odataType` | string | Directory object type | | `memberCount` | number | Number of members returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Add Azure AD Group Member [#add-azure-ad-group-member] Add a member to a group in Azure AD (Microsoft Entra ID) #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------- | | `groupId` | string | Yes | Group ID | | `memberId` | string | Yes | User ID of the member to add | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `added` | boolean | Whether the member was added successfully | | `groupId` | string | Group ID | | `memberId` | string | Member ID that was added | ### Remove Azure AD Group Member [#remove-azure-ad-group-member] Remove a member from a group in Azure AD (Microsoft Entra ID) #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------- | | `groupId` | string | Yes | Group ID | | `memberId` | string | Yes | User ID of the member to remove | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `removed` | boolean | Whether the member was removed successfully | | `groupId` | string | Group ID | | `memberId` | string | Member ID that was removed | ### Assign Microsoft Entra ID License [#assign-microsoft-entra-id-license] Add or remove subscription licenses (SKUs) on a user in Microsoft Entra ID. Removing a license immediately revokes the access it granted to the associated services. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID or user principal name to change licenses for | | `addSkuIds` | string | No | Comma-separated SKU IDs (GUIDs) of the licenses to assign. Leave empty to only remove licenses. | | `removeSkuIds` | string | No | Comma-separated SKU IDs (GUIDs) of the licenses to remove. Leave empty to only add licenses. | | `disabledPlanIds` | string | No | Comma-separated service plan IDs (GUIDs) to disable on every license being assigned | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------- | | `userId` | string | ID of the user whose licenses changed | | `displayName` | string | Display name of the user | | `userPrincipalName` | string | User principal name of the user | | `assignedLicenses` | array | Licenses assigned to the user after the change | | ↳ `skuId` | string | SKU ID of the assigned license | | ↳ `disabledPlans` | array | Service plan IDs disabled on this license | ### List Microsoft Entra ID User Licenses [#list-microsoft-entra-id-user-licenses] List the subscription licenses assigned to a user in Microsoft Entra ID #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `userId` | string | Yes | User ID or user principal name | #### Output [#output-14] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------- | | `licenses` | array | Licenses assigned to the user | | ↳ `id` | string | License detail ID | | ↳ `skuId` | string | SKU ID of the license | | ↳ `skuPartNumber` | string | SKU part number (e.g., "ENTERPRISEPACK") | | ↳ `servicePlans` | array | Service plans included in the license | | ↳ `servicePlanId` | string | Service plan ID | | ↳ `servicePlanName` | string | Service plan name | | ↳ `provisioningStatus` | string | Provisioning status of the service plan | | ↳ `appliesTo` | string | Whether the plan applies to "User" or "Company" | | `licenseCount` | number | Number of licenses returned | ### List Microsoft Entra ID Subscribed SKUs [#list-microsoft-entra-id-subscribed-skus] List the subscription SKUs the tenant owns, including how many license units are prepaid and how many are consumed #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------ | | `skus` | array | Subscription SKUs owned by the tenant | | ↳ `id` | string | Subscribed SKU object ID | | ↳ `skuId` | string | SKU ID, used when assigning or removing licenses | | ↳ `skuPartNumber` | string | SKU part number (e.g., "ENTERPRISEPACK") | | ↳ `appliesTo` | string | Whether the SKU applies to "User" or "Company" | | ↳ `capabilityStatus` | string | Capability status of the subscription | | ↳ `consumedUnits` | number | Number of licenses currently assigned | | ↳ `prepaidUnits` | object | Prepaid license unit counts by status | | ↳ `enabled` | number | Number of units that are enabled | | ↳ `suspended` | number | Number of units that are suspended | | ↳ `warning` | number | Number of units that are in warning status | | ↳ `lockedOut` | number | Number of units that are locked out | | ↳ `servicePlans` | array | Service plans included in the SKU | | ↳ `servicePlanId` | string | Service plan ID | | ↳ `servicePlanName` | string | Service plan name | | ↳ `provisioningStatus` | string | Provisioning status of the service plan | | ↳ `appliesTo` | string | Whether the plan applies to "User" or "Company" | | `skuCount` | number | Number of SKUs returned | ### Revoke Microsoft Entra ID Sign-In Sessions [#revoke-microsoft-entra-id-sign-in-sessions] Invalidate every refresh token and session cookie issued to a user, forcing them to sign in again on all applications and devices. Revocation can take a few minutes to take effect and does not apply to external users. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `userId` | string | Yes | User ID or user principal name whose sessions should be revoked | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------------- | | `revoked` | boolean | Whether Microsoft Graph confirmed the sessions were revoked | | `userId` | string | ID of the user whose sessions were revoked | ### Set Microsoft Entra ID User Password [#set-microsoft-entra-id-user-password] Set a specific password on a user by updating their password profile. Cannot be used for federated users. Requires an administrator role in Microsoft Entra ID. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID or user principal name whose password should be set | | `password` | string | Yes | The new password. Must satisfy the tenant password policy. | | `forceChangePasswordNextSignIn` | boolean | No | Whether the user must change this password at their next sign-in. Defaults to true. | | `forceChangePasswordNextSignInWithMfa` | boolean | No | Whether the user must complete multifactor authentication before being forced to change the password | #### Output [#output-17] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------- | | `updated` | boolean | Whether the password was set successfully | | `userId` | string | ID of the user whose password was set | | `forceChangePasswordNextSignIn` | boolean | Whether the user must change the password at their next sign-in | ### Reset Microsoft Entra ID User Password [#reset-microsoft-entra-id-user-password] Reset another user's password through their password authentication method. Leave the new password empty to have Microsoft generate one and return it. The user is prompted to change the password at their next sign-in. Cannot be run against your own account. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID or user principal name whose password should be reset | | `newPassword` | string | No | The new password. Required for tenants with hybrid password scenarios. Leave empty for a cloud-only password to have Microsoft generate and return one. | #### Output [#output-18] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accepted` | boolean | Whether Microsoft Graph accepted the password reset operation | | `userId` | string | ID of the user whose password was reset | | `newPassword` | string | The system-generated password, returned only when no new password was supplied in the request. Like every tool output it appears in workflow outputs and run history, and is sent to the model when an agent calls this tool, so prefer supplying your own password when the value must not leave the workflow. | | `operationLocation` | string | URL to poll for the status of the long-running password reset operation | ### List Microsoft Entra ID Authentication Methods [#list-microsoft-entra-id-authentication-methods] List the authentication methods a user has registered, such as passwords, phone numbers, FIDO2 keys, and authenticator apps #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `userId` | string | Yes | User ID or user principal name | #### Output [#output-19] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | | `methods` | array | Authentication methods registered by the user | | ↳ `id` | string | Authentication method ID | | ↳ `odataType` | string | Authentication method type (e.g., "#microsoft.graph.phoneAuthenticationMethod"). Method-specific details vary by type. | | ↳ `createdDateTime` | string | When the authentication method was registered | | `methodCount` | number | Number of authentication methods returned | ### List Microsoft Entra ID Sign-Ins [#list-microsoft-entra-id-sign-ins] List sign-in events from the Microsoft Entra ID sign-in logs, newest first. Requires a Microsoft Entra ID P1 or P2 license. Apply a date filter to keep large queries from timing out. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of sign-ins to return (default and maximum page size is 1000) | | `filter` | string | No | OData filter expression. Filterable fields include userPrincipalName, userId, appId, appDisplayName, ipAddress, createdDateTime, conditionalAccessStatus, riskState and status/errorCode. Example: "createdDateTime ge 2024-01-01T00:00:00Z and status/errorCode ne 0". | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-20] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------ | | `signIns` | array | Sign-in events | | ↳ `id` | string | Sign-in event ID | | ↳ `createdDateTime` | string | When the sign-in was initiated | | ↳ `userId` | string | ID of the user who signed in | | ↳ `userDisplayName` | string | Display name of the user | | ↳ `userPrincipalName` | string | User principal name of the user | | ↳ `appId` | string | ID of the application used to sign in | | ↳ `appDisplayName` | string | Display name of the application | | ↳ `resourceId` | string | ID of the resource that was accessed | | ↳ `resourceDisplayName` | string | Display name of the resource | | ↳ `ipAddress` | string | IP address the sign-in came from | | ↳ `clientAppUsed` | string | Legacy client app used to sign in | | ↳ `correlationId` | string | Correlation ID for the sign-in request | | ↳ `conditionalAccessStatus` | string | Conditional access result: success, failure, notApplied, or unknownFutureValue | | ↳ `isInteractive` | boolean | Whether the sign-in was interactive | | ↳ `riskDetail` | string | Reason behind a specific risk state | | ↳ `riskLevelAggregated` | string | Aggregated risk level for the sign-in | | ↳ `riskState` | string | Risk state of the user or sign-in | | ↳ `errorCode` | number | Sign-in status error code. 0 indicates a successful sign-in. | | ↳ `failureReason` | string | Failure reason from the sign-in status | | ↳ `deviceDisplayName` | string | Display name of the device used | | ↳ `deviceId` | string | ID of the device used | | ↳ `deviceOperatingSystem` | string | Operating system of the device used | | ↳ `deviceBrowser` | string | Browser used to sign in | | ↳ `deviceIsCompliant` | boolean | Whether the device is compliant | | ↳ `deviceIsManaged` | boolean | Whether the device is managed | | ↳ `locationCity` | string | City the sign-in came from | | ↳ `locationState` | string | State the sign-in came from | | ↳ `locationCountryOrRegion` | string | Two-letter country or region code the sign-in came from | | `signInCount` | number | Number of sign-ins returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### List Microsoft Entra ID Directory Audits [#list-microsoft-entra-id-directory-audits] List directory audit records showing who changed what in Microsoft Entra ID, such as user creation, group membership changes, and role assignments #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of audit records to return | | `filter` | string | No | OData filter expression. Filterable fields include activityDateTime, activityDisplayName, correlationId, loggedByService, initiatedBy and targetResources. Example: "activityDateTime ge 2024-01-01T00:00:00Z". | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-21] | Parameter | Type | Description | | -------------------------------- | ------ | --------------------------------------------------------------------------- | | `audits` | array | Directory audit records | | ↳ `id` | string | Audit record ID | | ↳ `activityDateTime` | string | When the activity took place | | ↳ `activityDisplayName` | string | Name of the activity | | ↳ `category` | string | Category of the activity | | ↳ `correlationId` | string | Correlation ID for the activity | | ↳ `loggedByService` | string | Service that logged the activity | | ↳ `operationType` | string | Operation type (e.g., Add, Update, Delete) | | ↳ `result` | string | Result of the activity: success, failure, timeout, or unknownFutureValue | | ↳ `resultReason` | string | Reason for the result | | ↳ `initiatedByUserId` | string | ID of the user who initiated the activity | | ↳ `initiatedByUserPrincipalName` | string | User principal name of the initiating user | | ↳ `initiatedByUserDisplayName` | string | Display name of the initiating user | | ↳ `initiatedByAppId` | string | App ID that initiated the activity | | ↳ `initiatedByAppDisplayName` | string | Display name of the app that initiated the activity | | ↳ `targetResources` | array | Resources the activity acted on | | ↳ `id` | string | ID of the target resource | | ↳ `displayName` | string | Display name of the target resource | | ↳ `type` | string | Type of the target resource (e.g., User, Group) | | ↳ `userPrincipalName` | string | User principal name of the target, null for non-user resources | | `auditCount` | number | Number of audit records returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### List Microsoft Entra ID User App Role Assignments [#list-microsoft-entra-id-user-app-role-assignments] List the application role assignments granted to a user, including assignments the user inherits from groups they are a direct member of #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | string | No | User ID or user principal name. Not needed when Next Page is provided to fetch a later page. | | `top` | number | No | Maximum number of assignments to return | | `filter` | string | No | OData filter expression. Filterable fields include id, resourceId and principalDisplayName. Example: "resourceId eq 8e881353-1735-45af-af21-ee1344582a4d". | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-22] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------------------------------------- | | `assignments` | array | App role assignments granted to the user | | ↳ `id` | string | App role assignment ID, used when removing the assignment | | ↳ `appRoleId` | string | ID of the app role. All-zero GUID means the assignment grants access without a specific role. | | ↳ `createdDateTime` | string | When the assignment was created | | ↳ `principalId` | string | ID of the assigned principal | | ↳ `principalDisplayName` | string | Display name of the assigned principal | | ↳ `principalType` | string | Principal type: User, Group, or ServicePrincipal | | ↳ `resourceId` | string | ID of the resource service principal that defines the app role | | ↳ `resourceDisplayName` | string | Display name of the resource | | `assignmentCount` | number | Number of assignments returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Grant Microsoft Entra ID App Role To User [#grant-microsoft-entra-id-app-role-to-user] Grant a user an application role on a service principal, giving them access to that application #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | Object ID or user principal name of the user to grant the app role to. A user principal name is resolved to its object ID before the grant. | | `resourceId` | string | Yes | Object ID of the resource service principal that defines the app role. Use List Service Principals to find it. | | `appRoleId` | string | Yes | ID of the app role to grant. Use the all-zero GUID 00000000-0000-0000-0000-000000000000 to assign access without a specific role. | #### Output [#output-23] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------------------------------------- | | `assignment` | object | The created app role assignment | | ↳ `id` | string | App role assignment ID, used when removing the assignment | | ↳ `appRoleId` | string | ID of the app role. All-zero GUID means the assignment grants access without a specific role. | | ↳ `createdDateTime` | string | When the assignment was created | | ↳ `principalId` | string | ID of the assigned principal | | ↳ `principalDisplayName` | string | Display name of the assigned principal | | ↳ `principalType` | string | Principal type: User, Group, or ServicePrincipal | | ↳ `resourceId` | string | ID of the resource service principal that defines the app role | | ↳ `resourceDisplayName` | string | Display name of the resource | ### Revoke Microsoft Entra ID App Role From User [#revoke-microsoft-entra-id-app-role-from-user] Revoke an application role assignment from a user, removing their access to that application. Takes the assignment's own ID, not the app role ID. #### Input [#input-24] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `userId` | string | Yes | User ID or user principal name the assignment belongs to | | `appRoleAssignmentId` | string | Yes | ID of the app role assignment to remove, taken from the "id" field of List User App Role Assignments | #### Output [#output-24] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------- | | `removed` | boolean | Whether the assignment was removed successfully | | `userId` | string | ID of the user the assignment belonged to | | `appRoleAssignmentId` | string | ID of the removed app role assignment | ### List Microsoft Entra ID Service Principals [#list-microsoft-entra-id-service-principals] List the enterprise applications and service principals in the tenant, including the app roles each one exposes #### Input [#input-25] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of service principals to return (default and maximum page size is 100) | | `filter` | string | No | OData filter expression. Example: "servicePrincipalType eq 'Application'" or "startsWith(displayName, 'Salesforce')". | | `search` | string | No | Search string matched against the service principal display name | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-25] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------ | | `servicePrincipals` | array | Service principals in the tenant | | ↳ `id` | string | Service principal object ID, used as the resource ID of an app role assignment | | ↳ `appId` | string | Application ID associated with the service principal | | ↳ `displayName` | string | Display name of the service principal | | ↳ `servicePrincipalType` | string | Type of service principal (e.g., Application, ManagedIdentity, Legacy) | | ↳ `accountEnabled` | boolean | Whether users can sign in to the associated application | | ↳ `appOwnerOrganizationId` | string | Tenant ID where the application is registered | | ↳ `signInAudience` | string | Which Microsoft accounts are supported by the associated application | | ↳ `tags` | array | Custom strings used to categorize the service principal | | ↳ `appRoles` | array | App roles exposed by the associated application | | ↳ `id` | string | App role ID, used when granting an app role assignment | | ↳ `displayName` | string | Display name of the app role | | ↳ `description` | string | Description of the app role | | ↳ `value` | string | Value included in the roles claim for this app role | | ↳ `isEnabled` | boolean | Whether the app role can be assigned | | ↳ `allowedMemberTypes` | array | Principal types the app role can be assigned to (User and/or Application) | | `servicePrincipalCount` | number | Number of service principals returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### List Microsoft Entra ID Application Assignments [#list-microsoft-entra-id-application-assignments] List every user, group, and service principal assigned to an application, by reading the app role assignments on its service principal. Recently granted or removed assignments can take time to appear. #### Input [#input-26] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `servicePrincipalId` | string | No | Object ID of the service principal. Use List Service Principals to find it. Not needed when Next Page is provided to fetch a later page. | | `filter` | string | No | OData filter expression supporting eq and startswith. Example: "principalType eq 'User'". | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-26] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------------------------------------- | | `assignments` | array | Principals assigned to the application | | ↳ `id` | string | App role assignment ID, used when removing the assignment | | ↳ `appRoleId` | string | ID of the app role. All-zero GUID means the assignment grants access without a specific role. | | ↳ `createdDateTime` | string | When the assignment was created | | ↳ `principalId` | string | ID of the assigned principal | | ↳ `principalDisplayName` | string | Display name of the assigned principal | | ↳ `principalType` | string | Principal type: User, Group, or ServicePrincipal | | ↳ `resourceId` | string | ID of the resource service principal that defines the app role | | ↳ `resourceDisplayName` | string | Display name of the resource | | `assignmentCount` | number | Number of assignments returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### List Microsoft Entra ID Directory Roles [#list-microsoft-entra-id-directory-roles] List the administrator roles that are activated in the tenant, such as Global Administrator and User Administrator. Roles that have never been activated are not returned. #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-27] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------- | | `roles` | array | Activated directory roles | | ↳ `id` | string | Directory role object ID | | ↳ `displayName` | string | Display name of the directory role | | ↳ `description` | string | Description of the directory role | | ↳ `roleTemplateId` | string | ID of the directory role template | | `roleCount` | number | Number of directory roles returned | ### List Microsoft Entra ID Directory Role Members [#list-microsoft-entra-id-directory-role-members] List the principals holding an administrator role. Returns up to 1000 members; this endpoint does not support paging. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------- | | `directoryRoleId` | string | Yes | Object ID of the directory role. Use List Directory Roles to find it. | #### Output [#output-28] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `members` | array | Principals holding the directory role | | ↳ `id` | string | Member ID | | ↳ `displayName` | string | Display name | | ↳ `mail` | string | Email address | | ↳ `odataType` | string | Directory object type | | `memberCount` | number | Number of members returned | ### Add Microsoft Entra ID Directory Role Member [#add-microsoft-entra-id-directory-role-member] Grant a user an administrator role in Microsoft Entra ID. This is a privileged change that expands what the user can do across the tenant. #### Input [#input-29] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------- | | `directoryRoleId` | string | Yes | Object ID of the directory role. Use List Directory Roles to find it. | | `memberId` | string | Yes | Object ID of the user to grant the role to | #### Output [#output-29] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------- | | `added` | boolean | Whether the member was added successfully | | `directoryRoleId` | string | ID of the directory role | | `memberId` | string | ID of the member that was added | ### Remove Microsoft Entra ID Directory Role Member [#remove-microsoft-entra-id-directory-role-member] Revoke an administrator role from a user in Microsoft Entra ID. Removes only the role membership; the user account itself is not deleted. #### Input [#input-30] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------- | | `directoryRoleId` | string | Yes | Object ID of the directory role. Use List Directory Roles to find it. | | `memberId` | string | Yes | Object ID of the user to remove the role from | #### Output [#output-30] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `removed` | boolean | Whether the member was removed successfully | | `directoryRoleId` | string | ID of the directory role | | `memberId` | string | ID of the member that was removed | ### List Microsoft Entra ID Devices [#list-microsoft-entra-id-devices] List the devices registered in Microsoft Entra ID #### Input [#input-31] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of devices to return | | `filter` | string | No | OData filter expression. Example: "accountEnabled eq false" or "operatingSystem eq 'Windows'". | | `search` | string | No | Search string matched against the device display name | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-31] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------------------------------- | | `devices` | array | Registered devices | | ↳ `id` | string | Device object ID, used to get, update, or delete the device | | ↳ `deviceId` | string | Unique device identifier set during registration | | ↳ `displayName` | string | Display name of the device | | ↳ `operatingSystem` | string | Operating system of the device | | ↳ `operatingSystemVersion` | string | Operating system version of the device | | ↳ `accountEnabled` | boolean | Whether the device is enabled | | ↳ `isCompliant` | boolean | Whether the device complies with MDM policies | | ↳ `isManaged` | boolean | Whether the device is managed by an MDM app | | ↳ `trustType` | string | Device registration type: Workplace, AzureAd, or ServerAd | | ↳ `profileType` | string | Device profile type: RegisteredDevice, SecureVM, Printer, Shared, or IoT | | ↳ `manufacturer` | string | Manufacturer of the device | | ↳ `model` | string | Model of the device | | ↳ `approximateLastSignInDateTime` | string | Approximate time the device last signed in | | ↳ `registrationDateTime` | string | When the device was registered | | `deviceCount` | number | Number of devices returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Get Microsoft Entra ID Device [#get-microsoft-entra-id-device] Get a registered device by its object ID from Microsoft Entra ID #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `deviceObjectId` | string | Yes | Device object ID (the "id" field), not the "deviceId" registration identifier | #### Output [#output-32] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------------------------ | | `device` | object | Device details | | ↳ `id` | string | Device object ID, used to get, update, or delete the device | | ↳ `deviceId` | string | Unique device identifier set during registration | | ↳ `displayName` | string | Display name of the device | | ↳ `operatingSystem` | string | Operating system of the device | | ↳ `operatingSystemVersion` | string | Operating system version of the device | | ↳ `accountEnabled` | boolean | Whether the device is enabled | | ↳ `isCompliant` | boolean | Whether the device complies with MDM policies | | ↳ `isManaged` | boolean | Whether the device is managed by an MDM app | | ↳ `trustType` | string | Device registration type: Workplace, AzureAd, or ServerAd | | ↳ `profileType` | string | Device profile type: RegisteredDevice, SecureVM, Printer, Shared, or IoT | | ↳ `manufacturer` | string | Manufacturer of the device | | ↳ `model` | string | Model of the device | | ↳ `approximateLastSignInDateTime` | string | Approximate time the device last signed in | | ↳ `registrationDateTime` | string | When the device was registered | ### List Microsoft Entra ID User Devices [#list-microsoft-entra-id-user-devices] List the devices a user has registered or owns. Devices the caller cannot read are returned with only their ID and the remaining fields null. #### Input [#input-33] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `userId` | string | No | User ID or user principal name. Not needed when Next Page is provided to fetch a later page. | | `deviceRelationship` | string | No | Which devices to list: "registered" for devices the user registered, or "owned" for devices the user owns. Defaults to "registered". | | `top` | number | No | Maximum number of devices to return | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-33] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------------------------------- | | `devices` | array | Devices linked to the user | | ↳ `id` | string | Device object ID, used to get, update, or delete the device | | ↳ `deviceId` | string | Unique device identifier set during registration | | ↳ `displayName` | string | Display name of the device | | ↳ `operatingSystem` | string | Operating system of the device | | ↳ `operatingSystemVersion` | string | Operating system version of the device | | ↳ `accountEnabled` | boolean | Whether the device is enabled | | ↳ `isCompliant` | boolean | Whether the device complies with MDM policies | | ↳ `isManaged` | boolean | Whether the device is managed by an MDM app | | ↳ `trustType` | string | Device registration type: Workplace, AzureAd, or ServerAd | | ↳ `profileType` | string | Device profile type: RegisteredDevice, SecureVM, Printer, Shared, or IoT | | ↳ `manufacturer` | string | Manufacturer of the device | | ↳ `model` | string | Model of the device | | ↳ `approximateLastSignInDateTime` | string | Approximate time the device last signed in | | ↳ `registrationDateTime` | string | When the device was registered | | `deviceCount` | number | Number of devices returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### List Microsoft Entra ID Conditional Access Policies [#list-microsoft-entra-id-conditional-access-policies] List the conditional access policies configured in the tenant, including their state and the conditions and controls they enforce. Read-only. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `top` | number | No | Maximum number of policies to return | | `filter` | string | No | OData filter expression. Example: "state eq 'enabled'". | | `nextLink` | string | No | Continuation URL from a previous response's 'nextLink' output, used to fetch the next page of results | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------- | | `policies` | array | Conditional access policies | | ↳ `id` | string | Conditional access policy ID | | ↳ `displayName` | string | Display name of the policy | | ↳ `state` | string | Policy state: enabled, disabled, or enabledForReportingButNotEnforced | | ↳ `templateId` | string | ID of the template the policy was created from | | ↳ `createdDateTime` | string | When the policy was created | | ↳ `modifiedDateTime` | string | When the policy was last modified | | ↳ `conditions` | json | Conditions that trigger the policy (users, applications, platforms, locations, risk levels) | | ↳ `grantControls` | json | Controls enforced when the policy applies, or null when none are configured | | ↳ `sessionControls` | json | Session controls enforced when the policy applies, or null when none are set | | `policyCount` | number | Number of policies returned | | `nextLink` | string | Continuation URL for the next page of results, or null if there are no more | ### Get Microsoft Entra ID Conditional Access Policy [#get-microsoft-entra-id-conditional-access-policy] Get a single conditional access policy by ID, including the conditions it matches and the controls it enforces. Read-only. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------- | | `policyId` | string | Yes | Conditional access policy ID | #### Output [#output-35] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------- | | `policy` | object | Conditional access policy details | | ↳ `id` | string | Conditional access policy ID | | ↳ `displayName` | string | Display name of the policy | | ↳ `state` | string | Policy state: enabled, disabled, or enabledForReportingButNotEnforced | | ↳ `templateId` | string | ID of the template the policy was created from | | ↳ `createdDateTime` | string | When the policy was created | | ↳ `modifiedDateTime` | string | When the policy was last modified | | ↳ `conditions` | json | Conditions that trigger the policy (users, applications, platforms, locations, risk levels) | | ↳ `grantControls` | json | Controls enforced when the policy applies, or null when none are configured | | ↳ `sessionControls` | json | Session controls enforced when the policy applies, or null when none are set | --- # Microsoft Dataverse (/integrations/microsoft_dataverse) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Dataverse](https://learn.microsoft.com/en-us/power-apps/maker/data-platform/data-platform-intro) to manage records and relationships in Dynamics 365, Power Platform, or custom environments. The block also supports queries, bulk operations, file transfer, metadata lookup, and Dataverse actions and functions. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft Dataverse into your workflow. Create, read, update, delete, upsert, associate, query, search, and execute actions and functions against Dataverse tables using the Web API. Supports bulk operations, FetchXML, file uploads, relevance search, and table metadata lookup. Works with Dynamics 365, Power Platform, and custom Dataverse environments. ## Actions [#actions] ### Associate Microsoft Dataverse Records [#associate-microsoft-dataverse-records] Associate two records in Microsoft Dataverse via a navigation property. Creates a relationship between a source record and a target record. Supports both collection-valued (POST) and single-valued (PUT) navigation properties. #### Input [#input] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Source entity set name (e.g., accounts) | | `recordId` | string | Yes | Source record GUID | | `navigationProperty` | string | Yes | Navigation property name (e.g., contact\_customer\_accounts for collection-valued, or parentcustomerid\_account for single-valued) | | `targetEntitySetName` | string | Yes | Target entity set name (e.g., contacts) | | `targetRecordId` | string | Yes | Target record GUID to associate | | `navigationType` | string | No | Type of navigation property: "collection" (default, uses POST) or "single" (uses PUT for lookup fields) | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `success` | boolean | Whether the association was created successfully | | `entitySetName` | string | Source entity set name used in the association | | `recordId` | string | Source record GUID that was associated | | `navigationProperty` | string | Navigation property used for the association | | `targetEntitySetName` | string | Target entity set name used in the association | | `targetRecordId` | string | Target record GUID that was associated | ### Create Multiple Microsoft Dataverse Records [#create-multiple-microsoft-dataverse-records] Create multiple records of the same table type in a single request. Each record in the Targets array must include an @odata.type annotation. Recommended batch size: 100-1000 records for standard tables. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `entityLogicalName` | string | Yes | Table logical name for @odata.type annotation (e.g., account, contact). Used to set Microsoft.Dynamics.CRM.\{entityLogicalName} on each record. | | `records` | object | Yes | Array of record objects to create. Each record should contain column logical names as keys. The @odata.type annotation is added automatically. | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `ids` | array | Array of GUIDs for the created records | | `count` | number | Number of records created | | `success` | boolean | Whether all records were created successfully | ### Create Microsoft Dataverse Record [#create-microsoft-dataverse-record] Create a new record in a Microsoft Dataverse table. Requires the entity set name (plural table name) and record data as a JSON object. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `data` | object | Yes | Record data as a JSON object with column names as keys | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------------------------------------------- | | `recordId` | string | The ID of the created record | | `record` | object | Dataverse record object. Contains dynamic columns based on the queried table, plus OData metadata fields. | | `success` | boolean | Whether the record was created successfully | ### Delete Microsoft Dataverse Record [#delete-microsoft-dataverse-record] Delete a record from a Microsoft Dataverse table by its ID. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to delete | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ---------------------------- | | `recordId` | string | The ID of the deleted record | | `success` | boolean | Operation success status | ### Disassociate Microsoft Dataverse Records [#disassociate-microsoft-dataverse-records] Remove an association between two records in Microsoft Dataverse. For collection-valued navigation properties, provide the target record ID. For single-valued navigation properties, only the navigation property name is needed. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Source entity set name (e.g., accounts) | | `recordId` | string | Yes | Source record GUID | | `navigationProperty` | string | Yes | Navigation property name (e.g., contact\_customer\_accounts for collection-valued, or parentcustomerid\_account for single-valued) | | `targetRecordId` | string | No | Target record GUID (required for collection-valued navigation properties, omit for single-valued) | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the disassociation was completed successfully | | `entitySetName` | string | Source entity set name used in the disassociation | | `recordId` | string | Source record GUID that was disassociated | | `navigationProperty` | string | Navigation property used for the disassociation | | `targetRecordId` | string | Target record GUID that was disassociated | ### Download File from Microsoft Dataverse [#download-file-from-microsoft-dataverse] Download a file from a Dataverse file or image column and return its stored file reference and metadata #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | Record GUID to download the file from | | `fileColumn` | string | Yes | File or image column logical name (e.g., entityimage, cr\_document) | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | | `fileColumn` | string | File column the file was downloaded from | ### Execute Microsoft Dataverse Action [#execute-microsoft-dataverse-action] Execute a bound or unbound Dataverse action. Actions perform operations with side effects (e.g., Merge, GrantAccess, SendEmail, QualifyLead). For bound actions, provide the entity set name and record ID. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `actionName` | string | Yes | Action name (e.g., Merge, GrantAccess, SendEmail). Do not include the Microsoft.Dynamics.CRM. namespace prefix for unbound actions. | | `entitySetName` | string | No | Entity set name for bound actions (e.g., accounts). Leave empty for unbound actions. | | `recordId` | string | No | Record GUID for bound actions. Leave empty for unbound or collection-bound actions. | | `parameters` | object | No | Action parameters as a JSON object. For entity references, include @odata.type annotation (e.g., \{"Target": \{"@odata.type": "Microsoft.Dynamics.CRM.account", "accountid": "..."}}) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------------------------------------------------------- | | `result` | object | Action response data. Structure varies by action. Null for actions that return 204 No Content. | | `success` | boolean | Whether the action executed successfully | ### Execute Microsoft Dataverse Function [#execute-microsoft-dataverse-function] Execute a bound or unbound Dataverse function. Functions are read-only operations (e.g., RetrievePrincipalAccess, RetrieveTotalRecordCount, InitializeFrom). For bound functions, provide the entity set name and record ID. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `functionName` | string | Yes | Function name (e.g., RetrievePrincipalAccess, RetrieveTotalRecordCount). Do not include the Microsoft.Dynamics.CRM. namespace prefix for unbound functions. | | `entitySetName` | string | No | Entity set name for bound functions (e.g., systemusers). Leave empty for unbound functions. | | `recordId` | string | No | Record GUID for bound functions. Leave empty for unbound functions. | | `parameters` | string | No | Function parameters for the URL. Simple values can be inlined (e.g., "LocalizedStandardName='Pacific Standard Time',LocaleId=1033"), but values with reserved characters (/ \< > \* % & : \ ? +) must use parameter aliases: put the alias assignment in parentheses and the alias-to-value bindings after a "?", e.g. "LocalizedStandardName=@p1,LocaleId=@p2?@p1='Pacific Standard Time'&@p2=1033". Do not include the enclosing parentheses yourself. | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------------------- | | `result` | object | Function response data. Structure varies by function. | | `success` | boolean | Whether the function executed successfully | ### FetchXML Query Microsoft Dataverse [#fetchxml-query-microsoft-dataverse] Execute a FetchXML query against a Microsoft Dataverse table. FetchXML supports aggregation, grouping, linked-entity joins, and complex filtering beyond OData capabilities. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `fetchXml` | string | Yes | FetchXML query string. Must include \ root element and \ child element matching the table logical name. | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------------------------------------- | | `records` | array | Array of Dataverse records. Each record has dynamic columns based on the table schema. | | `count` | number | Number of records returned in the current page | | `fetchXmlPagingCookie` | string | Paging cookie for retrieving the next page of results | | `moreRecords` | boolean | Whether more records are available beyond the current page | | `success` | boolean | Operation success status | ### Get Microsoft Dataverse Table Metadata [#get-microsoft-dataverse-table-metadata] Retrieve table (entity) and column (attribute) definitions for a Microsoft Dataverse table by its singular logical name. Use this to look up the correct entity set name and column logical names before building record data for other operations. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entityLogicalName` | string | Yes | Singular table logical name to look up (e.g., account, contact) | | `select` | string | No | Comma-separated table metadata properties to return (OData $select, e.g., LogicalName,DisplayName,EntitySetName,PrimaryIdAttribute) | | `includeAttributes` | string | No | Set to "true" to also return the column (attribute) definitions for the table | #### Output [#output-9] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------------------------------------------------------- | | `entitySetName` | string | The entity set name (plural, used in Web API URLs) for this table | | `logicalName` | string | The singular logical name of the table | | `displayName` | string | The localized display name of the table | | `primaryIdAttribute` | string | The logical name of the primary key column | | `primaryNameAttribute` | string | The logical name of the primary name (title) column | | `attributes` | array | Column (attribute) definitions for the table (only populated when includeAttributes is "true") | | `metadata` | object | The full raw entity metadata response from Dataverse | | `success` | boolean | Whether the metadata was retrieved successfully | ### Get Microsoft Dataverse Record [#get-microsoft-dataverse-record] Retrieve a single record from a Microsoft Dataverse table by its ID. Supports $select and $expand OData query options. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to retrieve | | `select` | string | No | Comma-separated list of columns to return (OData $select) | | `expand` | string | No | Navigation properties to expand (OData $expand) | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------------------------------------------- | | `record` | object | Dataverse record object. Contains dynamic columns based on the queried table, plus OData metadata fields. | | `recordId` | string | The record primary key ID (auto-detected from response) | | `success` | boolean | Whether the record was retrieved successfully | ### List Microsoft Dataverse Records [#list-microsoft-dataverse-records] Query and list records from a Microsoft Dataverse table. Supports OData query options for filtering, selecting columns, ordering, and pagination. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `select` | string | No | Comma-separated list of columns to return (OData $select) | | `filter` | string | No | OData $filter expression (e.g., statecode eq 0) | | `orderBy` | string | No | OData $orderby expression (e.g., name asc, createdon desc) | | `top` | number | No | Maximum number of records to return (OData $top) | | `expand` | string | No | Navigation properties to expand (OData $expand) | | `count` | string | No | Set to "true" to include total record count in response (OData $count) | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------------------------------------------------------- | | `records` | array | Array of Dataverse records. Each record has dynamic columns based on the table schema. | | `count` | number | Number of records returned in the current page | | `totalCount` | number | Total number of matching records server-side (requires $count=true) | | `nextLink` | string | URL for the next page of results | | `success` | boolean | Operation success status | ### Search Microsoft Dataverse [#search-microsoft-dataverse] Perform a full-text relevance search across Microsoft Dataverse tables. Requires Dataverse Search to be enabled on the environment. Supports simple and Lucene query syntax. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `searchTerm` | string | Yes | Search text (1-100 chars). Supports simple syntax: + (AND), \| (OR), - (NOT), \* (wildcard), "exact phrase" | | `entities` | string | No | JSON array of search entity configs. Each object: \{"Name":"account","SelectColumns":\["name"],"SearchColumns":\["name"],"Filter":"statecode eq 0"} | | `filter` | string | No | Global OData filter applied across all entities (e.g., "createdon gt 2024-01-01") | | `facets` | string | No | JSON array of facet specifications (e.g., \["entityname,count:100","ownerid,count:100"]) | | `top` | number | No | Maximum number of results (default: 50, max: 100) | | `skip` | number | No | Number of results to skip for pagination | | `orderBy` | string | No | JSON array of sort expressions (e.g., \["createdon desc"]) | | `searchMode` | string | No | Search mode: "any" (default, match any term) or "all" (match all terms) | | `searchType` | string | No | Query type: "simple" (default) or "lucene" (enables regex, fuzzy, proximity, boosting) | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `results` | array | Array of search result objects | | ↳ `Id` | string | Record GUID | | ↳ `EntityName` | string | Table logical name (e.g., account, contact) | | ↳ `ObjectTypeCode` | number | Entity type code | | ↳ `Attributes` | object | Record attributes matching the search. Keys are column logical names. | | ↳ `Highlights` | object | Highlighted search matches. Keys are column names, values are arrays of strings with \{crmhit}/\{/crmhit} markers. | | ↳ `Score` | number | Relevance score for this result | | `totalCount` | number | Total number of matching records across all tables | | `count` | number | Number of results returned in this page | | `facets` | object | Facet results when facets were requested. Keys are facet names, values are arrays of facet value objects with count and value properties. | | `success` | boolean | Operation success status | ### Update Multiple Microsoft Dataverse Records [#update-multiple-microsoft-dataverse-records] Update multiple records of the same table type in a single request. Each record must include its primary key. Only include columns that need to be changed. Recommended batch size: 100-1000 records. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `entityLogicalName` | string | Yes | Table logical name for @odata.type annotation (e.g., account, contact). Used to set Microsoft.Dynamics.CRM.\{entityLogicalName} on each record. | | `records` | object | Yes | Array of record objects to update. Each record must include its primary key (e.g., accountid) and only the columns being changed. The @odata.type annotation is added automatically. | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether all records were updated successfully | ### Update Microsoft Dataverse Record [#update-microsoft-dataverse-record] Update an existing record in a Microsoft Dataverse table. Only send the columns you want to change. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to update | | `data` | object | Yes | Record data to update as a JSON object with column names as keys | #### Output [#output-14] | Parameter | Type | Description | | ---------- | ------- | ---------------------------- | | `recordId` | string | The ID of the updated record | | `success` | boolean | Operation success status | ### Upload File to Microsoft Dataverse [#upload-file-to-microsoft-dataverse] Upload a file to a file or image column on a Dataverse record. Supports single-request upload for files up to 128 MB. Provide the file through the File input; its bytes are read from storage and sent as the raw request body. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | Record GUID to upload the file to | | `fileColumn` | string | Yes | File or image column logical name (e.g., entityimage, cr\_document) | | `fileName` | string | Yes | Name of the file being uploaded (e.g., document.pdf) | | `file` | file | No | File to upload (UserFile object) | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------ | | `recordId` | string | Record GUID the file was uploaded to | | `fileColumn` | string | File column the file was uploaded to | | `fileName` | string | Name of the uploaded file | | `success` | boolean | Whether the file was uploaded successfully | ### Upsert Microsoft Dataverse Record [#upsert-microsoft-dataverse-record] Create or update a record in a Microsoft Dataverse table. If a record with the given ID exists, it is updated; otherwise, a new record is created. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to upsert | | `data` | object | Yes | Record data as a JSON object with column names as keys | #### Output [#output-16] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------------------------------------------- | | `recordId` | string | The ID of the upserted record | | `created` | boolean | True if the record was created, false if updated | | `record` | object | Dataverse record object. Contains dynamic columns based on the queried table, plus OData metadata fields. | | `success` | boolean | Operation success status | ### Microsoft Dataverse WhoAmI [#microsoft-dataverse-whoami] Retrieve the current authenticated user information from Microsoft Dataverse. Useful for testing connectivity and getting the user ID, business unit ID, and organization ID. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ------------------------- | | `userId` | string | The authenticated user ID | | `businessUnitId` | string | The business unit ID | | `organizationId` | string | The organization ID | | `success` | boolean | Operation success status | --- # Microsoft Dynamics 365 CRM (/integrations/microsoft_dynamics_365) {/* MANUAL-CONTENT-START:intro */} [Microsoft Dynamics 365 CRM](https://www.microsoft.com/en-us/dynamics-365) stores its sales and customer-service data in Microsoft Dataverse. This integration presents the standard CRM tables and lifecycle actions while keeping the generic Microsoft Dataverse integration available for custom tables and advanced operations. Two block operations intentionally reuse the new CRM tools under a simpler CRM label: * **List Owners** lists active users or owner-capable teams. The results are candidates; Dynamics security roles and table privileges still determine whether a particular user or team can own a record. * **Assign Record** updates the selected record's `ownerid@odata.bind` to an explicitly chosen user or team. Connect one credential per Dynamics environment. The credential is bound to that environment during Microsoft OAuth, and CRM requests refuse a different environment. This release supports public-cloud Dataverse hosts only. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Manage standard Microsoft Dynamics 365 CRM records through the Dataverse Web API. List, search, create, retrieve, and update accounts, contacts, leads, opportunities, and cases; assign records to users or teams; qualify leads; close opportunities; and resolve cases. Connect a separate Microsoft credential for each environment from this Dynamics integration page or from its workflow block; existing generic Dataverse credentials remain unchanged and are not automatically rebound. This version supports public-cloud Dynamics environments; national clouds require separate OAuth authorities. Dataverse Search must be enabled for search, and lifecycle actions require the corresponding Dynamics 365 app, security role, and record privileges. ## Actions [#actions] ### List Microsoft Dynamics 365 CRM Records [#list-microsoft-dynamics-365-crm-records] Query supported standard Microsoft Dynamics 365 CRM records. Supports OData filtering, column selection, ordering, and one bounded page at a time. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `select` | string | No | Comma-separated list of columns to return (OData $select) | | `filter` | string | No | OData $filter expression (e.g., statecode eq 0) | | `orderBy` | string | No | OData $orderby expression (e.g., name asc, createdon desc) | | `pageSize` | number | No | Maximum records in this page (default and maximum: 100) | | `expand` | string | No | Navigation properties to expand (OData $expand) | | `count` | string | No | Set to "true" to include total record count in response (OData $count) | | `nextLink` | string | No | Exact nextLink returned by a previous page of this operation | | `nextPageSize` | number | No | Exact nextPageSize returned alongside nextLink by the previous page | #### Output [#output] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------------------------------- | | `records` | array | Array of Dataverse records. Each record has dynamic columns based on the table schema. | | `count` | number | Number of records returned in the current page | | `totalCount` | number | Provider-reported matching-record count, which Dataverse may cap (requires $count=true) | | `totalCountLimitExceeded` | boolean | Whether Dataverse capped the provider-reported matching-record count | | `nextLink` | string | URL for the next page of results | | `nextPageSize` | number | Page size that must accompany nextLink on the continuation request | | `success` | boolean | Operation success status | ### Get Microsoft Dynamics 365 CRM Record [#get-microsoft-dynamics-365-crm-record] Retrieve one supported standard Microsoft Dynamics 365 CRM record by its ID. Supports $select and $expand OData query options. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to retrieve | | `select` | string | No | Comma-separated list of columns to return (OData $select) | | `expand` | string | No | Navigation properties to expand (OData $expand) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------------------------------------------- | | `record` | object | Dataverse record object. Contains dynamic columns based on the queried table, plus OData metadata fields. | | `recordId` | string | The requested record ID | | `success` | boolean | Whether the record was retrieved successfully | ### Create Microsoft Dynamics 365 CRM Record [#create-microsoft-dynamics-365-crm-record] Create a new supported standard Microsoft Dynamics 365 CRM record using Dataverse logical column names. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `data` | object | Yes | Record data as a JSON object with column names as keys | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------------------------------------------------- | | `record` | object | Dataverse record object. Contains dynamic columns based on the queried table, plus OData metadata fields. | | `recordId` | string | The ID of the created record | | `success` | boolean | Whether the record was created successfully | ### Update Microsoft Dynamics 365 CRM Record [#update-microsoft-dynamics-365-crm-record] Update an existing supported standard Microsoft Dynamics 365 CRM record. Only send the columns you want to change. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `entitySetName` | string | Yes | Entity set name (plural table name, e.g., accounts, contacts) | | `recordId` | string | Yes | The unique identifier (GUID) of the record to update | | `data` | object | Yes | Record data to update as a JSON object with column names as keys | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ---------------------------- | | `recordId` | string | The ID of the updated record | | `success` | boolean | Operation success status | ### Search Microsoft Dynamics 365 CRM Records [#search-microsoft-dynamics-365-crm-records] Perform a full-text relevance search across Microsoft Dataverse tables. Requires Dataverse Search to be enabled on the environment. Supports simple and Lucene query syntax. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dataverse environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `searchTerm` | string | Yes | Search text (1-100 chars). Supports simple syntax: + (AND), \| (OR), - (NOT), \* (wildcard), "exact phrase" | | `entities` | string | No | JSON array of search entity configs. Each object: \{"name":"account","selectColumns":\["name"],"searchColumns":\["name"],"filter":"statecode eq 0"} | | `filter` | string | No | Global OData filter applied across all entities (e.g., "createdon gt 2024-01-01") | | `facets` | string | No | JSON array of facet specifications (e.g., \["entityname,count:100","ownerid,count:100"]) | | `top` | number | No | Maximum number of results (default: 50, max: 100) | | `skip` | number | No | Number of results to skip for pagination | | `orderBy` | string | No | JSON array of sort expressions (e.g., \["createdon desc"]) | | `searchMode` | string | No | Search mode: "any" (default, match any term) or "all" (match all terms) | | `searchType` | string | No | Query type: "simple" (default) or "lucene" (enables regex, fuzzy, proximity, boosting) | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `results` | array | Array of search result objects | | ↳ `Id` | string | Record GUID | | ↳ `EntityName` | string | Table logical name (e.g., account, contact) | | ↳ `ObjectTypeCode` | number | Entity type code | | ↳ `Attributes` | object | Record attributes matching the search. Keys are column logical names. | | ↳ `Highlights` | object | Highlighted search matches. Keys are column names, values are arrays of strings with \{crmhit}/\{/crmhit} markers. | | ↳ `Score` | number | Relevance score for this result | | `totalCount` | number | Total number of matching records across all tables | | `count` | number | Number of results returned in this page | | `facets` | object | Facet results when facets were requested. Keys are facet names, values are arrays of facet value objects with count and value properties. | | `success` | boolean | Operation success status | ### Qualify Microsoft Dynamics 365 Lead [#qualify-microsoft-dynamics-365-lead] Qualify a Dynamics 365 Sales lead and optionally create linked account, contact, and opportunity records. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynamics 365 environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `leadId` | string | Yes | GUID of the lead to qualify | | `createAccount` | boolean | Yes | Whether to create an account from the lead | | `createContact` | boolean | Yes | Whether to create a contact from the lead | | `createOpportunity` | boolean | Yes | Whether to create an opportunity from the lead | | `statusReason` | number | No | Qualified lead status-reason value (default: 3) | | `opportunityCurrencyId` | string | No | Optional transaction currency GUID for the created opportunity | | `opportunityCustomerId` | string | No | Optional account or contact GUID for the created opportunity customer | | `opportunityCustomerType` | string | No | Customer table type for opportunityCustomerId: account or contact | | `sourceCampaignId` | string | No | Optional source campaign GUID for the created opportunity | | `processInstanceId` | string | No | Optional business process flow instance GUID for the created opportunity | | `processInstanceEntityType` | string | No | Logical table name for the business process flow instance | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------- | | `createdEntities` | array | Entity references returned by Dataverse for records created while qualifying the lead | | `success` | boolean | Whether the lead was qualified successfully | ### Close Microsoft Dynamics 365 Opportunity [#close-microsoft-dynamics-365-opportunity] Close a Dynamics 365 Sales opportunity as won or lost. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynamics 365 environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `opportunityId` | string | Yes | GUID of the opportunity to close | | `outcome` | string | Yes | Opportunity outcome: won or lost | | `subject` | string | No | Optional subject for the opportunity-close activity (maximum 200 characters) | | `description` | string | No | Optional description for the opportunity-close activity (maximum 2,000 characters) | | `statusReason` | number | No | Opportunity status-reason value (defaults to 3 for won or 4 for lost) | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------- | | `opportunityId` | string | GUID of the closed opportunity | | `outcome` | string | The applied opportunity outcome: won or lost | | `success` | boolean | Whether the opportunity was closed successfully | ### Close Microsoft Dynamics 365 Case [#close-microsoft-dynamics-365-case] Resolve and close a Dynamics 365 Customer Service case. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `environmentUrl` | string | Yes | Dynamics 365 environment URL (e.g., [https://myorg.crm.dynamics.com](https://myorg.crm.dynamics.com)) | | `caseId` | string | Yes | GUID of the case to close | | `subject` | string | Yes | Subject for the case-resolution activity (maximum 200 characters) | | `description` | string | No | Optional description for the case-resolution activity (maximum 100,000 characters) | | `timeSpent` | number | No | Optional nonnegative number of minutes spent resolving the case | | `statusReason` | number | No | Resolved case status-reason value (default: 5) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `caseId` | string | GUID of the closed case | | `success` | boolean | Whether the case was closed successfully | --- # Microsoft Excel (/integrations/microsoft_excel) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Excel](https://www.microsoft.com/en-us/microsoft-365/excel) in Agent Serve to read and write workbook data. Select a worksheet and range, such as `A1:D10`, to target the cells an operation uses. Additional actions clear, format, and sort ranges, create tables, and delete worksheets. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft Excel into the workflow with explicit sheet selection. Read and write values and formulas, manage worksheets and table rows, format ranges, and calculate workbooks with persistent or temporary sessions. ## Actions [#actions] ### Add to Microsoft Excel Table [#add-to-microsoft-excel-table] Add new rows to a Microsoft Excel table #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook containing the table (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `tableName` | string | Yes | The name of the table to add rows to (e.g., "Table1", "SalesTable") | | `index` | number | No | Zero-based insertion index. Omit to append at the end. | | `values` | array | No | Data rows in table column order, without headers (e.g., \[\["Value", 30]]). Object rows are also accepted in key order for compatibility. Omit to add a blank row. | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------- | | `index` | number | Index of the first row that was added | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Add Worksheet to Microsoft Excel [#add-worksheet-to-microsoft-excel] Create a new worksheet (sheet) in a Microsoft Excel workbook #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the Excel workbook to add the worksheet to (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `worksheetName` | string | No | The name of the new worksheet (e.g., "Sales Q1", "Data"). Omit for an automatic name. Supplied names must be unique within the workbook and cannot exceed 31 characters | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------- | | `worksheet` | object | Details of the newly created worksheet | | ↳ `id` | string | The unique ID of the worksheet | | ↳ `name` | string | The name of the worksheet | | ↳ `position` | number | The zero-based position of the worksheet | | ↳ `visibility` | string | The visibility state of the worksheet (Visible/Hidden/VeryHidden) | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Microsoft Excel List Worksheets [#microsoft-excel-list-worksheets] List Worksheets in a Microsoft Excel workbook. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `top` | number | No | Page size ($top), from 1 to 1000. Defaults to 100. | | `skip` | number | No | Number of items to skip ($skip). Defaults to 0. Increase by the returned count to read the next page. | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ----- | ------------------------ | | `worksheets` | array | Worksheets in this page. | ### Microsoft Excel Get Worksheet [#microsoft-excel-get-worksheet] Get Worksheet in a Microsoft Excel workbook. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `sheetName` | string | Yes | Worksheet ID or name within the workbook. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------- | | `addressLocal` | string | Range property: addressLocal | | `cellCount` | number | Range property: cellCount | | `columnCount` | number | Range property: columnCount | | `columnHidden` | boolean | Range property: columnHidden | | `columnIndex` | number | Range property: columnIndex | | `formulas` | json | Two-dimensional cell matrix: formulas | | `formulasLocal` | json | Two-dimensional cell matrix: formulasLocal | | `formulasR1C1` | json | Two-dimensional cell matrix: formulasR1C1 | | `hidden` | boolean | Range property: hidden | | `numberFormat` | json | Two-dimensional cell matrix: numberFormat | | `rowCount` | number | Range property: rowCount | | `rowHidden` | boolean | Range property: rowHidden | | `rowIndex` | number | Range property: rowIndex | | `text` | json | Two-dimensional cell matrix: text | | `valueTypes` | json | Two-dimensional cell matrix: valueTypes | | `worksheet` | json | Worksheet properties (id, name, position, visibility) | | `worksheets` | json | Worksheet page \[\{id, name, position, visibility}] | | `tables` | json | Table page with IDs, names, styles, header/totals visibility, and formatting flags | | `rows` | json | Table row page \[\{index, values}] | | `index` | number | Zero-based table row index | | `nextLink` | string | Provider continuation link when returned | | `count` | number | Number of items returned in this page | | `sessionId` | string | Created workbook session ID | | `persistChanges` | boolean | Whether session changes are saved | | `closed` | boolean | Whether the session was closed | | `refreshed` | boolean | Whether the session was refreshed | | `calculated` | boolean | Whether workbook calculation completed | | `sheetName` | string | Name of the sheet | | `range` | string | Range that was read | | `values` | json | Cell values as a two-dimensional array | | `updatedRange` | string | Updated range | | `updatedRows` | number | Updated rows count | | `updatedColumns` | number | Updated columns count | | `updatedCells` | number | Updated cells count | | `cleared` | boolean | Whether the range was cleared | | `applyTo` | string | What was cleared (All, Contents, or Formats) | | `formatted` | boolean | Whether the formatting was applied | | `fill` | json | Applied fill (\{color}) or null | | `font` | json | Applied font (\{bold, italic, color, name, size}) or null | | `table` | json | Created table (\{id, name, showHeaders, showTotals, style}) | | `deleted` | boolean | Whether the worksheet, table, or row was deleted | | `worksheetName` | string | Name of the deleted worksheet | | `sorted` | boolean | Whether the sort was applied | | `target` | string | The range or table name that was sorted | | `metadata` | json | Spreadsheet metadata including ID and URL | ### Microsoft Excel Update Worksheet [#microsoft-excel-update-worksheet] Update Worksheet in a Microsoft Excel workbook. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `sheetName` | string | Yes | Worksheet ID or name within the workbook. | | `name` | string | No | New worksheet name, unique within the workbook (maximum 31 characters). | | `position` | number | No | New zero-based worksheet position. | | `visibility` | string | No | Visible, Hidden, or VeryHidden. | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------- | | `addressLocal` | string | Range property: addressLocal | | `cellCount` | number | Range property: cellCount | | `columnCount` | number | Range property: columnCount | | `columnHidden` | boolean | Range property: columnHidden | | `columnIndex` | number | Range property: columnIndex | | `formulas` | json | Two-dimensional cell matrix: formulas | | `formulasLocal` | json | Two-dimensional cell matrix: formulasLocal | | `formulasR1C1` | json | Two-dimensional cell matrix: formulasR1C1 | | `hidden` | boolean | Range property: hidden | | `numberFormat` | json | Two-dimensional cell matrix: numberFormat | | `rowCount` | number | Range property: rowCount | | `rowHidden` | boolean | Range property: rowHidden | | `rowIndex` | number | Range property: rowIndex | | `text` | json | Two-dimensional cell matrix: text | | `valueTypes` | json | Two-dimensional cell matrix: valueTypes | | `worksheet` | json | Worksheet properties (id, name, position, visibility) | | `worksheets` | json | Worksheet page \[\{id, name, position, visibility}] | | `tables` | json | Table page with IDs, names, styles, header/totals visibility, and formatting flags | | `rows` | json | Table row page \[\{index, values}] | | `index` | number | Zero-based table row index | | `nextLink` | string | Provider continuation link when returned | | `count` | number | Number of items returned in this page | | `sessionId` | string | Created workbook session ID | | `persistChanges` | boolean | Whether session changes are saved | | `closed` | boolean | Whether the session was closed | | `refreshed` | boolean | Whether the session was refreshed | | `calculated` | boolean | Whether workbook calculation completed | | `sheetName` | string | Name of the sheet | | `range` | string | Range that was read | | `values` | json | Cell values as a two-dimensional array | | `updatedRange` | string | Updated range | | `updatedRows` | number | Updated rows count | | `updatedColumns` | number | Updated columns count | | `updatedCells` | number | Updated cells count | | `cleared` | boolean | Whether the range was cleared | | `applyTo` | string | What was cleared (All, Contents, or Formats) | | `formatted` | boolean | Whether the formatting was applied | | `fill` | json | Applied fill (\{color}) or null | | `font` | json | Applied font (\{bold, italic, color, name, size}) or null | | `table` | json | Created table (\{id, name, showHeaders, showTotals, style}) | | `deleted` | boolean | Whether the worksheet, table, or row was deleted | | `worksheetName` | string | Name of the deleted worksheet | | `sorted` | boolean | Whether the sort was applied | | `target` | string | The range or table name that was sorted | | `metadata` | json | Spreadsheet metadata including ID and URL | ### Microsoft Excel List Tables [#microsoft-excel-list-tables] List Tables in a Microsoft Excel workbook. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `top` | number | No | Page size ($top), from 1 to 1000. Defaults to 100. | | `skip` | number | No | Number of items to skip ($skip). Defaults to 0. Increase by the returned count to read the next page. | #### Output [#output-5] | Parameter | Type | Description | | --------- | ----- | -------------------- | | `tables` | array | Tables in this page. | ### Microsoft Excel Get Table [#microsoft-excel-get-table] Get Table in a Microsoft Excel workbook. #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------- | | `addressLocal` | string | Range property: addressLocal | | `cellCount` | number | Range property: cellCount | | `columnCount` | number | Range property: columnCount | | `columnHidden` | boolean | Range property: columnHidden | | `columnIndex` | number | Range property: columnIndex | | `formulas` | json | Two-dimensional cell matrix: formulas | | `formulasLocal` | json | Two-dimensional cell matrix: formulasLocal | | `formulasR1C1` | json | Two-dimensional cell matrix: formulasR1C1 | | `hidden` | boolean | Range property: hidden | | `numberFormat` | json | Two-dimensional cell matrix: numberFormat | | `rowCount` | number | Range property: rowCount | | `rowHidden` | boolean | Range property: rowHidden | | `rowIndex` | number | Range property: rowIndex | | `text` | json | Two-dimensional cell matrix: text | | `valueTypes` | json | Two-dimensional cell matrix: valueTypes | | `worksheet` | json | Worksheet properties (id, name, position, visibility) | | `worksheets` | json | Worksheet page \[\{id, name, position, visibility}] | | `tables` | json | Table page with IDs, names, styles, header/totals visibility, and formatting flags | | `rows` | json | Table row page \[\{index, values}] | | `index` | number | Zero-based table row index | | `nextLink` | string | Provider continuation link when returned | | `count` | number | Number of items returned in this page | | `sessionId` | string | Created workbook session ID | | `persistChanges` | boolean | Whether session changes are saved | | `closed` | boolean | Whether the session was closed | | `refreshed` | boolean | Whether the session was refreshed | | `calculated` | boolean | Whether workbook calculation completed | | `sheetName` | string | Name of the sheet | | `range` | string | Range that was read | | `values` | json | Cell values as a two-dimensional array | | `updatedRange` | string | Updated range | | `updatedRows` | number | Updated rows count | | `updatedColumns` | number | Updated columns count | | `updatedCells` | number | Updated cells count | | `cleared` | boolean | Whether the range was cleared | | `applyTo` | string | What was cleared (All, Contents, or Formats) | | `formatted` | boolean | Whether the formatting was applied | | `fill` | json | Applied fill (\{color}) or null | | `font` | json | Applied font (\{bold, italic, color, name, size}) or null | | `table` | json | Created table (\{id, name, showHeaders, showTotals, style}) | | `deleted` | boolean | Whether the worksheet, table, or row was deleted | | `worksheetName` | string | Name of the deleted worksheet | | `sorted` | boolean | Whether the sort was applied | | `target` | string | The range or table name that was sorted | | `metadata` | json | Spreadsheet metadata including ID and URL | ### Microsoft Excel Update Table [#microsoft-excel-update-table] Update Table in a Microsoft Excel workbook. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | | `name` | string | No | New unique table name. | | `showHeaders` | boolean | No | Whether to show the header row. | | `showTotals` | boolean | No | Whether to show the totals row. | | `style` | string | No | Built-in table style (TableStyleLight1–21, TableStyleMedium1–28, TableStyleDark1–11) or a custom style already in the workbook. | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------------- | | `addressLocal` | string | Range property: addressLocal | | `cellCount` | number | Range property: cellCount | | `columnCount` | number | Range property: columnCount | | `columnHidden` | boolean | Range property: columnHidden | | `columnIndex` | number | Range property: columnIndex | | `formulas` | json | Two-dimensional cell matrix: formulas | | `formulasLocal` | json | Two-dimensional cell matrix: formulasLocal | | `formulasR1C1` | json | Two-dimensional cell matrix: formulasR1C1 | | `hidden` | boolean | Range property: hidden | | `numberFormat` | json | Two-dimensional cell matrix: numberFormat | | `rowCount` | number | Range property: rowCount | | `rowHidden` | boolean | Range property: rowHidden | | `rowIndex` | number | Range property: rowIndex | | `text` | json | Two-dimensional cell matrix: text | | `valueTypes` | json | Two-dimensional cell matrix: valueTypes | | `worksheet` | json | Worksheet properties (id, name, position, visibility) | | `worksheets` | json | Worksheet page \[\{id, name, position, visibility}] | | `tables` | json | Table page with IDs, names, styles, header/totals visibility, and formatting flags | | `rows` | json | Table row page \[\{index, values}] | | `index` | number | Zero-based table row index | | `nextLink` | string | Provider continuation link when returned | | `count` | number | Number of items returned in this page | | `sessionId` | string | Created workbook session ID | | `persistChanges` | boolean | Whether session changes are saved | | `closed` | boolean | Whether the session was closed | | `refreshed` | boolean | Whether the session was refreshed | | `calculated` | boolean | Whether workbook calculation completed | | `sheetName` | string | Name of the sheet | | `range` | string | Range that was read | | `values` | json | Cell values as a two-dimensional array | | `updatedRange` | string | Updated range | | `updatedRows` | number | Updated rows count | | `updatedColumns` | number | Updated columns count | | `updatedCells` | number | Updated cells count | | `cleared` | boolean | Whether the range was cleared | | `applyTo` | string | What was cleared (All, Contents, or Formats) | | `formatted` | boolean | Whether the formatting was applied | | `fill` | json | Applied fill (\{color}) or null | | `font` | json | Applied font (\{bold, italic, color, name, size}) or null | | `table` | json | Created table (\{id, name, showHeaders, showTotals, style}) | | `deleted` | boolean | Whether the worksheet, table, or row was deleted | | `worksheetName` | string | Name of the deleted worksheet | | `sorted` | boolean | Whether the sort was applied | | `target` | string | The range or table name that was sorted | | `metadata` | json | Spreadsheet metadata including ID and URL | ### Microsoft Excel Delete Table [#microsoft-excel-delete-table] Delete Table in a Microsoft Excel workbook. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the table was deleted. | ### Microsoft Excel List Table Rows [#microsoft-excel-list-table-rows] List Table Rows in a Microsoft Excel workbook. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `top` | number | No | Page size ($top), from 1 to 1000. Defaults to 100. | | `skip` | number | No | Number of items to skip ($skip). Defaults to 0. Increase by the returned count to read the next page. | | `tableName` | string | Yes | Table ID or name within the workbook. | #### Output [#output-9] | Parameter | Type | Description | | --------- | ----- | ------------------------ | | `rows` | array | Table Rows in this page. | ### Microsoft Excel Get Table Row [#microsoft-excel-get-table-row] Get Table Row in a Microsoft Excel workbook. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | | `index` | number | Yes | Zero-based table row index. Indexes can change when rows are inserted or deleted. | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `index` | number | Zero-based table row index. | ### Microsoft Excel Update Table Row [#microsoft-excel-update-table-row] Update Table Row in a Microsoft Excel workbook. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | | `index` | number | Yes | Zero-based table row index. Indexes can change when rows are inserted or deleted. | | `values` | array | Yes | Exactly one row as a two-dimensional array, in table column order. Use null to leave a cell unchanged. | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `index` | number | Zero-based table row index. | ### Microsoft Excel Delete Table Row [#microsoft-excel-delete-table-row] Delete Table Row in a Microsoft Excel workbook. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `tableName` | string | Yes | Table ID or name within the workbook. | | `index` | number | Yes | Zero-based table row index. Indexes can change when rows are inserted or deleted. | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `deleted` | boolean | Whether the table row was deleted. | ### Microsoft Excel Create Session [#microsoft-excel-create-session] Create Session in a Microsoft Excel workbook. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `persistChanges` | boolean | Yes | True saves changes; false creates a temporary workbook copy whose changes are discarded when the session ends. | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------ | | `sessionId` | string | Pass this ID as sessionId on subsequent workbook operations. | | `persistChanges` | boolean | Whether changes in this session are saved. | ### Microsoft Excel Refresh Session [#microsoft-excel-refresh-session] Refresh Session in a Microsoft Excel workbook. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | Yes | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | #### Output [#output-14] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------- | | `refreshed` | boolean | Whether the workbook session was refreshed. | ### Microsoft Excel Close Session [#microsoft-excel-close-session] Close Session in a Microsoft Excel workbook. #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | Yes | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `closed` | boolean | Whether the workbook session was closed. | ### Microsoft Excel Calculate [#microsoft-excel-calculate] Calculate in a Microsoft Excel workbook. #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `spreadsheetId` | string | Yes | Workbook drive item ID. | | `driveId` | string | No | Drive ID for SharePoint or another drive. Defaults to the signed-in user’s OneDrive. Excel workbook APIs require a business account. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `calculationType` | string | Yes | Recalculate recalculates dirty cells; Full recalculates all cells; FullRebuild rebuilds dependencies and recalculates all cells. | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------- | | `calculated` | boolean | Whether workbook calculation completed. | ### Read from Microsoft Excel V2 [#read-from-microsoft-excel-v2] Read data from a specific sheet in a Microsoft Excel spreadsheet #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook to read from (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `sheetName` | string | Yes | The name of the sheet/tab to read from (e.g., "Sheet1", "Sales Data") | | `cellRange` | string | No | The cell range to read (e.g., "A1:D10"). If not specified, reads the entire used range. | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `sheetName` | string | Name of the sheet that was read | | `range` | string | The range that was read | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Microsoft Excel spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Write to Microsoft Excel V2 [#write-to-microsoft-excel-v2] Write data to a specific sheet in a Microsoft Excel spreadsheet #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `formulas` | array | No | A1-style formulas as a two-dimensional array. Null leaves a cell unchanged. | | `formulasLocal` | array | No | A1-style formulas in the user locale as a two-dimensional array. Null leaves a cell unchanged. | | `formulasR1C1` | array | No | R1C1-style formulas as a two-dimensional array. Null leaves a cell unchanged. | | `numberFormat` | array | No | Excel number format codes as a two-dimensional array. Null leaves a cell unchanged. | | `columnHidden` | boolean | No | Hide all columns in the target range. | | `rowHidden` | boolean | No | Hide all rows in the target range. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook to write to (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `sheetName` | string | Yes | The name of the sheet/tab to write to (e.g., "Sheet1", "Sales Data") | | `cellRange` | string | No | The cell range to write to (e.g., "A1:D10", "A1"). Defaults to "A1" if not specified. | | `values` | array | No | The data to write as a 2D array (used exactly as provided) or array of objects. For object rows, their keys become a header row. Use a 2D array to write data without added headers. | #### Output [#output-18] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `updatedRange` | string | Range of cells that were updated | | `updatedRows` | number | Number of rows updated | | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | | ↳ `spreadsheetId` | string | Microsoft Excel spreadsheet ID | | ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### Clear Microsoft Excel Range [#clear-microsoft-excel-range] Clear the values and/or formatting of a range in a Microsoft Excel worksheet #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `sheetName` | string | No | The name of the worksheet (e.g., "Sheet1"). If omitted, the range must use the combined "Sheet1!A1:B2" format. | | `range` | string | Yes | The cell range to clear (e.g., "A1:D10" or "Sheet1!A1:D10") | | `applyTo` | string | No | What to clear: "All", "Formats", or "Contents". Defaults to "All". | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------- | | `cleared` | boolean | Whether the range was cleared | | `range` | string | The range that was cleared | | `applyTo` | string | What was cleared (All, Formats, or Contents) | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Format Microsoft Excel Range [#format-microsoft-excel-range] Apply fill color and/or font formatting to a range in a Microsoft Excel worksheet #### Input [#input-20] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `sheetName` | string | No | The name of the worksheet (e.g., "Sheet1"). If omitted, the range must use the combined "Sheet1!A1:B2" format. | | `range` | string | Yes | The cell range to format (e.g., "A1:D10" or "Sheet1!A1:D10") | | `fillColor` | string | No | Background fill color as an HTML hex code (e.g., "#FFFF00"). | | `fontBold` | boolean | No | Whether the font is bold. | | `fontItalic` | boolean | No | Whether the font is italic. | | `fontColor` | string | No | Font color as an HTML hex code (e.g., "#FF0000"). | | `fontSize` | number | No | Font size in points (e.g., 12). | | `fontUnderline` | string | No | None, Single, Double, SingleAccountant, or DoubleAccountant. | | `fontName` | string | No | Font name (e.g., "Calibri"). | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------- | | `formatted` | boolean | Whether the formatting was applied | | `range` | string | The range that was formatted | | `fill` | object | The applied fill, or null if no fill was set | | ↳ `color` | string | The applied fill color | | `font` | object | The applied font properties, or null if no font was set | | ↳ `bold` | boolean | Whether the font is bold | | ↳ `italic` | boolean | Whether the font is italic | | ↳ `color` | string | The font color | | ↳ `name` | string | The font name | | ↳ `underline` | string | Underline style. | | ↳ `size` | number | The font size in points | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Create Microsoft Excel Table [#create-microsoft-excel-table] Create a new table over a range of cells in a Microsoft Excel workbook #### Input [#input-21] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `address` | string | Yes | The range address for the table data source (e.g., "Sheet1!A1:D5"). If no sheet name is included, the active sheet is used. | | `hasHeaders` | boolean | No | Whether the first row of the range contains column headers. Defaults to true. | #### Output [#output-21] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------- | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Delete Microsoft Excel Worksheet [#delete-microsoft-excel-worksheet] Delete a worksheet (sheet) from a Microsoft Excel workbook #### Input [#input-22] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `worksheetName` | string | Yes | The name of the worksheet to delete (e.g., "Sheet1", "Old Data") | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------- | | `deleted` | boolean | Whether the worksheet was deleted | | `worksheetName` | string | The name of the deleted worksheet | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### Sort Microsoft Excel Range [#sort-microsoft-excel-range] Sort a range or table by one or more fields in a Microsoft Excel worksheet #### Input [#input-23] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sortFields` | array | No | Sort conditions \[\{key, ascending, sortOn, color, dataOption, icon}]. Overrides sortColumn/sortAscending; ascending defaults to true for each condition; key is a zero-based offset, sortOn is Value, CellColor, FontColor, or Icon; dataOption is Normal or TextAsNumber; icon contains set and index. | | `sortMethod` | string | No | Chinese character ordering: PinYin or StrokeCount. | | `orientation` | string | No | Rows (default) or Columns. Applies only to range sorts. | | `sessionId` | string | No | Workbook session ID from Create Session. Omit for a sessionless request that saves changes. | | `spreadsheetId` | string | Yes | The ID of the spreadsheet/workbook (e.g., "01ABC123DEF456") | | `driveId` | string | No | The ID of the drive containing the spreadsheet. Required for SharePoint files. If omitted, uses the signed-in user’s default OneDrive. Excel workbook APIs require a business account. | | `tableName` | string | No | The name of the table to sort. When provided, the table is sorted and range/sheetName are ignored. | | `sheetName` | string | No | The name of the worksheet (e.g., "Sheet1"). Used for range sorts when the range does not include a sheet name. | | `range` | string | No | The cell range to sort (e.g., "A1:D10" or "Sheet1!A1:D10"). Required when no table name is provided. | | `sortColumn` | number | No | Zero-based sort key: column offset for Rows orientation, row offset for Columns orientation. | | `sortAscending` | boolean | No | Whether to sort in ascending order. Defaults to true. | | `hasHeaders` | boolean | No | Whether the range has a header row that should be excluded from sorting. Only applies to range sorts. Defaults to false. | | `matchCase` | boolean | No | Whether casing affects string ordering. Defaults to false. | #### Output [#output-23] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------- | | `sorted` | boolean | Whether the sort was applied | | `target` | string | The range or table name that was sorted | | `sortColumn` | number | The zero-based key of the first sort condition | | `ascending` | boolean | Whether the sort was ascending | | `metadata` | object | Spreadsheet metadata | | ↳ `spreadsheetId` | string | The ID of the spreadsheet | | ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | --- # Microsoft Planner (/integrations/microsoft_planner) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Planner](https://www.microsoft.com/en-us/microsoft-365/planner) to manage tasks, plans, and buckets. Task details include checklists and references; use the actions below to read or update them. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft Planner into the workflow. Manage tasks, plans, buckets, and task details including checklists and references. ## Actions [#actions] ### Read Microsoft Planner Tasks [#read-microsoft-planner-tasks] Read tasks from Microsoft Planner - get all user tasks or all tasks from a specific plan #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `planId` | string | No | The ID of the plan to get tasks from, if not provided gets all user tasks (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `taskId` | string | No | The ID of the task to get (e.g., "pbT5K2OVkkO1M7r5bfsJ6JgAGD5m") | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether tasks were retrieved successfully | | `tasks` | array | Array of task objects with filtered properties | | `metadata` | object | Metadata including planId, userId, and planUrl | | ↳ `planId` | string | Plan ID | | ↳ `userId` | string | User ID | | ↳ `planUrl` | string | Microsoft Graph API URL for the plan | ### Create Microsoft Planner Task [#create-microsoft-planner-task] Create a new task in Microsoft Planner #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan where the task will be created (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `title` | string | Yes | The title of the task (e.g., "Review quarterly report") | | `dueDateTime` | string | No | The due date and time for the task in ISO 8601 format (e.g., "2025-03-15T17:00:00Z") | | `startDateTime` | string | No | The start date and time for the task in ISO 8601 format (e.g., "2025-03-10T09:00:00Z") | | `priority` | number | No | The priority of the task (0-10, where 0 is urgent and 10 is low) | | `percentComplete` | number | No | The percentage of task completion (0-100) | | `assigneeUserId` | string | No | The user ID to assign the task to (e.g., "e82f74c3-4d8a-4b5c-9f1e-2a6b8c9d0e3f") | | `bucketId` | string | No | The bucket ID to place the task in (e.g., "hsOf2dhOJkC6Fey9VjDg1JgAC9Rq") | | `appliedCategories` | string | No | Comma-separated category labels to apply to the task, e.g. "category1,category3" (up to category1-category25, plan-defined color labels) | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the task was created successfully | | `task` | object | The created task object with all properties | | `metadata` | object | Metadata including planId, taskId, and taskUrl | | ↳ `planId` | string | Parent plan ID | | ↳ `taskId` | string | Created task ID | | ↳ `taskUrl` | string | Microsoft Graph API URL for the task | ### Update Microsoft Planner Task [#update-microsoft-planner-task] Update a task in Microsoft Planner #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `taskId` | string | Yes | The ID of the task to update (e.g., "pbT5K2OVkkO1M7r5bfsJ6JgAGD5m") | | `etag` | string | Yes | The ETag value from the task to update (If-Match header) | | `title` | string | No | The new title of the task (e.g., "Review quarterly report") | | `bucketId` | string | No | The bucket ID to move the task to (e.g., "hsOf2dhOJkC6Fey9VjDg1JgAC9Rq") | | `dueDateTime` | string | No | The due date and time for the task in ISO 8601 format (e.g., "2025-03-15T17:00:00Z") | | `startDateTime` | string | No | The start date and time for the task (ISO 8601 format) | | `percentComplete` | number | No | The percentage of task completion (0-100) | | `priority` | number | No | The priority of the task (0-10) | | `assigneeUserId` | string | No | The user ID to assign the task to (e.g., "e82f74c3-4d8a-4b5c-9f1e-2a6b8c9d0e3f") | | `appliedCategories` | string | No | Comma-separated category labels to apply to the task, e.g. "category1,category3" (up to category1-category25, plan-defined color labels) | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------------------------- | | `success` | boolean | Whether the task was updated successfully | | `message` | string | Success message when task is updated | | `task` | object | The updated task object with all properties | | `taskId` | string | ID of the updated task | | `etag` | string | New ETag after update - use this for subsequent operations | | `metadata` | object | Metadata including taskId, planId, and taskUrl | | ↳ `taskId` | string | Updated task ID | | ↳ `planId` | string | Parent plan ID | | ↳ `taskUrl` | string | Microsoft Graph API URL for the task | ### Delete Microsoft Planner Task [#delete-microsoft-planner-task] Delete a task from Microsoft Planner #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `taskId` | string | Yes | The ID of the task to delete (e.g., "pbT5K2OVkkO1M7r5bfsJ6JgAGD5m") | | `etag` | string | Yes | The ETag value from the task to delete (If-Match header) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the task was deleted successfully | | `deleted` | boolean | Confirmation of deletion | | `metadata` | object | Additional metadata | ### List Microsoft Planner Plans [#list-microsoft-planner-plans] List all plans shared with the current user #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------------- | | `success` | boolean | Whether plans were retrieved successfully | | `plans` | array | Array of plan objects shared with the current user | | `metadata` | object | Metadata including userId and count | | ↳ `count` | number | Number of plans returned | | ↳ `userId` | string | User ID | ### Read Microsoft Planner Plan [#read-microsoft-planner-plan] Get details of a specific Microsoft Planner plan #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan to retrieve (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the plan was retrieved successfully | | `plan` | object | The plan object with all properties | | `metadata` | object | Metadata including planId and planUrl | | ↳ `planId` | string | Plan ID | | ↳ `planUrl` | string | Microsoft Graph API URL for the plan | ### Create Microsoft Planner Plan [#create-microsoft-planner-plan] Create a new Microsoft Planner plan owned by a Microsoft 365 group #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `groupId` | string | Yes | The ID of the Microsoft 365 group that will own the plan (e.g., "ebf3b108-5234-4e22-b93d-656d7dae5874"). The current user must be a member of this group. | | `title` | string | Yes | The title of the plan | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the plan was created successfully | | `plan` | object | The created plan object with all properties | | `metadata` | object | Metadata including planId and groupId | | ↳ `planId` | string | Created plan ID | | ↳ `groupId` | string | Owning Microsoft 365 group ID | ### Update Microsoft Planner Plan [#update-microsoft-planner-plan] Rename a Microsoft Planner plan #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan to update (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `etag` | string | Yes | The ETag value from the plan to update (If-Match header) | | `title` | string | Yes | The new title of the plan | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the plan was updated successfully | | `plan` | object | The updated plan object with all properties | | `metadata` | object | Metadata including planId | | ↳ `planId` | string | Updated plan ID | ### Get Microsoft Planner Plan Details [#get-microsoft-planner-plan-details] Get detailed information about a plan including category descriptions and sharing #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------------------------- | | `success` | boolean | Whether the plan details were retrieved successfully | | `planDetails` | object | The plan details including categoryDescriptions and sharedWith | | `etag` | string | The ETag value for this plan details resource | | `metadata` | object | Metadata including planId | | ↳ `planId` | string | Plan ID | ### Update Microsoft Planner Plan Details [#update-microsoft-planner-plan-details] Update a plan's category (color label) descriptions and shared-with user list in Microsoft Planner #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `planId` | string | Yes | The ID of the plan (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `etag` | string | Yes | The ETag value from the plan details to update (If-Match header) | | `categoryDescriptions` | object | No | Category label names as a JSON object, e.g. \{"category1": "Blocked", "category2": "At Risk"}. Set a value to null to clear a label. | | `sharedWith` | object | No | User IDs to share the plan with as a JSON object, e.g. \{"\": true}. Set a value to false to unshare. | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Whether the plan details were updated successfully | | `planDetails` | object | The updated plan details object with categoryDescriptions and sharedWith | | `metadata` | object | Metadata including planId | | ↳ `planId` | string | Plan ID | ### Delete Microsoft Planner Plan [#delete-microsoft-planner-plan] Delete a Microsoft Planner plan #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan to delete (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `etag` | string | Yes | The ETag value from the plan to delete (If-Match header) | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the plan was deleted successfully | | `deleted` | boolean | Confirmation of deletion | | `metadata` | object | Additional metadata | ### List Microsoft Planner Buckets [#list-microsoft-planner-buckets] List all buckets in a Microsoft Planner plan #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `success` | boolean | Whether buckets were retrieved successfully | | `buckets` | array | Array of bucket objects | | `metadata` | object | Metadata including planId and count | | ↳ `planId` | string | Plan ID | | ↳ `count` | number | Number of buckets returned | ### Read Microsoft Planner Bucket [#read-microsoft-planner-bucket] Get details of a specific bucket #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------- | | `bucketId` | string | Yes | The ID of the bucket to retrieve (e.g., "hsOf2dhOJkC6Fey9VjDg1JgAC9Rq") | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `success` | boolean | Whether the bucket was retrieved successfully | | `bucket` | object | The bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | | ↳ `bucketId` | string | Bucket ID | | ↳ `planId` | string | Parent plan ID | ### Create Microsoft Planner Bucket [#create-microsoft-planner-bucket] Create a new bucket in a Microsoft Planner plan #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `planId` | string | Yes | The ID of the plan where the bucket will be created (e.g., "xqQg5FS2LkCe54tAMV\_v2ZgADW2J") | | `name` | string | Yes | The name of the bucket | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `success` | boolean | Whether the bucket was created successfully | | `bucket` | object | The created bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | | ↳ `bucketId` | string | Created bucket ID | | ↳ `planId` | string | Parent plan ID | ### Update Microsoft Planner Bucket [#update-microsoft-planner-bucket] Update a bucket in Microsoft Planner #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------- | | `bucketId` | string | Yes | The ID of the bucket to update (e.g., "hsOf2dhOJkC6Fey9VjDg1JgAC9Rq") | | `name` | string | No | The new name of the bucket | | `etag` | string | Yes | The ETag value from the bucket to update (If-Match header) | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `success` | boolean | Whether the bucket was updated successfully | | `bucket` | object | The updated bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | | ↳ `bucketId` | string | Updated bucket ID | | ↳ `planId` | string | Parent plan ID | ### Delete Microsoft Planner Bucket [#delete-microsoft-planner-bucket] Delete a bucket from Microsoft Planner #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------- | | `bucketId` | string | Yes | The ID of the bucket to delete (e.g., "hsOf2dhOJkC6Fey9VjDg1JgAC9Rq") | | `etag` | string | Yes | The ETag value from the bucket to delete (If-Match header) | #### Output [#output-15] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the bucket was deleted successfully | | `deleted` | boolean | Confirmation of deletion | | `metadata` | object | Additional metadata | ### Get Microsoft Planner Task Details [#get-microsoft-planner-task-details] Get detailed information about a task including checklist and references #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `taskId` | string | Yes | The ID of the task (e.g., "pbT5K2OVkkO1M7r5bfsJ6JgAGD5m") | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `success` | boolean | Whether the task details were retrieved successfully | | `taskDetails` | object | The task details including description, checklist, and references | | `etag` | string | The ETag value for this task details - use this for update operations | | `metadata` | object | Metadata including taskId | | ↳ `taskId` | string | Task ID | ### Update Microsoft Planner Task Details [#update-microsoft-planner-task-details] Update task details including description, checklist items, and references in Microsoft Planner #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `taskId` | string | Yes | The ID of the task (e.g., "pbT5K2OVkkO1M7r5bfsJ6JgAGD5m") | | `etag` | string | Yes | The ETag value from the task details to update (If-Match header) | | `description` | string | No | The description of the task | | `checklist` | object | No | Checklist items as a JSON object | | `references` | object | No | References as a JSON object | | `previewType` | string | No | Preview type: automatic, noPreview, checklist, description, or reference | #### Output [#output-17] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------- | | `success` | boolean | Whether the task details were updated successfully | | `taskDetails` | object | The updated task details object with all properties | | `metadata` | object | Metadata including taskId | | ↳ `taskId` | string | Task ID | --- # Microsoft Teams (/integrations/microsoft_teams) {/* MANUAL-CONTENT-START:intro */} [Microsoft Teams](https://teams.microsoft.com) is a robust communication and collaboration platform that enables users to engage in real-time messaging, meetings, and content sharing within teams and organizations. As part of Microsoft's productivity ecosystem, Microsoft Teams offers seamless chat functionality integrated with Office 365, allowing users to post messages, coordinate work, and stay connected across devices and workflows. With Microsoft Teams, you can: * **Send and receive messages**: Communicate instantly with individuals or groups in chat threads * **Collaborate in real-time**: Share updates and information across teams within channels and chats * **Organize conversations**: Maintain context with threaded discussions and persistent chat history * **Share files and content**: Attach and view documents, images, and links directly in chat * **Integrate with Microsoft 365**: Seamlessly connect with Outlook, SharePoint, OneDrive, and more * **Access across devices**: Use Teams on desktop, web, and mobile with cloud-synced conversations * **Secure communication**: Leverage enterprise-grade security and compliance features In Agent Serve, the Microsoft Teams integration enables your agents to interact directly with chat messages programmatically. This allows for powerful automation scenarios such as sending updates, posting alerts, coordinating tasks, and responding to conversations in real time. Your agents can write new messages to chats or channels, update content based on workflow data, and engage with users where collaboration happens. By integrating Agent Serve with Microsoft Teams, you bridge the gap between intelligent workflows and team communication — empowering your agents to streamline collaboration, automate communication tasks, and keep your teams aligned. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft Teams into the workflow. Read, write, update, and delete chat and channel messages. Reply to messages, add reactions, and list teams, chats, channels, and their members. Can be used in trigger mode to trigger a workflow when a message is sent to a chat or channel. To mention users in messages, wrap their name in `` tags: `userName` ## Actions [#actions] ### Read Microsoft Teams Chat [#read-microsoft-teams-chat] Read content from a Microsoft Teams chat #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `chatId` | string | Yes | The ID of the chat to read from (e.g., "19:abc123def456\@thread.v2" - from chat listings) | | `includeAttachments` | boolean | No | Download and include message attachments (hosted contents) into storage | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `success` | boolean | Teams chat read operation success status | | `messageCount` | number | Number of messages retrieved from chat | | `chatId` | string | ID of the chat that was read from | | `messages` | array | Array of chat message objects | | `attachmentCount` | number | Total number of attachments found | | `attachmentTypes` | array | Types of attachments found | | `content` | string | Formatted content of chat messages | | `attachments` | file\[] | Uploaded attachments for convenience (flattened) | ### Write to Microsoft Teams Chat [#write-to-microsoft-teams-chat] Write or update content in a Microsoft Teams chat #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `chatId` | string | Yes | The ID of the chat to write to (e.g., "19:abc123def456\@thread.v2" - from chat listings) | | `content` | string | Yes | The content to write to the message (plain text or HTML formatted, supports @mentions) | | `files` | file\[] | No | Files to attach to the message | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `success` | boolean | Teams chat message send success status | | `messageId` | string | Unique identifier for the sent message | | `chatId` | string | ID of the chat where message was sent | | `createdTime` | string | Timestamp when message was created | | `url` | string | Web URL to the message | | `updatedContent` | boolean | Whether content was successfully updated | | `files` | file\[] | Files attached to the message | ### Read Microsoft Teams Channel [#read-microsoft-teams-channel] Read content from a Microsoft Teams channel #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team to read from (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings) | | `channelId` | string | Yes | The ID of the channel to read from (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | | `includeAttachments` | boolean | No | Download and include message attachments (hosted contents) into storage | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `success` | boolean | Teams channel read operation success status | | `messageCount` | number | Number of messages retrieved from channel | | `teamId` | string | ID of the team that was read from | | `channelId` | string | ID of the channel that was read from | | `messages` | array | Array of channel message objects | | `attachmentCount` | number | Total number of attachments found | | `attachmentTypes` | array | Types of attachments found | | `content` | string | Formatted content of channel messages | | `attachments` | file\[] | Uploaded attachments for convenience (flattened) | ### Write to Microsoft Teams Channel [#write-to-microsoft-teams-channel] Write or send a message to a Microsoft Teams channel #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team to write to (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings) | | `channelId` | string | Yes | The ID of the channel to write to (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | | `content` | string | Yes | The content to write to the channel (plain text or HTML formatted, supports @mentions) | | `files` | file\[] | No | Files to attach to the message | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------- | | `success` | boolean | Teams channel message send success status | | `messageId` | string | Unique identifier for the sent message | | `teamId` | string | ID of the team where message was sent | | `channelId` | string | ID of the channel where message was sent | | `createdTime` | string | Timestamp when message was created | | `url` | string | Web URL to the message | | `updatedContent` | boolean | Whether content was successfully updated | | `files` | file\[] | Files attached to the message | ### Update Microsoft Teams Chat Message [#update-microsoft-teams-chat-message] Update an existing message in a Microsoft Teams chat #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `chatId` | string | Yes | The ID of the chat containing the message (e.g., "19:abc123def456\@thread.v2" - from chat listings) | | `messageId` | string | Yes | The ID of the message to update (e.g., "1234567890123" - a numeric string from message responses) | | `content` | string | Yes | The new content for the message (plain text or HTML formatted) | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the update was successful | | `messageId` | string | ID of the updated message | | `updatedContent` | boolean | Whether content was successfully updated | ### Update Microsoft Teams Channel Message [#update-microsoft-teams-channel-message] Update an existing message in a Microsoft Teams channel #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings or channel info) | | `channelId` | string | Yes | The ID of the channel containing the message (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | | `messageId` | string | Yes | The ID of the message to update (e.g., "1234567890123" - a numeric string from message responses) | | `content` | string | Yes | The new content for the message (plain text or HTML formatted) | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the update was successful | | `messageId` | string | ID of the updated message | | `updatedContent` | boolean | Whether content was successfully updated | ### Delete Microsoft Teams Chat Message [#delete-microsoft-teams-chat-message] Soft delete a message in a Microsoft Teams chat #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `chatId` | string | Yes | The ID of the chat containing the message (e.g., "19:abc123def456\@thread.v2" - from chat listings) | | `messageId` | string | Yes | The ID of the message to delete (e.g., "1234567890123" - a numeric string from message responses) | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `deleted` | boolean | Confirmation of deletion | | `messageId` | string | ID of the deleted message | ### Delete Microsoft Teams Channel Message [#delete-microsoft-teams-channel-message] Soft delete a message in a Microsoft Teams channel #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings or channel info) | | `channelId` | string | Yes | The ID of the channel containing the message (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | | `messageId` | string | Yes | The ID of the message to delete (e.g., "1234567890123" - a numeric string from message responses) | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `deleted` | boolean | Confirmation of deletion | | `messageId` | string | ID of the deleted message | ### Reply to Microsoft Teams Channel Message [#reply-to-microsoft-teams-channel-message] Reply to an existing message in a Microsoft Teams channel #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings or channel info) | | `channelId` | string | Yes | The ID of the channel (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | | `messageId` | string | Yes | The ID of the message to reply to (e.g., "1234567890123" - a numeric string from message responses) | | `content` | string | Yes | The reply content (plain text or HTML formatted message) | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------- | | `success` | boolean | Whether the reply was successful | | `messageId` | string | ID of the reply message | | `updatedContent` | boolean | Whether content was successfully sent | ### Get Microsoft Teams Message [#get-microsoft-teams-message] Get a specific message from a Microsoft Teams chat or channel #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `teamId` | string | No | The ID of the team for channel messages (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID) | | `channelId` | string | No | The ID of the channel for channel messages (e.g., "19:abc123def456\@thread.tacv2") | | `chatId` | string | No | The ID of the chat for chat messages (e.g., "19:abc123def456\@thread.v2") | | `messageId` | string | Yes | The ID of the message to retrieve (e.g., "1234567890123" - a numeric string from message responses) | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------- | | `success` | boolean | Whether the retrieval was successful | | `content` | string | The message content | | `metadata` | object | Message metadata including sender, timestamp, etc. | | ↳ `messageId` | string | Message ID | | ↳ `content` | string | Message content | | ↳ `createdTime` | string | Message creation timestamp | | ↳ `url` | string | Web URL to the message | | ↳ `teamId` | string | Team ID | | ↳ `channelId` | string | Channel ID | | ↳ `chatId` | string | Chat ID | | ↳ `messages` | array | Array of message details | | ↳ `messageCount` | number | Number of messages | ### Add Reaction to Microsoft Teams Message [#add-reaction-to-microsoft-teams-message] Add an emoji reaction to a message in Microsoft Teams #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `teamId` | string | No | The ID of the team for channel messages (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID) | | `channelId` | string | No | The ID of the channel for channel messages (e.g., "19:abc123def456\@thread.tacv2") | | `chatId` | string | No | The ID of the chat for chat messages (e.g., "19:abc123def456\@thread.v2") | | `messageId` | string | Yes | The ID of the message to react to (e.g., "1234567890123" - a numeric string from message responses) | | `reactionType` | string | Yes | The emoji reaction (e.g., ❤️, 👍, 😊) | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the reaction was added successfully | | `reactionType` | string | The emoji that was added | | `messageId` | string | ID of the message | ### Remove Reaction from Microsoft Teams Message [#remove-reaction-from-microsoft-teams-message] Remove an emoji reaction from a message in Microsoft Teams #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `teamId` | string | No | The ID of the team for channel messages (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID) | | `channelId` | string | No | The ID of the channel for channel messages (e.g., "19:abc123def456\@thread.tacv2") | | `chatId` | string | No | The ID of the chat for chat messages (e.g., "19:abc123def456\@thread.v2") | | `messageId` | string | Yes | The ID of the message (e.g., "1234567890123" - a numeric string from message responses) | | `reactionType` | string | Yes | The emoji reaction to remove (e.g., ❤️, 👍, 😊) | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the reaction was removed successfully | | `reactionType` | string | The emoji that was removed | | `messageId` | string | ID of the message | ### List Microsoft Teams Team Members [#list-microsoft-teams-team-members] List all members of a Microsoft Teams team #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings) | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------- | | `success` | boolean | Whether the listing was successful | | `members` | array | Array of team members | | `memberCount` | number | Total number of members | ### List Microsoft Teams Channel Members [#list-microsoft-teams-channel-members] List all members of a Microsoft Teams channel #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings) | | `channelId` | string | Yes | The ID of the channel (e.g., "19:abc123def456\@thread.tacv2" - from channel listings) | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------- | | `success` | boolean | Whether the listing was successful | | `members` | array | Array of channel members | | `memberCount` | number | Total number of members | ### List Microsoft Teams Chat Members [#list-microsoft-teams-chat-members] List all members of a Microsoft Teams chat #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------- | | `chatId` | string | Yes | The ID of the chat (e.g., "19:abc123def456\@thread.v2" - from chat listings) | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------- | | `success` | boolean | Whether the listing was successful | | `members` | array | Array of chat members | | `memberCount` | number | Total number of members | | `hasMore` | boolean | Whether Graph indicated additional pages beyond this response | ### List Microsoft Teams [#list-microsoft-teams] List the Microsoft Teams the current user is a direct member of #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-15] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------------- | | `success` | boolean | Whether the listing was successful | | `teams` | array | Array of teams the user is a member of | | `teamCount` | number | Total number of teams | | `hasMore` | boolean | Whether Graph indicated additional pages beyond this response | ### List Microsoft Teams Chats [#list-microsoft-teams-chats] List the Microsoft Teams chats the current user is part of #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-16] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------------- | | `success` | boolean | Whether the listing was successful | | `chats` | array | Array of chats the user is part of | | `chatCount` | number | Total number of chats | | `hasMore` | boolean | Whether Graph indicated additional pages beyond this response | ### List Microsoft Teams Channels [#list-microsoft-teams-channels] List all channels in a Microsoft Teams team #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `teamId` | string | Yes | The ID of the team (e.g., "12345678-abcd-1234-efgh-123456789012" - a GUID from team listings) | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------------- | | `success` | boolean | Whether the listing was successful | | `channels` | array | Array of channels in the team | | `channelCount` | number | Total number of channels | | `hasMore` | boolean | Whether Graph indicated additional pages beyond this response | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Microsoft Teams Channel [#microsoft-teams-channel] Trigger workflow from Microsoft Teams channel messages via outgoing webhooks #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `hmacSecret` | string | Yes | The security token provided by Teams when creating an outgoing webhook. Used to verify request authenticity. | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------- | | `from` | object | from output from the tool | | ↳ `id` | string | Sender ID | | ↳ `name` | string | Sender name | | ↳ `aadObjectId` | string | AAD Object ID | | `message` | object | message output from the tool | | ↳ `raw` | object | raw output from the tool | | ↳ `attachments` | json | Array of attachments | | ↳ `channelData` | object | channelData output from the tool | | ↳ `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | ↳ `tenant` | object | tenant output from the tool | | ↳ `id` | string | Tenant ID | | ↳ `channel` | object | channel output from the tool | | ↳ `id` | string | Channel ID | | ↳ `teamsTeamId` | string | Teams team ID | | ↳ `teamsChannelId` | string | Teams channel ID | | ↳ `conversation` | object | conversation output from the tool | | ↳ `id` | string | Composite conversation ID | | ↳ `name` | string | Conversation name (nullable) | | ↳ `isGroup` | boolean | Is group conversation | | ↳ `tenantId` | string | Tenant ID | | ↳ `aadObjectId` | string | AAD Object ID (nullable) | | ↳ `conversationType` | string | Conversation type (channel) | | ↳ `text` | string | Message text content | | ↳ `messageType` | string | Message type | | ↳ `channelId` | string | Channel ID (msteams) | | ↳ `timestamp` | string | Timestamp | | `activity` | object | Activity payload | | `conversation` | object | conversation output from the tool | | ↳ `id` | string | Composite conversation ID | | ↳ `name` | string | Conversation name (nullable) | | ↳ `isGroup` | boolean | Is group conversation | | ↳ `tenantId` | string | Tenant ID | | ↳ `aadObjectId` | string | AAD Object ID (nullable) | | ↳ `conversationType` | string | Conversation type (channel) | *** ### Microsoft Teams Chat [#microsoft-teams-chat] Trigger workflow from new messages in Microsoft Teams chats via Microsoft Graph subscriptions #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | This trigger requires microsoft teams credentials to access your account. | | `triggerChatId` | string | Yes | The ID of the Teams chat to monitor | | `includeAttachments` | boolean | No | Fetch hosted contents and upload to storage | #### Output [#output-19] | Parameter | Type | Description | | ------------- | ------- | ----------------------------- | | `message_id` | string | Message ID | | `chat_id` | string | Chat ID | | `from_name` | string | Sender display name | | `text` | string | Message body (HTML or text) | | `created_at` | string | Message timestamp | | `attachments` | file\[] | Uploaded attachments as files | --- # Microsoft Word (/integrations/microsoft_word) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Word](https://www.microsoft.com/microsoft-365/word) in Agent Serve to create, read, and edit `.docx` files stored in OneDrive or SharePoint, fill templates, and export documents as PDF. Choose **Replace Content** to overwrite a document, **Append Content** to add paragraphs, or **Find and Replace Text** to update matching text. The sections below explain document IDs, supported formatting, and template behavior. ## How documents are addressed [#how-documents-are-addressed] Every operation identifies a document by its **drive item ID**, not by its file path. Pick one with the document selector, or paste an ID from an earlier step. Leave **Drive ID** empty to work in your personal OneDrive; set it to a SharePoint drive ID to work in a document library instead. ## Writing content [#writing-content] **Create Document** and **Replace Content** accept a small, predictable subset of Markdown: | You write | Word renders | | ---------------------------------------- | -------------------- | | `# Heading`, `## Heading`, `### Heading` | Heading 1, 2, and 3 | | `- item` | A bulleted list item | | `**bold**`, `*italic*` | Bold and italic text | | Anything else | A plain paragraph | Unsupported Markdown is left as visible text rather than being dropped, so nothing goes missing silently. **Replace Content** overwrites the whole document — its previous content and formatting are discarded. To add to a document instead, use **Append Content**, which adds plain paragraphs to the end and leaves everything already there untouched. ## Filling templates [#filling-templates] **Create from Template** is the fastest way to produce a formatted document. Point it at a template, give the new document a name, and supply **Placeholder Values** as a JSON object: ```json { "{{customer_name}}": "Acme Corp", "{{effective_date}}": "2026-01-31", "{{total}}": "$48,000" } ``` Placeholders are matched as literal text — there is no pattern syntax — so you can use whatever delimiter your template already uses. Any placeholder missing from the template is simply ignored, and the number of substitutions made is returned as `occurrencesChanged`, which is worth checking: a count of `0` means the keys do not match what is actually in the template. Word splits a sentence across several internal runs whenever formatting changes mid-line, so a placeholder like `{{customer_name}}` is often stored in pieces. Agent Serve reassembles each paragraph before matching, so those placeholders are still found. When a match sits entirely inside one run, its formatting is preserved exactly; when a match straddles runs, that paragraph takes on the formatting of its first run. **Find and Replace Text** applies the same matching to a document already in place, and covers headers and footers as well as the body. Matching never crosses a paragraph break, which mirrors Word's own Replace All. ## Permissions [#permissions] Connecting a Microsoft account grants Agent Serve `Files.Read` and `Files.ReadWrite`, the permissions Microsoft Graph requires to read and write drive items. The same permissions cover SharePoint document libraries the account can already reach — Agent Serve never gains access to anything the signed-in account could not open itself. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft Word into the workflow. Create .docx documents from text, fill a formatted template by substituting its placeholders, read a document back as text, replace or append content, find and replace text across the body plus headers and footers, list and search documents in OneDrive or SharePoint, and export a document as PDF. ## Actions [#actions] ### Create Microsoft Word Document [#create-microsoft-word-document] Create a new Microsoft Word (.docx) document in OneDrive or SharePoint from text content. Supports Markdown headings (# ## ###), bullets (-), and inline **bold** / *italic*. An existing document with the same name is never overwritten — the new one is given a unique name instead. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | The name of the document to create (e.g., "Q3 Report"). A .docx extension is added when missing. | | `content` | string | No | The text content of the document. Markdown headings (# ## ###), bullets (- item), and inline **bold** / *italic* are converted to Word formatting; every other line becomes a paragraph. | | `folderId` | string | No | The ID of the folder to create the document in. If omitted, the document is created in the drive root. | | `driveId` | string | No | The ID of the drive to create the document in. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------ | | `metadata` | object | Metadata for the created document | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### Create Microsoft Word Document from Template [#create-microsoft-word-document-from-template] Copy an existing Microsoft Word (.docx) template to a new document and fill its placeholders. The template keeps all of its formatting, styles, headers, and footers, and is never modified. An existing document with the same name is never overwritten — the new one is given a unique name instead. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `templateDocumentId` | string | Yes | The drive item ID of the Word template to copy | | `name` | string | Yes | The name of the document to create (e.g., "Acme — Services Agreement"). A .docx extension is added when missing. | | `replacements` | json | No | A JSON object mapping each placeholder in the template to its value, e.g. \{"\{\{customer\_name}}": "Acme Corp", "\{\{date}}": "2026-01-31"}. Placeholders not present in the template are ignored. | | `matchCase` | boolean | No | Whether placeholder matching is case-sensitive. Defaults to false. | | `folderId` | string | No | The ID of the folder to create the new document in. If omitted, the drive root is used. | | `driveId` | string | No | The ID of the drive holding the template and the new document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------------- | | `occurrencesChanged` | number | How many placeholder occurrences were filled in the new document | | `metadata` | object | Metadata for the newly created document | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### Read Microsoft Word Document [#read-microsoft-word-document] Read the text content of a Microsoft Word (.docx) document stored in OneDrive or SharePoint. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The drive item ID of the Word document to read | | `driveId` | string | No | The ID of the drive containing the document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `content` | string | The extracted text content of the document | | `metadata` | object | Metadata for the document that was read | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### Update Microsoft Word Document [#update-microsoft-word-document] Replace the entire contents of an existing Microsoft Word (.docx) document with new text. The previous content and its formatting are discarded — use Append to add to a document instead. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The drive item ID of the Word document to replace | | `content` | string | Yes | The new text content of the document. Markdown headings (# ## ###), bullets (- item), and inline **bold** / *italic* are converted to Word formatting; every other line becomes a paragraph. | | `driveId` | string | No | The ID of the drive containing the document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------- | | `updatedContent` | boolean | Whether the document content was replaced | | `metadata` | object | Metadata for the updated document | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### Append to Microsoft Word Document [#append-to-microsoft-word-document] Append plain-text paragraphs to the end of an existing Microsoft Word (.docx) document, leaving the existing content and formatting intact. Fails rather than overwriting if someone else changed the document while the edit was in flight. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The drive item ID of the Word document to append to | | `content` | string | Yes | The text to append. Each non-empty line becomes a paragraph at the end of the document. Markdown is not converted here — use Update to rewrite a document with formatting. | | `driveId` | string | No | The ID of the drive containing the document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------- | | `updatedContent` | boolean | Whether the paragraphs were appended to the document | | `metadata` | object | Metadata for the updated document | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### Replace Text in Microsoft Word Document [#replace-text-in-microsoft-word-document] Find and replace text throughout a Microsoft Word (.docx) document, including its headers and footers. Use this to fill placeholders in a template document. Fails rather than overwriting if someone else changed the document while the edit was in flight. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The drive item ID of the Word document to edit | | `findText` | string | Yes | The literal text to find (e.g., "\{\{customer\_name}}"). Matched as plain text, not a pattern, and never across a paragraph break. | | `replaceText` | string | No | The text to substitute for each match. Omit to delete the matched text. | | `matchCase` | boolean | No | Whether matching is case-sensitive. Defaults to false. | | `driveId` | string | No | The ID of the drive containing the document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------- | | `occurrencesChanged` | number | How many occurrences of the search text were replaced | | `metadata` | object | Metadata for the edited document | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | ### List Microsoft Word Documents [#list-microsoft-word-documents] List or search Microsoft Word (.docx) documents in OneDrive or SharePoint. Non-Word items are filtered out of the results. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `query` | string | No | Search text matched against file name, metadata, and content. If omitted, the documents directly inside the folder are listed. | | `folderId` | string | No | The ID of the folder to list or search within. If omitted, the drive root is used. | | `driveId` | string | No | The ID of the drive to list from. Required for SharePoint. If omitted, uses the personal OneDrive. | | `pageSize` | number | No | Maximum number of items to request from Microsoft Graph (1-200, default 50) | | `pageToken` | string | No | Continuation URL from a previous response's nextPageToken, used to fetch the next page | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------- | | `documents` | array | The Word documents that matched | | ↳ `documentId` | string | The drive item ID of the document | | ↳ `name` | string | The document file name | | ↳ `mimeType` | string | The document MIME type | | ↳ `webViewLink` | string | Browser URL for opening the document | | ↳ `size` | number | Document size in bytes | | ↳ `createdTime` | string | ISO 8601 creation time | | ↳ `modifiedTime` | string | ISO 8601 last modification time | | `nextPageToken` | string | Continuation URL for the next page of results, when more remain | ### Export Microsoft Word Document as PDF [#export-microsoft-word-document-as-pdf] Convert a Microsoft Word (.docx) document to PDF using Microsoft Graph and return it as a file. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `documentId` | string | Yes | The drive item ID of the Word document to convert | | `fileName` | string | No | Optional name for the generated PDF (e.g., "report.pdf"). Defaults to the document name with a .pdf extension. | | `driveId` | string | No | The ID of the drive containing the document. Required for SharePoint. If omitted, uses the personal OneDrive. | #### Output [#output-7] | Parameter | Type | Description | | --------- | ---- | -------------------------------------------- | | `file` | file | The converted PDF, stored in execution files | --- # MillionVerifier (/integrations/millionverifier) {/* MANUAL-CONTENT-START:intro */} Use MillionVerifier to verify an email and check remaining verification credits. Results classify the address as ok, catch-all, unknown, invalid, disposable, or unverified, with role-account and free-provider flags. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate MillionVerifier to verify email deliverability in real time — classify addresses as valid, invalid, catch-all, disposable, or unknown — and check your remaining verification credits. ## Actions [#actions] ### MillionVerifier Verify Email [#millionverifier-verify-email] Verify the deliverability of an email address. Uses one verification credit. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `email` | string | Yes | Email address to verify (e.g., [john@example.com](mailto:john@example.com)) | | `apiKey` | string | Yes | MillionVerifier API Key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------------------- | | `email` | string | The verified email address | | `status` | string | Verification status (valid, invalid, catch\_all, disposable, unknown, unverified) | | `deliverable` | boolean | Whether the email is valid and safe to send | | `freeEmail` | boolean | Whether the address is on a free email provider | | `roleAccount` | boolean | Whether the address is a role account (e.g., info@, sales@) | | `didYouMean` | string | Suggested correction for a likely typo | | `subResult` | string | Additional MillionVerifier classification detail | ### MillionVerifier Get Credits [#millionverifier-get-credits] Retrieve the remaining verification credits for the authenticated account. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | MillionVerifier API Key | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `credits` | number | Remaining verification credits | --- # Mintlify (/integrations/mintlify) {/* MANUAL-CONTENT-START:intro */} [Mintlify](https://mintlify.com/) is a documentation platform for building, deploying, and maintaining developer docs. Docs live as MDX in your Git repository, deploy on every merge, and ship with a built-in AI assistant trained on your content. With Mintlify, you can: * **Deploy documentation from Git**: Trigger production updates and per-branch preview deployments, then poll deployment status for logs, commit details, and screenshots * **Run automations on demand**: Kick off a scheduled automation immediately from CI/CD instead of waiting for its next run * **Edit docs with an agent**: Launch background agent jobs from a prompt, send follow-up instructions, and get a pull request when the agent changes files * **Check writing quality**: Analyze a page for AI-sounding prose and get flagged passages with suggested human rewrites * **Search and retrieve content**: Run semantic and keyword search across your docs, then fetch the full text of any matching page * **Ask the docs assistant**: Get a grounded answer with its cited source pages, and continue the conversation across turns with a thread ID * **Export analytics**: Pull user feedback, assistant conversations, caller stats, search queries, page views, and unique visitors In Agent Serve, the Mintlify integration lets your agents ship docs, drive documentation agent jobs, answer questions from your published content, and measure how that content performs — all from a single block. **Authentication.** Mintlify issues two key types for these endpoints, and the API Key field takes whichever the selected operation needs: * **Admin API key** (`mint_` prefix) — Trigger Update, Get Update Status, Trigger Preview Deployment, Trigger Automation, Create/Get Agent Job, Send Agent Message, Detect AI-Sounding Prose, and every analytics export * **Assistant API key** (`mint_dsc_` prefix) — Search Documentation, Get Page Content, and Ask Assistant Generate both on the [API keys page](https://app.mintlify.com/settings/organization/api-keys) in your Mintlify dashboard. The **Project ID** used by the admin operations is on the same page; the **Domain** used by the assistant operations is the identifier at the end of your dashboard URL (`app.mintlify.com/organization/domain`). The REST API requires a Mintlify Pro or Enterprise plan. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Mintlify into your workflow. Trigger production and preview deployments, run scheduled automations, launch documentation agent jobs, detect AI-sounding prose, search your docs and read page content, ask the docs assistant, and export feedback, conversation, search, view, and visitor analytics. ## Actions [#actions] ### Mintlify Trigger Update [#mintlify-trigger-update] Queue a deployment update for a Mintlify documentation project from its configured deployment branch. Returns a status ID for tracking progress. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------- | | `statusId` | string | Status ID of the queued update. Poll it with Get Update Status. | ### Mintlify Get Update Status [#mintlify-get-update-status] Get the status of a Mintlify deployment update from its status ID, including logs, commit details, and screenshots. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------ | | `statusId` | string | Yes | Status ID returned by Trigger Update or Trigger Preview Deployment | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------- | | `id` | string | Status ID of the update | | `projectId` | string | Documentation project ID | | `createdAt` | string | ISO 8601 UTC start time | | `endedAt` | string | ISO 8601 UTC end time | | `status` | string | Update status: queued, in\_progress, success, or failure | | `summary` | string | Summary of the update status | | `logs` | array | Deployment log lines | | `subdomain` | string | Subdomain of the docs being updated | | `screenshot` | string | Screenshot of the docs | | `screenshotLight` | string | Light-mode screenshot of the docs | | `screenshotDark` | string | Dark-mode screenshot of the docs | | `author` | object | Author of the update | | ↳ `name` | string | Author name | | ↳ `avatarUrl` | string | Author avatar image URL | | ↳ `githubUserId` | number | Author GitHub user ID | | `commit` | object | Commit that produced the update | | ↳ `sha` | string | Commit SHA | | ↳ `ref` | string | Git ref of the commit | | ↳ `message` | string | Commit message | | ↳ `filesChanged` | object | Files added, modified, and removed by the commit | | ↳ `added` | array | New files added | | ↳ `modified` | array | Existing files that were modified | | ↳ `removed` | array | Files that were removed | | `source` | string | Source of the update trigger: internal, github-app-installation, api, github, dashboard, gitlab, or onboarding | ### Mintlify Trigger Preview Deployment [#mintlify-trigger-preview-deployment] Create or update a Mintlify preview deployment for a Git branch. Redeploys when a preview already exists for the branch. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `branch` | string | Yes | Name of the Git branch to create a preview deployment for | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------- | | `statusId` | string | Status ID for tracking the preview deployment | | `previewUrl` | string | URL where the preview deployment is hosted | ### Mintlify Trigger Automation [#mintlify-trigger-automation] Run a scheduled Mintlify automation immediately instead of waiting for its next scheduled time. Only automations with a custom schedule can be triggered. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `automationId` | string | Yes | Automation ID, copied from the automation's settings panel on the Automations page | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------- | | `schemaId` | string | ID of the triggered automation | | `instanceId` | string | ID of the queued automation run, visible in the run history | | `jobId` | string | ID of the background job processing the run | ### Mintlify Detect AI-Sounding Prose [#mintlify-detect-ai-sounding-prose] Analyze a documentation page for AI-generated prose and return flagged passages with suggested human rewrites. Consumes one AI credit per checked page. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `path` | string | Yes | Repo-relative path of the page, used for reporting only | | `content` | string | Yes | Raw MDX or Markdown content of the page to check (max 1,000,000 characters) | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `path` | string | Path from the request | | `skipped` | string | Reason the page was skipped ("too\_short"), or null when the page was checked | | `predictionShort` | string | Overall verdict for the page: AI, AI-Assisted, Human, or Mixed. Null when the page was skipped. | | `fractionAi` | number | Fraction of the page detected as AI-generated (0-1). Null when the page was skipped. | | `fractionAiAssisted` | number | Fraction of the page detected as AI-assisted (0-1). Null when the page was skipped. | | `fractionHuman` | number | Fraction of the page detected as human-written (0-1). Null when the page was skipped. | | `windows` | array | Flagged non-human passages with line ranges and suggested rewrites. Empty when the page was skipped. | | ↳ `text` | string | The flagged passage text | | ↳ `label` | string | Detection label, for example AI-Generated | | ↳ `aiAssistanceScore` | number | AI-assistance score for the passage (0-1) | | ↳ `confidence` | json | Detection confidence, either a label such as High or a numeric score | | ↳ `startLine` | number | 1-based start line of the passage | | ↳ `endLine` | number | 1-based end line of the passage | | ↳ `rewrites` | array | Suggested human rewrites of the passage | | ↳ `text` | string | The rewritten passage | | ↳ `rationale` | string | Why the rewrite reads more human | | `creditsCharged` | number | AI credits charged for this request (0 when skipped) | ### Mintlify Create Agent Job [#mintlify-create-agent-job] Create a background Mintlify agent job that edits your documentation from a prompt. Opens a pull request when the agent successfully edits files. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `prompt` | string | Yes | The instruction for the agent to execute | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------- | | `statusId` | string | Status ID of a queued deployment | | `previewUrl` | string | URL where the preview deployment is hosted | | `id` | string | Deployment status ID or agent job ID | | `projectId` | string | Documentation project ID | | `createdAt` | string | Creation timestamp | | `endedAt` | string | Deployment end timestamp | | `archivedAt` | string | Agent job archive timestamp | | `status` | string | Deployment status or agent job status | | `summary` | string | Summary of the deployment status | | `logs` | array | Deployment log lines | | `subdomain` | string | Subdomain of the docs being updated | | `screenshot` | string | Screenshot of the docs | | `screenshotLight` | string | Light-mode screenshot of the docs | | `screenshotDark` | string | Dark-mode screenshot of the docs | | `author` | json | Author of the deployment update | | `commit` | json | Commit that produced the deployment | | `source` | json | Deployment trigger source (string) or agent job source repository details (object) | | `schemaId` | string | ID of the triggered automation | | `instanceId` | string | ID of the queued automation run | | `jobId` | string | ID of the background job processing an automation run | | `model` | string | AI model used for the agent job | | `prLink` | string | Pull request URL created by the agent | | `path` | string | Documentation page path | | `content` | string | Full text content of the page | | `skipped` | string | Reason a prose check was skipped | | `predictionShort` | string | Prose verdict: AI, AI-Assisted, Human, Mixed | | `fractionAi` | number | Fraction of the page detected as AI-generated | | `fractionAiAssisted` | number | Fraction detected as AI-assisted | | `fractionHuman` | number | Fraction detected as human-written | | `windows` | array | Flagged passages with suggested rewrites | | `creditsCharged` | number | AI credits charged for the prose check | | `results` | array | Documentation search results | | `resultCount` | number | Number of search results returned | | `text` | string | Assembled assistant answer | | `threadId` | string | Assistant thread ID for follow-up messages | | `sources` | array | Documentation sources the assistant cited | | `feedback` | array | Feedback entries or per-page feedback aggregates | | `conversations` | array | Assistant conversation history | | `searches` | array | Documentation search terms with hit counts | | `totalSearches` | number | Total search events in the date range | | `views` | array | Per-page content view event counts | | `visitors` | array | Per-page unique visitor counts | | `totals` | json | Site-wide human, AI, and total traffic counts | | `web` | number | Assistant queries from the documentation site | | `api` | number | Assistant queries from API calls | | `other` | number | Assistant queries from other sources | | `total` | number | Total assistant queries across all caller types | | `nextCursor` | string | Cursor for the next page of results | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Get Agent Job [#mintlify-get-agent-job] Retrieve the current status and details of a Mintlify agent job, including the pull request link once the agent opens one. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `jobId` | string | Yes | Unique identifier of the agent job | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------- | | `statusId` | string | Status ID of a queued deployment | | `previewUrl` | string | URL where the preview deployment is hosted | | `id` | string | Deployment status ID or agent job ID | | `projectId` | string | Documentation project ID | | `createdAt` | string | Creation timestamp | | `endedAt` | string | Deployment end timestamp | | `archivedAt` | string | Agent job archive timestamp | | `status` | string | Deployment status or agent job status | | `summary` | string | Summary of the deployment status | | `logs` | array | Deployment log lines | | `subdomain` | string | Subdomain of the docs being updated | | `screenshot` | string | Screenshot of the docs | | `screenshotLight` | string | Light-mode screenshot of the docs | | `screenshotDark` | string | Dark-mode screenshot of the docs | | `author` | json | Author of the deployment update | | `commit` | json | Commit that produced the deployment | | `source` | json | Deployment trigger source (string) or agent job source repository details (object) | | `schemaId` | string | ID of the triggered automation | | `instanceId` | string | ID of the queued automation run | | `jobId` | string | ID of the background job processing an automation run | | `model` | string | AI model used for the agent job | | `prLink` | string | Pull request URL created by the agent | | `path` | string | Documentation page path | | `content` | string | Full text content of the page | | `skipped` | string | Reason a prose check was skipped | | `predictionShort` | string | Prose verdict: AI, AI-Assisted, Human, Mixed | | `fractionAi` | number | Fraction of the page detected as AI-generated | | `fractionAiAssisted` | number | Fraction detected as AI-assisted | | `fractionHuman` | number | Fraction detected as human-written | | `windows` | array | Flagged passages with suggested rewrites | | `creditsCharged` | number | AI credits charged for the prose check | | `results` | array | Documentation search results | | `resultCount` | number | Number of search results returned | | `text` | string | Assembled assistant answer | | `threadId` | string | Assistant thread ID for follow-up messages | | `sources` | array | Documentation sources the assistant cited | | `feedback` | array | Feedback entries or per-page feedback aggregates | | `conversations` | array | Assistant conversation history | | `searches` | array | Documentation search terms with hit counts | | `totalSearches` | number | Total search events in the date range | | `views` | array | Per-page content view event counts | | `visitors` | array | Per-page unique visitor counts | | `totals` | json | Site-wide human, AI, and total traffic counts | | `web` | number | Assistant queries from the documentation site | | `api` | number | Assistant queries from API calls | | `other` | number | Assistant queries from other sources | | `total` | number | Total assistant queries across all caller types | | `nextCursor` | string | Cursor for the next page of results | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Send Agent Message [#mintlify-send-agent-message] Send a follow-up instruction to an existing Mintlify agent job. The message is processed asynchronously. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `jobId` | string | Yes | Unique identifier of the agent job to send a message to | | `prompt` | string | Yes | The follow-up instruction for the agent | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------- | | `statusId` | string | Status ID of a queued deployment | | `previewUrl` | string | URL where the preview deployment is hosted | | `id` | string | Deployment status ID or agent job ID | | `projectId` | string | Documentation project ID | | `createdAt` | string | Creation timestamp | | `endedAt` | string | Deployment end timestamp | | `archivedAt` | string | Agent job archive timestamp | | `status` | string | Deployment status or agent job status | | `summary` | string | Summary of the deployment status | | `logs` | array | Deployment log lines | | `subdomain` | string | Subdomain of the docs being updated | | `screenshot` | string | Screenshot of the docs | | `screenshotLight` | string | Light-mode screenshot of the docs | | `screenshotDark` | string | Dark-mode screenshot of the docs | | `author` | json | Author of the deployment update | | `commit` | json | Commit that produced the deployment | | `source` | json | Deployment trigger source (string) or agent job source repository details (object) | | `schemaId` | string | ID of the triggered automation | | `instanceId` | string | ID of the queued automation run | | `jobId` | string | ID of the background job processing an automation run | | `model` | string | AI model used for the agent job | | `prLink` | string | Pull request URL created by the agent | | `path` | string | Documentation page path | | `content` | string | Full text content of the page | | `skipped` | string | Reason a prose check was skipped | | `predictionShort` | string | Prose verdict: AI, AI-Assisted, Human, Mixed | | `fractionAi` | number | Fraction of the page detected as AI-generated | | `fractionAiAssisted` | number | Fraction detected as AI-assisted | | `fractionHuman` | number | Fraction detected as human-written | | `windows` | array | Flagged passages with suggested rewrites | | `creditsCharged` | number | AI credits charged for the prose check | | `results` | array | Documentation search results | | `resultCount` | number | Number of search results returned | | `text` | string | Assembled assistant answer | | `threadId` | string | Assistant thread ID for follow-up messages | | `sources` | array | Documentation sources the assistant cited | | `feedback` | array | Feedback entries or per-page feedback aggregates | | `conversations` | array | Assistant conversation history | | `searches` | array | Documentation search terms with hit counts | | `totalSearches` | number | Total search events in the date range | | `views` | array | Per-page content view event counts | | `visitors` | array | Per-page unique visitor counts | | `totals` | json | Site-wide human, AI, and total traffic counts | | `web` | number | Assistant queries from the documentation site | | `api` | number | Assistant queries from API calls | | `other` | number | Assistant queries from other sources | | `total` | number | Total assistant queries across all caller types | | `nextCursor` | string | Cursor for the next page of results | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Search Documentation [#mintlify-search-documentation] Run a semantic and keyword search across a Mintlify documentation site, with optional version, language, tag, and group filters. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Domain identifier from your domain.mintlify.site URL, found at the end of your dashboard URL | | `query` | string | Yes | Search query to execute against your documentation content | | `pageSize` | number | No | Number of search results to return, between 1 and 50 (default 10) | | `scoreThreshold` | number | No | Minimum relevance score for results, between 0 and 1 | | `version` | string | No | Filter results by documentation version | | `language` | string | No | Filter results by content language | | `tag` | string | No | Filter results by tag | | `groups` | json | No | Documentation groups the caller is authorized to access, as a JSON array of strings. Only applies to deployments using auth or userAuth. | | `apiKey` | string | Yes | Mintlify assistant API key (starts with mint\_dsc\_) | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------- | | `results` | array | Matching documentation chunks ordered by relevance | | ↳ `content` | string | The matching content from your documentation | | ↳ `path` | string | Path or URL to the source document | | ↳ `metadata` | json | Additional metadata about the search result | | `resultCount` | number | Number of results returned | ### Mintlify Get Page Content [#mintlify-get-page-content] Retrieve the full text content of a Mintlify documentation page by its path. Use it after a search to fetch the complete page. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Domain identifier from your domain.mintlify.site URL, found at the end of your dashboard URL | | `path` | string | Yes | Page slug or path to retrieve, matching the path field returned by Search Documentation | | `groups` | json | No | Documentation groups the caller is authorized to access, as a JSON array of strings. Only applies to deployments using auth or userAuth. | | `apiKey` | string | Yes | Mintlify assistant API key (starts with mint\_dsc\_) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `path` | string | The page path that was requested | | `content` | string | Full text content of the page | ### Mintlify Create Assistant Message [#mintlify-create-assistant-message] Ask the Mintlify assistant, trained on your documentation, a question and get the assembled answer with its cited sources. Consumes the deployment's assistant credits. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `domain` | string | Yes | Domain identifier from your domain.mintlify.site URL, found at the end of your dashboard URL | | `message` | string | No | The question to ask the assistant. Ignored when a full Messages array is supplied. | | `messages` | json | No | Full AI SDK message array for multi-turn conversations, each entry with id, role, and parts. Overrides Message when provided. | | `fp` | string | No | Fingerprint identifier for tracking conversation sessions (default "anonymous") | | `threadId` | string | No | Thread ID from a previous response, to continue the same conversation | | `retrievalPageSize` | number | No | Number of documentation search results used to generate the response | | `currentPath` | string | No | Path of the page the user is currently viewing, for more relevant answers (max 200 characters) | | `version` | string | No | Filter retrieval by documentation version | | `language` | string | No | Filter retrieval by content language | | `groups` | json | No | Group identifiers to filter retrieval by, as a JSON array of strings | | `assistantContext` | json | No | Contextual snippets for the assistant, as a JSON array of objects with type ("code" or "textSelection"), value, and optional path and elementId | | `apiKey` | string | Yes | Mintlify assistant API key (starts with mint\_dsc\_) | #### Output [#output-10] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------------------- | | `text` | string | Assembled assistant answer | | `threadId` | string | Thread ID for continuing this conversation in a follow-up call | | `sources` | array | Documentation sources the assistant cited | | ↳ `sourceId` | string | Source identifier | | ↳ `url` | string | URL of the cited page | | ↳ `title` | string | Title of the cited page | ### Mintlify Get Feedback [#mintlify-get-feedback] Export paginated user feedback from a Mintlify documentation project, with optional date-range, source, and status filters. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `source` | string | No | Filter by feedback source: code\_snippet, contextual, agent, or thumbs\_only | | `status` | string | No | Comma-separated statuses to filter by: pending, in\_progress, resolved, dismissed | | `limit` | number | No | Max results per page, between 1 and 100 (default 50) | | `cursor` | string | No | Pagination cursor returned as nextCursor by a previous call | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `feedback` | array | Feedback entries for the requested window | | ↳ `id` | string | Unique feedback identifier | | ↳ `path` | string | Path or URL of the page | | ↳ `comment` | string | Text of the feedback comment | | ↳ `createdAt` | string | Submission timestamp | | ↳ `source` | string | Origin: code\_snippet, contextual, agent, or thumbs\_only | | ↳ `status` | string | Review status: pending, in\_progress, resolved, or dismissed | | ↳ `helpful` | boolean | Whether the user found the content helpful (contextual feedback only) | | ↳ `contact` | string | Email the user provided for follow-up (contextual feedback only) | | ↳ `code` | string | Code snippet the feedback relates to (code\_snippet feedback only) | | ↳ `filename` | string | Filename of the code snippet (code\_snippet feedback only) | | ↳ `lang` | string | Language of the code snippet (code\_snippet feedback only) | | `nextCursor` | string | Cursor for the next page, or null when there are no more results | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Get Feedback By Page [#mintlify-get-feedback-by-page] Export Mintlify feedback counts aggregated by documentation page path, broken down into thumbs up, thumbs down, and code snippet feedback. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `limit` | number | No | Max results per page, between 1 and 100 (default 10) | | `source` | string | No | Filter by feedback source: code\_snippet, contextual, agent, or thumbs\_only | | `status` | string | No | Comma-separated statuses to filter by: pending, in\_progress, resolved, dismissed | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------- | | `feedback` | array | Feedback counts aggregated by documentation page path | | ↳ `path` | string | The documentation page path | | ↳ `thumbsUp` | number | Positive contextual feedback entries | | ↳ `thumbsDown` | number | Negative contextual feedback entries | | ↳ `code` | number | Code snippet feedback entries | | ↳ `total` | number | Total feedback entries | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Get Assistant Conversations [#mintlify-get-assistant-conversations] Export paginated Mintlify AI assistant conversation history, including the query, response, cited sources, and whether the question was answered. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `limit` | number | No | Max results per page, between 1 and 1000 (default 100) | | `cursor` | string | No | ULID pagination cursor returned as nextCursor by a previous call | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-13] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------- | | `conversations` | array | Assistant conversations for the requested window | | ↳ `id` | string | Unique conversation identifier | | ↳ `timestamp` | string | When the conversation occurred | | ↳ `query` | string | The user's question | | ↳ `response` | string | The assistant's response | | ↳ `sources` | array | Documentation pages referenced in the response | | ↳ `title` | string | Title of the page | | ↳ `url` | string | URL of the page | | ↳ `resolutionStatus` | string | Whether the assistant answered the question: answered or unanswered | | ↳ `queryCategory` | string | Auto-assigned category grouping for the conversation | | ↳ `pageUrl` | string | Full URL of the page where the conversation started | | `nextCursor` | string | Cursor for the next page, or null when there are no more results | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Get Assistant Caller Stats [#mintlify-get-assistant-caller-stats] Get a breakdown of Mintlify assistant query counts by caller type — web, API, and other — for a date range. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------ | | `web` | number | Assistant queries originating from the documentation site | | `api` | number | Assistant queries originating from API calls | | `other` | number | Assistant queries from other sources such as integrations and SDKs | | `total` | number | Total assistant queries across all caller types | ### Mintlify Get Search Queries [#mintlify-get-search-queries] Export Mintlify documentation search terms for a date range, ordered by hit count, with click-through rate and the most-clicked result path. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `limit` | number | No | Max search terms per page, between 1 and 100 (default 50) | | `cursor` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------ | | `searches` | array | Search terms ordered by hit count descending | | ↳ `searchQuery` | string | The search term entered by users | | ↳ `hits` | number | Number of times this term was searched | | ↳ `ctr` | number | Click-through rate for this search term | | ↳ `topClickedPage` | string | Most-clicked result path for this query | | ↳ `lastSearchedAt` | string | Timestamp of the last time this term was searched | | `totalSearches` | number | Total search events in the date range, summing all hits rather than distinct queries | | `nextCursor` | string | Cursor for the next page, or null when there are no more results | ### Mintlify Get Page Views [#mintlify-get-page-views] Export Mintlify per-path and site-wide content view counts for a date range, split by human and AI bot traffic. #### Input [#input-16] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `limit` | number | No | Max results per page, between 1 and 250 (default 50) | | `offset` | number | No | Number of rows to skip for offset-based pagination (default 0) | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `views` | array | Per-page content view event counts | | ↳ `path` | string | The documentation page path | | ↳ `human` | number | Content view events from human traffic | | ↳ `ai` | number | Content view events from AI bot traffic | | ↳ `total` | number | Total content view events | | `hasMore` | boolean | Whether additional results are available | ### Mintlify Get Unique Visitors [#mintlify-get-unique-visitors] Export Mintlify per-path and site-wide approximate distinct visitor counts for a date range, split by human and AI bot traffic. #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `projectId` | string | Yes | Mintlify project ID, copied from the API keys page in your dashboard | | `dateFrom` | string | No | Inclusive start date in ISO 8601 or YYYY-MM-DD format | | `dateTo` | string | No | Exclusive end date in ISO 8601 or YYYY-MM-DD format | | `limit` | number | No | Max results per page, between 1 and 250 (default 50) | | `offset` | number | No | Number of rows to skip for offset-based pagination (default 0) | | `apiKey` | string | Yes | Mintlify admin API key (starts with mint\_) | #### Output [#output-17] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------------------- | | `visitors` | array | Per-page unique visitor counts | | ↳ `path` | string | The documentation page path | | ↳ `human` | number | Unique human visitors | | ↳ `ai` | number | Unique AI bot visitors | | ↳ `total` | number | Approximate distinct visitors, deduplicated across human and AI | | `hasMore` | boolean | Whether additional results are available | --- # Mistral Parser (/integrations/mistral_parse) {/* MANUAL-CONTENT-START:intro */} The Mistral Parse tool provides a powerful way to extract and process content from PDF documents using [Mistral's OCR API](https://mistral.ai/). This tool leverages advanced optical character recognition to accurately extract text and structure from PDF files, making it easy to incorporate document data into your agent workflows. With the Mistral Parse tool, you can: * **Extract text from PDFs**: Accurately convert PDF content to text, markdown, or JSON formats * **Process PDFs from URLs**: Directly extract content from PDFs hosted online by providing their URLs * **Maintain document structure**: Preserve formatting, tables, and layout from the original PDFs * **Extract images**: Optionally include embedded images from the PDFs * **Select specific pages**: Process only the pages you need from multi-page documents The Mistral Parse tool is particularly useful for scenarios where your agents need to work with PDF content, such as analyzing reports, extracting data from forms, or processing text from scanned documents. It simplifies the process of making PDF content available to your agents, allowing them to work with information stored in PDFs just as easily as with direct text input. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Mistral Parse into the workflow. Can extract text from uploaded PDF documents, or from a URL. ## Actions [#actions] ### Mistral PDF Parser [#mistral-pdf-parser] Parse PDF documents using Mistral OCR API #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------- | | `file` | file | Yes | Normalized UserFile from file upload or file reference | | `resultType` | string | No | Type of parsed result (markdown, text, or json). Defaults to markdown. | | `pages` | array | No | Specific pages to process (array of page numbers, starting from 0) | | `apiKey` | string | Yes | Mistral API key (MISTRAL\_API\_KEY) | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pages` | array | Array of page objects from Mistral OCR | | ↳ `index` | number | Page index (zero-based) | | ↳ `markdown` | string | Extracted markdown content | | ↳ `images` | array | Images extracted from this page with bounding boxes | | ↳ `id` | string | Image identifier (e.g., img-0.jpeg) | | ↳ `top_left_x` | number | Top-left X coordinate in pixels | | ↳ `top_left_y` | number | Top-left Y coordinate in pixels | | ↳ `bottom_right_x` | number | Bottom-right X coordinate in pixels | | ↳ `bottom_right_y` | number | Bottom-right Y coordinate in pixels | | ↳ `image_base64` | string | Base64-encoded image data; returned only when the hidden includeImageBase64 input is enabled | | ↳ `dimensions` | object | Page dimensions | | ↳ `dpi` | number | Dots per inch | | ↳ `height` | number | Page height in pixels | | ↳ `width` | number | Page width in pixels | | ↳ `tables` | array | Separate table objects, referenced from the markdown via placeholders like \[tbl-0.html]. Mistral populates these only when table\_format is "markdown" or "html"; Agent Serve never sets it, so tables stay inline in the markdown and this list is empty | | ↳ `hyperlinks` | array | Array of URL strings detected in the page (e.g., \["https\://...", "mailto:..."]) | | ↳ `header` | string | Page header content. Mistral returns it only when extract\_header is true (it defaults to false); Agent Serve never sets it, so this is not returned | | ↳ `footer` | string | Page footer content. Mistral returns it only when extract\_footer is true (it defaults to false); Agent Serve never sets it, so this is not returned | | `model` | string | Mistral OCR model identifier (e.g., mistral-ocr-latest) | | `usage_info` | object | Usage and processing statistics | | ↳ `pages_processed` | number | Total number of pages processed | | ↳ `doc_size_bytes` | number | Document file size in bytes | | `document_annotation` | string | Structured annotation data as JSON string (when applicable) | --- # Modal (/integrations/modal) ## Usage Instructions [#usage-instructions] Integrate Modal into your workflow to reach the serverless compute you already run there. Invoke a deployed Web Function or Server over HTTPS with proxy-token auth, generate completions from a model served by a Modal Endpoint, and list the models a token can reach. ## Actions [#actions] ### Modal Call Function [#modal-call-function] Invoke a deployed Modal Web Function or Server over HTTPS #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `url` | string | Yes | Public URL of the deployed Modal Web Function or Server (e.g., [https://your-workspace--your-app-your-function.modal.run](https://your-workspace--your-app-your-function.modal.run)) | | `method` | string | No | HTTP method to use: GET, POST, PUT, PATCH, DELETE, or HEAD | | `body` | json | No | JSON request body sent to the function | | `queryParams` | json | No | Query parameters to append to the URL as key-value pairs | | `headers` | json | No | Additional request headers as key-value pairs | | `tokenId` | string | No | Modal proxy token ID (wk-...), required for authenticated functions | | `tokenSecret` | string | No | Modal proxy token secret (ws-...), required for authenticated functions | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------------------------------- | | `data` | json | Body returned by the function — parsed JSON when it responds with application/json, otherwise the raw text | | `status` | number | HTTP status code of the response | | `headers` | json | Response headers as key-value pairs | ### Modal Chat Completion [#modal-chat-completion] Generate a chat completion from a model served by a Modal Endpoint #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `endpointUrl` | string | No | Endpoint URL from the Modal dashboard or `modal endpoint list`. Defaults to [https://inference.us-west.modal.direct](https://inference.us-west.modal.direct), which routes to Shared Endpoints on the model ID | | `model` | string | Yes | Model to generate with — the base model repo ID for a dedicated endpoint, or the endpoint hostname for a Shared Endpoint | | `content` | string | Yes | The user message content to send to the model | | `systemPrompt` | string | No | System prompt to guide the model behavior | | `maxTokens` | number | No | Maximum number of tokens to generate | | `temperature` | number | No | Sampling temperature (e.g., 0 for deterministic, 0.7 for creative) | | `topP` | number | No | Nucleus sampling probability mass between 0 and 1 | | `tokenId` | string | Yes | Modal proxy token ID (wk-...) | | `tokenSecret` | string | Yes | Modal proxy token secret (ws-...) | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------- | | `content` | string | Generated text content | | `model` | string | Model that produced the completion | | `finishReason` | string | Why generation stopped (e.g., stop, length) | | `usage` | object | Token usage reported by the endpoint | | ↳ `prompt_tokens` | number | Number of tokens in the prompt | | ↳ `completion_tokens` | number | Number of tokens in the completion | | ↳ `total_tokens` | number | Total number of tokens used | ### Modal List Models [#modal-list-models] List the model IDs a Modal proxy token can reach on an endpoint #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `endpointUrl` | string | No | Endpoint URL to query. Defaults to [https://inference.us-west.modal.direct](https://inference.us-west.modal.direct), which lists every Shared Endpoint the token can reach | | `tokenId` | string | Yes | Modal proxy token ID (wk-...) | | `tokenSecret` | string | Yes | Modal proxy token secret (ws-...) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `models` | array | Models the token can reach on the endpoint | | `count` | number | Number of models returned | --- # monday.com API Tokens (/integrations/monday-service-account) Connect monday.com with a personal API token. It acts as the user who generated it, with that user's board access. Use a dedicated integration user if the workflows should have a separate identity. ## Prerequisites [#prerequisites] Admins and members can generate their own API token (guests and viewers cannot) — for production use, create a dedicated integration-user seat first. A token generated from a personal account stops working if that person is deactivated. The token's user must be **active**, **not view-only** (Viewer), and have a **confirmed email address**. Tokens from view-only or unconfirmed users are rejected by the monday.com API with a 403 error even though the token itself is valid. ## Setting Up the Token [#setting-up-the-token] ### 1. Create a Dedicated Integration User (Recommended) [#1-create-a-dedicated-integration-user-recommended] Have a monday.com admin invite a new member with a shared email like `agentserve-bot@yourcompany.com` and confirm the email address Add the integration user to every board your workflows will read or write. The token mirrors the user's board access exactly — a board the user can't see is a board the token can't touch ### 2. Generate the Personal API Token [#2-generate-the-personal-api-token] Log in as the integration user, click your **profile picture** (top-right), and choose **Developers** {/* TODO(screenshot): monday.com profile-picture menu with "Developers" highlighted */} In the Developer Center, open the **API token** tab and click **Show** to reveal the token {/* TODO(screenshot): Developer Center "API token" tab with the token revealed */} Copy the token exactly as shown — monday.com doesn't document a fixed token format monday.com issues **one API token per user**. Regenerating it immediately invalidates the old token — every integration using it breaks at once, with no overlap window. Don't regenerate the token to "get a fresh copy"; reveal and copy the existing one instead. There is no scope picker: personal API tokens carry **all** API permission scopes automatically. What limits the token is the user's own access — board membership, item visibility, and account permissions. ## Adding the API Token to Agent Serve [#adding-the-api-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Monday" and open it, then click **Add to Agent Serve** and choose **Add API token** {/* TODO(screenshot): Monday integration page with the service-account connect option */} Paste the API token and optionally set a display name and description {/* TODO(screenshot): Add monday.com API token dialog with the API token filled in */} Click **Add API token**. Agent Serve verifies the token by querying monday.com's `me` endpoint — if it fails, you'll see a specific error explaining what went wrong. The token is encrypted before being stored. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a monday.com block to your workflow. In the credential dropdown, select the saved monday.com API token. Select it and configure the block as you normally would. {/* TODO(screenshot): monday.com block in a workflow with the service account selected as the credential */} The block calls monday.com's single global API endpoint (`api.monday.com/v2`) using the token — there's no per-tenant domain to configure. The token acts as the user it was created by, with that user's board access. --- # Monday (/integrations/monday) {/* MANUAL-CONTENT-START:intro */} [Monday.com](https://monday.com/) is a work operating system that teams use to plan, track, and manage projects through customizable boards, items, and columns. Boards organize work into groups of items, with columns tracking status, dates, people, and other structured data for each item. With Monday.com, you can: * **Manage boards**: List, retrieve, and create boards along with their groups and columns * **Manage items**: Fetch, search, create, update, duplicate, archive, and delete items * **Organize work**: Create subitems, move items between groups, and add updates or comments * **React to events**: Trigger workflows on column changes, item creation, status changes, and more In Agent Serve, the Monday.com integration allows your agents to list and inspect boards, fetch and search items by column values, create and update items and subitems, change column values, move items between groups, post updates, and create new boards, groups, and columns—all programmatically through API calls. Triggers let workflows react automatically to events such as column value changes, item creation or deletion, status changes, items being moved between groups, and updates being posted, making it possible to keep external systems in sync with activity on a Monday.com board. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with Monday.com to list boards, get board details, fetch and search items, create and update items, archive or delete items, create subitems, move items between groups, add updates, and create groups. ## Actions [#actions] ### Monday List Boards [#monday-list-boards] List boards from your Monday.com account #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `limit` | number | No | Maximum number of boards to return (default 25, max 500) | | `page` | number | No | Page number for pagination (starts at 1) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `boards` | array | List of Monday.com boards | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `description` | string | Board description | | ↳ `state` | string | Board state (active, archived, deleted) | | ↳ `boardKind` | string | Board kind (public, private, share) | | ↳ `itemsCount` | number | Number of items on the board | | ↳ `url` | string | Board URL | | ↳ `updatedAt` | string | Last updated timestamp | | `count` | number | Number of boards returned | ### Monday Get Board [#monday-get-board] Get a specific Monday.com board with its groups and columns #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `boardId` | string | Yes | The ID of the board to retrieve | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------- | | `board` | json | Board details | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `description` | string | Board description | | ↳ `state` | string | Board state | | ↳ `boardKind` | string | Board kind (public, private, share) | | ↳ `itemsCount` | number | Number of items | | ↳ `url` | string | Board URL | | ↳ `updatedAt` | string | Last updated timestamp | | `groups` | array | Groups on the board | | ↳ `id` | string | Group ID | | ↳ `title` | string | Group title | | ↳ `color` | string | Group color (hex) | | ↳ `archived` | boolean | Whether the group is archived | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `position` | string | Group position | | `columns` | array | Columns on the board | | ↳ `id` | string | Column ID | | ↳ `title` | string | Column title | | ↳ `type` | string | Column type | ### Monday Get Item [#monday-get-item] Get a specific item by ID from Monday.com #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `itemId` | string | Yes | The ID of the item to retrieve | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The requested item | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Get Items [#monday-get-items] Get items from a Monday.com board #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board to get items from | | `groupId` | string | No | Filter items by group ID | | `limit` | number | No | Maximum number of items to return (default 25, max 500) | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------- | | `items` | array | List of items from the board | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state (active, archived, deleted) | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values for the item | | ↳ `id` | string | Column ID | | ↳ `text` | string | Human-readable text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | | `count` | number | Number of items returned | ### Monday Search Items [#monday-search-items] Search for items on a Monday.com board by column values #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board to search | | `columns` | string | Yes | JSON array of column filters, e.g. \[\{"column\_id":"status","column\_values":\["Done"]}] | | `limit` | number | No | Maximum number of items to return (default 25, max 500) | | `cursor` | string | No | Pagination cursor from a previous search response | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------- | | `items` | array | Matching items | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | | `count` | number | Number of items returned | | `cursor` | string | Pagination cursor for fetching the next page | ### Monday Create Item [#monday-create-item] Create a new item on a Monday.com board #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board to create the item on | | `itemName` | string | Yes | The name of the new item | | `groupId` | string | No | The group ID to create the item in | | `columnValues` | string | No | JSON string of column values to set (e.g., \{"status":"Done","date":"2024-01-01"}) | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The created item | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Update Item [#monday-update-item] Update column values of an item on a Monday.com board #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board containing the item | | `itemId` | string | Yes | The ID of the item to update | | `columnValues` | string | Yes | JSON string of column values to update (e.g., \{"status":"Done","date":"2024-01-01"}) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The updated item | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Change Column Value [#monday-change-column-value] Update a single column's value on a Monday.com item #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | ----------------------------------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board containing the item | | `itemId` | string | Yes | The ID of the item to update | | `columnId` | string | Yes | The ID of the column to update (e.g., "status", "date4") | | `value` | string | Yes | The new column value as a JSON string (e.g., \{"label":"Done"} for a status column) | | `createLabelsIfMissing` | boolean | No | Create status/dropdown labels that do not yet exist on the column | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The updated item | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Duplicate Item [#monday-duplicate-item] Duplicate an existing item on a Monday.com board #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------ | | `boardId` | string | Yes | The ID of the board containing the item | | `itemId` | string | Yes | The ID of the item to duplicate | | `withUpdates` | boolean | No | Whether to also duplicate the item updates | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The duplicated item | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Delete Item [#monday-delete-item] Delete an item from a Monday.com board #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `itemId` | string | Yes | The ID of the item to delete | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | -------------------------- | | `id` | string | The ID of the deleted item | ### Monday Archive Item [#monday-archive-item] Archive an item on a Monday.com board #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `itemId` | string | Yes | The ID of the item to archive | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `id` | string | The ID of the archived item | ### Monday Move Item to Group [#monday-move-item-to-group] Move an item to a different group on a Monday.com board #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | `itemId` | string | Yes | The ID of the item to move | | `groupId` | string | Yes | The ID of the target group | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `item` | json | The moved item with updated group | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Create Subitem [#monday-create-subitem] Create a subitem under a parent item on Monday.com #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | `parentItemId` | string | Yes | The ID of the parent item | | `itemName` | string | Yes | The name of the new subitem | | `columnValues` | string | No | JSON string of column values to set | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `item` | json | The created subitem | | ↳ `id` | string | Item ID | | ↳ `name` | string | Item name | | ↳ `state` | string | Item state | | ↳ `boardId` | string | Board ID | | ↳ `groupId` | string | Group ID | | ↳ `groupTitle` | string | Group title | | ↳ `columnValues` | array | Column values | | ↳ `id` | string | Column ID | | ↳ `text` | string | Text value | | ↳ `value` | string | Raw JSON value | | ↳ `type` | string | Column type | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `url` | string | Item URL | ### Monday Create Update [#monday-create-update] Add an update (comment) to a Monday.com item #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `itemId` | string | Yes | The ID of the item to add the update to | | `body` | string | Yes | The update text content (supports HTML) | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | ------------------ | | `update` | json | The created update | | ↳ `id` | string | Update ID | | ↳ `body` | string | Update body (HTML) | | ↳ `textBody` | string | Plain text body | | ↳ `createdAt` | string | Creation timestamp | | ↳ `creatorId` | string | Creator user ID | | ↳ `itemId` | string | Item ID | ### Monday Create Group [#monday-create-group] Create a new group on a Monday.com board #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------- | | `boardId` | string | Yes | The ID of the board to create the group on | | `groupName` | string | Yes | The name of the new group (max 255 characters) | | `groupColor` | string | No | The group color as a hex code (e.g., "#ff642e") | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------- | ----------------- | | `group` | json | The created group | | ↳ `id` | string | Group ID | | ↳ `title` | string | Group title | | ↳ `color` | string | Group color (hex) | | ↳ `archived` | boolean | Whether archived | | ↳ `deleted` | boolean | Whether deleted | | ↳ `position` | string | Group position | ### Monday Get Groups [#monday-get-groups] Get the groups on a Monday.com board #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `boardId` | string | Yes | The ID of the board to retrieve groups from | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------- | ----------------------------- | | `groups` | array | Groups on the board | | ↳ `id` | string | Group ID | | ↳ `title` | string | Group title | | ↳ `color` | string | Group color (hex) | | ↳ `archived` | boolean | Whether the group is archived | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `position` | string | Group position | | `count` | number | Number of returned groups | ### Monday Create Board [#monday-create-board] Create a new board in Monday.com #### Input [#input-16] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------- | | `boardName` | string | Yes | The name of the new board | | `boardKind` | string | Yes | The board kind: public, private, or share | | `description` | string | No | The board description | | `workspaceId` | string | No | The ID of the workspace to create the board in | | `folderId` | string | No | The ID of the folder to create the board in | #### Output [#output-16] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `board` | json | The created board | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `description` | string | Board description | | ↳ `state` | string | Board state | | ↳ `boardKind` | string | Board kind (public, private, share) | | ↳ `itemsCount` | number | Number of items | | ↳ `url` | string | Board URL | | ↳ `updatedAt` | string | Last updated timestamp | ### Monday Create Column [#monday-create-column] Create a new column on a Monday.com board #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------- | | `boardId` | string | Yes | The ID of the board to create the column on | | `columnTitle` | string | Yes | The title of the new column | | `columnType` | string | Yes | The column type (e.g., status, text, numbers, date, people, dropdown) | | `columnDescription` | string | No | The column description | | `columnDefaults` | string | No | JSON string of default settings for the column (e.g., status labels) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `column` | json | The created column | | ↳ `id` | string | Column ID | | ↳ `title` | string | Column title | | ↳ `type` | string | Column type | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Monday Column Value Changed [#monday-column-value-changed] Trigger workflow when any column value changes on a Monday.com board #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-18] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `columnId` | string | The ID of the changed column | | `columnType` | string | The type of the changed column | | `columnTitle` | string | The title of the changed column | | `value` | json | The new value of the column | | `previousValue` | json | The previous value of the column | *** ### Monday Item Archived [#monday-item-archived] Trigger workflow when an item is archived on a Monday.com board #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-19] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | *** ### Monday Item Created [#monday-item-created] Trigger workflow when a new item is created on a Monday.com board #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-20] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | *** ### Monday Item Deleted [#monday-item-deleted] Trigger workflow when an item is deleted on a Monday.com board #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-21] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | *** ### Monday Item Moved to Group [#monday-item-moved-to-group] Trigger workflow when an item is moved to any group on a Monday.com board #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-22] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------- | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `destGroupId` | string | The destination group ID the item was moved to | | `sourceGroupId` | string | The source group ID the item was moved from | *** ### Monday Item Name Changed [#monday-item-name-changed] Trigger workflow when an item name changes on a Monday.com board #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-23] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `columnId` | string | The ID of the changed column | | `columnType` | string | The type of the changed column | | `columnTitle` | string | The title of the changed column | | `value` | json | The new value of the column | | `previousValue` | json | The previous value of the column | *** ### Monday Status Changed [#monday-status-changed] Trigger workflow when a status column value changes on a Monday.com board #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-24] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `columnId` | string | The ID of the changed column | | `columnType` | string | The type of the changed column | | `columnTitle` | string | The title of the changed column | | `value` | json | The new value of the column | | `previousValue` | json | The previous value of the column | *** ### Monday Subitem Created [#monday-subitem-created] Trigger workflow when a subitem is created on a Monday.com board #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-25] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `parentItemId` | string | The parent item ID | | `parentItemBoardId` | string | The parent item board ID | *** ### Monday Update Posted [#monday-update-posted] Trigger workflow when an update or comment is posted on a Monday.com item #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Select your Monday.com account to create the webhook automatically. | | `boardId` | string | Yes | The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD\_ID | #### Output [#output-26] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `boardId` | string | The board ID where the event occurred | | `itemId` | string | The item ID (pulseId) | | `itemName` | string | The item name (pulseName) | | `groupId` | string | The group ID of the item | | `userId` | string | The ID of the user who triggered the event | | `triggerTime` | string | ISO timestamp of when the event occurred | | `triggerUuid` | string | Unique identifier for this event | | `subscriptionId` | string | The webhook subscription ID | | `updateId` | string | The ID of the created update | | `body` | string | The HTML body of the update | | `textBody` | string | The plain text body of the update | --- # MongoDB (/integrations/mongodb) {/* MANUAL-CONTENT-START:intro */} The [MongoDB](https://www.mongodb.com/) tool enables you to connect to a MongoDB database and perform a wide range of document-oriented operations directly within your agentic workflows. With flexible configuration and secure connection management, you can easily interact with and manipulate your data. With the MongoDB tool, you can: * **Find documents**: Query collections and retrieve documents with the `mongodb_query` operation using rich query filters. * **Insert documents**: Add one or multiple documents to a collection using the `mongodb_insert` operation. * **Update documents**: Modify existing documents with the `mongodb_update` operation by specifying filter criteria and the update actions. * **Delete documents**: Remove documents from a collection using the `mongodb_delete` operation, specifying filters and deletion options. * **Aggregate data**: Run complex aggregation pipelines with the `mongodb_execute` operation to transform and analyze your data. The MongoDB tool is ideal for workflows where your agents need to manage or analyze structured, document-based data. Whether it's processing user-generated content, managing app data, or powering analytics, the MongoDB tool streamlines your data access and manipulation in a secure, programmatic way. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate MongoDB into the workflow. Can find, insert, update, delete, and aggregate data. ## Actions [#actions] ### MongoDB Query [#mongodb-query] Execute find operation on MongoDB collection #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | Yes | Database name to connect to (e.g., "mydb") | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `collection` | string | Yes | Collection name to query | | `query` | string | No | MongoDB query filter as JSON string | | `limit` | number | No | Maximum number of documents to return | | `sort` | string | No | Sort criteria as JSON string | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------ | | `message` | string | Operation status message | | `documents` | array | Array of documents returned from the query | | `documentCount` | number | Number of documents returned | ### MongoDB Insert [#mongodb-insert] Insert documents into MongoDB collection #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | Yes | Database name to connect to (e.g., "mydb") | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `collection` | string | Yes | Collection name to insert into | | `documents` | array | Yes | Array of documents to insert | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------ | | `message` | string | Operation status message | | `documentCount` | number | Number of documents inserted | | `insertedId` | string | ID of inserted document (single insert) | | `insertedIds` | array | Array of inserted document IDs (multiple insert) | ### MongoDB Update [#mongodb-update] Update documents in MongoDB collection #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | Yes | Database name to connect to (e.g., "mydb") | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `collection` | string | Yes | Collection name to update | | `filter` | string | Yes | Filter criteria as JSON string | | `update` | string | Yes | Update operations as JSON string | | `upsert` | boolean | No | Create document if not found | | `multi` | boolean | No | Update multiple documents | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `matchedCount` | number | Number of documents matched by filter | | `modifiedCount` | number | Number of documents modified | | `documentCount` | number | Total number of documents affected | | `insertedId` | string | ID of inserted document (if upsert) | ### MongoDB Delete [#mongodb-delete] Delete documents from MongoDB collection #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | Yes | Database name to connect to (e.g., "mydb") | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `collection` | string | Yes | Collection name to delete from | | `filter` | string | Yes | Filter criteria as JSON string | | `multi` | boolean | No | Delete multiple documents | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `message` | string | Operation status message | | `deletedCount` | number | Number of documents deleted | | `documentCount` | number | Total number of documents affected | ### MongoDB Execute [#mongodb-execute] Execute MongoDB aggregation pipeline #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | Yes | Database name to connect to (e.g., "mydb") | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `collection` | string | Yes | Collection name to execute pipeline on | | `pipeline` | string | Yes | Aggregation pipeline as JSON string | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `message` | string | Operation status message | | `documents` | array | Array of documents returned from aggregation | | `documentCount` | number | Number of documents returned | ### MongoDB Introspect [#mongodb-introspect] Introspect MongoDB database to list databases, collections, and indexes #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `host` | string | Yes | MongoDB server hostname or IP address | | `port` | number | Yes | MongoDB server port (default: 27017) | | `database` | string | No | Database name to introspect (e.g., "mydb"). If not provided, lists all databases | | `username` | string | No | MongoDB username | | `password` | string | No | MongoDB password | | `authSource` | string | No | Authentication database | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------------------- | | `message` | string | Operation status message | | `databases` | array | Array of database names | | `collections` | array | Array of collection info with name, type, document count, and indexes | --- # MSG91 (/integrations/msg91) ## Usage Instructions [#usage-instructions] Integrate MSG91 into the workflow. Send SMS through approved DLT templates, send, verify and resend OTPs, send WhatsApp templates and session replies, check WhatsApp prepaid balance, and pull SMS delivery logs. Can also run workflows when MSG91 reports SMS delivery or a customer sends a WhatsApp message. Indian SMS must match a DLT-approved template exactly, so SMS and OTP always go through an MSG91 template. Requires an MSG91 authkey. ## Actions [#actions] ### MSG91 Send SMS [#msg91-send-sms] Send an SMS to one or many numbers through an MSG91 SMS template (Flow API), filling the template's variables. In India every SMS must match a DLT-approved template exactly (TRAI rule): register the template on a DLT portal, add it in MSG91 with its DLT Template ID, and fill only its ##variables##. Free-form text is blocked by operators. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `templateId` | string | Yes | MSG91 SMS template ID (from SMS > Templates). The template carries the DLT Template ID and sender ID, so its approved text is what gets sent. | | `mobiles` | string | No | Recipient numbers with country code and no "+", comma-separated (e.g. 919876543210). Required unless Recipients is set. | | `variables` | json | No | Values for the template variables, keyed exactly as in the template (case-sensitive), e.g. \{"var1": "Asha", "var2": "10:30"}. Sent to every number in Mobile Numbers. | | `recipients` | json | No | Per-recipient values instead of Mobile Numbers + Variables: an array like \[\{"mobiles": "919876543210", "var1": "Asha"}]. Optional tracking keys such as CRQID are echoed back in delivery webhooks. | | `shortUrl` | boolean | No | Shorten URLs in the message (short\_url) | | `shortUrlExpiry` | number | No | Short URL expiry in seconds | | `realTimeResponse` | boolean | No | Ask MSG91 for a real-time response (realTimeResponse=1) | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------- | | `requestId` | string | Request ID of the send. Pass it to Get SMS Report to check delivery. | | `type` | string | MSG91 result type, "success" when accepted | ### MSG91 Send OTP [#msg91-send-otp] Generate and send a one-time password by SMS with an MSG91 OTP template. MSG91 stores the code and its expiry, so check it later with Verify OTP. In India the OTP template must match a DLT-approved template exactly. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `templateId` | string | Yes | MSG91 OTP template ID (from the OTP section). The template must contain ##OTP## and match its DLT-approved text. | | `mobile` | string | Yes | Mobile number with country code, e.g. 919876543210 | | `otpLength` | number | No | OTP length, 4 to 9 digits (default 4) | | `otpExpiry` | number | No | Minutes before the OTP expires, 1 to 10080 (default 15) | | `otp` | string | No | Your own OTP value. Leave empty so MSG91 generates one. | | `unicode` | boolean | No | Set for non-English templates | | `templateParams` | json | No | Values for template variables other than the OTP, keyed exactly as in the template (case-sensitive), e.g. \{"Param1": "Asha"} | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------- | | `requestId` | string | Request ID of the OTP send (Send OTP only) | | `type` | string | MSG91 result type, "success" when accepted | | `message` | string | MSG91 message, e.g. "retry send successfully" (Resend OTP only) | ### MSG91 Verify OTP [#msg91-verify-otp] Check the OTP a user entered against the one MSG91 sent to that number. Returns verified true only on a match; a wrong or expired code returns verified false with the reason. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `mobile` | string | Yes | The mobile number the OTP was sent to, with country code | | `otp` | string | Yes | The code the user entered | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------------------------------------------- | | `verified` | boolean | True only when MSG91 confirmed the OTP | | `type` | string | MSG91 result type: success or error | | `message` | string | MSG91 message, e.g. "OTP verified success", "OTP expired" or "OTP not match" | ### MSG91 Resend OTP [#msg91-resend-otp] Resend the same OTP to a number that already got one from Send OTP, by SMS or voice call. MSG91 allows at most 2 retries. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `mobile` | string | Yes | The mobile number the OTP was first sent to, with country code | | `retryType` | string | No | "text" to resend by SMS or "voice" for a voice call (MSG91 default: voice) | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------------------------------- | | `requestId` | string | Request ID of the OTP send (Send OTP only) | | `type` | string | MSG91 result type, "success" when accepted | | `message` | string | MSG91 message, e.g. "retry send successfully" (Resend OTP only) | ### MSG91 Send WhatsApp Template [#msg91-send-whatsapp-template] Send an approved WhatsApp template message from your MSG91 WhatsApp number to one or many customers. Templates start a conversation; free-form replies need Send WhatsApp Message inside the 24-hour session. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `integratedNumber` | string | Yes | Your WhatsApp number integrated with MSG91, with country code | | `templateName` | string | Yes | Name of an approved WhatsApp template on that number | | `languageCode` | string | Yes | Template language code, e.g. en or en\_US | | `recipients` | string | No | Recipient numbers with country code, comma-separated. Required unless To and Components is set. | | `components` | json | No | Template variable values, e.g. \{"body\_1": \{"type": "text", "value": "Asha"}, "header\_1": \{"type": "image", "value": "https\://..."}} | | `toAndComponents` | json | No | Per-recipient values instead of Recipients + Components: \[\{"to": \["919876543210"], "components": \{"body\_1": \{"type": "text", "value": "Asha"}}}] | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------------------- | | `requestId` | string | Request ID of the bulk template send | | `status` | string | Request status, "success" when accepted | | `message` | string | MSG91 note, e.g. "Your request is in process, check delivery reports for status" | ### MSG91 Send WhatsApp Message [#msg91-send-whatsapp-message] Send a free-form WhatsApp text reply from your MSG91 WhatsApp number. Works only inside the 24-hour session that starts when the customer messages you; otherwise send a template. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `integratedNumber` | string | Yes | Your WhatsApp number integrated with MSG91, with country code | | `recipientNumber` | string | Yes | Customer number with country code, e.g. 919876543210 | | `text` | string | Yes | Message text, up to 4096 characters | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------------- | | `messageUuid` | string | MSG91 message UUID | | `status` | string | Request status, "success" when accepted | | `message` | string | MSG91 note, e.g. "Your request is in process, please check delivery report for status" | ### MSG91 Get WhatsApp Balance [#msg91-get-whatsapp-balance] Get the prepaid WhatsApp balance and plan status of an MSG91 WhatsApp number. Use it before a large template send to make sure the balance covers it. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `integratedNumber` | string | Yes | Your WhatsApp number integrated with MSG91, with country code | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------- | | `status` | string | Request status, "success" when found | | `planStatus` | string | WhatsApp plan status, e.g. active | | `number` | string | The integrated WhatsApp number | | `prepaidBalance` | number | Prepaid WhatsApp balance left on the number | ### MSG91 Get SMS Report [#msg91-get-sms-report] Get SMS delivery logs (status, number, delivery time) for a date range, or for one send by its request ID. The range can be at most 3 days and must start within the last 3 days. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `authKey` | string | Yes | MSG91 authkey, from the MSG91 dashboard under Authkey | | `startDate` | string | Yes | Start date, YYYY-MM-DD, within the last 3 days | | `endDate` | string | Yes | End date, YYYY-MM-DD, at most 3 days after the start date | | `requestId` | string | No | Request ID returned by Send SMS, to get only that send | | `fields` | string | No | Comma-separated fields to return (no spaces), e.g. status,telNum,deliveryDate,deliveryTime,requestId,failureReason,credit,DLT\_TE\_ID | | `limit` | number | No | Maximum rows to return, up to 10000 (MSG91 default 1000) | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `logs` | array | One row per message. By default each row has status, telNum, requestDate, deliveryDate, deliveryTime and sentDateTime; Fields changes which keys are returned. | | ↳ `status` | string | Delivery status, e.g. Delivered | | ↳ `telNum` | string | Recipient number | | ↳ `requestDate` | string | When the send was requested | | ↳ `deliveryDate` | string | Delivery date (YYYY-MM-DD) | | ↳ `deliveryTime` | string | Delivery time (HH:mm:ss) | | ↳ `sentDateTime` | string | When the SMS was sent to the operator | | `total` | number | Total rows matching the query | | `paginationToken` | string | Token MSG91 returns for large result sets | --- # Microsoft SQL Server (/integrations/mssql) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft SQL Server](https://www.microsoft.com/sql-server) to query or modify rows, execute T-SQL, and inspect tables, keys, and indexes. Configure the host, port, database, credentials, and TLS settings for your instance. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Microsoft SQL Server into the workflow. Can query, insert, update, delete, execute raw T-SQL, and introspect schemas. ## Actions [#actions] ### Microsoft SQL Server Query [#microsoft-sql-server-query] Execute a SELECT query on a Microsoft SQL Server database #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `query` | string | Yes | T-SQL SELECT query to execute, optionally led by a WITH clause. Statements that modify data or schema are rejected — use the Execute Raw SQL operation for those. | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | | `truncated` | boolean | Present and true only when rows were dropped to stay inside the response ceilings. Absent means the recordset is complete | | `truncationReason` | string | Which ceiling was hit and how to read the remaining rows | ### Microsoft SQL Server Insert [#microsoft-sql-server-insert] Insert data into a Microsoft SQL Server table #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `table` | string | Yes | Table name to insert data into | | `data` | object | Yes | Data object to insert (key-value pairs) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Rows returned by the statement (empty for a plain INSERT) | | `rowCount` | number | Number of rows inserted | | `truncated` | boolean | Present and true only when rows were dropped to stay inside the response ceilings. Absent means the recordset is complete | | `truncationReason` | string | Which ceiling was hit and how to read the remaining rows | ### Microsoft SQL Server Update [#microsoft-sql-server-update] Update rows in a Microsoft SQL Server table #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `table` | string | Yes | Table name to update | | `data` | object | Yes | Data object with the columns to set (key-value pairs) | | `where` | string | Yes | WHERE condition identifying the rows to update | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Rows returned by the statement (empty for a plain UPDATE) | | `rowCount` | number | Number of rows updated | | `truncated` | boolean | Present and true only when rows were dropped to stay inside the response ceilings. Absent means the recordset is complete | | `truncationReason` | string | Which ceiling was hit and how to read the remaining rows | ### Microsoft SQL Server Delete [#microsoft-sql-server-delete] Delete rows from a Microsoft SQL Server table #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `table` | string | Yes | Table name to delete rows from | | `where` | string | Yes | WHERE condition identifying the rows to delete | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Rows returned by the statement (empty for a plain DELETE) | | `rowCount` | number | Number of rows deleted | | `truncated` | boolean | Present and true only when rows were dropped to stay inside the response ceilings. Absent means the recordset is complete | | `truncationReason` | string | Which ceiling was hit and how to read the remaining rows | ### Microsoft SQL Server Execute [#microsoft-sql-server-execute] Execute a raw T-SQL statement on a Microsoft SQL Server database #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `query` | string | Yes | T-SQL statement to execute | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Rows returned by the statement, when it returns a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | Present and true only when rows were dropped to stay inside the response ceilings. Absent means the recordset is complete | | `truncationReason` | string | Which ceiling was hit and how to read the remaining rows | ### Microsoft SQL Server Introspect [#microsoft-sql-server-introspect] Introspect a Microsoft SQL Server schema to retrieve table structures, columns, keys, and indexes. Results only cover objects the login can see, so a low-privilege account returns a partial schema rather than an error #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Microsoft SQL Server hostname or IP address | | `port` | number | No | Server port (default: 1433). A named instance must be reached through its static TCP port | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `encrypt` | string | No | Request TLS encryption for the connection (enabled, disabled). Defaults to enabled. Disabling sends the login packet and every row in cleartext. Enabling requests encryption over TDS 7.4, which the server negotiates during prelogin - a server that answers NOT\_SUP yields an unencrypted session rather than an error, so this is a request, not a guarantee | | `trustServerCertificate` | string | No | Trust a self-signed server certificate (enabled, disabled). Defaults to disabled. Enabling skips certificate validation, so the connection is open to a machine-in-the-middle | | `connectionTimeout` | number | No | Connection and request timeout in milliseconds (default: 15000) | | `schema` | string | No | Schema to introspect (default: dbo) | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------ | | `message` | string | Operation status message | | `tables` | array | Array of table schemas with columns, keys, and indexes | | ↳ `name` | string | Table name | | ↳ `schema` | string | Schema name (e.g., dbo) | | ↳ `columns` | array | Table columns in ordinal position order | | ↳ `name` | string | Column name | | ↳ `type` | string | Data type (e.g., int, nvarchar, datetime2) | | ↳ `nullable` | boolean | Whether the column allows NULL values | | ↳ `default` | string | Default value expression | | ↳ `isPrimaryKey` | boolean | Whether the column is part of the primary key | | ↳ `isForeignKey` | boolean | Whether the column is a foreign key | | ↳ `references` | object | Foreign key reference information | | ↳ `schema` | string | Referenced schema name | | ↳ `table` | string | Referenced table name | | ↳ `column` | string | Referenced column name | | ↳ `primaryKey` | array | Primary key column names, in key order | | ↳ `foreignKeys` | array | Foreign key constraints declared on this table | | ↳ `column` | string | Local column name | | ↳ `referencesSchema` | string | Referenced schema name | | ↳ `referencesTable` | string | Referenced table name | | ↳ `referencesColumn` | string | Referenced column name | | ↳ `indexes` | array | Non-primary-key rowstore indexes on this table | | ↳ `name` | string | Index name | | ↳ `columns` | array | Key columns included in the index, in key order | | ↳ `unique` | boolean | Whether the index enforces uniqueness | | `schemas` | array | List of available schemas in the database | --- # MySQL (/integrations/mysql) {/* MANUAL-CONTENT-START:intro */} [MySQL](https://www.mysql.com/) is a widely used open-source relational database system. The MySQL block connects your workflow directly to a MySQL database, letting you read and write data without leaving Agent Serve. It handles the connection details—host, port, database, credentials, and SSL mode—so blocks can query, insert, update, delete, and execute raw SQL against your database. With the MySQL block, you can: * **Query data**: Run SELECT statements and get back rows with a row count * **Insert, update, and delete records**: Write key-value data to a table or modify existing rows with a WHERE clause * **Execute raw SQL**: Run arbitrary SQL statements, such as DDL for creating tables * **Introspect the schema**: Retrieve table structures, columns, keys, indexes, and the list of available databases on the server In Agent Serve, the MySQL block allows your agents to read from and write to a MySQL database as part of a workflow—querying records to feed downstream logic, inserting or updating rows based on agent output, cleaning up data with deletes, running custom SQL for one-off operations, and introspecting the schema to understand table structure before generating queries. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate MySQL into the workflow. Can query, insert, update, delete, and execute raw SQL. ## Actions [#actions] ### MySQL Query [#mysql-query] Execute SELECT query on MySQL database #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `query` | string | Yes | SQL SELECT query to execute (e.g., SELECT \* FROM users WHERE active = 1) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### MySQL Insert [#mysql-insert] Insert new record into MySQL database #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to insert into (e.g., users, orders) | | `data` | object | Yes | Data to insert as key-value pairs | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of inserted rows | | `rowCount` | number | Number of rows inserted | ### MySQL Update [#mysql-update] Update existing records in MySQL database #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to update (e.g., users, orders) | | `data` | object | Yes | Data to update as key-value pairs | | `where` | string | Yes | WHERE clause condition (without WHERE keyword) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of updated rows | | `rowCount` | number | Number of rows updated | ### MySQL Delete [#mysql-delete] Delete records from MySQL database #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to delete from (e.g., users, orders) | | `where` | string | Yes | WHERE clause condition (without WHERE keyword) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of deleted rows | | `rowCount` | number | Number of rows deleted | ### MySQL Execute [#mysql-execute] Execute raw SQL query on MySQL database #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `query` | string | Yes | Raw SQL query to execute (e.g., CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255))) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows affected | ### MySQL Introspect [#mysql-introspect] Introspect MySQL database schema to retrieve table structures, columns, and relationships #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | MySQL server hostname or IP address | | `port` | number | Yes | MySQL server port (default: 3306) | | `database` | string | Yes | Database name to connect to (e.g., my\_database) | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------ | | `message` | string | Operation status message | | `tables` | array | Array of table schemas with columns, keys, and indexes | | `databases` | array | List of available databases on the server | --- # Neo4j (/integrations/neo4j) {/* MANUAL-CONTENT-START:intro */} Use [Neo4j](https://neo4j.com) in Agent Serve to query graph data with Cypher and create, merge, update, or delete nodes and relationships. Pass query results to later workflow steps for processing or storage. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Neo4j graph database into the workflow. Can query, create, merge, update, and delete nodes and relationships. ## Actions [#actions] ### Neo4j Query [#neo4j-query] Execute MATCH queries to read nodes and relationships from Neo4j graph database. For best performance and to prevent large result sets, include LIMIT in your query (e.g., "MATCH (n:User) RETURN n LIMIT 100") or use LIMIT $limit with a limit parameter. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher query to execute (e.g., "MATCH (n:Person) RETURN n LIMIT 10", "MATCH (a)-\[r]->(b) WHERE a.name = $name RETURN a, r, b") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object. Use for any dynamic values including LIMIT (e.g., query: "MATCH (n) RETURN n LIMIT $limit", parameters: \{limit: 100}). | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------ | | `message` | string | Operation status message | | `records` | array | Array of records returned from the query | | `recordCount` | number | Number of records returned | | `summary` | json | Query execution summary with timing and counters | ### Neo4j Create [#neo4j-create] Execute CREATE statements to add new nodes and relationships to Neo4j graph database #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher CREATE statement to execute (e.g., "CREATE (n:Person \{name: $name, age: $age})", "CREATE (a)-\[:KNOWS]->(b)") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object (e.g., \{"name": "Alice", "age": 30}) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------ | | `message` | string | Operation status message | | `summary` | json | Creation summary with counters for nodes and relationships created | ### Neo4j Merge [#neo4j-merge] Execute MERGE statements to find or create nodes and relationships in Neo4j (upsert operation) #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher MERGE statement to execute (e.g., "MERGE (n:Person \{name: $name}) ON CREATE SET n.created = timestamp()", "MERGE (a)-\[r:KNOWS]->(b)") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object (e.g., \{"name": "Alice", "email": "[alice@example.com](mailto:alice@example.com)"}) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `message` | string | Operation status message | | `summary` | json | Merge summary with counters for nodes/relationships created or matched | ### Neo4j Update [#neo4j-update] Execute SET statements to update properties of existing nodes and relationships in Neo4j #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher query with MATCH and SET statements to update properties (e.g., "MATCH (n:Person \{name: $name}) SET n.age = $age", "MATCH (n) WHERE n.id = $id SET n += $props") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object (e.g., \{"name": "Alice", "age": 31, "props": \{"city": "NYC"}}) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------- | | `message` | string | Operation status message | | `summary` | json | Update summary with counters for properties set | ### Neo4j Delete [#neo4j-delete] Execute DELETE or DETACH DELETE statements to remove nodes and relationships from Neo4j #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher query with MATCH and DELETE/DETACH DELETE statements (e.g., "MATCH (n:Person \{name: $name}) DELETE n", "MATCH (n) DETACH DELETE n") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object (e.g., \{"name": "Alice", "id": 123}) | | `detach` | boolean | No | Whether to use DETACH DELETE to remove relationships before deleting nodes | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------- | | `message` | string | Operation status message | | `summary` | json | Delete summary with counters for nodes and relationships deleted | ### Neo4j Execute [#neo4j-execute] Execute arbitrary Cypher queries on Neo4j graph database for complex operations #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | | `cypherQuery` | string | Yes | Cypher query to execute (e.g., "CALL db.labels()", "MATCH (n) RETURN count(n)", "CREATE INDEX FOR (n:Person) ON (n.name)") | | `parameters` | object | No | Parameters for the Cypher query as a JSON object (e.g., \{"name": "Alice", "limit": 100}) | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------ | | `message` | string | Operation status message | | `records` | array | Array of records returned from the query | | `recordCount` | number | Number of records returned | | `summary` | json | Execution summary with timing and counters | ### Neo4j Introspect [#neo4j-introspect] Introspect a Neo4j database to discover its schema including node labels, relationship types, properties, constraints, and indexes. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `host` | string | Yes | Neo4j server hostname or IP address | | `port` | number | Yes | Neo4j server port (default: 7687 for Bolt protocol) | | `database` | string | Yes | Database name to connect to (e.g., "neo4j", "movies", "social") | | `username` | string | Yes | Neo4j username | | `password` | string | Yes | Neo4j password | | `encryption` | string | No | Connection encryption mode (enabled, disabled) | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------------- | | `message` | string | Operation status message | | `labels` | array | Array of node labels in the database | | `relationshipTypes` | array | Array of relationship types in the database | | `nodeSchemas` | array | Array of node schemas with their properties | | `relationshipSchemas` | array | Array of relationship schemas with their properties | | `constraints` | array | Array of database constraints | | `indexes` | array | Array of database indexes | --- # Oracle NetSuite Service Account (/integrations/netsuite-service-account) Connect Oracle NetSuite with certificate-based OAuth 2.0 client credentials. Add the SuiteTalk URL, Client ID, Certificate ID, and matching private key once, then select the saved credential in each NetSuite block. ## Prerequisites [#prerequisites] * A dedicated NetSuite integration role with **REST Web Services** and **Log in using OAuth 2.0 Access Tokens**, plus the record and SuiteAnalytics permissions your workflows require. * An integration record with **Client Credentials (Machine to Machine) Grant** and the **REST Web Services** scope enabled. * A 3072- or 4096-bit RSA key pair, or a P-256, P-384, or P-521 EC key pair, and a public certificate generated through your organization's certificate process. * Access to **OAuth 2.0 Client Credentials (M2M) Setup** and **Company URLs** in the target NetSuite environment. Create and map credentials separately in production, sandbox, and Release Preview. A sandbox refresh removes its OAuth 2.0 client-credential mappings, and each environment has a different authoritative SuiteTalk URL. ## Configure NetSuite [#configure-netsuite] In **Setup → Company → Enable Features**, enable **REST Web Services** and **OAuth 2.0**. Enable **SuiteAnalytics Workbook** if workflows will use datasets. Create a dedicated integration role and grant only the record, transaction, subsidiary, and analytics permissions the workflows need. Avoid using Administrator. Under **Setup → Integration → Manage Integrations**, create or edit an integration, enable the machine-to-machine client-credentials grant and REST Web Services scope, then save its **Client ID**. Upload only the public certificate under **OAuth 2.0 Client Credentials (M2M) Setup**. Map it to the integration, entity, and dedicated role, then save the generated **Certificate ID**. Keep the private key outside NetSuite. Under **Setup → Company → Company Information → Company URLs**, copy the complete **SuiteTalk (SOAP and REST Web Services)** URL for this environment. Oracle documents the [role setup](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157771510070.html), [integration record](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157771733782.html), [certificate requirements](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/subsect_162755332391.html), and [client-credential mapping](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_162686838198.html). ## Add the Credential to Agent Serve [#add-the-credential-to-agent-serve] Add an **Oracle NetSuite** block to a workflow and open the **NetSuite Account** dropdown. Choose to add a credential, then enter the authoritative SuiteTalk URL, Client ID, Certificate ID, and PEM private key that matches the uploaded certificate. Save the credential. Agent Serve validates the URL and key policy, signs a client assertion, and performs a real token exchange before storing the encrypted credential. Select this credential in each NetSuite block. The private key stays encrypted in Agent Serve; you do not need to paste it into individual blocks. ## Use Pickers and Manual Values [#use-pickers-and-manual-values] Selecting the credential enables these account-backed fields: | Field | Lists | Additional scope | | ----------- | -------------------------------------------------------- | ---------------- | | Record Type | Up to 1,000 record types visible in the metadata catalog | credential | | Async Task | Up to 100 tasks belonging to a known batch job | job ID | Picker results reflect the selected role's permissions. Switch any picker to Advanced mode to type an identifier or reference an upstream output. Enter SuiteAnalytics dataset IDs manually after finding them with **List SuiteAnalytics Datasets**. Record IDs, job IDs, transform targets, actions, fields, forms, subresources, and relationship IDs also remain manual because NetSuite does not expose bounded universal listings that would make those choices complete and reliable. **Create Record** without `replace` returns HTTP 204 with no response body; with `replace`, it returns HTTP 201 and the created record object. Both responses expose NetSuite's validated `location`. The `replace` option applies to create and update, not upsert. ## Rotate or Revoke [#rotate-or-revoke] To rotate a certificate, create and upload the replacement certificate and create its new NetSuite mapping. Then reconnect the existing Agent Serve credential by re-entering all four required fields: SuiteTalk URL, Client ID, the new Certificate ID, and the replacement private key. Later runs use the replacement certificate and key. After confirming workflows succeed, remove the old certificate mapping in NetSuite so the previous certificate can no longer mint tokens. Deleting an Agent Serve credential removes its workflow bindings but does not revoke the corresponding NetSuite certificate mapping. --- # Oracle NetSuite (/integrations/netsuite) {/* MANUAL-CONTENT-START:intro */} [Oracle NetSuite](https://www.netsuite.com/) is a cloud ERP platform for financials, order management, inventory, procurement, CRM, and analytics. Agent Serve connects through SuiteTalk REST Web Services using NetSuite's OAuth 2.0 client-credentials flow; it does not require a RESTlet or a user-interactive login. ## Before you connect [#before-you-connect] Follow the [Oracle NetSuite service-account setup](/integrations/netsuite-service-account) to enable SuiteTalk, configure a dedicated role and certificate mapping, and save a reusable credential in Agent Serve. NetSuite limits certificate validity to two years, so plan renewal when creating the credential. ## Usage notes [#usage-notes] * Record fields and supported actions vary by account, enabled features, custom records, forms, role, and permissions. Use **List Record Types** and **Get Record Metadata** before constructing create, update, upsert, action, or transform bodies. Agent Serve intentionally accepts JSON for these dynamic record shapes instead of guessing a fixed schema. * Select the stored NetSuite account once per block. Record Type and known-job Async Task fields use account-backed pickers; switch a field to Advanced mode to type or reference an identifier that is not present in the bounded picker result. Enter SuiteAnalytics dataset IDs manually after finding them with **List SuiteAnalytics Datasets**. * **Create Record** without `replace` returns NetSuite's HTTP 204 response with no body; with `replace`, it returns HTTP 201 and the created record object. Both cases expose the validated `location` returned by NetSuite. The `replace` option applies to create and update, not upsert. * Paged operations return one page only. The default limit is 100, the maximum is 1,000, and the offset must be a non-negative multiple of the limit. Agent Serve never fetches later pages automatically. Requests must stay within NetSuite's first 100,000 results and first 1,000 pages. * Homogeneous batch operations accept 1–100 records of one record type and always run asynchronously. NetSuite processes records in parallel, and individual tasks can fail independently; submission is not an all-or-none transaction. Preserve the returned `location` or `jobId`, use **Get Async Status** with **Job Status** until the job completes, choose **List Tasks** to collect task IDs, check each ID with **Task Status**, then use completed IDs with **Get Async Operation Result**. Canceling or timing out the local Agent Serve request does not cancel a batch that NetSuite has already accepted. * Agent Serve gives the OAuth token exchange and each SuiteTalk request up to 30 seconds. A timed-out request fails locally, but a mutation that NetSuite already accepted may still finish remotely. * Agent Serve limits each materialized request body and successful SuiteTalk response to 16 MiB. Request JSON is also limited to 100 levels of nesting and 100,000 JSON values. Split work into smaller pages or batches when a request or response would exceed these ceilings, even if NetSuite would otherwise accept the payload. * When attaching a contact with a role, provide either the role's internal ID or external ID, not both. File attachments do not use a contact role. * **Attach/Detach**, homogeneous batch operations, **Get Record Form**, and **Get Select Options** require a NetSuite 2026.1-compatible account. Oracle introduced these SuiteTalk REST capabilities in [NetSuite 2026.1](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N3950559.html). * **Get Governance Limits** returns data only for roles allowed by NetSuite; Oracle documents Administrator access for that operation. * This integration does not include a trigger. SuiteTalk has no generic API for registering record-change webhooks; polling or customer-deployed SuiteScript requires a separate design. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect a reusable Oracle NetSuite service-account credential to SuiteTalk REST Web Services. Read and write account-specific records, execute SuiteQL and SuiteAnalytics datasets, run asynchronous record batches, inspect metadata, and monitor async jobs. ## Actions [#actions] ### NetSuite List/Search Records [#netsuite-listsearch-records] List one page of a NetSuite record collection, optionally filtered with a q expression. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `q` | string | No | NetSuite record collection filter expression | | `limit` | number | No | Results to return in this page (1-1000; default 100) | | `offset` | number | No | Zero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | One documented NetSuite collection page | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `items` | array | Matching record references in this page | | ↳ `id` | string | NetSuite record ID | | ↳ `links` | array | Oracle HATEOAS links for the record | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `count` | number | Number of items in this page | | ↳ `hasMore` | boolean | Whether another page is available | | ↳ `offset` | number | Offset of this page | | ↳ `totalResults` | number | Total number of matching items | ### NetSuite Get Record [#netsuite-get-record] Retrieve one NetSuite record by internal or external ID. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `fields` | string | No | Comma-separated record fields to return | | `expand` | string | No | Comma-separated resources to expand when supported by the record metadata | | `expandSubResources` | boolean | No | Whether to expand sublists and subrecords in the response | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite response body; record fields are account-specific and dynamic | ### NetSuite Create Record [#netsuite-create-record] Create a NetSuite record using the account-specific record metadata schema. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `body` | json | Yes | Record fields matching the account-specific NetSuite metadata schema | | `replace` | string | No | Comma-separated sublists whose default lines should be replaced | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for standard HTTP 204 creation; replacement creation can return the documented HTTP 201 post-state object | | `location` | string | Newly created record URL from the Location response header | ### NetSuite Update Record [#netsuite-update-record] Update fields on an existing NetSuite record with PATCH. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `body` | json | Yes | Record fields matching the account-specific NetSuite metadata schema | | `replace` | string | No | Comma-separated sublists whose existing lines should be replaced | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | | `location` | string | Updated record URL from the Location response header | ### NetSuite Upsert Record [#netsuite-upsert-record] Create or update a NetSuite record by external ID with PUT. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `externalId` | string | Yes | External ID without the eid: prefix | | `body` | json | Yes | Record fields matching the account-specific NetSuite metadata schema | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | | `location` | string | URL of the created or updated record, when NetSuite returns a Location header | ### NetSuite Delete Record [#netsuite-delete-record] Delete one NetSuite record by internal or external ID. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | ### NetSuite Get Subresource [#netsuite-get-subresource] Retrieve a record sublist, subrecord, referenced record, or nested subresource. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `subresourcePath` | string | Yes | Slash-separated subresource path, such as item or item/1/inventoryDetail | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite response body; record fields are account-specific and dynamic | ### NetSuite Get Record Form [#netsuite-get-record-form] Return a prepopulated create form, or an edit form when a record ID is supplied. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | No | Existing record ID; omit to request a create form | | `body` | json | No | Record fields matching the account-specific NetSuite metadata schema | | `fields` | string | No | Comma-separated record fields to return | | `expand` | string | No | Comma-separated resources to expand when supported by the record metadata | | `expandSubResources` | boolean | No | Whether to expand sublists and subrecords in the response | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite response body; record fields are account-specific and dynamic | ### NetSuite Get Select Options [#netsuite-get-select-options] Retrieve valid select values for one or more fields on a new or existing record. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | No | Existing record ID; omit to evaluate options for a new record | | `fields` | string | Yes | Comma-separated select field IDs | | `q` | string | No | Optional select-option filter using CONTAIN, IS, or START\_WITH | | `body` | json | No | Record fields matching the account-specific NetSuite metadata schema | | `limit` | number | No | Results to return in this page (1-1000; default 100) | | `offset` | number | No | Zero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Select-options response keyed by requested field ID; each dynamic field contains an \_selectOptions object with links, items, count, offset, hasMore, and totalResults | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | ### NetSuite Attach Record or File [#netsuite-attach-record-or-file] Attach a contact or file to another NetSuite record. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `relatedType` | string | Yes | Related resource type: contact or file | | `relatedId` | string | Yes | Internal ID, or external ID prefixed with eid:, of the contact or file | | `roleId` | string | No | Optional contact role internal ID | | `roleExternalId` | string | No | Optional contact role external ID | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | ### NetSuite Detach Record or File [#netsuite-detach-record-or-file] Detach a contact or file from another NetSuite record. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `relatedType` | string | Yes | Related resource type: contact or file | | `relatedId` | string | Yes | Internal ID, or external ID prefixed with eid:, of the contact or file | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | ### NetSuite Execute Record Action [#netsuite-execute-record-action] Execute a supported NetSuite record action such as approve, reject, or confirm. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `action` | string | Yes | NetSuite record action ID without the @ prefix | | `body` | json | No | Parameters accepted by the selected NetSuite record action | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Documented NetSuite record-action response | | ↳ `result` | boolean | True when NetSuite completed the record action | ### NetSuite Transform Record [#netsuite-transform-record] Transform a supported source record into another NetSuite record type. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `recordId` | string | Yes | NetSuite internal ID or an external-ID reference beginning with eid: | | `targetRecordType` | string | Yes | Target record type supported by the source record metadata | | `body` | json | No | Record fields matching the account-specific NetSuite metadata schema | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 204 No Content response | | `location` | string | URL of the transformed record, when NetSuite returns a Location header | ### NetSuite Batch Get Records [#netsuite-batch-get-records] Submit an asynchronous request to retrieve up to 100 records of one type. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `ids` | string | Yes | Up to 100 comma-separated internal IDs or eid: external-ID references | | `fields` | string | No | Comma-separated record fields to return | | `expand` | string | No | Comma-separated resources to expand when supported by the record metadata | | `expandSubResources` | boolean | No | Whether to expand sublists and subrecords in the response | | `idempotencyKey` | string | No | Optional unique idempotency key for retrying the asynchronous request | #### Output [#output-13] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 202 Accepted submission response | | `location` | string | Asynchronous job URL from the Location response header | | `jobId` | string | Asynchronous job ID parsed from the Location header | ### NetSuite Batch Create Records [#netsuite-batch-create-records] Submit an asynchronous batch that creates up to 100 records of one type. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `items` | array | Yes | Array of 1-100 records matching the account-specific metadata schema | | `idempotencyKey` | string | No | Optional unique idempotency key for retrying the batch | #### Output [#output-14] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 202 Accepted submission response | | `location` | string | Asynchronous job URL from the Location response header | | `jobId` | string | Asynchronous job ID parsed from the Location header | ### NetSuite Batch Update Records [#netsuite-batch-update-records] Submit an asynchronous batch that updates up to 100 records of one type. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `items` | array | Yes | Array of 1-100 records; every item must include an internal or external ID | | `idempotencyKey` | string | No | Optional unique idempotency key for retrying the batch | #### Output [#output-15] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 202 Accepted submission response | | `location` | string | Asynchronous job URL from the Location response header | | `jobId` | string | Asynchronous job ID parsed from the Location header | ### NetSuite Batch Upsert Records [#netsuite-batch-upsert-records] Submit an asynchronous batch that creates or updates up to 100 records by external ID. #### Input [#input-16] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `items` | array | Yes | Array of 1-100 records; every item must include externalId | | `idempotencyKey` | string | No | Optional unique idempotency key for retrying the batch | #### Output [#output-16] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 202 Accepted submission response | | `location` | string | Asynchronous job URL from the Location response header | | `jobId` | string | Asynchronous job ID parsed from the Location header | ### NetSuite Batch Delete Records [#netsuite-batch-delete-records] Submit an asynchronous request to delete up to 100 records of one type. #### Input [#input-17] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `ids` | string | Yes | Up to 100 comma-separated internal IDs or eid: external-ID references | | `idempotencyKey` | string | No | Optional unique idempotency key for retrying the batch | #### Output [#output-17] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Empty for the documented HTTP 202 Accepted submission response | | `location` | string | Asynchronous job URL from the Location response header | | `jobId` | string | Asynchronous job ID parsed from the Location header | ### NetSuite Execute SuiteQL [#netsuite-execute-suiteql] Execute one page of a SuiteQL query through SuiteTalk REST web services. #### Input [#input-18] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `query` | string | Yes | SuiteQL SELECT query; use a complete unique ORDER BY when retrieving multiple pages | | `limit` | number | No | Results to return in this page (1-1000; default 100) | | `offset` | number | No | Zero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages | #### Output [#output-18] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | One documented NetSuite collection page | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `items` | array | Items in this page; item fields depend on the record, query, or dataset | | ↳ `count` | number | Number of items in this page | | ↳ `hasMore` | boolean | Whether another page is available | | ↳ `offset` | number | Offset of this page | | ↳ `totalResults` | number | Total number of matching items | ### NetSuite List SuiteAnalytics Datasets [#netsuite-list-suiteanalytics-datasets] List one page of SuiteAnalytics Workbook datasets available to the authenticated role. #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `limit` | number | No | Results to return in this page (1-1000; default 100) | | `offset` | number | No | Zero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages | #### Output [#output-19] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | One documented NetSuite collection page | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `items` | array | Items in this page; item fields depend on the record, query, or dataset | | ↳ `count` | number | Number of items in this page | | ↳ `hasMore` | boolean | Whether another page is available | | ↳ `offset` | number | Offset of this page | | ↳ `totalResults` | number | Total number of matching items | ### NetSuite Execute SuiteAnalytics Dataset [#netsuite-execute-suiteanalytics-dataset] Execute one page of a standard or custom SuiteAnalytics Workbook dataset. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `datasetId` | string | Yes | SuiteAnalytics dataset script ID | | `limit` | number | No | Results to return in this page (1-1000; default 100) | | `offset` | number | No | Zero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages | #### Output [#output-20] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | One documented NetSuite collection page | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `items` | array | Items in this page; item fields depend on the record, query, or dataset | | ↳ `count` | number | Number of items in this page | | ↳ `hasMore` | boolean | Whether another page is available | | ↳ `offset` | number | Offset of this page | | ↳ `totalResults` | number | Total number of matching items | ### NetSuite List Record Types [#netsuite-list-record-types] List record types exposed to the authenticated role by the REST metadata catalog. #### Input [#input-21] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------ | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite REST metadata catalog | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `items` | array | Record types exposed to the authenticated role | | ↳ `name` | string | REST record type script ID | | ↳ `links` | array | Oracle HATEOAS links for the response | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `mediaType` | string | Media type advertised for the linked metadata resource | ### NetSuite Get Record Metadata [#netsuite-get-record-metadata] Retrieve account-specific metadata for one NetSuite record type. #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `recordType` | string | Yes | NetSuite REST record type script ID, such as customer or salesOrder | | `format` | string | No | Metadata representation: default, openapi, or json\_schema | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite response body; record fields are account-specific and dynamic | ### NetSuite Get Async Status [#netsuite-get-async-status] Retrieve job status, list job tasks, or retrieve one task status. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `jobId` | string | Yes | Asynchronous job ID | | `view` | string | No | Retrieve job status, list tasks for the job, or retrieve one task status | | `taskId` | string | No | Task ID; required when view is task | #### Output [#output-23] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Documented NetSuite asynchronous job, task collection, or task status | | ↳ `completed` | boolean | Whether processing has completed | | ↳ `endTime` | string | Task completion time | | ↳ `id` | string | Asynchronous job or task ID | | ↳ `progress` | string | Current task progress state | | ↳ `startTime` | string | Task start time | | ↳ `count` | number | Number of task collection entries returned | | ↳ `items` | array | Collection entries containing links to one or more asynchronous tasks | | ↳ `links` | array | Links to individual tasks | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `links` | array | HATEOAS links for the job or task collection | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | | ↳ `task` | object | Link container for the tasks belonging to this asynchronous job | | ↳ `links` | array | Links to the job task collection | | ↳ `rel` | string | Link relationship | | ↳ `href` | string | Link target | ### NetSuite Get Async Operation Result [#netsuite-get-async-operation-result] Retrieve the provider response for one task within a completed asynchronous job. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | | `jobId` | string | Yes | Asynchronous job ID | | `taskId` | string | Yes | Task ID within the asynchronous job | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Result payload for the submitted asynchronous operation; record fields are account-specific and dynamic | ### NetSuite Get Server Time [#netsuite-get-server-time] Retrieve the current UTC time from the NetSuite server. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | NetSuite server time response | | ↳ `serverTime` | string | Current NetSuite server time in UTC | ### NetSuite Get Governance Limits [#netsuite-get-governance-limits] Retrieve REST web-services concurrency limits for the NetSuite account and integration; NetSuite requires an Administrator role. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | `oauthCredential` | string | Yes | NetSuite OAuth 2.0 client-credentials service account | #### Output [#output-26] | Parameter | Type | Description | | -------------------------------------- | ------ | ---------------------------------------------------------------- | | `status` | number | HTTP status returned by NetSuite | | `data` | json | Documented NetSuite governance limits | | ↳ `accountConcurrencyLimit` | number | Account concurrency limit | | ↳ `accountUnallocatedConcurrencyLimit` | number | Account concurrency not allocated to integrations | | ↳ `integrationConcurrencyLimit` | number | Concurrency allocated to this integration | | ↳ `integrationLimitType` | string | Limit assignment: integrationSpecific, accountLimit, or internal | --- # NeverBounce (/integrations/neverbounce) {/* MANUAL-CONTENT-START:intro */} NeverBounce is a real-time email verification and list-cleaning service. Use this integration to check whether an email address is deliverable — it classifies each address as valid, invalid, disposable, catch-all, or unknown and surfaces role-account and free-provider flags — and to read the paid and free verification credits left on your account. Verify addresses before sending to cut bounces and keep your domain reputation healthy. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate NeverBounce to verify email deliverability in real time — classify addresses as valid, invalid, catch-all, disposable, or unknown — and check your remaining verification credits. ## Actions [#actions] ### NeverBounce Verify Email [#neverbounce-verify-email] Verify the deliverability of an email address. Uses one verification credit. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `email` | string | Yes | Email address to verify (e.g., [john@example.com](mailto:john@example.com)) | | `apiKey` | string | Yes | NeverBounce API Key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `email` | string | The verified email address | | `status` | string | Verification status (valid, invalid, catch\_all, disposable, unknown) | | `deliverable` | boolean | Whether the email is valid and safe to send | | `roleAccount` | boolean | Whether the address is a role account (e.g., info@, sales@) | | `freeEmail` | boolean | Whether the address is on a free email provider | | `didYouMean` | string | Suggested correction for a likely typo | | `flags` | array | Raw NeverBounce flags for the address | ### NeverBounce Get Credits [#neverbounce-get-credits] Retrieve the remaining paid and free verification credits for the account. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | NeverBounce API Key | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------- | | `credits` | number | Remaining paid verification credits | | `freeCredits` | number | Remaining free verification credits | --- # New Relic (/integrations/new_relic) {/* MANUAL-CONTENT-START:intro */} [New Relic](https://newrelic.com/) is an observability platform for monitoring application performance, infrastructure, logs, traces, and business-impacting changes across your systems. It centralizes telemetry in NRDB and exposes that data through NerdGraph, New Relic's GraphQL API. With New Relic, you can: * **Query telemetry with NRQL**: Run NRQL against account data to inspect service health, usage, errors, latency, and custom events. * **Find monitored entities**: Search services, applications, hosts, and other monitored resources by name, type, tags, alert state, or reporting status. * **Fetch entity details**: Resolve an entity GUID into basic entity metadata for downstream workflow steps. * **Record deployment changes**: Create deployment change tracking events with version, changelog, commit, build links, group IDs, and user context. Agent Serve's New Relic integration lets agents pull production observability signals into workflows and annotate releases or operational changes directly from automation. Use it to summarize live service health, route incident workflows from entity searches, or mark deployments so New Relic charts can correlate performance changes with release activity. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate New Relic into workflows. Run NRQL queries, search monitored entities, fetch entity details, and record deployment change events. ## Actions [#actions] ### New Relic NRQL Query [#new-relic-nrql-query] Run a NRQL query against a New Relic account using NerdGraph. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | New Relic user API key for NerdGraph | | `region` | string | No | New Relic data center region: us or eu | | `accountId` | number | Yes | New Relic account ID to query | | `nrql` | string | Yes | NRQL query to execute | | `timeout` | number | No | Optional query timeout in seconds | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------ | | `results` | array | NRQL result rows. Row fields depend on the query projection. | | `resultCount` | number | Number of NRQL result rows returned | ### New Relic Search Entities [#new-relic-search-entities] Search New Relic entities by name, GUID, domain type, tags, or reporting state. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | New Relic user API key for NerdGraph | | `region` | string | No | New Relic data center region: us or eu | | `query` | string | Yes | Entity search query, for example: name like "api" or domainType = "APM-APPLICATION" | | `cursor` | string | No | Pagination cursor from a previous entity search | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `count` | number | Total number of entities matching the query | | `query` | string | Entity search query New Relic executed | | `entities` | array | Matching New Relic entities | | ↳ `guid` | string | Entity GUID | | ↳ `name` | string | Entity name | | ↳ `entityType` | string | Entity type | | ↳ `domain` | string | Entity domain, e.g. APM, INFRA | | ↳ `reporting` | boolean | Whether the entity is currently reporting data | | ↳ `alertSeverity` | string | Current alert severity for the entity | | ↳ `tags` | array | Entity tags | | ↳ `key` | string | Tag key | | ↳ `values` | array | Tag values | | `nextCursor` | string | Cursor for the next page of results | ### New Relic Get Entity [#new-relic-get-entity] Fetch a New Relic entity by GUID. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | New Relic user API key for NerdGraph | | `region` | string | No | New Relic data center region: us or eu | | `guid` | string | Yes | Entity GUID | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `entity` | object | New Relic entity details | | ↳ `guid` | string | Entity GUID | | ↳ `name` | string | Entity name | | ↳ `entityType` | string | Entity type | | ↳ `domain` | string | Entity domain, e.g. APM, INFRA | | ↳ `reporting` | boolean | Whether the entity is currently reporting data | | ↳ `alertSeverity` | string | Current alert severity for the entity | | ↳ `tags` | array | Entity tags | | ↳ `key` | string | Tag key | | ↳ `values` | array | Tag values | ### New Relic Create Deployment Event [#new-relic-create-deployment-event] Record a deployment change event in New Relic change tracking. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | New Relic user API key for NerdGraph | | `region` | string | No | New Relic data center region: us or eu | | `entityGuid` | string | Yes | GUID of the entity associated with the deployment | | `version` | string | Yes | Deployment version, release name, or commit SHA | | `shortDescription` | string | No | Short description of the deployment | | `description` | string | No | Longer deployment description | | `changelog` | string | No | Deployment changelog text or URL | | `commit` | string | No | Commit SHA or identifier associated with the deployment | | `deepLink` | string | No | URL to the deployment, build, or release details | | `user` | string | No | User or automation that performed the deployment | | `groupId` | string | No | Optional group ID to correlate related changes | | `customAttributes` | json | No | Custom change event metadata as key-value pairs with string, number, or boolean values | | `deploymentType` | string | No | Deployment type: basic, blue green, canary, rolling, or shadow | | `timestamp` | number | No | Event timestamp in milliseconds since Unix epoch | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------------- | | `event` | object | Created New Relic change tracking event | | ↳ `changeTrackingId` | string | New Relic change tracking ID | | ↳ `customAttributes` | json | Custom attributes on the change tracking event | | ↳ `category` | string | Change category | | ↳ `categoryAndType` | string | Combined category and type | | ↳ `type` | string | Change type | | ↳ `shortDescription` | string | Short change description | | ↳ `description` | string | Change description | | ↳ `timestamp` | number | Change timestamp in milliseconds | | ↳ `user` | string | User associated with the change | | ↳ `groupId` | string | Change group ID | | ↳ `entity` | object | Entity associated with the change | | ↳ `guid` | string | Entity GUID | | ↳ `name` | string | Entity name | | `messages` | array | Messages returned by New Relic for the created change event | --- # Notion Internal Integrations (/integrations/notion-service-account) Connect a Notion internal integration using its secret. Its capabilities control the operations it can perform, and its page connections control the content it can access. ## Prerequisites [#prerequisites] You need a Notion **workspace owner** to create the integration. Internal integrations are a workspace-level feature — only workspace owners can access the integrations settings and create them. ## Setting Up the Integration [#setting-up-the-integration] ### 1. Create the Internal Integration [#1-create-the-internal-integration] Open [notion.so/profile/integrations](https://www.notion.so/profile/integrations) (in Notion: **Settings** → **Connections** → **Develop or manage connections**) and create a new integration. Notion is renaming integrations to "connections" — newer workspaces see this at app.notion.com/developers/connections with a **Create a new connection** button. {/* TODO(screenshot): Notion integrations page with the create-integration button */} Give it a name (e.g. `agentserve-notion-bot`), pick the workspace it belongs to, and make sure you are creating an **internal** integration (the default; newer UIs list it under **Internal connections**) Under **Capabilities**, enable what your workflows need: * **Read content** — reading pages and blocks, querying and reading databases, search * **Insert content** — creating pages and databases, adding database rows, appending blocks * **Update content** — updating pages and blocks, deleting blocks * **Comment capabilities** — creating and listing comments * **User capabilities** — listing and reading workspace users (choose with or without email) Enable only what you use — a read-only reporting workflow needs just Read content. {/* TODO(screenshot): integration settings Capabilities section with content capabilities enabled */} Save, then copy the integration's secret from its settings page — depending on your workspace's UI it is labeled **Internal Integration Secret** or **Installation access token** (under the **Configuration** tab). Secrets issued since September 2024 start with `ntn_`; older `secret_` tokens remain valid. {/* TODO(screenshot): integration settings page showing the Internal Integration Secret with the Show/Copy controls */} The secret is bearer credentials for everything the integration is connected to. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the secret at rest. ### 2. Connect the Integration to Pages and Databases [#2-connect-the-integration-to-pages-and-databases] This step is the one everyone misses — and without it, the integration can read **nothing**. A brand-new integration has API access but zero page access; every page or database your workflows touch must be explicitly connected. Open a page or database your workflows need in Notion Click the **•••** menu in the top-right, choose **Connections** (or **Add connections**), and select your integration {/* TODO(screenshot): Notion page ••• menu with "Add connections" and the integration selected */} Repeat for each top-level page or database. Connecting a page also grants access to all of its sub-pages. A valid secret with no page connections validates fine in Agent Serve but returns `404 object_not_found` on every real call. If a Notion block reports that a page or database wasn't found — and you're sure the ID is right — the page isn't connected to the integration. ## Adding the Internal Integration to Agent Serve [#adding-the-internal-integration-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Notion" and open it, then click **Add to Agent Serve** and choose **Add integration secret** {/* TODO(screenshot): Notion integration page with the service-account connect option */} Paste the **Internal integration secret**, and optionally set a display name and description {/* TODO(screenshot): Add Notion integration secret dialog with the internal integration secret filled in */} Click **Add integration secret**. Agent Serve verifies the secret by calling Notion's bot-user endpoint — if it fails, you'll see a specific error explaining what went wrong. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Notion block to your workflow. In the credential dropdown, select the saved Notion internal integration. Select it and configure the block as you normally would. {/* TODO(screenshot): Notion block in a workflow with the Notion service account selected as the credential */} The block calls `api.notion.com` using the integration secret — exactly the same requests as the OAuth flow, so every Notion tool works unchanged, limited to the capabilities you enabled and the pages you connected. --- # Notion (/integrations/notion) {/* MANUAL-CONTENT-START:intro */} Use Notion to read and manage pages, databases, blocks, and comments. Query a database or search the workspace to find the content a workflow needs; webhook triggers can start workflows when content changes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with Notion into the workflow. Can read page, read database, create page, create database, append content, query database, and search workspace. ## Actions [#actions] ### Notion Reader [#notion-reader] Read content from a Notion page #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `pageId` | string | Yes | The UUID of the Notion page to read | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------- | | `url` | string | Notion page URL | | `created_time` | string | ISO 8601 creation timestamp | | `last_edited_time` | string | ISO 8601 last edit timestamp | | `content` | string | Page content in markdown format | | `title` | string | Page title | ### Read Notion Database [#read-notion-database] Read database information and structure from Notion #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------- | | `databaseId` | string | Yes | The UUID of the Notion database to read | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `id` | string | Database UUID | | `url` | string | Notion database URL | | `created_time` | string | ISO 8601 creation timestamp | | `last_edited_time` | string | ISO 8601 last edit timestamp | | `properties` | object | Database properties schema | | `title` | string | Database title | ### Notion Content Appender [#notion-content-appender] Append content to a Notion page #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `pageId` | string | Yes | The UUID of the Notion page to append content to | | `content` | string | Yes | The content to append to the page | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `appended` | boolean | Whether content was successfully appended | ### Notion Page Creator [#notion-page-creator] Create a new page in Notion #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------ | | `parentId` | string | Yes | The UUID of the parent Notion page where this page will be created | | `title` | string | No | Title of the new page | | `content` | string | No | Optional content to add to the page upon creation | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `id` | string | Page UUID | | `url` | string | Notion page URL | | `created_time` | string | ISO 8601 creation timestamp | | `last_edited_time` | string | ISO 8601 last edit timestamp | | `title` | string | Page title | ### Notion Page Updater [#notion-page-updater] Update properties of a Notion page #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `pageId` | string | Yes | The UUID of the Notion page to update | | `properties` | json | Yes | JSON object of properties to update | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `id` | string | Page UUID | | `url` | string | Notion page URL | | `last_edited_time` | string | ISO 8601 last edit timestamp | | `title` | string | Page title | ### Query Notion Database [#query-notion-database] Query and filter Notion database entries with advanced filtering #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------- | | `databaseId` | string | Yes | The UUID of the Notion database to query | | `filter` | string | No | Filter conditions as JSON (optional) | | `sorts` | string | No | Sort criteria as JSON array (optional) | | `pageSize` | number | No | Number of results to return (default: 100, max: 100) | | `startCursor` | string | No | Pagination cursor returned by a previous request | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------- | | `results` | array | Array of page objects from the database | | ↳ `object` | string | Always "page" | | ↳ `id` | string | Page UUID | | ↳ `created_time` | string | ISO 8601 creation timestamp | | ↳ `last_edited_time` | string | ISO 8601 last edit timestamp | | ↳ `created_by` | object | Partial user object | | ↳ `object` | string | Always "user" | | ↳ `id` | string | User UUID | | ↳ `last_edited_by` | object | Partial user object | | ↳ `object` | string | Always "user" | | ↳ `id` | string | User UUID | | ↳ `archived` | boolean | Whether the page is archived | | ↳ `in_trash` | boolean | Whether the page is in trash | | ↳ `url` | string | Notion page URL | | ↳ `public_url` | string | Public web URL if shared, null otherwise | | ↳ `parent` | object | Parent object specifying hierarchical relationship | | ↳ `type` | string | Parent type: "database\_id", "data\_source\_id", "page\_id", "workspace", or "block\_id" | | ↳ `database_id` | string | Parent database UUID (if type is database\_id) | | ↳ `data_source_id` | string | Parent data source UUID (if type is data\_source\_id) | | ↳ `page_id` | string | Parent page UUID (if type is page\_id) | | ↳ `workspace` | boolean | True if parent is workspace (if type is workspace) | | ↳ `block_id` | string | Parent block UUID (if type is block\_id) | | ↳ `icon` | object | Page/database icon (emoji, custom\_emoji, or file) | | ↳ `type` | string | Icon type: "emoji", "custom\_emoji", or "file" | | ↳ `emoji` | string | Emoji character (if type is emoji) | | ↳ `custom_emoji` | object | Custom emoji object (if type is custom\_emoji) | | ↳ `id` | string | Custom emoji UUID | | ↳ `name` | string | Custom emoji name | | ↳ `url` | string | URL to custom emoji image | | ↳ `file` | object | Notion-hosted file (if type is file) | | ↳ `url` | string | Authenticated URL valid for one hour | | ↳ `expiry_time` | string | ISO 8601 timestamp when URL expires | | ↳ `external` | object | External file (if type is external) | | ↳ `url` | string | External file URL (never expires) | | ↳ `cover` | object | Page/database cover image | | ↳ `type` | string | File type: "file", "file\_upload", or "external" | | ↳ `file` | object | Notion-hosted file object (when type is "file") | | ↳ `url` | string | Authenticated URL valid for one hour | | ↳ `expiry_time` | string | ISO 8601 timestamp when URL expires | | ↳ `file_upload` | object | API-uploaded file object (when type is "file\_upload") | | ↳ `id` | string | File upload UUID | | ↳ `external` | object | External file object (when type is "external") | | ↳ `url` | string | External file URL (never expires) | | ↳ `properties` | object | Page property values (structure depends on parent type - database properties or title only) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for next page of results | | `total_results` | number | Number of results returned | ### Search Notion Workspace [#search-notion-workspace] Search across all pages and databases in Notion workspace #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------- | | `query` | string | No | Search terms to find pages and databases (leave empty to get all pages) | | `filterType` | string | No | Filter by object type: "page", "database", or leave empty for all | | `pageSize` | number | No | Number of results to return (default: 100, max: 100) | | `startCursor` | string | No | Pagination cursor returned by a previous request | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------- | | `results` | array | Array of search results (pages and/or databases) | | ↳ `object` | string | Object type: "page" or "database" | | ↳ `id` | string | Object UUID | | ↳ `created_time` | string | ISO 8601 creation timestamp | | ↳ `last_edited_time` | string | ISO 8601 last edit timestamp | | ↳ `created_by` | object | Partial user object | | ↳ `object` | string | Always "user" | | ↳ `id` | string | User UUID | | ↳ `last_edited_by` | object | Partial user object | | ↳ `object` | string | Always "user" | | ↳ `id` | string | User UUID | | ↳ `archived` | boolean | Whether the object is archived | | ↳ `in_trash` | boolean | Whether the object is in trash | | ↳ `url` | string | Object URL | | ↳ `public_url` | string | Public web URL if shared | | ↳ `parent` | object | Parent object specifying hierarchical relationship | | ↳ `type` | string | Parent type: "database\_id", "data\_source\_id", "page\_id", "workspace", or "block\_id" | | ↳ `database_id` | string | Parent database UUID (if type is database\_id) | | ↳ `data_source_id` | string | Parent data source UUID (if type is data\_source\_id) | | ↳ `page_id` | string | Parent page UUID (if type is page\_id) | | ↳ `workspace` | boolean | True if parent is workspace (if type is workspace) | | ↳ `block_id` | string | Parent block UUID (if type is block\_id) | | ↳ `properties` | object | Object properties | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for next page of results | | `total_results` | number | Number of results returned | ### Create Notion Database [#create-notion-database] Create a new database in Notion with custom properties #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------- | | `parentId` | string | Yes | ID of the parent page where the database will be created | | `title` | string | Yes | Title for the new database | | `properties` | json | No | Database properties as JSON object (optional, will create a default "Name" property if empty) | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------ | --------------------------- | | `id` | string | Database UUID | | `url` | string | Notion database URL | | `created_time` | string | ISO 8601 creation timestamp | | `properties` | object | Database properties schema | | `title` | string | Database title | ### Add Notion Database Row [#add-notion-database-row] Add a new row to a Notion database with specified properties #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `databaseId` | string | Yes | ID of the database to add the row to | | `properties` | json | Yes | Row properties as JSON object matching the database schema (e.g., \{"Name": \{"title": \[\{"text": \{"content": "Task 1"}}]}, "Status": \{"select": \{"name": "Done"}}}) | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `id` | string | Page UUID | | `url` | string | Notion page URL | | `created_time` | string | ISO 8601 creation timestamp | | `last_edited_time` | string | ISO 8601 last edit timestamp | | `title` | string | Row title | ### Notion Append Block Children [#notion-append-block-children] Append new block children (content) to a Notion page or block #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `blockId` | string | Yes | The UUID of the page or block to append children to | | `children` | json | Yes | Array of Notion block objects to append (max 100) | | `after` | string | No | UUID of an existing block to append the new children after | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Retrieve Block [#notion-retrieve-block] Retrieve a single Notion block by its UUID, including its type-specific content #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `blockId` | string | Yes | The UUID of the block to retrieve | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Retrieve Block Children [#notion-retrieve-block-children] Retrieve the block children (content) of a Notion page or block #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `blockId` | string | Yes | The UUID of the page or block whose children to retrieve | | `startCursor` | string | No | Pagination cursor returned by a previous request | | `pageSize` | number | No | Number of results to return (1-100, default 100) | #### Output [#output-11] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Update Block [#notion-update-block] Update the content or archived state of a single Notion block #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `blockId` | string | Yes | The UUID of the block to update | | `block` | json | Yes | Block-type object with the fields to update, e.g. \{"paragraph": \{"rich\_text": \[...]}} | | `archived` | boolean | No | Set to true to archive (delete) the block, or false to restore it | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Delete Block [#notion-delete-block] Delete (move to trash) a single Notion block #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `blockId` | string | Yes | The UUID of the block to delete | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Create Comment [#notion-create-comment] Create a comment on a Notion page or within an existing discussion thread #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------- | | `pageId` | string | No | UUID of the page to comment on (provide either pageId or discussionId) | | `discussionId` | string | No | UUID of an existing discussion thread to reply to | | `content` | string | Yes | The text content of the comment | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion List Comments [#notion-list-comments] List unresolved comments on a Notion page or block #### Input [#input-15] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------- | | `blockId` | string | Yes | The UUID of the page or block whose comments to list | | `startCursor` | string | No | Pagination cursor returned by a previous request | | `pageSize` | number | No | Number of results to return (1-100, default 100) | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion List Users [#notion-list-users] List all users (members and bots) in the Notion workspace #### Input [#input-16] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------ | | `startCursor` | string | No | Pagination cursor returned by a previous request | | `pageSize` | number | No | Number of results to return (1-100, default 100) | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ### Notion Retrieve User [#notion-retrieve-user] Retrieve a single Notion user by their UUID #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `userId` | string | Yes | The UUID of the user to retrieve | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------- | | `content` | string | Page content in markdown format, or comment text for create comment | | `title` | string | Page or database title | | `url` | string | Notion URL | | `id` | string | Page, database, block, comment, or user ID | | `created_time` | string | Creation timestamp | | `last_edited_time` | string | Last edit timestamp | | `results` | array | Array of results (pages, blocks, comments, or users) | | `has_more` | boolean | Whether more results are available | | `next_cursor` | string | Cursor for pagination | | `total_results` | number | Number of results returned | | `properties` | json | Database properties schema | | `appended` | boolean | Whether content was successfully appended | | `type` | string | Block type | | `block` | json | The full Notion block object | | `has_children` | boolean | Whether the block has nested blocks | | `archived` | boolean | Whether the block is archived | | `discussion_id` | string | Discussion thread ID | | `name` | string | User display name | | `avatar_url` | string | User avatar image URL | | `email` | string | User email address (person users only) | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Notion Comment Created [#notion-comment-created] Trigger workflow when a comment or suggested edit is added in Notion #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Comment ID | | ↳ `entity_type` | string | Entity type (comment) | | `data` | object | data output from the tool | | ↳ `page_id` | string | Page ID that owns the comment thread | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page or block ID | | ↳ `parent_type` | string | Parent type (page or block) | *** ### Notion Database Created [#notion-database-created] Trigger workflow when a new database is created in Notion #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-19] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Database properties updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace, or space ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `workspace`, or `space` | *** ### Notion Database Deleted [#notion-database-deleted] Trigger workflow when a database is deleted in Notion #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-20] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Database properties updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace, or space ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `workspace`, or `space` | *** ### Notion Database Schema Updated [#notion-database-schema-updated] Trigger workflow when a database schema is modified in Notion #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-21] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Database properties updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace, or space ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `workspace`, or `space` | *** ### Notion Page Content Updated [#notion-page-content-updated] Trigger workflow when page content is changed in Notion #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-22] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Property IDs updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace (space), or block ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `block`, `workspace`, or `space` | *** ### Notion Page Created [#notion-page-created] Trigger workflow when a new page is created in Notion #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-23] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Property IDs updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace (space), or block ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `block`, `workspace`, or `space` | *** ### Notion Page Deleted [#notion-page-deleted] Trigger workflow when a page is deleted in Notion #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-24] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Property IDs updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace (space), or block ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `block`, `workspace`, or `space` | *** ### Notion Page Properties Updated [#notion-page-properties-updated] Trigger workflow when page properties are modified in Notion #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-25] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Property IDs updated as part of the event, when provided by Notion | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent page, database, workspace (space), or block ID | | ↳ `parent_type` | string | Parent type: `page`, `database`, `block`, `workspace`, or `space` | *** ### Notion Webhook (All Events) [#notion-webhook-all-events] Trigger workflow on any Notion webhook event #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | No | The verification\_token sent by Notion during webhook setup. This same token is used to verify X-Notion-Signature HMAC headers on all subsequent webhook deliveries. | #### Output [#output-26] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Webhook event ID | | `type` | string | Event type (e.g., page.created, database.schema\_updated) | | `timestamp` | string | ISO 8601 timestamp of the event | | `api_version` | string | Notion API version included with the event | | `workspace_id` | string | Workspace ID where the event occurred | | `workspace_name` | string | Workspace name | | `subscription_id` | string | Webhook subscription ID | | `integration_id` | string | Integration ID that received the event | | `attempt_number` | number | Delivery attempt number (1-8 per Notion retries) | | `accessible_by` | array | Users and bots with access to the entity (`id` + `type` per object); `type` is `person` or `bot`. Omitted on some deliveries (treat as empty). | | `authors` | array | Actors who triggered the event (`id` + `type` per object); `type` is `person`, `bot`, or `agent` per Notion | | `entity` | object | entity output from the tool | | ↳ `id` | string | Entity ID (page, database, block, comment, or data source ID) | | ↳ `entity_type` | string | Entity type: `page`, `database`, `block`, `comment`, or `data_source` | | `data` | object | data output from the tool | | ↳ `parent` | object | parent output from the tool | | ↳ `id` | string | Parent entity ID, when provided by Notion | | ↳ `parent_type` | string | Parent type (`page`, `database`, `block`, `workspace`, `space`, …), when present | | ↳ `page_id` | string | Page ID related to the event, when present | | ↳ `updated_blocks` | array | Blocks updated as part of the event, when provided by Notion | | ↳ `updated_properties` | array | Updated properties included with the event, when provided by Notion | --- # Obsidian (/integrations/obsidian) {/* MANUAL-CONTENT-START:intro */} [Obsidian](https://obsidian.md/) stores notes as Markdown files in a vault. Use this integration to read, create, update, and search notes, work with periodic notes, and run Obsidian commands. **How it works in Agent Serve:** Add an Obsidian block to your workflow and select an operation. This integration requires the [Obsidian Local REST API](https://github.com/coddingtonbear/obsidian-local-rest-api) plugin to be installed and running in your vault. Provide your API key and vault URL, along with any required parameters. The block communicates with your local Obsidian instance and returns structured data you can pass to downstream blocks — for example, searching your vault for research notes and feeding them into an AI agent for summarization. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Read, create, update, search, and delete notes in your Obsidian vault. Manage periodic notes, execute commands, and patch content at specific locations. Requires the Obsidian Local REST API plugin. ## Actions [#actions] ### Obsidian Append to Active File [#obsidian-append-to-active-file] Append content to the currently active file in Obsidian #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `content` | string | Yes | Markdown content to append to the active file | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `appended` | boolean | Whether content was successfully appended | ### Obsidian Append to Note [#obsidian-append-to-note] Append content to an existing note in your Obsidian vault #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path to the note relative to vault root (e.g. "folder/note.md") | | `content` | string | Yes | Markdown content to append to the note | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `filename` | string | Path of the note | | `appended` | boolean | Whether content was successfully appended | ### Obsidian Append to Periodic Note [#obsidian-append-to-periodic-note] Append content to the current periodic note (daily, weekly, monthly, quarterly, or yearly). Creates the note if it does not exist. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `period` | string | Yes | Period type: daily, weekly, monthly, quarterly, or yearly | | `content` | string | Yes | Markdown content to append to the periodic note | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `period` | string | Period type of the note | | `appended` | boolean | Whether content was successfully appended | ### Obsidian Create Note [#obsidian-create-note] Create or replace a note in your Obsidian vault #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path for the note relative to vault root (e.g. "folder/note.md") | | `content` | string | Yes | Markdown content for the note | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `filename` | string | Path of the created note | | `created` | boolean | Whether the note was successfully created | ### Obsidian Delete Note [#obsidian-delete-note] Delete a note from your Obsidian vault #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path to the note to delete relative to vault root | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `filename` | string | Path of the deleted note | | `deleted` | boolean | Whether the note was successfully deleted | ### Obsidian Execute Command [#obsidian-execute-command] Execute a command in Obsidian (e.g. open daily note, toggle sidebar) #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `commandId` | string | Yes | ID of the command to execute (use List Commands operation to discover available commands) | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------- | | `commandId` | string | ID of the executed command | | `executed` | boolean | Whether the command was successfully executed | ### Obsidian Get Active File [#obsidian-get-active-file] Retrieve the content of the currently active file in Obsidian #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------- | | `content` | string | Markdown content of the active file | | `filename` | string | Path to the active file | ### Obsidian Get Note [#obsidian-get-note] Retrieve the content of a note from your Obsidian vault #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path to the note relative to vault root (e.g. "folder/note.md") | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------ | ---------------------------- | | `content` | string | Markdown content of the note | | `filename` | string | Path to the note | ### Obsidian Get Periodic Note [#obsidian-get-periodic-note] Retrieve the current periodic note (daily, weekly, monthly, quarterly, or yearly) #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `period` | string | Yes | Period type: daily, weekly, monthly, quarterly, or yearly | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `content` | string | Markdown content of the periodic note | | `period` | string | Period type of the note | ### Obsidian List Commands [#obsidian-list-commands] List all available commands in Obsidian #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------- | | `commands` | json | List of available commands with IDs and names | | ↳ `id` | string | Command identifier | | ↳ `name` | string | Human-readable command name | ### Obsidian List Files [#obsidian-list-files] List files and directories in your Obsidian vault #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `path` | string | No | Directory path relative to vault root. Leave empty to list root. | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------- | | `files` | json | List of files and directories | | ↳ `path` | string | File or directory path | | ↳ `type` | string | Whether the entry is a file or directory | ### Obsidian Open File [#obsidian-open-file] Open a file in the Obsidian UI (creates the file if it does not exist) #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path to the file relative to vault root | | `newLeaf` | boolean | No | Whether to open the file in a new leaf/tab | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `filename` | string | Path of the opened file | | `opened` | boolean | Whether the file was successfully opened | ### Obsidian Patch Active File [#obsidian-patch-active-file] Insert or replace content at a specific heading, block reference, or frontmatter field in the active file #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `content` | string | Yes | Content to insert at the target location | | `operation` | string | Yes | How to insert content: append, prepend, or replace | | `targetType` | string | Yes | Type of target: heading, block, or frontmatter | | `target` | string | Yes | Target identifier (heading text, block reference ID, or frontmatter field name) | | `targetDelimiter` | string | No | Delimiter for nested headings (default: "::") | | `trimTargetWhitespace` | boolean | No | Whether to trim whitespace from target before matching (default: false) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------ | | `patched` | boolean | Whether the active file was successfully patched | ### Obsidian Patch Note [#obsidian-patch-note] Insert or replace content at a specific heading, block reference, or frontmatter field in a note #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `filename` | string | Yes | Path to the note relative to vault root (e.g. "folder/note.md") | | `content` | string | Yes | Content to insert at the target location | | `operation` | string | Yes | How to insert content: append, prepend, or replace | | `targetType` | string | Yes | Type of target: heading, block, or frontmatter | | `target` | string | Yes | Target identifier (heading text, block reference ID, or frontmatter field name) | | `targetDelimiter` | string | No | Delimiter for nested headings (default: "::") | | `trimTargetWhitespace` | boolean | No | Whether to trim whitespace from target before matching (default: false) | #### Output [#output-13] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------------- | | `filename` | string | Path of the patched note | | `patched` | boolean | Whether the note was successfully patched | ### Obsidian Search [#obsidian-search] Search for text across notes in your Obsidian vault #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | API key from Obsidian Local REST API plugin settings | | `baseUrl` | string | Yes | Base URL for the Obsidian Local REST API | | `query` | string | Yes | Text to search for across vault notes | | `contextLength` | number | No | Number of characters of context around each match (default: 100) | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------ | | `results` | json | Search results with filenames, scores, and matching contexts | | ↳ `filename` | string | Path to the matching note | | ↳ `score` | number | Relevance score | | ↳ `matches` | json | Matching text contexts | | ↳ `context` | string | Text surrounding the match | --- # Okta (/integrations/okta) {/* MANUAL-CONTENT-START:intro */} [Okta](https://www.okta.com/) is an identity and access management platform that provides secure authentication, authorization, and user management for organizations. With the Okta integration in Agent Serve, you can: * **List and search users**: Retrieve users from your Okta org with SCIM search expressions and filters * **Manage user lifecycle**: Create, activate, deactivate, suspend, unsuspend, and delete users * **Update user profiles**: Modify user attributes like name, email, phone, title, and department * **Reset passwords**: Trigger password reset flows with optional email notification * **Manage groups**: Create, update, delete, and list groups in your organization * **Manage group membership**: Add or remove users from groups, and list group members In Agent Serve, the Okta integration enables your agents to automate identity management tasks as part of their workflows. This allows for scenarios such as onboarding new employees, offboarding departing users, managing group-based access, auditing user status, and responding to security events by suspending or deactivating accounts. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Okta identity management into your workflow. Manage users, groups, and group rules. Run service desk actions like resetting MFA factors and clearing sessions. Review and change application assignments and admin roles. Query the System Log to audit sign-ins and admin changes. ## Actions [#actions] ### List Users from Okta [#list-users-from-okta] List users in your Okta organization with optional search and filtering. Users with a DEPROVISIONED status are omitted unless a search or filter expression selects them. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `search` | string | No | Okta search expression (e.g., profile.firstName eq "John" or profile.email co "example.com") | | `filter` | string | No | Okta filter expression (e.g., status eq "ACTIVE") | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of users to return per page (default: 200) | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------- | | `users` | array | Array of Okta user objects | | ↳ `id` | string | User ID | | ↳ `status` | string | User status (ACTIVE, STAGED, PROVISIONED, etc.) | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `login` | string | Login (usually email) | | ↳ `mobilePhone` | string | Mobile phone | | ↳ `title` | string | Job title | | ↳ `department` | string | Department | | ↳ `created` | string | Creation timestamp | | ↳ `lastLogin` | string | Last login timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `activated` | string | Activation timestamp | | ↳ `statusChanged` | string | Status change timestamp | | `count` | number | Number of users returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more users are available | | `success` | boolean | Operation success status | ### Get User from Okta [#get-user-from-okta] Get a specific user by ID or login from your Okta organization #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login (email) to look up | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ------------------------- | | `id` | string | User ID | | `status` | string | User status | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `login` | string | Login (usually email) | | `mobilePhone` | string | Mobile phone | | `secondEmail` | string | Secondary email | | `displayName` | string | Display name | | `title` | string | Job title | | `department` | string | Department | | `organization` | string | Organization | | `manager` | string | Manager name | | `managerId` | string | Manager ID | | `division` | string | Division | | `employeeNumber` | string | Employee number | | `userType` | string | User type | | `created` | string | Creation timestamp | | `activated` | string | Activation timestamp | | `lastLogin` | string | Last login timestamp | | `lastUpdated` | string | Last update timestamp | | `statusChanged` | string | Status change timestamp | | `passwordChanged` | string | Password change timestamp | | `success` | boolean | Operation success status | ### Create User in Okta [#create-user-in-okta] Create a new user in your Okta organization #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------ | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `firstName` | string | Yes | First name of the user | | `lastName` | string | Yes | Last name of the user | | `email` | string | Yes | Email address of the user | | `login` | string | No | Login for the user (defaults to email if not provided) | | `password` | string | No | Password for the user (if not set, user will be emailed to set password) | | `mobilePhone` | string | No | Mobile phone number | | `title` | string | No | Job title | | `department` | string | No | Department | | `activate` | boolean | No | Whether to activate the user immediately (default: true) | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------- | ------------------------ | | `id` | string | Created user ID | | `status` | string | User status | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `login` | string | Login | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `success` | boolean | Operation success status | ### Update User in Okta [#update-user-in-okta] Update a user profile in your Okta organization #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to update | | `firstName` | string | No | Updated first name | | `lastName` | string | No | Updated last name | | `email` | string | No | Updated email address | | `login` | string | No | Updated login | | `mobilePhone` | string | No | Updated mobile phone number | | `title` | string | No | Updated job title | | `department` | string | No | Updated department | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | ------------------------ | | `id` | string | User ID | | `status` | string | User status | | `firstName` | string | First name | | `lastName` | string | Last name | | `email` | string | Email address | | `login` | string | Login | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `success` | boolean | Operation success status | ### Activate User in Okta [#activate-user-in-okta] Activate a user in your Okta organization. Can only be performed on users with STAGED or DEPROVISIONED status. Optionally sends an activation email. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to activate | | `sendEmail` | boolean | No | Send activation email to the user (default: true) | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `userId` | string | Activated user ID | | `activated` | boolean | Whether the user was activated | | `activationUrl` | string | Activation URL (only returned when sendEmail is false) | | `activationToken` | string | Activation token (only returned when sendEmail is false) | | `success` | boolean | Operation success status | ### Deactivate User in Okta [#deactivate-user-in-okta] Deactivate a user in your Okta organization. This transitions the user to DEPROVISIONED status. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to deactivate | | `sendEmail` | boolean | No | Send deactivation email to admin (default: false) | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------- | -------------------------------- | | `userId` | string | Deactivated user ID | | `deactivated` | boolean | Whether the user was deactivated | | `success` | boolean | Operation success status | ### Suspend User in Okta [#suspend-user-in-okta] Suspend a user in your Okta organization. Only users with ACTIVE status can be suspended. Suspended users cannot log in but retain group and app assignments. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to suspend | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | ------------------------------ | | `userId` | string | Suspended user ID | | `suspended` | boolean | Whether the user was suspended | | `success` | boolean | Operation success status | ### Unsuspend User in Okta [#unsuspend-user-in-okta] Unsuspend a previously suspended user in your Okta organization. Returns the user to ACTIVE status. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to unsuspend | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------- | -------------------------------- | | `userId` | string | Unsuspended user ID | | `unsuspended` | boolean | Whether the user was unsuspended | | `success` | boolean | Operation success status | ### Reset Password in Okta [#reset-password-in-okta] Generate a one-time token to reset a user password. Can email the reset link to the user or return it directly. Transitions the user to RECOVERY status. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login to reset password for | | `sendEmail` | boolean | No | Send password reset email to the user. Okta requires this parameter and declares no default of its own; leaving it blank sends the email | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------- | | `userId` | string | User ID | | `resetPasswordUrl` | string | Password reset URL (only returned when sendEmail is false) | | `success` | boolean | Operation success status | ### Delete User from Okta [#delete-user-from-okta] Permanently delete a user from your Okta organization. Can only be performed on DEPROVISIONED users. If the user is active, this will first deactivate them and a second call is needed to delete. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login (email) to delete | | `sendEmail` | boolean | No | Send deactivation email to admin (default: false) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `userId` | string | Deleted user ID | | `deleted` | boolean | Whether the delete request was accepted. An ACTIVE user is deactivated by the first call and needs a second call to actually be deleted. | | `success` | boolean | Operation success status | ### List Groups from Okta [#list-groups-from-okta] List all groups in your Okta organization with optional search and filtering #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `search` | string | No | Okta search expression for groups (e.g., profile.name sw "Engineering" or type eq "OKTA\_GROUP") | | `filter` | string | No | Okta filter expression (e.g., type eq "OKTA\_GROUP") | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of groups to return per page (max: 10000) | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------- | | `groups` | array | Array of Okta group objects | | ↳ `id` | string | Group ID | | ↳ `name` | string | Group name | | ↳ `description` | string | Group description | | ↳ `type` | string | Group type (OKTA\_GROUP, APP\_GROUP, BUILT\_IN) | | ↳ `created` | string | Creation timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `lastMembershipUpdated` | string | Last membership change timestamp | | `count` | number | Number of groups returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more groups are available | | `success` | boolean | Operation success status | ### Get Group from Okta [#get-group-from-okta] Get a specific group by ID from your Okta organization #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to look up | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `id` | string | Group ID | | `name` | string | Group name | | `description` | string | Group description | | `type` | string | Group type | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `lastMembershipUpdated` | string | Last membership change timestamp | | `success` | boolean | Operation success status | ### Create Group in Okta [#create-group-in-okta] Create a new group in your Okta organization #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `name` | string | Yes | Name of the group | | `description` | string | No | Description of the group | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `id` | string | Created group ID | | `name` | string | Group name | | `description` | string | Group description | | `type` | string | Group type | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `lastMembershipUpdated` | string | Last membership change timestamp | | `success` | boolean | Operation success status | ### Update Group in Okta [#update-group-in-okta] Update a group profile in your Okta organization. Only groups of OKTA\_GROUP type can be updated. Fields left blank keep their stored value. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to update | | `name` | string | No | Updated group name. Leave blank to keep the stored name | | `description` | string | No | Updated group description | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `id` | string | Group ID | | `name` | string | Group name | | `description` | string | Group description | | `type` | string | Group type | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `lastMembershipUpdated` | string | Last membership change timestamp | | `success` | boolean | Operation success status | ### Delete Group from Okta [#delete-group-from-okta] Delete a group from your Okta organization. Groups of OKTA\_GROUP or APP\_GROUP type can be removed. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to delete | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `groupId` | string | Deleted group ID | | `deleted` | boolean | Whether the group was deleted | | `success` | boolean | Operation success status | ### Add User to Group in Okta [#add-user-to-group-in-okta] Add a user to a group in your Okta organization #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to add the user to | | `userId` | string | Yes | User ID to add to the group | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `groupId` | string | Group ID | | `userId` | string | User ID added to the group | | `added` | boolean | Whether the user was added | | `success` | boolean | Operation success status | ### Remove User from Group in Okta [#remove-user-from-group-in-okta] Remove a user from a group in your Okta organization #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to remove the user from | | `userId` | string | Yes | User ID to remove from the group | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `groupId` | string | Group ID | | `userId` | string | User ID removed from the group | | `removed` | boolean | Whether the user was removed | | `success` | boolean | Operation success status | ### List Group Members from Okta [#list-group-members-from-okta] List all members of a specific group in your Okta organization #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupId` | string | Yes | Group ID to list members for | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of members to return per page (default: 1000, but Okta recommends 200) | #### Output [#output-17] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------- | | `members` | array | Array of group member user objects | | ↳ `id` | string | User ID | | ↳ `status` | string | User status | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `login` | string | Login | | ↳ `mobilePhone` | string | Mobile phone | | ↳ `title` | string | Job title | | ↳ `department` | string | Department | | ↳ `created` | string | Creation timestamp | | ↳ `lastLogin` | string | Last login timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `activated` | string | Activation timestamp | | ↳ `statusChanged` | string | Status change timestamp | | `count` | number | Number of members returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more members are available | | `success` | boolean | Operation success status | ### List Group Rules from Okta [#list-group-rules-from-okta] List the group rules in your Okta organization. Each rule assigns users to groups automatically based on an expression over their profile, so this shows how group membership is being driven. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `search` | string | No | Keyword to search group rules for | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of rules to return (default: 50, max: 200) | #### Output [#output-18] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------------------- | | `rules` | array | Array of group rules | | ↳ `id` | string | Group rule ID | | ↳ `name` | string | Group rule name | | ↳ `type` | string | Rule type, always group\_rule | | ↳ `status` | string | Rule status (ACTIVE, INACTIVE, INVALID) | | ↳ `created` | string | Creation timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `expression` | string | Okta expression that decides which users the rule matches | | ↳ `expressionType` | string | Expression language, typically urn:okta:expression:1.0 | | ↳ `assignUserToGroupIds` | array | Groups that matching users are assigned to | | ↳ `excludedUserIds` | array | Users excluded from the rule | | ↳ `excludedGroupIds` | array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions. | | `count` | number | Number of rules returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more rules are available | | `success` | boolean | Operation success status | ### Get Group Rule from Okta [#get-group-rule-from-okta] Retrieve a single Okta group rule by ID, including the expression that decides which users it matches and the groups those users are assigned to. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupRuleId` | string | Yes | Group rule ID to look up | #### Output [#output-19] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------------------------------------- | | `id` | string | Group rule ID | | `name` | string | Group rule name | | `type` | string | Rule type, always group\_rule | | `status` | string | Rule status (ACTIVE, INACTIVE, INVALID) | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `expression` | string | Okta expression that decides which users the rule matches | | `expressionType` | string | Expression language, typically urn:okta:expression:1.0 | | `assignUserToGroupIds` | array | Groups that matching users are assigned to | | `excludedUserIds` | array | Users excluded from the rule | | `excludedGroupIds` | array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions. | | `success` | boolean | Operation success status | ### Create Group Rule in Okta [#create-group-rule-in-okta] Create a group rule that automatically assigns users matching an Okta expression to one or more groups. New rules are created INACTIVE, so run Activate Group Rule afterwards to start applying it. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `ruleName` | string | Yes | Name for the group rule (maximum 50 characters) | | `expression` | string | Yes | Okta expression that must evaluate to a boolean (e.g., user.department=="Engineering") | | `assignUserToGroupIds` | string | Yes | Comma-separated group IDs that matching users are assigned to | | `excludedUserIds` | string | No | Comma-separated user IDs to exclude from the rule | #### Output [#output-20] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------------------------------------------------- | | `id` | string | Created group rule ID | | `name` | string | Group rule name | | `type` | string | Rule type, always group\_rule | | `status` | string | Rule status, which is INACTIVE for a newly created rule | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `expression` | string | Okta expression that decides which users the rule matches | | `expressionType` | string | Expression language, typically urn:okta:expression:1.0 | | `assignUserToGroupIds` | array | Groups that matching users are assigned to | | `excludedUserIds` | array | Users excluded from the rule | | `excludedGroupIds` | array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions. | | `success` | boolean | Operation success status | ### Activate Group Rule in Okta [#activate-group-rule-in-okta] Activate a group rule so Okta starts applying it, assigning every matching user to the target groups. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupRuleId` | string | Yes | Group rule ID to activate | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------- | ------------------------------ | | `groupRuleId` | string | Activated group rule ID | | `activated` | boolean | Whether the rule was activated | | `success` | boolean | Operation success status | ### Deactivate Group Rule in Okta [#deactivate-group-rule-in-okta] Deactivate a group rule so Okta stops applying it. Existing memberships the rule created are left in place. A rule must be INACTIVE before it can be edited. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupRuleId` | string | Yes | Group rule ID to deactivate | #### Output [#output-22] | Parameter | Type | Description | | ------------- | ------- | -------------------------------- | | `groupRuleId` | string | Deactivated group rule ID | | `deactivated` | boolean | Whether the rule was deactivated | | `success` | boolean | Operation success status | ### Delete Group Rule in Okta [#delete-group-rule-in-okta] Permanently delete a group rule. Destructive and irreversible. Optionally also removes the users that this rule had assigned from those groups, which revokes any access those groups grant. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `groupRuleId` | string | Yes | Group rule ID to delete | | `removeUsers` | boolean | No | Also remove the users this rule assigned from the groups it targeted (default: false) | #### Output [#output-23] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------- | | `groupRuleId` | string | Deleted group rule ID | | `deleted` | boolean | Whether the deletion was accepted. Okta answers 202 and removes the rule asynchronously. | | `success` | boolean | Operation success status | ### List Factors from Okta [#list-factors-from-okta] List the MFA factors a user has enrolled, with each factor type, provider, and enrollment status. Use this before resetting a factor to confirm which one to target. #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) to list enrolled factors for | #### Output [#output-24] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `factors` | array | Array of enrolled MFA factors | | ↳ `id` | string | Factor ID | | ↳ `factorType` | string | Factor type (sms, call, email, push, question, token:software:totp, webauthn, etc.) | | ↳ `provider` | string | Factor provider (OKTA, GOOGLE, FIDO, DUO, RSA, SYMANTEC, YUBICO, CUSTOM) | | ↳ `vendorName` | string | Factor vendor name | | ↳ `status` | string | Enrollment status (ACTIVE, PENDING\_ACTIVATION, NOT\_SETUP, etc.) | | ↳ `created` | string | Enrollment timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `profile` | json | Factor-specific attributes, which vary by factor type (phone number, email, question, credential ID) | | `count` | number | Number of enrolled factors | | `success` | boolean | Operation success status | ### Get Factor from Okta [#get-factor-from-okta] Retrieve a single enrolled MFA factor for a user, including its type, provider, enrollment status, and factor-specific profile. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) the factor belongs to | | `factorId` | string | Yes | Factor ID to look up | #### Output [#output-25] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `id` | string | Factor ID | | `factorType` | string | Factor type | | `provider` | string | Factor provider | | `vendorName` | string | Factor vendor name | | `status` | string | Enrollment status | | `created` | string | Enrollment timestamp | | `lastUpdated` | string | Last update timestamp | | `profile` | json | Factor-specific attributes, which vary by factor type (phone number, email, question, credential ID) | | `success` | boolean | Operation success status | ### Enroll Factor in Okta [#enroll-factor-in-okta] Enroll an MFA factor for a user. The profile fields required depend on the factor type: a phone number for sms and call, an email address for email, and a question and answer for question. Factors that enroll from the user device, such as webauthn and push, need no profile fields. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) to enroll the factor for | | `factorType` | string | Yes | Factor type to enroll (sms, call, email, question, push, token:software:totp, u2f, webauthn) | | `provider` | string | Yes | Factor provider (OKTA, GOOGLE, FIDO, DUO, RSA, SYMANTEC, YUBICO, CUSTOM). Each provider supports a subset of factor types | | `phoneNumber` | string | No | Phone number in E.164 format. Required for the sms and call factor types | | `factorEmail` | string | No | Email address to enroll. Required for the email factor type | | `securityQuestion` | string | No | Security question key (e.g., disliked\_food). Required for the question factor type | | `securityAnswer` | string | No | Answer to the security question, minimum 4 characters. Required for the question factor type | | `activate` | boolean | No | Activate the factor immediately as part of enrollment. Supported by the sms, call, email, and token:hotp factor types (default: false) | #### Output [#output-26] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------------------- | | `id` | string | Enrolled factor ID | | `factorType` | string | Factor type | | `provider` | string | Factor provider | | `vendorName` | string | Factor vendor name | | `status` | string | Enrollment status, typically PENDING\_ACTIVATION until the user activates it | | `created` | string | Enrollment timestamp | | `lastUpdated` | string | Last update timestamp | | `profile` | json | Factor-specific attributes, which vary by factor type (phone number, email, question, credential ID) | | `enrolled` | boolean | Whether the factor was enrolled | | `success` | boolean | Operation success status | ### Reset Factor in Okta [#reset-factor-in-okta] Unenroll one specific MFA factor for a user so they can re-enroll it. Destructive and irreversible: the existing enrollment is removed. Unenrolling a push or signed\_nonce factor also unenrolls the related Okta Verify factors. Factors cannot be unenrolled from a deactivated user. #### Input [#input-27] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) the factor belongs to | | `factorId` | string | Yes | Factor ID to unenroll | | `removeRecoveryEnrollment` | boolean | No | Also remove the phone number as a recovery method, not only as a factor. Applies to sms and call factors only (default: false) | #### Output [#output-27] | Parameter | Type | Description | | ---------- | ------- | --------------------------------- | | `userId` | string | User the factor belonged to | | `factorId` | string | Unenrolled factor ID | | `reset` | boolean | Whether the factor was unenrolled | | `success` | boolean | Operation success status | ### Reset All Factors in Okta [#reset-all-factors-in-okta] Reset every MFA factor for a user, returning all enrollments to the unenrolled state. Destructive and irreversible: the user must re-enroll each factor before they can complete MFA again. The user status stays ACTIVE. #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | User ID or login whose MFA factors will all be reset | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `userId` | string | User whose factors were reset | | `reset` | boolean | Whether all factors were reset | | `success` | boolean | Operation success status | ### Clear User Sessions in Okta [#clear-user-sessions-in-okta] Revoke every active Okta session for a user, signing them out of all devices immediately. Destructive and irreversible: the user must sign in again. Optionally also revokes their OAuth and OpenID Connect tokens, and clears remembered factors. #### Input [#input-29] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) whose sessions will be revoked | | `oauthTokens` | boolean | No | Also revoke the user OpenID Connect and OAuth refresh and access tokens (default: false) | | `forgetDevices` | boolean | No | Clear the user remembered factors for all devices (default: true) | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `userId` | string | User whose sessions were revoked | | `cleared` | boolean | Whether the sessions were revoked | | `success` | boolean | Operation success status | ### Get Session from Okta [#get-session-from-okta] Retrieve an Okta session by ID, including who it belongs to, when it expires, and which authentication methods were used to establish it. #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `sessionId` | string | Yes | Session ID to look up | #### Output [#output-30] | Parameter | Type | Description | | -------------------------- | ------- | ---------------------------------------------------- | | `id` | string | Session ID | | `login` | string | Login of the session user | | `userId` | string | ID of the session user | | `status` | string | Session status (ACTIVE, MFA\_ENROLL, MFA\_REQUIRED) | | `createdAt` | string | Session creation timestamp | | `expiresAt` | string | Session expiry timestamp | | `lastPasswordVerification` | string | Timestamp of the last password verification | | `lastFactorVerification` | string | Timestamp of the last factor verification | | `amr` | array | Authentication methods used to establish the session | | `idpId` | string | Identity provider ID | | `idpType` | string | Identity provider type | | `success` | boolean | Operation success status | ### Revoke Session in Okta [#revoke-session-in-okta] Revoke a single Okta session by ID, ending that sign-in immediately. Destructive and irreversible: the affected user must sign in again on that device. #### Input [#input-31] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `sessionId` | string | Yes | Session ID to revoke | #### Output [#output-31] | Parameter | Type | Description | | ----------- | ------- | ------------------------------- | | `sessionId` | string | Revoked session ID | | `revoked` | boolean | Whether the session was revoked | | `success` | boolean | Operation success status | ### List Applications from Okta [#list-applications-from-okta] List the applications configured in your Okta organization, with optional name search, filtering, and cursor pagination. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `q` | string | No | Search for applications whose name or label starts with this value | | `filter` | string | No | Okta filter expression (e.g., status eq "ACTIVE") | | `includeNonDeleted` | boolean | No | Also return inactive applications. Deleted applications stay excluded either way (default: false) | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of applications to return (max: 200) | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------- | | `apps` | array | Array of Okta applications | | ↳ `id` | string | Application ID | | ↳ `name` | string | Application name (the app template key) | | ↳ `label` | string | Application display label | | ↳ `status` | string | Application status (ACTIVE, INACTIVE, DELETED) | | ↳ `signOnMode` | string | Sign-on mode (SAML\_2\_0, OPENID\_CONNECT, BOOKMARK, etc.) | | ↳ `features` | array | Enabled provisioning features | | ↳ `created` | string | Creation timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | `count` | number | Number of applications returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more applications are available | | `success` | boolean | Operation success status | ### Get Application from Okta [#get-application-from-okta] Retrieve a single Okta application by ID, including its sign-on mode, status, enabled provisioning features, and configuration objects. #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to look up | #### Output [#output-33] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------- | | `id` | string | Application ID | | `name` | string | Application name (the app template key) | | `label` | string | Application display label | | `status` | string | Application status (ACTIVE, INACTIVE, DELETED) | | `signOnMode` | string | Sign-on mode | | `features` | array | Enabled provisioning features | | `created` | string | Creation timestamp | | `lastUpdated` | string | Last update timestamp | | `accessibility` | json | Access settings for the app | | ↳ `errorRedirectUrl` | string | Custom error page URL | | ↳ `loginRedirectUrl` | string | Custom login page URL | | ↳ `selfService` | boolean | Whether users can self-assign the app | | `visibility` | json | Visibility settings for the app | | ↳ `appLinks` | json | Map of app link name to whether it appears on the End-User Dashboard | | ↳ `autoLaunch` | boolean | Signs in to the app automatically when the user signs in to Okta | | ↳ `autoSubmitToolbar` | boolean | Signs in automatically when the user lands on the sign-in page | | ↳ `hide` | json | Which end-user apps hide this app | | ↳ `iOS` | boolean | Hidden in Okta Mobile | | ↳ `web` | boolean | Hidden on the Okta End-User Dashboard | | `settings` | json | Application settings. Okta types these per app kind, so settings.app differs between a SAML, OIDC, bookmark, or SWA app | | `profile` | json | Application profile attributes. Okta accepts any valid JSON schema here, so the shape is whatever the org configured | | `success` | boolean | Operation success status | ### List Application Users from Okta [#list-application-users-from-okta] List the users assigned to an Okta application, including how each assignment was made and its provisioning sync state. Use this to audit who has access to an app. #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to list assigned users for | | `q` | string | No | Search assigned users whose userName, firstName, lastName, or email starts with this value | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of assigned users to return (default: 50, max: 500) | #### Output [#output-34] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------------------- | | `appUsers` | array | Array of application user assignments | | ↳ `id` | string | Okta user ID | | ↳ `externalId` | string | ID of the user in the downstream application | | ↳ `created` | string | Assignment creation timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `scope` | string | How the assignment was made: USER (direct) or GROUP (inherited) | | ↳ `status` | string | Assignment status | | ↳ `statusChanged` | string | Status change timestamp | | ↳ `passwordChanged` | string | App password change timestamp | | ↳ `syncState` | string | Provisioning sync state | | ↳ `lastSync` | string | Last provisioning sync | | ↳ `userName` | string | Username the user signs in to the application with | | ↳ `profile` | json | App-specific profile attributes, whose shape is set by the app schema | | `count` | number | Number of assignments returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more assignments are available | | `success` | boolean | Operation success status | ### Assign User to Application in Okta [#assign-user-to-application-in-okta] Assign a user to an Okta application, granting them access to it. Applications that require credentials also need the username the user signs in with. #### Input [#input-35] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to assign the user to | | `userId` | string | Yes | Okta user ID to assign | | `scope` | string | No | Assignment scope: USER for a direct assignment, or GROUP | | `appUserName` | string | No | Username the user signs in to the application with. Required by applications that store credentials | #### Output [#output-35] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------------------- | | `id` | string | Okta user ID that was assigned | | `externalId` | string | ID of the user in the downstream application | | `created` | string | Assignment creation timestamp | | `lastUpdated` | string | Last update timestamp | | `scope` | string | Assignment scope (USER or GROUP) | | `status` | string | Assignment status | | `statusChanged` | string | Status change timestamp | | `passwordChanged` | string | App password change timestamp | | `syncState` | string | Provisioning sync state | | `lastSync` | string | Last provisioning sync | | `userName` | string | Username the user signs in to the application with | | `profile` | json | App-specific profile attributes, whose shape is set by the app schema | | `assigned` | boolean | Whether the user was assigned | | `success` | boolean | Operation success status | ### Remove User from Application in Okta [#remove-user-from-application-in-okta] Unassign a user from an Okta application, revoking their access. Destructive and irreversible: the app profile for that user is permanently removed, and if provisioning is enabled the downstream account is deactivated. #### Input [#input-36] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to remove the user from | | `userId` | string | Yes | Okta user ID to unassign | | `sendEmail` | boolean | No | Send a deactivation email to the administrator (default: false) | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `appId` | string | Application ID | | `userId` | string | User unassigned from the application | | `removed` | boolean | Whether the user was unassigned | | `success` | boolean | Operation success status | ### List Application Groups from Okta [#list-application-groups-from-okta] List the groups assigned to an Okta application. Every member of an assigned group inherits access to the app, so this is the starting point for an app access review. #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to list assigned groups for | | `q` | string | No | Search assigned groups whose name starts with this value | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of assigned groups to return (default: 20, range: 20 to 200) | #### Output [#output-37] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------------------------------- | | `appGroups` | array | Array of application group assignments | | ↳ `id` | string | Assigned group ID | | ↳ `priority` | number | Assignment priority, which resolves conflicting profile mappings | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `profile` | json | App-specific profile attributes, whose shape is set by the app schema | | `count` | number | Number of assignments returned | | `nextCursor` | string | Cursor for the next page, or null on the last page | | `hasMore` | boolean | Whether more assignments are available | | `success` | boolean | Operation success status | ### Assign Group to Application in Okta [#assign-group-to-application-in-okta] Assign a group to an Okta application so every member of the group inherits access to it. #### Input [#input-38] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to assign the group to | | `groupId` | string | Yes | Group ID to assign | | `priority` | number | No | Assignment priority, which resolves conflicting profile mappings when a user belongs to several assigned groups | #### Output [#output-38] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------- | | `id` | string | Assigned group ID | | `priority` | number | Assignment priority | | `lastUpdated` | string | Last update timestamp | | `profile` | json | App-specific profile attributes, whose shape is set by the app schema | | `assigned` | boolean | Whether the group was assigned | | `success` | boolean | Operation success status | ### Remove Group from Application in Okta [#remove-group-from-application-in-okta] Unassign a group from an Okta application. Destructive: every member who had access only through this group loses access to the app. #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `appId` | string | Yes | Application ID to remove the group from | | `groupId` | string | Yes | Group ID to unassign | #### Output [#output-39] | Parameter | Type | Description | | --------- | ------- | ------------------------------------- | | `appId` | string | Application ID | | `groupId` | string | Group unassigned from the application | | `removed` | boolean | Whether the group was unassigned | | `success` | boolean | Operation success status | ### List User Roles from Okta [#list-user-roles-from-okta] List the administrator roles assigned to a user. Returns both standard roles and custom role bindings, so you can review who holds privileged access. #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) to list admin roles for | #### Output [#output-40] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------- | | `roles` | array | Array of admin role assignments | | ↳ `id` | string | Role assignment ID, which is the resource set binding ID for a custom role. Pass this to Remove User Role | | ↳ `label` | string | Role label | | ↳ `type` | string | Role type (SUPER\_ADMIN, ORG\_ADMIN, APP\_ADMIN, USER\_ADMIN, HELP\_DESK\_ADMIN, READ\_ONLY\_ADMIN, CUSTOM, etc.) | | ↳ `status` | string | Role status (ACTIVE, INACTIVE) | | ↳ `created` | string | Assignment timestamp | | ↳ `lastUpdated` | string | Last update timestamp | | ↳ `assignmentType` | string | How the role was assigned (USER, GROUP, CLIENT) | | ↳ `role` | string | Custom role ID, present only on custom role assignments | | ↳ `resourceSet` | string | Resource set ID, present only on custom role assignments | | `count` | number | Number of role assignments returned | | `success` | boolean | Operation success status | ### Assign User Role in Okta [#assign-user-role-in-okta] Grant a user an administrator role. Use a standard role type such as USER\_ADMIN or HELP\_DESK\_ADMIN, or CUSTOM together with a custom role ID and a resource set ID. This grants privileged access, so confirm the role is the least privilege that fits. #### Input [#input-41] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) to assign the admin role to | | `roleType` | string | Yes | Role type to assign: SUPER\_ADMIN, ORG\_ADMIN, APP\_ADMIN, USER\_ADMIN, HELP\_DESK\_ADMIN, READ\_ONLY\_ADMIN, API\_ACCESS\_MANAGEMENT\_ADMIN, GROUP\_MEMBERSHIP\_ADMIN, REPORT\_ADMIN, WORKFLOWS\_ADMIN, ACCESS\_CERTIFICATIONS\_ADMIN, ACCESS\_REQUESTS\_ADMIN, or CUSTOM | | `customRoleId` | string | No | Custom role ID. Required when the role type is CUSTOM | | `resourceSetId` | string | No | Resource set ID the custom role applies to. Required when the role type is CUSTOM | | `disableNotifications` | boolean | No | Grant the user third-party admin status, which suppresses Okta admin notifications (default: false) | #### Output [#output-41] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------------------------- | | `id` | string | Role assignment ID, which is what Remove User Role takes | | `label` | string | Role label | | `type` | string | Assigned role type | | `status` | string | Role status | | `created` | string | Assignment timestamp | | `lastUpdated` | string | Last update timestamp | | `assignmentType` | string | How the role was assigned (USER, GROUP, CLIENT) | | `role` | string | Custom role ID, for custom roles | | `resourceSet` | string | Resource set ID, for custom roles | | `assigned` | boolean | Whether the role was assigned | | `success` | boolean | Operation success status | ### Remove User Role in Okta [#remove-user-role-in-okta] Revoke an administrator role from a user. Destructive: the user immediately loses the admin permissions that role granted. Takes the role assignment ID, not the role type, which List User Roles returns as the role id field. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `userId` | string | Yes | Okta user ID (not a login or email) to revoke the admin role from | | `roleAssignmentId` | string | Yes | Role assignment ID to revoke, as returned by List User Roles. For a custom role this is the resource set binding ID | #### Output [#output-42] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------ | | `userId` | string | User the role was revoked from | | `roleAssignmentId` | string | Revoked role assignment ID | | `removed` | boolean | Whether the role was revoked | | `success` | boolean | Operation success status | ### Get System Log Events from Okta [#get-system-log-events-from-okta] Query the Okta System Log for sign-ins, admin changes, and security events. Supports a time window, SCIM filter expressions, keyword search, and cursor pagination for audit and investigation workflows. #### Input [#input-43] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Okta API token for authentication | | `domain` | string | Yes | Okta domain (e.g., dev-123456.okta.com) | | `since` | string | No | Start of the query time window as an ISO 8601 timestamp (default: 7 days before "until"). Ignored when a cursor is supplied in "after", which already encodes the resume position | | `until` | string | No | End of the query time window as an ISO 8601 timestamp (default: now) | | `filter` | string | No | SCIM filter expression (e.g., eventType eq "user.session.start" or outcome.result eq "FAILURE") | | `q` | string | No | Keyword search across the event payload (max 40 characters per keyword, max 10 keywords) | | `sortOrder` | string | No | Sort order: ASCENDING (default) or DESCENDING | | `after` | string | No | Opaque pagination cursor returned as nextCursor by a previous call | | `limit` | number | No | Maximum number of events to return (default: 100, max: 1000) | #### Output [#output-43] | Parameter | Type | Description | | -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `events` | array | Array of System Log events | | ↳ `uuid` | string | Unique event ID | | ↳ `published` | string | Event timestamp | | ↳ `eventType` | string | Event type (e.g., user.session.start, user.account.update\_password) | | ↳ `severity` | string | Event severity (DEBUG, ERROR, INFO, WARN) | | ↳ `legacyEventType` | string | Legacy event type | | ↳ `displayMessage` | string | Human-readable event description | | ↳ `outcomeResult` | string | Event outcome (SUCCESS, FAILURE, CHALLENGE, DENY, etc.) | | ↳ `outcomeReason` | string | Reason for the outcome | | ↳ `actorId` | string | ID of the actor | | ↳ `actorType` | string | Actor type (User, Client, etc.) | | ↳ `actorAlternateId` | string | Actor alternate ID, usually the login | | ↳ `actorDisplayName` | string | Actor display name | | ↳ `clientIpAddress` | string | Client IP address | | ↳ `clientDevice` | string | Client device category (e.g., Computer) | | ↳ `clientZone` | string | Network zone | | ↳ `clientBrowser` | string | Client browser | | ↳ `clientOs` | string | Client operating system | | ↳ `clientCity` | string | Client city | | ↳ `clientState` | string | Client state or region | | ↳ `clientCountry` | string | Client country | | ↳ `authenticationProvider` | string | Authentication provider used | | ↳ `credentialType` | string | Credential type used | | ↳ `externalSessionId` | string | External session ID for correlating events | | ↳ `securityAsOrg` | string | Autonomous system organization | | ↳ `securityIsp` | string | Internet service provider | | ↳ `securityIsProxy` | boolean | Whether the request came through a proxy | | ↳ `transactionId` | string | Transaction ID | | ↳ `transactionType` | string | Transaction type (e.g., WEB, JOB) | | ↳ `targets` | array | Entities the event acted upon | | ↳ `id` | string | Target ID | | ↳ `type` | string | Target type | | ↳ `alternateId` | string | Target alternate ID | | ↳ `displayName` | string | Target display name | | ↳ `debugData` | json | Extra context whose keys depend on the event type. Okta states these keys and values can change between releases, so treat them as a debugging aid rather than a contract | | `count` | number | Number of events returned | | `nextCursor` | string | Cursor to resume from, or null when Okta advertised no next link. On a polling query it stays set on an empty page so the next scheduled run resumes from here rather than replaying from the start | | `hasMore` | boolean | Whether more events are available. A query with no "until" is a polling query, which Okta always answers with a next link even when there are no new events, so this reports false once a page comes back empty | | `success` | boolean | Operation success status | --- # OneDrive (/integrations/onedrive) {/* MANUAL-CONTENT-START:intro */} Use [OneDrive](https://onedrive.live.com) to upload, download, search, and organize files and folders. The actions below also cover metadata, copying or moving items, sharing links, and deletion. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate OneDrive into the workflow. Can create text and Excel files, upload files, download files, list and search files, move or rename files, copy files, create sharing links, and delete files or folders. ## Actions [#actions] ### Upload to OneDrive [#upload-to-onedrive] Upload a file to OneDrive #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `fileName` | string | Yes | The name of the file to upload (e.g., "report.pdf", "data.xlsx") | | `file` | file | No | The file to upload (binary) | | `content` | string | No | The text content to upload (if no file is provided) | | `mimeType` | string | No | The MIME type of the file to create (e.g., text/plain for .txt, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for .xlsx) | | `folderId` | string | No | Folder ID to upload the file to (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M") | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------------------------------------------------------ | | `success` | boolean | Whether the file was uploaded successfully | | `file` | object | The uploaded file object with metadata including id, name, webViewLink, webContentLink, and timestamps | ### Create Folder in OneDrive [#create-folder-in-onedrive] Create a new folder in OneDrive #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------- | | `folderName` | string | Yes | Name of the folder to create (e.g., "My Documents", "Project Files") | | `folderId` | string | No | Parent folder ID to create the folder in (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M") | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------------------------------------------- | | `success` | boolean | Whether the folder was created successfully | | `file` | object | The created folder object with metadata including id, name, webViewLink, and timestamps | ### Download File from OneDrive [#download-file-from-onedrive] Download a file from OneDrive #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file to download (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M") | | `fileName` | string | No | Optional filename override (e.g., "report.pdf", "data.xlsx") | #### Output [#output-2] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### List OneDrive Files [#list-onedrive-files] List files and folders in OneDrive #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `folderId` | string | No | Folder ID to list files from (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M") | | `query` | string | No | Filter files by name prefix (e.g., "report", "invoice\_2024") | | `pageSize` | number | No | Maximum number of files to return (e.g., 10, 50, 100) | | `pageToken` | string | No | Continuation URL from a previous response's nextPageToken, used to fetch the next page | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------- | | `success` | boolean | Whether files were listed successfully | | `files` | array | Array of file and folder objects with metadata | | `nextPageToken` | string | Token for retrieving the next page of results (optional) | ### Search OneDrive Files [#search-onedrive-files] Search for files and folders across OneDrive by name, metadata, or content (recursive) #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `query` | string | No | Search text matched against file name, metadata, and content. Not required when paginating with pageToken | | `pageSize` | number | No | Maximum number of results to return (e.g., 10, 50, 100) | | `pageToken` | string | No | Continuation URL from a previous response's nextPageToken, used to fetch the next page | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------- | | `success` | boolean | Whether the search completed successfully | | `files` | array | Array of file and folder objects matching the search query | | `nextPageToken` | string | Token for retrieving the next page of results (optional) | ### Get OneDrive Item Metadata [#get-onedrive-item-metadata] Get metadata for a specific OneDrive file or folder by ID, or the drive root #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `fileId` | string | No | The ID of the file or folder to retrieve (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M"). Leave empty to get the drive root folder | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------------------------------------------- | | `success` | boolean | Whether the item metadata was retrieved | | `file` | object | The file or folder metadata, including id, name, webViewLink, size, and timestamps | ### Get OneDrive Info [#get-onedrive-info] Get information about the OneDrive drive, including storage quota #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------------------------------------- | | `success` | boolean | Whether the drive info was retrieved | | `driveId` | string | The ID of the drive | | `driveType` | string | The type of drive (e.g., "personal", "business") | | `webUrl` | string | URL to the drive in the browser | | `owner` | string | Display name of the drive owner | | `quota` | object | Storage quota information in bytes (total, used, remaining, deleted, state) | ### Move or Rename OneDrive File [#move-or-rename-onedrive-file] Move a file or folder to a new parent folder, rename it, or both #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file or folder to move or rename | | `destinationFolderId` | string | No | The ID of the destination parent folder (omit to only rename in place) | | `newName` | string | No | The new name for the file or folder (omit to only move) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------------------------- | | `success` | boolean | Whether the move or rename was successful | | `file` | object | The updated file object with its new name and/or parent folder | ### Copy OneDrive File [#copy-onedrive-file] Copy a file or folder to another location within OneDrive #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file or folder to copy | | `destinationFolderId` | string | Yes | The ID of the destination parent folder | | `destinationFileName` | string | No | Optional new name for the copy (defaults to the original name) | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------------------------------------------------------------ | | `success` | boolean | Whether the copy request was accepted | | `sourceFileId` | string | The ID of the file or folder that was copied | | `name` | string | The requested name for the copy, if provided | | `monitorUrl` | string | URL to poll for the status of the asynchronous copy operation (copy completes in the background) | ### Create OneDrive Sharing Link [#create-onedrive-sharing-link] Create a view or edit sharing link for a OneDrive file or folder #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file or folder to share | | `linkType` | string | No | Type of link to create: "view" (read-only), "edit" (read-write), or "embed" | | `linkScope` | string | No | Who can use the link: "anonymous" (anyone), "organization" (tenant members), or "users" (specific people) | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------------ | | `success` | boolean | Whether the sharing link was created successfully | | `link` | object | The created sharing link, including its type, scope, and URL | ### Delete File from OneDrive [#delete-file-from-onedrive] Delete a file or folder from OneDrive #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `fileId` | string | Yes | The ID of the file or folder to delete (e.g., "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36M") | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the file was deleted successfully | | `deleted` | boolean | Confirmation that the file was deleted | | `fileId` | string | The ID of the deleted file | --- # 1Password (/integrations/onepassword) {/* MANUAL-CONTENT-START:intro */} [1Password](https://1password.com/) stores items and secrets in vaults. Use the Connect API or Service Account connection to list vaults, retrieve or change items, download attached files, and resolve secret references. Returned fields and secrets can be used by later workflow steps. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Access and manage secrets stored in 1Password vaults using the Connect API or Service Account SDK. List vaults, retrieve items with their fields and secrets, download attached files, create new items, update existing ones, delete items, and resolve secret references. ## Actions [#actions] ### 1Password List Vaults [#1password-list-vaults] List all vaults accessible by the Connect token or Service Account #### Input [#input] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `filter` | string | No | SCIM filter expression (e.g., name eq "My Vault") | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------- | | `vaults` | array | List of accessible vaults | | ↳ `id` | string | Vault ID | | ↳ `name` | string | Vault name | | ↳ `description` | string | Vault description | | ↳ `attributeVersion` | number | Vault attribute version | | ↳ `contentVersion` | number | Vault content version | | ↳ `items` | number | Number of items in the vault | | ↳ `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | ### 1Password Get Vault [#1password-get-vault] Get details of a specific vault by ID #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------- | | `id` | string | Vault ID | | `name` | string | Vault name | | `description` | string | Vault description | | `attributeVersion` | number | Vault attribute version | | `contentVersion` | number | Vault content version | | `items` | number | Number of items in the vault | | `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | ### 1Password List Items [#1password-list-items] List items in a vault. Returns summaries without field values. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID to list items from | | `filter` | string | No | SCIM filter expression (e.g., title eq "API Key" or tag eq "production") | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------- | | `items` | array | List of items in the vault (summaries without field values) | | ↳ `id` | string | Item ID | | ↳ `title` | string | Item title | | ↳ `vault` | object | Vault reference | | ↳ `id` | string | Vault ID | | ↳ `category` | string | Item category (e.g., LOGIN, API\_CREDENTIAL) | | ↳ `urls` | array | URLs associated with the item | | ↳ `href` | string | URL | | ↳ `label` | string | URL label | | ↳ `primary` | boolean | Whether this is the primary URL | | ↳ `favorite` | boolean | Whether the item is favorited | | ↳ `tags` | array | Item tags | | ↳ `version` | number | Item version number | | ↳ `state` | string | Item state (ARCHIVED, or absent/null when active) | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | | ↳ `lastEditedBy` | string | ID of the last editor | ### 1Password Get Item [#1password-get-item] Get full details of an item including all fields and secrets #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | | `itemId` | string | Yes | The item UUID to retrieve | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `response` | json | Deprecated — kept for backward compatibility with workflows saved before per-operation outputs were added below. Never populated; use the operation-specific outputs instead. | | `vaults` | json | List of accessible vaults \[\{id, name, description, items, type, createdAt, updatedAt}] | | `id` | string | Vault or item ID | | `name` | string | Vault name | | `description` | string | Vault description | | `items` | json | Number of items in the vault (Get Vault) or item summaries \[\{id, title, category, tags, favorite, version, updatedAt}] (List Items) | | `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | `title` | string | Item title | | `category` | string | Item category (e.g., LOGIN, API\_CREDENTIAL, SECURE\_NOTE) | | `vault` | json | Vault reference the item belongs to \{id} | | `fields` | json | Item fields including secrets \[\{id, label, type, purpose, value}] | | `sections` | json | Item sections \[\{id, label}] | | `files` | json | Files attached to the item \[\{id, name, size, section}] — fetch content with Get Item File | | `tags` | json | Item tags | | `urls` | json | URLs associated with the item \[\{href, label, primary}] | | `favorite` | boolean | Whether the item is favorited | | `version` | number | Item version number | | `state` | string | Item state (ARCHIVED, or absent/null when active) | | `lastEditedBy` | string | ID of the last editor | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `success` | boolean | Whether the item was successfully deleted | | `value` | string | The resolved secret value | | `reference` | string | The original secret reference URI | | `file` | file | Downloaded file attachment | ### 1Password Get Item File [#1password-get-item-file] Download the content of a file attached to an item #### Input [#input-4] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | | `itemId` | string | Yes | The item UUID the file is attached to | | `fileId` | string | Yes | The file ID (from the item's "files" array, e.g. via Get Item) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ---- | -------------------------- | | `file` | file | Downloaded file attachment | ### 1Password Create Item [#1password-create-item] Create a new item in a vault #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID to create the item in | | `category` | string | Yes | Item category (e.g., LOGIN, PASSWORD, API\_CREDENTIAL, SECURE\_NOTE, SERVER, DATABASE) | | `title` | string | No | Item title | | `tags` | string | No | Comma-separated list of tags | | `fields` | string | No | JSON array of field objects (e.g., \[\{"label":"username","value":"admin","type":"STRING","purpose":"USERNAME"}]). "purpose" is honored in Connect Server mode; in Service Account mode 1Password infers it from the field label/type instead. | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `response` | json | Deprecated — kept for backward compatibility with workflows saved before per-operation outputs were added below. Never populated; use the operation-specific outputs instead. | | `vaults` | json | List of accessible vaults \[\{id, name, description, items, type, createdAt, updatedAt}] | | `id` | string | Vault or item ID | | `name` | string | Vault name | | `description` | string | Vault description | | `items` | json | Number of items in the vault (Get Vault) or item summaries \[\{id, title, category, tags, favorite, version, updatedAt}] (List Items) | | `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | `title` | string | Item title | | `category` | string | Item category (e.g., LOGIN, API\_CREDENTIAL, SECURE\_NOTE) | | `vault` | json | Vault reference the item belongs to \{id} | | `fields` | json | Item fields including secrets \[\{id, label, type, purpose, value}] | | `sections` | json | Item sections \[\{id, label}] | | `files` | json | Files attached to the item \[\{id, name, size, section}] — fetch content with Get Item File | | `tags` | json | Item tags | | `urls` | json | URLs associated with the item \[\{href, label, primary}] | | `favorite` | boolean | Whether the item is favorited | | `version` | number | Item version number | | `state` | string | Item state (ARCHIVED, or absent/null when active) | | `lastEditedBy` | string | ID of the last editor | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `success` | boolean | Whether the item was successfully deleted | | `value` | string | The resolved secret value | | `reference` | string | The original secret reference URI | | `file` | file | Downloaded file attachment | ### 1Password Replace Item [#1password-replace-item] Replace an entire item with new data (full update) #### Input [#input-6] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | | `itemId` | string | Yes | The item UUID to replace | | `item` | string | Yes | JSON object representing the full item (e.g., \{"vault":\{"id":"..."},"category":"LOGIN","title":"My Item","fields":\[...]}) | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `response` | json | Deprecated — kept for backward compatibility with workflows saved before per-operation outputs were added below. Never populated; use the operation-specific outputs instead. | | `vaults` | json | List of accessible vaults \[\{id, name, description, items, type, createdAt, updatedAt}] | | `id` | string | Vault or item ID | | `name` | string | Vault name | | `description` | string | Vault description | | `items` | json | Number of items in the vault (Get Vault) or item summaries \[\{id, title, category, tags, favorite, version, updatedAt}] (List Items) | | `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | `title` | string | Item title | | `category` | string | Item category (e.g., LOGIN, API\_CREDENTIAL, SECURE\_NOTE) | | `vault` | json | Vault reference the item belongs to \{id} | | `fields` | json | Item fields including secrets \[\{id, label, type, purpose, value}] | | `sections` | json | Item sections \[\{id, label}] | | `files` | json | Files attached to the item \[\{id, name, size, section}] — fetch content with Get Item File | | `tags` | json | Item tags | | `urls` | json | URLs associated with the item \[\{href, label, primary}] | | `favorite` | boolean | Whether the item is favorited | | `version` | number | Item version number | | `state` | string | Item state (ARCHIVED, or absent/null when active) | | `lastEditedBy` | string | ID of the last editor | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `success` | boolean | Whether the item was successfully deleted | | `value` | string | The resolved secret value | | `reference` | string | The original secret reference URI | | `file` | file | Downloaded file attachment | ### 1Password Update Item [#1password-update-item] Update an existing item using JSON Patch operations (RFC6902) #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | | `itemId` | string | Yes | The item UUID to update | | `operations` | string | Yes | JSON array of RFC6902 patch operations (e.g., \[\{"op":"replace","path":"/title","value":"New Title"}]) | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `response` | json | Deprecated — kept for backward compatibility with workflows saved before per-operation outputs were added below. Never populated; use the operation-specific outputs instead. | | `vaults` | json | List of accessible vaults \[\{id, name, description, items, type, createdAt, updatedAt}] | | `id` | string | Vault or item ID | | `name` | string | Vault name | | `description` | string | Vault description | | `items` | json | Number of items in the vault (Get Vault) or item summaries \[\{id, title, category, tags, favorite, version, updatedAt}] (List Items) | | `type` | string | Vault type (USER\_CREATED, PERSONAL, or EVERYONE) | | `title` | string | Item title | | `category` | string | Item category (e.g., LOGIN, API\_CREDENTIAL, SECURE\_NOTE) | | `vault` | json | Vault reference the item belongs to \{id} | | `fields` | json | Item fields including secrets \[\{id, label, type, purpose, value}] | | `sections` | json | Item sections \[\{id, label}] | | `files` | json | Files attached to the item \[\{id, name, size, section}] — fetch content with Get Item File | | `tags` | json | Item tags | | `urls` | json | URLs associated with the item \[\{href, label, primary}] | | `favorite` | boolean | Whether the item is favorited | | `version` | number | Item version number | | `state` | string | Item state (ARCHIVED, or absent/null when active) | | `lastEditedBy` | string | ID of the last editor | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `success` | boolean | Whether the item was successfully deleted | | `value` | string | The resolved secret value | | `reference` | string | The original secret reference URI | | `file` | file | Downloaded file attachment | ### 1Password Delete Item [#1password-delete-item] Delete an item from a vault #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------- | | `connectionMode` | string | No | Connection mode: "service\_account" or "connect" | | `serviceAccountToken` | string | No | 1Password Service Account token (for Service Account mode) | | `apiKey` | string | No | 1Password Connect API token (for Connect Server mode) | | `serverUrl` | string | No | 1Password Connect server URL (for Connect Server mode) | | `vaultId` | string | Yes | The vault UUID | | `itemId` | string | Yes | The item UUID to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the item was successfully deleted | ### 1Password Resolve Secret [#1password-resolve-secret] Resolve a secret reference (op\://vault/item/field) to its value. Service Account mode only. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `connectionMode` | string | No | Connection mode: must be "service\_account" for this operation | | `serviceAccountToken` | string | Yes | 1Password Service Account token | | `secretReference` | string | Yes | Secret reference URI (e.g., op\://vault-name/item-name/field-name or op\://vault-name/item-name/section-name/field-name) | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------ | --------------------------------- | | `value` | string | The resolved secret value | | `reference` | string | The original secret reference URI | --- # Oracle Fusion Financials (/integrations/oracle_fusion_financials) ## Usage Instructions [#usage-instructions] Connect your Oracle Fusion Applications integration user through a reusable saved credential. Read payables invoices and payments; create and update receivables invoices, read their lines and installments, create credit memos, and create and apply receipts. Create, update, and submit expense reports and their expense lines. Read ledgers, journal batches, and ledger balances. Lists return one bounded page at a time. Oracle roles, business-unit access, and business validation still apply. ## Actions [#actions] ### Oracle Fusion Financials Apply Receivables Receipt [#oracle-fusion-financials-apply-receivables-receipt] Apply a standard receipt to a Receivables invoice installment. An omitted amount applies the full open transaction balance. #### Input [#input] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | ---------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesReceiptId` | string | Yes | receivables Receipt Id (exact decimal resource identifier) | | `appliedPaymentScheduleId` | string | Yes | Invoice installment identifier as an exact decimal string | | `amountApplied` | number | No | Amount to apply; omitted means the full open transaction balance | | `calledFrom` | string | No | Caller or process name recorded for audit | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------- | | `result` | string | Oracle action result; success is reported separately | ### Oracle Fusion Financials Approve Receivables Invoice [#oracle-fusion-financials-approve-receivables-invoice] Approve a pending-approval Oracle Fusion receivables invoice. Returns the action result, not a refreshed transaction. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | | `comment` | string | No | Note recorded in the approval audit history | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------- | | `result` | string | Oracle action result; success is reported separately | ### Oracle Fusion Financials Create Expense Line [#oracle-fusion-financials-create-expense-line] Create an Oracle Fusion expense line. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | | `assignmentId` | string | Yes | Assignment Id as an exact integer string | | `orgId` | string | Yes | Org Id as an exact integer string | | `personId` | string | Yes | Person Id as an exact integer string | | `ticketClass` | string | Yes | Class of ticket: BUSINESS or ECONOMY | | `expenseTypeId` | string | No | Expense Type Id as an exact integer string | | `expenseTemplateId` | string | No | Expense Template Id as an exact integer string | | `description` | string | No | Description | | `justification` | string | No | Justification | | `receiptAmount` | number | No | Receipt Amount | | `receiptCurrencyCode` | string | No | Receipt Currency Code | | `receiptDate` | string | No | Receipt Date (YYYY-MM-DD) | | `merchantName` | string | No | Merchant Name | | `startDate` | string | No | Start Date (YYYY-MM-DD) | | `endDate` | string | No | End Date | | `exchangeRate` | number | No | Exchange Rate | | `reimbursementCurrencyCode` | string | No | Reimbursement Currency Code | | `itemizationParentExpenseId` | string | No | Itemization Parent Expense Id as an exact integer string | | `receiptMissingFlag` | boolean | No | Receipt Missing Flag | | `location` | string | No | Location | | `countryCode` | string | No | Country Code | | `expenseCategoryCode` | string | No | Expense Category Code | | `expenseSource` | string | No | Expense Source | | `numberOfDays` | number | No | Number Of Days | | `numberOfAttendees` | number | No | Number Of Attendees | | `tripDistance` | number | No | Trip Distance | | `distanceUnitCode` | string | No | Distance Unit Code | | `ticketClassCode` | string | No | Ticket Class Code | | `ticketNumber` | string | No | Ticket Number | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `expenseLine` | object | Projected expense line | ### Oracle Fusion Financials Create Expense Report [#oracle-fusion-financials-create-expense-report] Create an Oracle Fusion expense report. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | --------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `orgId` | string | Yes | Org Id as an exact integer string | | `personId` | string | No | Person Id as an exact integer string | | `assignmentId` | string | No | Assignment Id as an exact integer string | | `preparerId` | string | No | Preparer Id as an exact integer string | | `purpose` | string | No | Purpose | | `expenseReportNumber` | string | No | Expense Report Number | | `expenseReportDate` | string | No | Expense Report Date (YYYY-MM-DD) | | `reimbursementCurrencyCode` | string | No | Reimbursement Currency Code | | `exchangeRateType` | string | No | Exchange Rate Type | | `paymentMethodCode` | string | No | Payment Method Code | | `overrideApproverId` | string | No | Override Approver Id as an exact integer string | | `unappliedAdvancesJust` | string | No | Unapplied Advances Just | | `unappliedCashAdvReason` | string | No | Unapplied Cash Adv Reason | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `expenseReport` | object | Projected expense report | ### Oracle Fusion Financials Create Receivables Credit Memo [#oracle-fusion-financials-create-receivables-credit-memo] Create Oracle Fusion receivables credit memo. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `businessUnit` | string | Yes | Business Unit | | `transactionNumber` | string | Yes | Transaction Number | | `transactionDate` | string | Yes | Transaction Date (YYYY-MM-DD) | | `accountingDate` | string | No | Accounting Date (YYYY-MM-DD) | | `billToCustomerName` | string | No | Bill To Customer Name | | `billToCustomerNumber` | string | No | Bill To Customer Number | | `billToSite` | string | No | Bill To Site | | `creditMemoCurrency` | string | No | Credit Memo Currency | | `creditMemoStatus` | string | No | Credit Memo Status | | `creditReason` | string | No | Credit Reason | | `freightCreditAmount` | string | No | Freight Credit Amount | | `transactionSource` | string | No | Transaction Source | | `transactionType` | string | No | Transaction Type | | `creditMemoComments` | string | No | Credit Memo Comments | | `conversionRate` | number | No | Conversion Rate | | `conversionRateType` | string | No | Conversion Rate Type | | `conversionRateDate` | string | No | Conversion Rate Date (YYYY-MM-DD) | | `lines` | array | No | Typed lines to create with the receivables credit memo (at most 1000). Use Oracle attribute names; exact integer attributes must be strings. | | `distributions` | array | No | Typed distributions to create with the receivables credit memo (at most 1000). Use Oracle attribute names; exact integer attributes must be strings. | #### Output [#output-4] | Parameter | Type | Description | | ----------------------- | ---- | --------------------------------- | | `receivablesCreditMemo` | json | Projected receivables credit memo | ### Oracle Fusion Financials Create Receivables Invoice [#oracle-fusion-financials-create-receivables-invoice] Create Oracle Fusion receivables invoice. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `businessUnit` | string | No | Business Unit | | `transactionNumber` | string | No | Transaction Number | | `transactionDate` | string | No | Transaction Date (YYYY-MM-DD) | | `accountingDate` | string | No | Accounting Date (YYYY-MM-DD) | | `billToCustomerName` | string | No | Bill To Customer Name | | `billToCustomerNumber` | string | No | Bill To Customer Number | | `billToSite` | string | No | Bill To Site | | `invoiceCurrencyCode` | string | No | Invoice Currency Code | | `invoiceStatus` | string | No | Completion status; must be Complete when creating an invoice (Oracle default: Complete) | | `paymentTerms` | string | No | Payment Terms | | `transactionSource` | string | No | Transaction Source | | `transactionType` | string | No | Transaction Type | | `comments` | string | No | Comments | | `purchaseOrder` | string | No | Purchase Order | | `conversionRateType` | string | No | Conversion Rate Type | | `conversionRate` | number | No | Conversion Rate | | `conversionDate` | string | No | Conversion Date (YYYY-MM-DD) | | `lines` | array | No | Typed lines to create with the receivables invoice (at most 1000). Use Oracle attribute names; exact integer attributes must be strings. | | `distributions` | array | No | Typed distributions to create with the receivables invoice (at most 1000). Use Oracle attribute names; exact integer attributes must be strings. | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------- | | `receivablesInvoice` | json | Projected receivables invoice | ### Oracle Fusion Financials Create Receivables Receipt [#oracle-fusion-financials-create-receivables-receipt] Create Oracle Fusion receivables receipt. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------------------- | ------ | -------- | --------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `amount` | number | Yes | Amount | | `businessUnit` | string | Yes | Business Unit | | `currency` | string | Yes | Currency | | `receiptDate` | string | Yes | Receipt Date (YYYY-MM-DD) | | `receiptMethod` | string | Yes | Receipt Method | | `receiptNumber` | string | No | Receipt Number | | `accountingDate` | string | No | Accounting Date (YYYY-MM-DD) | | `customerAccountNumber` | string | No | Customer Account Number | | `customerName` | string | No | Customer Name | | `customerSite` | string | No | Customer Site | | `comments` | string | No | Comments | | `conversionRate` | number | No | Conversion Rate | | `conversionRateType` | string | No | Conversion Rate Type | | `conversionDate` | string | No | Conversion Date (YYYY-MM-DD) | | `maturityDate` | string | No | Maturity Date (YYYY-MM-DD) | | `structuredPaymentReference` | string | No | Structured Payment Reference | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------- | | `receivablesReceipt` | json | Projected receivables receipt | ### Oracle Fusion Financials Get Expense Line [#oracle-fusion-financials-get-expense-line] Get an Oracle Fusion expense line. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | | `expenseLineUniqId` | string | Yes | Expense Line Uniq Id returned by Oracle; preserve it exactly | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `expenseLine` | object | Projected expense line | ### Oracle Fusion Financials Get Expense Report [#oracle-fusion-financials-get-expense-report] Get an Oracle Fusion expense report. #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `expenseReport` | object | Projected expense report | ### Oracle Fusion Financials Get GL Journal Batch [#oracle-fusion-financials-get-gl-journal-batch] Get an Oracle Fusion gl journal batch. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `glJournalBatchId` | string | Yes | GL Journal Batch Id returned by Oracle; preserve it exactly | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | -------------------------- | | `glJournalBatch` | object | Projected gl journal batch | ### Oracle Fusion Financials Get GL Ledger [#oracle-fusion-financials-get-gl-ledger] Get an Oracle Fusion gl ledger. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `glLedgerId` | string | Yes | GL Ledger Id returned by Oracle; preserve it exactly | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------ | ------------------- | | `glLedger` | object | Projected gl ledger | ### Oracle Fusion Financials Get Payables Invoice [#oracle-fusion-financials-get-payables-invoice] Get one Oracle Fusion Payables invoice by its opaque Oracle resource key. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------ | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `invoiceUniqId` | string | Yes | Opaque invoice key returned by an Oracle Fusion invoice list | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `invoice` | object | The Payables invoice | ### Oracle Fusion Financials Get Payables Invoice Line [#oracle-fusion-financials-get-payables-invoice-line] Get one Oracle Fusion Payables invoice line by its Oracle-derived opaque key. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------ | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `invoiceUniqId` | string | Yes | Opaque invoice key returned by an Oracle Fusion invoice list | | `invoiceLineUniqId` | string | Yes | Opaque invoice-line key returned by Oracle Fusion | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ------------------------- | | `invoiceLine` | object | The Payables invoice line | ### Oracle Fusion Financials Get Payables Payment [#oracle-fusion-financials-get-payables-payment] Get one Oracle Fusion Payables payment by its CheckId. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `checkId` | string | Yes | Oracle payment CheckId as a decimal string | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `payment` | object | The Payables payment | ### Oracle Fusion Financials Get Receivables Credit Memo [#oracle-fusion-financials-get-receivables-credit-memo] Get Oracle Fusion receivables credit memo. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesCreditMemoId` | string | Yes | receivables Credit Memo Id (exact decimal resource identifier) | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ---- | --------------------------------- | | `receivablesCreditMemo` | json | Projected receivables credit memo | ### Oracle Fusion Financials Get Receivables Invoice [#oracle-fusion-financials-get-receivables-invoice] Get Oracle Fusion receivables invoice. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------- | | `receivablesInvoice` | json | Projected receivables invoice | ### Oracle Fusion Financials Get Receivables Invoice Installment [#oracle-fusion-financials-get-receivables-invoice-installment] Get Oracle Fusion receivables invoice installment. #### Input [#input-16] | Parameter | Type | Required | Description | | --------------------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | | `receivablesInvoiceInstallmentId` | string | Yes | receivables Invoice Installment Id (exact decimal resource identifier) | #### Output [#output-16] | Parameter | Type | Description | | ------------------------------- | ---- | ----------------------------------------- | | `receivablesInvoiceInstallment` | json | Projected receivables invoice installment | ### Oracle Fusion Financials Get Receivables Invoice Line [#oracle-fusion-financials-get-receivables-invoice-line] Get Oracle Fusion receivables invoice line. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | --------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | | `receivablesInvoiceLineId` | string | Yes | receivables Invoice Line Id (exact decimal resource identifier) | #### Output [#output-17] | Parameter | Type | Description | | ------------------------ | ---- | ---------------------------------- | | `receivablesInvoiceLine` | json | Projected receivables invoice line | ### Oracle Fusion Financials Get Receivables Receipt [#oracle-fusion-financials-get-receivables-receipt] Get Oracle Fusion receivables receipt. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesReceiptId` | string | Yes | receivables Receipt Id (exact decimal resource identifier) | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------- | | `receivablesReceipt` | json | Projected receivables receipt | ### Oracle Fusion Financials List Expense Lines [#oracle-fusion-financials-list-expense-lines] List one bounded page of Oracle Fusion expense lines. #### Input [#input-19] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | #### Output [#output-19] | Parameter | Type | Description | | --------- | ----- | -------------------------- | | `items` | array | Expense Lines in this page | ### Oracle Fusion Financials List Expense Reports [#oracle-fusion-financials-list-expense-reports] List one bounded page of Oracle Fusion expense reports. #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-20] | Parameter | Type | Description | | --------- | ----- | ---------------------------- | | `items` | array | Expense Reports in this page | ### Oracle Fusion Financials List GL Balances [#oracle-fusion-financials-list-gl-balances] List one bounded page of Oracle Fusion gl balances. #### Input [#input-21] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | AccountBalanceFinder accepts ledgerName, accountCombination, accountingPeriod, currency, amountType, currencyType, and scenario. AccountGroupBalanceFinder accepts accountGroupName, accountName, accountingPeriod, currency, and ledgerName. | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-21] | Parameter | Type | Description | | --------- | ----- | ------------------------ | | `items` | array | GL Balances in this page | ### Oracle Fusion Financials List GL Journal Batches [#oracle-fusion-financials-list-gl-journal-batches] List one bounded page of Oracle Fusion gl journal batches. #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-22] | Parameter | Type | Description | | --------- | ----- | ------------------------------- | | `items` | array | GL Journal Batches in this page | ### Oracle Fusion Financials List GL Ledgers [#oracle-fusion-financials-list-gl-ledgers] List one bounded page of Oracle Fusion gl ledgers. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-23] | Parameter | Type | Description | | --------- | ----- | ----------------------- | | `items` | array | GL Ledgers in this page | ### Oracle Fusion Financials List Payables Invoice Lines [#oracle-fusion-financials-list-payables-invoice-lines] List one page of lines for an Oracle Fusion Payables invoice. #### Input [#input-24] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `invoiceUniqId` | string | Yes | Opaque invoice key returned by an Oracle Fusion invoice list | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-24] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------- | | `items` | array | Invoice lines in this page | | `count` | number | Number of records in this page | | `hasMore` | boolean | Whether Oracle has another page | | `limit` | number | Page size returned by Oracle | | `offset` | number | Offset returned by Oracle | | `totalResults` | number | Estimated total matching records when requested | ### Oracle Fusion Financials List Payables Invoices [#oracle-fusion-financials-list-payables-invoices] List one page of Oracle Fusion Payables invoices using a fixed safe projection. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | | `effectiveDate` | string | No | Effective date in YYYY-MM-DD format | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------- | | `items` | array | Payables invoices in this page | | `count` | number | Number of records in this page | | `hasMore` | boolean | Whether Oracle has another page | | `limit` | number | Page size returned by Oracle | | `offset` | number | Offset returned by Oracle | | `totalResults` | number | Estimated total matching records when requested | ### Oracle Fusion Financials List Payables Payments [#oracle-fusion-financials-list-payables-payments] List one page of Oracle Fusion Payables payments using a fixed safe projection. #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-26] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------- | | `items` | array | Payables payments in this page | | `count` | number | Number of records in this page | | `hasMore` | boolean | Whether Oracle has another page | | `limit` | number | Page size returned by Oracle | | `offset` | number | Offset returned by Oracle | | `totalResults` | number | Estimated total matching records when requested | ### Oracle Fusion Financials List Receivables Credit Memos [#oracle-fusion-financials-list-receivables-credit-memos] List one page of Oracle Fusion receivables credit memos. #### Input [#input-27] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-27] | Parameter | Type | Description | | --------- | ----- | ------------------------------------- | | `items` | array | receivables credit memos in this page | ### Oracle Fusion Financials List Receivables Invoice Installments [#oracle-fusion-financials-list-receivables-invoice-installments] List one page of Oracle Fusion receivables invoice installments. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | #### Output [#output-28] | Parameter | Type | Description | | --------- | ----- | --------------------------------------------- | | `items` | array | receivables invoice installments in this page | ### Oracle Fusion Financials List Receivables Invoice Lines [#oracle-fusion-financials-list-receivables-invoice-lines] List one page of Oracle Fusion receivables invoice lines. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | #### Output [#output-29] | Parameter | Type | Description | | --------- | ----- | -------------------------------------- | | `items` | array | receivables invoice lines in this page | ### Oracle Fusion Financials List Receivables Invoices [#oracle-fusion-financials-list-receivables-invoices] List one page of Oracle Fusion receivables invoices. #### Input [#input-30] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-30] | Parameter | Type | Description | | --------- | ----- | --------------------------------- | | `items` | array | receivables invoices in this page | ### Oracle Fusion Financials List Receivables Receipts [#oracle-fusion-financials-list-receivables-receipts] List one page of Oracle Fusion receivables receipts. #### Input [#input-31] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `q` | string | No | Oracle REST Framework q filter expression | | `finder` | string | No | Oracle predefined finder expression | | `orderBy` | string | No | Comma-separated Oracle attributes with optional :asc or :desc direction | | `limit` | number | No | Records in this page (integer from 1 to 100; default 50) | | `offset` | number | No | Zero-based record offset (non-negative integer; default 0) | | `totalResults` | boolean | No | Ask Oracle to include its estimated total matching row count | #### Output [#output-31] | Parameter | Type | Description | | --------- | ----- | --------------------------------- | | `items` | array | receivables receipts in this page | ### Oracle Fusion Financials Submit Expense Report [#oracle-fusion-financials-submit-expense-report] Submit an Oracle Fusion expense report. Only result S means submission without errors; other results are returned as business failures. #### Input [#input-32] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | #### Output [#output-32] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `result` | string | Documented Oracle action result | ### Oracle Fusion Financials Update Expense Line [#oracle-fusion-financials-update-expense-line] Update an Oracle Fusion expense line. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | | `expenseLineUniqId` | string | Yes | Expense Line Uniq Id returned by Oracle; preserve it exactly | | `assignmentId` | string | No | Assignment Id as an exact integer string | | `orgId` | string | No | Org Id as an exact integer string | | `personId` | string | No | Person Id as an exact integer string | | `ticketClass` | string | No | Class of ticket: BUSINESS or ECONOMY | | `expenseTypeId` | string | No | Expense Type Id as an exact integer string | | `expenseTemplateId` | string | No | Expense Template Id as an exact integer string | | `description` | string | No | Description | | `justification` | string | No | Justification | | `receiptAmount` | number | No | Receipt Amount | | `receiptCurrencyCode` | string | No | Receipt Currency Code | | `receiptDate` | string | No | Receipt Date (YYYY-MM-DD) | | `merchantName` | string | No | Merchant Name | | `startDate` | string | No | Start Date (YYYY-MM-DD) | | `endDate` | string | No | End Date | | `exchangeRate` | number | No | Exchange Rate | | `reimbursementCurrencyCode` | string | No | Reimbursement Currency Code | | `itemizationParentExpenseId` | string | No | Itemization Parent Expense Id as an exact integer string | | `receiptMissingFlag` | boolean | No | Receipt Missing Flag | | `location` | string | No | Location | | `countryCode` | string | No | Country Code | | `expenseCategoryCode` | string | No | Expense Category Code | | `expenseSource` | string | No | Expense Source | | `numberOfDays` | number | No | Number Of Days | | `numberOfAttendees` | number | No | Number Of Attendees | | `tripDistance` | number | No | Trip Distance | | `distanceUnitCode` | string | No | Distance Unit Code | | `ticketClassCode` | string | No | Ticket Class Code | | `ticketNumber` | string | No | Ticket Number | #### Output [#output-33] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `expenseLine` | object | Projected expense line | ### Oracle Fusion Financials Update Expense Report [#oracle-fusion-financials-update-expense-report] Update an Oracle Fusion expense report. #### Input [#input-34] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | -------------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `expenseReportUniqId` | string | Yes | Expense Report Uniq Id returned by Oracle; preserve it exactly | | `orgId` | string | No | Org Id as an exact integer string | | `purpose` | string | No | Purpose | | `expenseReportDate` | string | No | Expense Report Date (YYYY-MM-DD) | | `reimbursementCurrencyCode` | string | No | Reimbursement Currency Code | | `exchangeRateType` | string | No | Exchange Rate Type | | `paymentMethodCode` | string | No | Payment Method Code | | `overrideApproverId` | string | No | Override Approver Id as an exact integer string | | `unappliedAdvancesJust` | string | No | Unapplied Advances Just | | `unappliedCashAdvReason` | string | No | Unapplied Cash Adv Reason | #### Output [#output-34] | Parameter | Type | Description | | --------------- | ------ | ------------------------ | | `expenseReport` | object | Projected expense report | ### Oracle Fusion Financials Update Receivables Invoice [#oracle-fusion-financials-update-receivables-invoice] Update Oracle Fusion receivables invoice. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `oauthCredential` | string | Yes | Oracle Fusion Cloud Financials service-account credential | | `receivablesInvoiceId` | string | Yes | receivables Invoice Id (exact decimal resource identifier) | | `invoiceStatus` | string | No | Completion status: Complete, Incomplete, or Frozen | | `paymentTerms` | string | No | Payment Terms | | `transactionDate` | string | No | Transaction Date (YYYY-MM-DD) | #### Output [#output-35] | Parameter | Type | Description | | -------------------- | ---- | ----------------------------- | | `receivablesInvoice` | json | Projected receivables invoice | --- # Oracle Database (/integrations/oracledb) ## Usage Instructions [#usage-instructions] Query, modify, and inspect Oracle Database over Oracle Net using TCP or verified TCPS, with optional in-memory PEM wallet authentication. ## Actions [#actions] ### Oracle Database Query [#oracle-database-query] Run one read-only Oracle SELECT statement or ordinary SELECT CTE with optional named IN binds #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `query` | string | Yes | One Oracle SELECT statement without a trailing semicolon. Mutating statements, SELECT FOR UPDATE, sequence changes, database links, comments, hints, and PL/SQL are rejected. | | `binds` | json | No | Optional named IN bind values keyed without the colon prefix; values may be strings, finite numbers, or null | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `message` | string | Operation status message | | `rows` | array | Normalized rows returned by the statement, when it produces a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | True when rows were dropped to stay inside the row or byte ceiling | | `truncationReason` | string | The response ceiling that was reached | ### Oracle Database Insert [#oracle-database-insert] Insert one JSON object as a row in an Oracle Database table using bound values #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `schema` | string | No | Optional exact, case-sensitive owning schema; omit it to use the connection current schema | | `table` | string | Yes | Exact, case-sensitive Oracle table name; use the name returned by introspection | | `data` | json | Yes | JSON object whose keys are exact, case-sensitive column names and whose values are inserted with IN binds | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `message` | string | Operation status message | | `rows` | array | Normalized rows returned by the statement, when it produces a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | True when rows were dropped to stay inside the row or byte ceiling | | `truncationReason` | string | The response ceiling that was reached | ### Oracle Database Update [#oracle-database-update] Update Oracle Database rows selected by a required WHERE expression, using bound values for changed columns #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `schema` | string | No | Optional exact, case-sensitive owning schema; omit it to use the connection current schema | | `table` | string | Yes | Exact, case-sensitive Oracle table name; use the name returned by introspection | | `data` | json | Yes | JSON object whose keys are exact, case-sensitive column names and whose values are assigned with IN binds | | `where` | string | Yes | Non-empty WHERE expression without the WHERE keyword | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `message` | string | Operation status message | | `rows` | array | Normalized rows returned by the statement, when it produces a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | True when rows were dropped to stay inside the row or byte ceiling | | `truncationReason` | string | The response ceiling that was reached | ### Oracle Database Delete [#oracle-database-delete] Delete Oracle Database rows selected by a required WHERE expression #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `schema` | string | No | Optional exact, case-sensitive owning schema; omit it to use the connection current schema | | `table` | string | Yes | Exact, case-sensitive Oracle table name; use the name returned by introspection | | `where` | string | Yes | Non-empty WHERE expression without the WHERE keyword | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `message` | string | Operation status message | | `rows` | array | Normalized rows returned by the statement, when it produces a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | True when rows were dropped to stay inside the row or byte ceiling | | `truncationReason` | string | The response ceiling that was reached | ### Oracle Database Execute [#oracle-database-execute] Execute one allowed Oracle SQL statement: SELECT, INSERT, UPDATE, DELETE, MERGE, CREATE, ALTER, DROP, or EXPLAIN PLAN #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `query` | string | Yes | One allowed Oracle SQL statement without a trailing semicolon. SELECT FOR UPDATE, PL/SQL, transaction control, OUT binds, RETURNING INTO, and stacked statements are rejected. | | `binds` | json | No | Optional named IN bind values keyed without the colon prefix; values may be strings, finite numbers, or null. Oracle does not allow bind variables in DDL. | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `message` | string | Operation status message | | `rows` | array | Normalized rows returned by the statement, when it produces a result set | | `rowCount` | number | Number of rows returned or affected | | `truncated` | boolean | True when rows were dropped to stay inside the row or byte ceiling | | `truncationReason` | string | The response ceiling that was reached | ### Oracle Database Introspect [#oracle-database-introspect] Inspect accessible Oracle tables, columns, keys, non-primary-key indexes, and table-owning schemas using ALL\_\* dictionary views #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Saved Oracle Database connection | | `connectionTimeout` | number | No | Connection timeout in milliseconds (default: 15000) | | `schema` | string | No | Optional schema to inspect; omit it to inspect CURRENT\_SCHEMA and list table owners visible through ALL\_TABLES | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `tables` | array | Accessible table schemas with columns, keys, and indexes | | ↳ `name` | string | Table name | | ↳ `schema` | string | Owning Oracle schema | | ↳ `columns` | array | Table columns in ordinal position order | | ↳ `name` | string | Column name | | ↳ `type` | string | Oracle data type, including length or precision | | ↳ `nullable` | boolean | Whether the column allows NULL values | | ↳ `default` | string | Default value expression | | ↳ `isPrimaryKey` | boolean | Whether the column is part of the primary key | | ↳ `isForeignKey` | boolean | Whether the column is a foreign key | | ↳ `references` | object | Cross-schema foreign key reference information | | ↳ `schema` | string | Referenced schema name | | ↳ `table` | string | Referenced table name | | ↳ `column` | string | Referenced column name | | ↳ `primaryKey` | array | Primary key column names in constraint order | | ↳ `foreignKeys` | array | Foreign key columns declared on the table | | ↳ `column` | string | Local column name | | ↳ `referencesSchema` | string | Referenced schema name | | ↳ `referencesTable` | string | Referenced table name | | ↳ `referencesColumn` | string | Referenced column name | | ↳ `indexes` | array | Non-primary-key indexes on the table | | ↳ `name` | string | Index name | | ↳ `columns` | array | Indexed columns in column-position order | | ↳ `unique` | boolean | Whether the index is declared UNIQUE | | `schemas` | array | Table-owning schemas visible through ALL\_TABLES, plus the selected or current schema | --- # Otter.ai (/integrations/otter) ## Usage Instructions [#usage-instructions] Integrate Otter.ai into your workflow to list and read meeting conversations with their summaries, action items, insights, outlines, and transcripts, get audio download links, import recordings, and browse channels and workspace details. Otter can also trigger workflows when a conversation finishes processing or is shared. Requires an Otter Enterprise workspace. ## Actions [#actions] ### Otter List Conversations [#otter-list-conversations] List Otter conversations for the authenticated user, most recent first, optionally including shared conversations or filtering by channel. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Otter API key | | `includeShared` | boolean | No | Include conversations shared with the user (default false). Automatically true when a channel ID is provided. | | `channelId` | string | No | Only return conversations in this channel. Overrides includeShared. | | `limit` | number | No | Number of conversations per page (1-100) | | `cursor` | string | No | Pagination cursor (nextCursor from a previous response) | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------- | | `conversations` | array | Conversations, most recent first | | ↳ `id` | string | Conversation ID | | ↳ `title` | string | Conversation title | | ↳ `url` | string | URL to view the conversation in Otter | | ↳ `owner` | object | Conversation owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `createdAt` | string | When the conversation was created | | ↳ `processStatus` | object | Processing status of generated data (e.g., "finished"); a field is null when not yet available | | ↳ `abstractSummary` | string | Summary status | | ↳ `actionItem` | string | Action item status | | ↳ `outline` | string | Outline status | | ↳ `calendarGuests` | array | Guests invited to the associated calendar event | | ↳ `name` | string | Guest name | | ↳ `email` | string | Guest email | | ↳ `permission` | string | Guest permission (present in webhook payloads) | | ↳ `sharedEmails` | array | Users or email addresses the conversation is shared with | | ↳ `email` | string | Shared email address | | ↳ `user` | object | Otter user for the email, if any | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `permission` | string | Share permission (e.g., collaborate) | | ↳ `sharedChannels` | array | Channels the conversation is shared with | | ↳ `channel` | object | The channel | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `memberCount` | number | Number of channel members | | ↳ `owner` | object | Channel owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `discoverability` | string | Channel visibility, such as private or workspace (public) | | ↳ `permission` | string | Share permission (e.g., collaborate) | | ↳ `abstractSummary` | string | AI-generated summary of the conversation | | ↳ `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | | `hasMore` | boolean | Whether more pages are available | | `nextCursor` | string | Cursor for the next page; pass it as Cursor to continue | ### Otter Get Conversation [#otter-get-conversation] Get an Otter conversation with its summary and details, plus any requested action items, insights, outline, and transcript. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Otter API key | | `conversationId` | string | Yes | The Otter conversation ID | | `include` | string | Yes | Comma-separated related data to include: action\_items, insights, outline, transcript, or all (e.g., "insights,transcript") | #### Output [#output-1] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------- | | `id` | string | Conversation ID | | `title` | string | Conversation title | | `url` | string | URL to view the conversation in Otter | | `owner` | object | Conversation owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `createdAt` | string | When the conversation was created | | `processStatus` | object | Processing status of generated data (e.g., "finished"); a field is null when not yet available | | ↳ `abstractSummary` | string | Summary status | | ↳ `actionItem` | string | Action item status | | ↳ `outline` | string | Outline status | | `calendarGuests` | array | Guests invited to the associated calendar event | | ↳ `name` | string | Guest name | | ↳ `email` | string | Guest email | | ↳ `permission` | string | Guest permission (present in webhook payloads) | | `sharedEmails` | array | Users or email addresses the conversation is shared with | | ↳ `email` | string | Shared email address | | ↳ `user` | object | Otter user for the email, if any | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `permission` | string | Share permission (e.g., collaborate) | | `sharedChannels` | array | Channels the conversation is shared with | | ↳ `channel` | object | The channel | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `memberCount` | number | Number of channel members | | ↳ `owner` | object | Channel owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `discoverability` | string | Channel visibility, such as private or workspace (public) | | ↳ `permission` | string | Share permission (e.g., collaborate) | | `abstractSummary` | string | AI-generated summary of the conversation | | `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `actionItems` | array | AI-detected action items (null unless requested with include) | | ↳ `id` | string | Action item ID | | ↳ `text` | string | Action item text | | ↳ `assignee` | object | Assigned user | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `status` | object | Completion status | | ↳ `completed` | boolean | Whether completed | | ↳ `createdAt` | string | When created | | ↳ `lastModifiedAt` | string | When last modified | | ↳ `completedAt` | string | When completed | | `insights` | array | Key topics discussed (null unless requested with include) | | ↳ `topic` | string | Insight topic (e.g., Decisions) | | ↳ `text` | array | Insight points | | `outline` | array | Meeting outline sections (null unless requested with include) | | ↳ `section` | string | Section heading | | ↳ `text` | array | Section points | | `transcript` | object | Full transcript (null unless requested with include) | | ↳ `content` | string | Transcript text | | ↳ `format` | string | Transcript format (e.g., txt) | | `customPrompt` | object | Output of a custom prompt configured in Otter, if any | | ↳ `label` | string | Prompt label | | ↳ `output` | string | Prompt output | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | ### Otter Get Conversation Audio [#otter-get-conversation-audio] Get the MP3 audio download link for an Otter conversation. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Otter API key | | `conversationId` | string | Yes | The Otter conversation ID | #### Output [#output-2] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------- | | `audioUrl` | string | Download URL for the conversation MP3 audio | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | ### Otter Import Recording [#otter-import-recording] Import an audio or video recording into Otter as a new conversation from a publicly reachable file URL. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Otter API key | | `fileUrl` | string | Yes | URL of the recording to import (e.g., [https://example.com/call.mp4](https://example.com/call.mp4)) | | `name` | string | No | Name for the new conversation | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `status` | string | Import status (e.g., success) | | `completedAt` | string | When the import completed | | `file` | string | Name of the imported file | ### Otter List Channels [#otter-list-channels] List the Otter channels available to the authenticated user, in alphabetical order. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | Otter API key | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------------------------- | | `channels` | array | Channels, in alphabetical order by name | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `memberCount` | number | Number of channel members | | ↳ `owner` | object | Channel owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `discoverability` | string | Channel visibility, such as private or workspace (public) | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | ### Otter List Channel Members [#otter-list-channel-members] List the members of an Otter channel, in alphabetical order. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `apiKey` | string | Yes | Otter API key | | `channelId` | string | Yes | The Otter channel ID | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------- | | `members` | array | Channel members, in alphabetical order by name | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | ### Otter Get Workspace [#otter-get-workspace] Get the Otter workspace of the authenticated user, including its ID, name, owner, member count, handle, and type. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------- | | `apiKey` | string | Yes | Otter API key | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------- | | `workspaceId` | number | Workspace ID (the id field); pass it to List Workspace Conversations | | `name` | string | Workspace name | | `owner` | object | Workspace owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `memberCount` | number | Number of workspace members | | `handle` | string | Workspace handle (e.g., a domain such as otter.ai) | | `type` | string | Workspace type (e.g., business) | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | ### Otter List Workspace Conversations [#otter-list-workspace-conversations] List every conversation in an Otter workspace, most recent first. Requires an Otter Super Admin API key in a workspace with Super Admin enabled. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Otter API key of a Super Admin | | `workspaceId` | string | Yes | The Otter workspace ID (the id returned by Get Workspace) | | `limit` | number | No | Number of conversations per page (1-100) | | `cursor` | string | No | Pagination cursor (nextCursor from a previous response) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------------------------------------- | | `conversations` | array | Workspace conversations, most recent first | | ↳ `id` | string | Conversation ID | | ↳ `title` | string | Conversation title | | ↳ `url` | string | URL to view the conversation in Otter | | ↳ `owner` | object | Conversation owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `createdAt` | string | When the conversation was created | | ↳ `processStatus` | object | Processing status of generated data (e.g., "finished"); a field is null when not yet available | | ↳ `abstractSummary` | string | Summary status | | ↳ `actionItem` | string | Action item status | | ↳ `outline` | string | Outline status | | ↳ `calendarGuests` | array | Guests invited to the associated calendar event | | ↳ `name` | string | Guest name | | ↳ `email` | string | Guest email | | ↳ `permission` | string | Guest permission (present in webhook payloads) | | ↳ `sharedEmails` | array | Users or email addresses the conversation is shared with | | ↳ `email` | string | Shared email address | | ↳ `user` | object | Otter user for the email, if any | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `permission` | string | Share permission (e.g., collaborate) | | ↳ `sharedChannels` | array | Channels the conversation is shared with | | ↳ `channel` | object | The channel | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `memberCount` | number | Number of channel members | | ↳ `owner` | object | Channel owner | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `discoverability` | string | Channel visibility, such as private or workspace (public) | | ↳ `permission` | string | Share permission (e.g., collaborate) | | ↳ `abstractSummary` | string | AI-generated summary of the conversation | | ↳ `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `retrievedAt` | string | When Otter retrieved the data (ISO 8601) | | `hasMore` | boolean | Whether more pages are available | | `nextCursor` | string | Cursor for the next page; pass it as Cursor to continue | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Otter Conversation Completed [#otter-conversation-completed] Trigger workflow when an Otter conversation shared to the webhook source finishes processing #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | | `event` | string | Webhook event (e.g., conversation\_completed or conversation\_shared) | | `webhookName` | string | Name of the Otter webhook, if set | | `sourceType` | string | Where the webhook listens: workspace or channel | | `source` | json | The webhook source; for a channel source (id, name, memberCount, owner, discoverability) | | `createdBy` | object | createdBy output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `retrievedAt` | string | When Otter assembled the payload (ISO 8601) | | `id` | string | Conversation ID | | `title` | string | Conversation title | | `url` | string | URL to view the conversation in Otter | | `owner` | object | owner output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `createdAt` | string | When the conversation was created | | `processStatus` | object | processStatus output from the tool | | ↳ `abstractSummary` | string | Summary processing status | | ↳ `actionItem` | string | Action item processing status | | ↳ `outline` | string | Outline processing status | | `calendarGuests` | json | Calendar event guests (name, email, permission) | | `sharedEmails` | json | Users or emails the conversation is shared with (email, user \{id, name, firstName, lastName, email}, permission) | | `sharedChannels` | json | Channels the conversation is shared with (channel \{id, name, memberCount, owner, discoverability}, permission) | | `abstractSummary` | string | AI-generated summary of the conversation | | `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `actionItems` | json | Action items (id, text, assignee \{id, name, firstName, lastName, email}, status \{completed, createdAt, lastModifiedAt, completedAt}) | | `insights` | json | Key topics discussed (topic, text\[]) | | `outline` | json | Meeting outline sections (section, text\[]) | | `transcript` | object | transcript output from the tool | | ↳ `content` | string | Full transcript text | | ↳ `format` | string | Transcript format (e.g., txt) | | `customPrompt` | object | customPrompt output from the tool | | ↳ `label` | string | Custom prompt label | | ↳ `output` | string | Custom prompt output | | `payload` | json | Full raw webhook body as delivered by Otter | *** ### Otter Conversation Shared [#otter-conversation-shared] Trigger workflow when an existing Otter conversation is shared to the webhook source #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | | `event` | string | Webhook event (e.g., conversation\_completed or conversation\_shared) | | `webhookName` | string | Name of the Otter webhook, if set | | `sourceType` | string | Where the webhook listens: workspace or channel | | `source` | json | The webhook source; for a channel source (id, name, memberCount, owner, discoverability) | | `createdBy` | object | createdBy output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `retrievedAt` | string | When Otter assembled the payload (ISO 8601) | | `id` | string | Conversation ID | | `title` | string | Conversation title | | `url` | string | URL to view the conversation in Otter | | `owner` | object | owner output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `createdAt` | string | When the conversation was created | | `processStatus` | object | processStatus output from the tool | | ↳ `abstractSummary` | string | Summary processing status | | ↳ `actionItem` | string | Action item processing status | | ↳ `outline` | string | Outline processing status | | `calendarGuests` | json | Calendar event guests (name, email, permission) | | `sharedEmails` | json | Users or emails the conversation is shared with (email, user \{id, name, firstName, lastName, email}, permission) | | `sharedChannels` | json | Channels the conversation is shared with (channel \{id, name, memberCount, owner, discoverability}, permission) | | `abstractSummary` | string | AI-generated summary of the conversation | | `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `actionItems` | json | Action items (id, text, assignee \{id, name, firstName, lastName, email}, status \{completed, createdAt, lastModifiedAt, completedAt}) | | `insights` | json | Key topics discussed (topic, text\[]) | | `outline` | json | Meeting outline sections (section, text\[]) | | `transcript` | object | transcript output from the tool | | ↳ `content` | string | Full transcript text | | ↳ `format` | string | Transcript format (e.g., txt) | | `customPrompt` | object | customPrompt output from the tool | | ↳ `label` | string | Custom prompt label | | ↳ `output` | string | Custom prompt output | | `payload` | json | Full raw webhook body as delivered by Otter | *** ### Otter Webhook [#otter-webhook] Trigger workflow on any Otter workspace webhook event #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | | `event` | string | Webhook event (e.g., conversation\_completed or conversation\_shared) | | `webhookName` | string | Name of the Otter webhook, if set | | `sourceType` | string | Where the webhook listens: workspace or channel | | `source` | json | The webhook source; for a channel source (id, name, memberCount, owner, discoverability) | | `createdBy` | object | createdBy output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `retrievedAt` | string | When Otter assembled the payload (ISO 8601) | | `id` | string | Conversation ID | | `title` | string | Conversation title | | `url` | string | URL to view the conversation in Otter | | `owner` | object | owner output from the tool | | ↳ `id` | string | User ID | | ↳ `name` | string | Full name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | `createdAt` | string | When the conversation was created | | `processStatus` | object | processStatus output from the tool | | ↳ `abstractSummary` | string | Summary processing status | | ↳ `actionItem` | string | Action item processing status | | ↳ `outline` | string | Outline processing status | | `calendarGuests` | json | Calendar event guests (name, email, permission) | | `sharedEmails` | json | Users or emails the conversation is shared with (email, user \{id, name, firstName, lastName, email}, permission) | | `sharedChannels` | json | Channels the conversation is shared with (channel \{id, name, memberCount, owner, discoverability}, permission) | | `abstractSummary` | string | AI-generated summary of the conversation | | `confJoinUrl` | string | Meeting join URL (Zoom, Google Meet, Microsoft Teams, etc.) | | `actionItems` | json | Action items (id, text, assignee \{id, name, firstName, lastName, email}, status \{completed, createdAt, lastModifiedAt, completedAt}) | | `insights` | json | Key topics discussed (topic, text\[]) | | `outline` | json | Meeting outline sections (section, text\[]) | | `transcript` | object | transcript output from the tool | | ↳ `content` | string | Full transcript text | | ↳ `format` | string | Transcript format (e.g., txt) | | `customPrompt` | object | customPrompt output from the tool | | ↳ `label` | string | Custom prompt label | | ↳ `output` | string | Custom prompt output | | `payload` | json | Full raw webhook body as delivered by Otter | --- # Outlook (/integrations/outlook) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Outlook](https://outlook.office365.com) in Agent Serve to send and draft emails, read and organize messages, manage attachments and folders, and create or update calendar events. Switch to trigger mode to start a workflow when a new email arrives. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Outlook into the workflow. Can send, draft, read, search, reply, forward, move, copy, and delete email; manage mail folders and attachments; and set categories and flags on messages. Can also list, create, update, delete, and respond to calendar events. Can be used in trigger mode to trigger a workflow when a new email is received. ## Actions [#actions] ### Outlook Send [#outlook-send] Send emails using Outlook #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------- | | `to` | string | Yes | Recipient email address (comma-separated for multiple recipients) | | `subject` | string | Yes | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type for the email body (text or html) | | `replyToMessageId` | string | No | Message ID to reply to (for threading) | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `attachments` | file\[] | No | Files to attach to the email | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | ----------------------------- | | `success` | boolean | Email send success status | | `status` | string | Delivery status of the email | | `timestamp` | string | Timestamp when email was sent | | `message` | string | Success or error message | ### Outlook Draft [#outlook-draft] Draft emails using Outlook #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------- | | `to` | string | Yes | Recipient email address | | `subject` | string | Yes | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type for the email body (text or html) | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `attachments` | file\[] | No | Files to attach to the email draft | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------- | | `success` | boolean | Email draft creation success status | | `messageId` | string | Unique identifier for the drafted email | | `status` | string | Draft status of the email | | `subject` | string | Subject of the drafted email | | `timestamp` | string | Timestamp when draft was created | | `message` | string | Success or error message | ### Outlook Read [#outlook-read] Read emails from Outlook #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------------------------------- | | `folder` | string | No | Folder ID to read emails from (e.g., "Inbox", "Drafts", or a folder ID) | | `maxResults` | number | No | Maximum number of emails to retrieve (default: 1, max: 10) | | `includeAttachments` | boolean | No | Whether to download and include email attachments | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `message` | string | Success or status message | | `results` | array | Array of email message objects | | ↳ `id` | string | Unique message identifier | | ↳ `subject` | string | Email subject | | ↳ `bodyPreview` | string | Preview of the message body | | ↳ `body` | object | Message body | | ↳ `contentType` | string | Body content type (text or html) | | ↳ `content` | string | Body content | | ↳ `sender` | object | Sender information | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `from` | object | From address information | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `toRecipients` | array | To recipients | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `ccRecipients` | array | CC recipients | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `receivedDateTime` | string | When the message was received (ISO 8601) | | ↳ `sentDateTime` | string | When the message was sent (ISO 8601) | | ↳ `hasAttachments` | boolean | Whether the message has attachments | | ↳ `isRead` | boolean | Whether the message has been read | | ↳ `importance` | string | Message importance (low, normal, high) | | `attachments` | file\[] | All email attachments flattened from all emails | ### Outlook Search [#outlook-search] Search Outlook messages using a free-text query (Microsoft Graph $search) #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------- | | `query` | string | Yes | Search text matched against the subject, body, sender, and recipients of messages | | `maxResults` | number | No | Maximum number of messages to retrieve (default: 10, max: 25) | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------- | | `message` | string | Success or status message | | `results` | array | Array of matching email message objects | | ↳ `id` | string | Unique message identifier | | ↳ `subject` | string | Email subject | | ↳ `bodyPreview` | string | Preview of the message body | | ↳ `body` | object | Message body | | ↳ `contentType` | string | Body content type (text or html) | | ↳ `content` | string | Body content | | ↳ `sender` | object | Sender information | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `from` | object | From address information | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `toRecipients` | array | To recipients | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `ccRecipients` | array | CC recipients | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `receivedDateTime` | string | When the message was received (ISO 8601) | | ↳ `sentDateTime` | string | When the message was sent (ISO 8601) | | ↳ `hasAttachments` | boolean | Whether the message has attachments | | ↳ `isRead` | boolean | Whether the message has been read | | ↳ `importance` | string | Message importance (low, normal, high) | ### Outlook Reply [#outlook-reply] Reply to the sender of an Outlook message with a comment #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------- | | `messageId` | string | Yes | The ID of the message to reply to | | `comment` | string | No | The reply text to include above the original message | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------- | | `message` | string | Success or error message | | `results` | object | Reply result details | | ↳ `status` | string | Reply status | | ↳ `timestamp` | string | Timestamp when the reply was sent | | ↳ `httpStatus` | number | HTTP status code returned by the API | | ↳ `requestId` | string | Microsoft Graph request-id header for tracing | ### Outlook Reply All [#outlook-reply-all] Reply to all recipients of an Outlook message with a comment #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------- | | `messageId` | string | Yes | The ID of the message to reply to | | `comment` | string | No | The reply text to include above the original message | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------- | | `message` | string | Success or error message | | `results` | object | Reply-all result details | | ↳ `status` | string | Reply status | | ↳ `timestamp` | string | Timestamp when the reply was sent | | ↳ `httpStatus` | number | HTTP status code returned by the API | | ↳ `requestId` | string | Microsoft Graph request-id header for tracing | ### Outlook Forward [#outlook-forward] Forward an existing Outlook message to specified recipients #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `messageId` | string | Yes | The ID of the message to forward | | `to` | string | Yes | Recipient email address(es), comma-separated | | `comment` | string | No | Optional comment to include with the forwarded message | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------------- | | `message` | string | Success or error message | | `results` | object | Delivery result details | | ↳ `status` | string | Delivery status of the email | | ↳ `timestamp` | string | Timestamp when email was forwarded | | ↳ `httpStatus` | number | HTTP status code returned by the API | | ↳ `requestId` | string | Microsoft Graph request-id header for tracing | | ↳ `messageId` | string | Forwarded message ID if provided by API | | ↳ `internetMessageId` | string | RFC 822 Message-ID if provided | ### Outlook Move [#outlook-move] Move emails between Outlook folders #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------- | | `messageId` | string | Yes | ID of the message to move | | `destinationId` | string | Yes | ID of the destination folder | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------- | ---------------------------- | | `success` | boolean | Email move success status | | `message` | string | Success or error message | | `messageId` | string | ID of the moved message | | `newFolderId` | string | ID of the destination folder | ### Outlook Copy [#outlook-copy] Copy an Outlook message to another folder #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------- | | `messageId` | string | Yes | ID of the message to copy | | `destinationId` | string | Yes | ID of the destination folder | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------- | | `success` | boolean | Email copy success status | | `message` | string | Success or error message | | `originalMessageId` | string | ID of the original message | | `copiedMessageId` | string | ID of the copied message | | `destinationFolderId` | string | ID of the destination folder | ### Outlook Mark as Read [#outlook-mark-as-read] Mark an Outlook message as read #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------- | | `messageId` | string | Yes | ID of the message to mark as read | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------- | -------------------------- | | `success` | boolean | Operation success status | | `message` | string | Success or error message | | `messageId` | string | ID of the message | | `isRead` | boolean | Read status of the message | ### Outlook Mark as Unread [#outlook-mark-as-unread] Mark an Outlook message as unread #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `messageId` | string | Yes | ID of the message to mark as unread | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | -------------------------- | | `success` | boolean | Operation success status | | `message` | string | Success or error message | | `messageId` | string | ID of the message | | `isRead` | boolean | Read status of the message | ### Outlook Update Message [#outlook-update-message] Set the categories, follow-up flag, and importance on an Outlook message #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `messageId` | string | Yes | The ID of the message to update | | `categories` | json | No | Array of category names to assign to the message (replaces existing categories; leave empty to keep them unchanged) | | `flagStatus` | string | No | Follow-up flag status: notFlagged, flagged, or complete | | `importance` | string | No | Message importance: low, normal, or high | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------ | | `message` | string | Success or error message | | `results` | object | Updated message details | | ↳ `messageId` | string | ID of the updated message | | ↳ `subject` | string | Subject of the message | | ↳ `categories` | array | Categories assigned to the message | | ↳ `flagStatus` | string | Follow-up flag status of the message | | ↳ `importance` | string | Importance of the message | | ↳ `isRead` | boolean | Whether the message is read | ### Outlook Delete [#outlook-delete] Delete an Outlook message (move to Deleted Items) #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------- | | `messageId` | string | Yes | ID of the message to delete | #### Output [#output-12] | Parameter | Type | Description | | ----------- | ------- | ------------------------- | | `success` | boolean | Operation success status | | `message` | string | Success or error message | | `messageId` | string | ID of the deleted message | | `status` | string | Deletion status | ### Outlook List Folders [#outlook-list-folders] List mail folders in the root of the Outlook mailbox #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------- | | `maxResults` | number | No | Maximum number of folders to retrieve (default: 50, max: 100) | | `includeHiddenFolders` | boolean | No | Whether to include hidden folders in the results | #### Output [#output-13] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------ | | `message` | string | Success or status message | | `results` | array | Array of mail folder objects | | ↳ `id` | string | Unique folder identifier | | ↳ `displayName` | string | Display name of the folder | | ↳ `parentFolderId` | string | Identifier of the parent folder | | ↳ `childFolderCount` | number | Number of immediate child folders | | ↳ `unreadItemCount` | number | Number of unread items in the folder | | ↳ `totalItemCount` | number | Total number of items in the folder | | ↳ `isHidden` | boolean | Whether the folder is hidden | ### Outlook Create Folder [#outlook-create-folder] Create a new mail folder in the root of the Outlook mailbox #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------- | | `displayName` | string | Yes | The display name of the new folder | | `isHidden` | boolean | No | Whether the new folder is hidden (cannot be changed after creation) | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------ | | `message` | string | Success or status message | | `results` | object | The newly created mail folder | | ↳ `id` | string | Unique folder identifier | | ↳ `displayName` | string | Display name of the folder | | ↳ `parentFolderId` | string | Identifier of the parent folder | | ↳ `childFolderCount` | number | Number of immediate child folders | | ↳ `unreadItemCount` | number | Number of unread items in the folder | | ↳ `totalItemCount` | number | Total number of items in the folder | | ↳ `isHidden` | boolean | Whether the folder is hidden | ### Outlook List Attachments [#outlook-list-attachments] List the attachments on an Outlook message (metadata only, without contents) #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------- | | `messageId` | string | Yes | The ID of the message whose attachments to list | #### Output [#output-15] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | array | Array of attachment metadata objects | | ↳ `id` | string | Unique attachment identifier | | ↳ `name` | string | Attachment filename | | ↳ `contentType` | string | MIME type of the attachment | | ↳ `size` | number | Attachment size in bytes | | ↳ `isInline` | boolean | Whether the attachment is rendered inline in the message body | | ↳ `attachmentType` | string | Microsoft Graph attachment type (e.g. #microsoft.graph.fileAttachment) | | ↳ `lastModifiedDateTime` | string | When the attachment was last modified (ISO 8601) | ### Outlook Get Attachment [#outlook-get-attachment] Get a single attachment on an Outlook message, including its file contents #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------- | | `messageId` | string | Yes | The ID of the message that owns the attachment | | `attachmentId` | string | Yes | The ID of the attachment to retrieve | #### Output [#output-16] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | object | Attachment metadata | | ↳ `id` | string | Unique attachment identifier | | ↳ `name` | string | Attachment filename | | ↳ `contentType` | string | MIME type of the attachment | | ↳ `size` | number | Attachment size in bytes | | ↳ `isInline` | boolean | Whether the attachment is rendered inline in the message body | | ↳ `attachmentType` | string | Microsoft Graph attachment type (e.g. #microsoft.graph.fileAttachment) | | ↳ `lastModifiedDateTime` | string | When the attachment was last modified (ISO 8601) | | `attachments` | file\[] | The downloaded file attachment (empty for non-file attachment types) | ### Outlook List Calendar Events [#outlook-list-calendar-events] List Outlook calendar events within a start/end time window #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | ID of the calendar to read. Defaults to the mailbox default calendar. Calendars shared by another user are not supported and may return 403. | | `startDateTime` | string | No | Start of the time window (ISO 8601, e.g. 2025-06-03T00:00:00-08:00). Interpreted as UTC if no offset is given. Required unless paging with pageToken. | | `endDateTime` | string | No | End of the time window (ISO 8601, e.g. 2025-06-10T00:00:00-08:00). Interpreted as UTC if no offset is given. Required unless paging with pageToken. | | `maxResults` | number | No | Maximum number of events to return per page (default: 10, max: 100) | | `orderBy` | string | No | Order of events (default: start/dateTime) | | `pageToken` | string | No | Full @odata.nextLink URL from a previous page to continue paging | #### Output [#output-17] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | array | Array of calendar event objects | | ↳ `id` | string | Unique event identifier | | ↳ `subject` | string | Event subject/title | | ↳ `bodyPreview` | string | Preview of the event body | | ↳ `start` | object | Event start | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `end` | object | Event end | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `isAllDay` | boolean | Whether the event lasts the entire day | | ↳ `location` | string | Event location display name | | ↳ `organizer` | object | Event organizer | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `attendees` | array | Event attendees | | ↳ `name` | string | Attendee display name | | ↳ `address` | string | Attendee email address | | ↳ `type` | string | Attendee type (required, optional, or resource) | | ↳ `response` | string | Attendee response status (none, accepted, declined, tentativelyAccepted, ...) | | ↳ `onlineMeeting` | object | Online-meeting join details, if any | | ↳ `joinUrl` | string | URL to join the online meeting | | ↳ `webLink` | string | URL that opens the event in Outlook on the web | | `nextLink` | string | URL for the next page of results, if any | ### Outlook Get Calendar Event [#outlook-get-calendar-event] Get a single Outlook calendar event by ID #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `eventId` | string | Yes | The ID of the calendar event to retrieve | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | object | The calendar event object | | ↳ `id` | string | Unique event identifier | | ↳ `subject` | string | Event subject/title | | ↳ `bodyPreview` | string | Preview of the event body | | ↳ `start` | object | Event start | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `end` | object | Event end | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `isAllDay` | boolean | Whether the event lasts the entire day | | ↳ `location` | string | Event location display name | | ↳ `organizer` | object | Event organizer | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `attendees` | array | Event attendees | | ↳ `name` | string | Attendee display name | | ↳ `address` | string | Attendee email address | | ↳ `type` | string | Attendee type (required, optional, or resource) | | ↳ `response` | string | Attendee response status (none, accepted, declined, tentativelyAccepted, ...) | | ↳ `onlineMeeting` | object | Online-meeting join details, if any | | ↳ `joinUrl` | string | URL to join the online meeting | | ↳ `webLink` | string | URL that opens the event in Outlook on the web | ### Outlook Create Calendar Event [#outlook-create-calendar-event] Create a new Outlook calendar event #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `calendarId` | string | No | ID of the calendar to create the event in. Defaults to the mailbox default calendar. Calendars shared by another user are not supported and may return 403. | | `subject` | string | Yes | Event subject/title | | `startDateTime` | string | Yes | Start time (ISO 8601, e.g. 2025-06-03T10:00:00-08:00). A date-only value (2025-06-03) for both start and end creates an all-day event. | | `endDateTime` | string | Yes | End time (ISO 8601, e.g. 2025-06-03T11:00:00-08:00). A date-only value (2025-06-04) for both start and end creates an all-day event. | | `timeZone` | string | No | IANA or Windows time zone name (e.g. America/Los\_Angeles). Used for datetimes without a UTC offset. Defaults to UTC. | | `body` | string | No | Event body content | | `contentType` | string | No | Content type for the event body (text or html) | | `location` | string | No | Event location display name | | `attendees` | string | No | Attendee email addresses (comma-separated) | | `isAllDay` | boolean | No | Whether the event lasts the entire day | | `isOnlineMeeting` | boolean | No | Attach an online meeting to the event. The join URL depends on the meeting providers the mailbox allows (Teams on work/school accounts); personal accounts have no supported provider, so onlineMeeting.joinUrl stays null there. | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | object | The created calendar event object | | ↳ `id` | string | Unique event identifier | | ↳ `subject` | string | Event subject/title | | ↳ `bodyPreview` | string | Preview of the event body | | ↳ `start` | object | Event start | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `end` | object | Event end | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `isAllDay` | boolean | Whether the event lasts the entire day | | ↳ `location` | string | Event location display name | | ↳ `organizer` | object | Event organizer | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `attendees` | array | Event attendees | | ↳ `name` | string | Attendee display name | | ↳ `address` | string | Attendee email address | | ↳ `type` | string | Attendee type (required, optional, or resource) | | ↳ `response` | string | Attendee response status (none, accepted, declined, tentativelyAccepted, ...) | | ↳ `onlineMeeting` | object | Online-meeting join details, if any | | ↳ `joinUrl` | string | URL to join the online meeting | | ↳ `webLink` | string | URL that opens the event in Outlook on the web | ### Outlook Update Calendar Event [#outlook-update-calendar-event] Update an existing Outlook calendar event #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `eventId` | string | Yes | The ID of the calendar event to update | | `subject` | string | No | New event subject/title | | `startDateTime` | string | No | New start time (ISO 8601). A date-only value (2025-06-03) converts the event to all-day. | | `endDateTime` | string | No | New end time (ISO 8601). A date-only value (2025-06-04) converts the event to all-day. | | `timeZone` | string | No | IANA or Windows time zone name applied to updated datetimes without a UTC offset. Defaults to UTC. | | `body` | string | No | New event body content | | `contentType` | string | No | Content type for the event body (text or html) | | `location` | string | No | New event location display name | | `attendees` | string | No | Replacement attendee email addresses (comma-separated) | | `isAllDay` | boolean | No | Whether the event lasts the entire day. Setting this true requires also sending startDateTime, since Graph needs midnight bounds. | | `isOnlineMeeting` | boolean | No | Attach an online meeting to the event. The join URL depends on the meeting providers the mailbox allows (Teams on work/school accounts); personal accounts have no supported provider, so onlineMeeting.joinUrl stays null there. | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------- | | `message` | string | Success or status message | | `results` | object | The updated calendar event object | | ↳ `id` | string | Unique event identifier | | ↳ `subject` | string | Event subject/title | | ↳ `bodyPreview` | string | Preview of the event body | | ↳ `start` | object | Event start | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `end` | object | Event end | | ↳ `dateTime` | string | Local date and time (ISO 8601, no offset) | | ↳ `timeZone` | string | IANA or Windows time zone name | | ↳ `isAllDay` | boolean | Whether the event lasts the entire day | | ↳ `location` | string | Event location display name | | ↳ `organizer` | object | Event organizer | | ↳ `name` | string | Display name of the person or entity | | ↳ `address` | string | Email address | | ↳ `attendees` | array | Event attendees | | ↳ `name` | string | Attendee display name | | ↳ `address` | string | Attendee email address | | ↳ `type` | string | Attendee type (required, optional, or resource) | | ↳ `response` | string | Attendee response status (none, accepted, declined, tentativelyAccepted, ...) | | ↳ `onlineMeeting` | object | Online-meeting join details, if any | | ↳ `joinUrl` | string | URL to join the online meeting | | ↳ `webLink` | string | URL that opens the event in Outlook on the web | ### Outlook Delete Calendar Event [#outlook-delete-calendar-event] Delete an Outlook calendar event by ID #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------- | | `eventId` | string | Yes | The ID of the calendar event to delete | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------ | ------------------------- | | `message` | string | Success or status message | | `results` | object | Delete result details | | ↳ `eventId` | string | ID of the deleted event | | ↳ `status` | string | Deletion status | ### Outlook Respond to Calendar Invite [#outlook-respond-to-calendar-invite] Accept, tentatively accept, or decline an Outlook calendar event invitation #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ----------------------------------------------------------- | | `eventId` | string | Yes | The ID of the calendar event to respond to | | `responseType` | string | Yes | The response: accept, tentativelyAccept, or decline | | `comment` | string | No | Optional comment to include with the response | | `sendResponse` | boolean | No | Whether to send a response to the organizer (default: true) | #### Output [#output-22] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------- | | `message` | string | Success or status message | | `results` | object | Response result details | | ↳ `eventId` | string | ID of the event responded to | | ↳ `responseType` | string | The response that was sent | | ↳ `status` | string | Response status | | ↳ `httpStatus` | number | HTTP status code returned by the API | | ↳ `requestId` | string | Microsoft Graph request-id header for tracing | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. These run on a schedule (**polling-based**) — they check for new data rather than receiving push notifications. ### Outlook Email Trigger [#outlook-email-trigger] Triggers when new emails are received in Outlook (requires Microsoft credentials) #### Configuration [#configuration] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | This trigger requires outlook credentials to access your account. | | `folderIds` | string | No | Choose which Outlook folders to monitor. Leave empty to monitor all emails. | | `folderFilterBehavior` | string | Yes | Include only emails from selected folders, or exclude emails from selected folders | | `markAsRead` | boolean | No | Automatically mark emails as read after processing | | `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload | #### Output [#output-23] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------- | | `email` | object | email output from the tool | | ↳ `id` | string | Outlook message ID | | ↳ `conversationId` | string | Outlook conversation ID | | ↳ `subject` | string | Email subject line | | ↳ `from` | string | Sender email address | | ↳ `to` | string | Recipient email address | | ↳ `cc` | string | CC recipients | | ↳ `date` | string | Email date in ISO format | | ↳ `bodyText` | string | Plain text email body | | ↳ `bodyHtml` | string | HTML email body | | ↳ `hasAttachments` | boolean | Whether email has attachments | | ↳ `attachments` | file\[] | Array of email attachments as files (if includeAttachments is enabled) | | ↳ `isRead` | boolean | Whether email is read | | ↳ `folderId` | string | Outlook folder ID where email is located | | ↳ `messageId` | string | Message ID for threading | | ↳ `threadId` | string | Thread ID for conversation threading | | `timestamp` | string | Event timestamp | --- # PagerDuty (/integrations/pagerduty) {/* MANUAL-CONTENT-START:intro */} Use [PagerDuty](https://www.pagerduty.com/) to manage incidents, add investigation notes, and find services, escalation policies, and on-call responders. The REST API uses API-key authentication; Send Event uses Events API v2. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate PagerDuty into your workflow to list, get, create, update, snooze, and merge incidents, add notes and list alerts, look up services and escalation policies, check on-call schedules, list users, and send monitoring events through the Events API v2. ## Actions [#actions] ### PagerDuty List Incidents [#pagerduty-list-incidents] List incidents from PagerDuty with optional filters. #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `statuses` | string | No | Comma-separated statuses to filter (triggered, acknowledged, resolved) | | `urgencies` | string | No | Comma-separated urgencies to filter (high, low) | | `serviceIds` | string | No | Comma-separated service IDs to filter | | `since` | string | No | Start date filter (ISO 8601 format) | | `until` | string | No | End date filter (ISO 8601 format) | | `sortBy` | string | No | Sort field (e.g., created\_at:desc) | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------------------- | | `incidents` | array | Array of incidents | | ↳ `id` | string | Incident ID | | ↳ `incidentNumber` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status | | ↳ `urgency` | string | Incident urgency | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last updated timestamp | | ↳ `serviceName` | string | Service name | | ↳ `serviceId` | string | Service ID | | ↳ `assigneeName` | string | Assignee name | | ↳ `assigneeId` | string | Assignee ID | | ↳ `escalationPolicyName` | string | Escalation policy name | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching incidents (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty Get Incident [#pagerduty-get-incident] Get a single incident from PagerDuty by ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `incidentId` | string | Yes | ID of the incident to fetch | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------- | | `id` | string | Incident ID | | `incidentNumber` | number | Incident number | | `title` | string | Incident title | | `status` | string | Incident status | | `urgency` | string | Incident urgency | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last updated timestamp | | `resolvedAt` | string | Resolution timestamp | | `serviceName` | string | Service name | | `serviceId` | string | Service ID | | `assigneeName` | string | Assignee name | | `assigneeId` | string | Assignee ID | | `escalationPolicyName` | string | Escalation policy name | | `escalationPolicyId` | string | Escalation policy ID | | `incidentKey` | string | De-duplication key | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty Create Incident [#pagerduty-create-incident] Create a new incident in PagerDuty. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | PagerDuty REST API Key | | `fromEmail` | string | Yes | Email address of a valid PagerDuty user | | `title` | string | Yes | Incident title/summary | | `serviceId` | string | Yes | ID of the PagerDuty service | | `urgency` | string | No | Urgency level (high or low) | | `body` | string | No | Detailed description of the incident | | `escalationPolicyId` | string | No | Escalation policy ID to assign | | `assigneeId` | string | No | User ID to assign the incident to | | `incidentKey` | string | No | De-duplication key. A subsequent request with the same service and incident key updates the existing open incident instead of creating a new one | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------- | | `id` | string | Created incident ID | | `incidentNumber` | number | Incident number | | `title` | string | Incident title | | `status` | string | Incident status | | `urgency` | string | Incident urgency | | `createdAt` | string | Creation timestamp | | `serviceName` | string | Service name | | `serviceId` | string | Service ID | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty Update Incident [#pagerduty-update-incident] Update an incident in PagerDuty (acknowledge, resolve, change urgency, etc.). #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `fromEmail` | string | Yes | Email address of a valid PagerDuty user | | `incidentId` | string | Yes | ID of the incident to update | | `status` | string | No | New status (triggered, acknowledged, or resolved) | | `title` | string | No | New incident title | | `urgency` | string | No | New urgency (high or low) | | `escalationLevel` | string | No | Escalation level to escalate to | | `resolution` | string | No | Resolution note added to the incident's log entry. Only used when status is set to resolved | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `id` | string | Incident ID | | `incidentNumber` | number | Incident number | | `title` | string | Incident title | | `status` | string | Updated status | | `urgency` | string | Updated urgency | | `updatedAt` | string | Last updated timestamp | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty Snooze Incident [#pagerduty-snooze-incident] Snooze a triggered PagerDuty incident for a number of seconds, after which it returns to triggered. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `fromEmail` | string | Yes | Email address of a valid PagerDuty user | | `incidentId` | string | Yes | ID of the incident to snooze | | `duration` | string | Yes | Number of seconds to snooze the incident for (1 to 604800) | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------ | | `id` | string | Incident ID | | `incidentNumber` | number | Incident number | | `status` | string | Incident status after snoozing | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty Merge Incidents [#pagerduty-merge-incidents] Merge one or more source incidents into a target incident. Source incidents are resolved and their alerts move to the target. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `fromEmail` | string | Yes | Email address of a valid PagerDuty user | | `targetIncidentId` | string | Yes | ID of the incident that will absorb the source incidents | | `sourceIncidentIds` | string | Yes | Comma-separated IDs of the incidents to merge into the target incident | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `id` | string | Target incident ID | | `incidentNumber` | number | Target incident number | | `title` | string | Target incident title | | `status` | string | Target incident status | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty Add Note [#pagerduty-add-note] Add a note to an existing PagerDuty incident. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `fromEmail` | string | Yes | Email address of a valid PagerDuty user | | `incidentId` | string | Yes | ID of the incident to add the note to | | `content` | string | Yes | Note content text | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------- | | `id` | string | Note ID | | `content` | string | Note content | | `createdAt` | string | Creation timestamp | | `userName` | string | Name of the user who created the note | ### PagerDuty List Incident Alerts [#pagerduty-list-incident-alerts] List the individual alerts attached to a PagerDuty incident. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `incidentId` | string | Yes | ID of the incident whose alerts to list | | `statuses` | string | No | Comma-separated statuses to filter (triggered, resolved) | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------------------- | | `alerts` | array | Array of alerts attached to the incident | | ↳ `id` | string | Alert ID | | ↳ `summary` | string | Alert summary | | ↳ `status` | string | Alert status | | ↳ `severity` | string | Alert severity | | ↳ `createdAt` | string | Creation timestamp | | ↳ `alertKey` | string | De-duplication key | | ↳ `serviceName` | string | Service name | | ↳ `serviceId` | string | Service ID | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching alerts (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty List Services [#pagerduty-list-services] List services from PagerDuty with optional name filter. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `query` | string | No | Filter services by name | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------------------------------- | | `services` | array | Array of services | | ↳ `id` | string | Service ID | | ↳ `name` | string | Service name | | ↳ `description` | string | Service description | | ↳ `status` | string | Service status | | ↳ `escalationPolicyName` | string | Escalation policy name | | ↳ `escalationPolicyId` | string | Escalation policy ID | | ↳ `createdAt` | string | Creation timestamp | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching services (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty Get Service [#pagerduty-get-service] Get a single service from PagerDuty by ID. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `serviceId` | string | Yes | ID of the service to fetch | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------------------ | | `id` | string | Service ID | | `name` | string | Service name | | `description` | string | Service description | | `status` | string | Service status | | `autoResolveTimeout` | number | Seconds before an open incident auto-resolves | | `acknowledgementTimeout` | number | Seconds before an acknowledged incident reverts to triggered | | `createdAt` | string | Creation timestamp | | `lastIncidentTimestamp` | string | Timestamp of the most recent incident | | `escalationPolicyName` | string | Escalation policy name | | `escalationPolicyId` | string | Escalation policy ID | | `htmlUrl` | string | PagerDuty web URL | ### PagerDuty List On-Calls [#pagerduty-list-on-calls] List current on-call entries from PagerDuty. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `escalationPolicyIds` | string | No | Comma-separated escalation policy IDs to filter | | `scheduleIds` | string | No | Comma-separated schedule IDs to filter | | `since` | string | No | Start time filter (ISO 8601 format) | | `until` | string | No | End time filter (ISO 8601 format) | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-10] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------------------------- | | `oncalls` | array | Array of on-call entries | | ↳ `userName` | string | On-call user name | | ↳ `userId` | string | On-call user ID | | ↳ `escalationLevel` | number | Escalation level | | ↳ `escalationPolicyName` | string | Escalation policy name | | ↳ `escalationPolicyId` | string | Escalation policy ID | | ↳ `scheduleName` | string | Schedule name | | ↳ `scheduleId` | string | Schedule ID | | ↳ `start` | string | On-call start time | | ↳ `end` | string | On-call end time | | `total` | number | Total number of matching on-call entries (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty List Escalation Policies [#pagerduty-list-escalation-policies] List escalation policies from PagerDuty with an optional name filter. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `query` | string | No | Filter escalation policies by name | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-11] | Parameter | Type | Description | | ------------------------------ | ------- | -------------------------------------------------------------------------------------------- | | `escalationPolicies` | array | Array of escalation policies | | ↳ `id` | string | Escalation policy ID | | ↳ `name` | string | Escalation policy name | | ↳ `description` | string | Escalation policy description | | ↳ `numLoops` | number | Number of times the policy repeats | | ↳ `onCallHandoffNotifications` | string | Handoff notification setting (if\_has\_services or always) | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching escalation policies (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty List Schedules [#pagerduty-list-schedules] List on-call schedules from PagerDuty with an optional name filter. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `query` | string | No | Filter schedules by name | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------------------- | | `schedules` | array | Array of on-call schedules | | ↳ `id` | string | Schedule ID | | ↳ `name` | string | Schedule name | | ↳ `description` | string | Schedule description | | ↳ `timeZone` | string | Schedule time zone | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching schedules (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty List Users [#pagerduty-list-users] List users from PagerDuty with an optional name/email filter. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | PagerDuty REST API Key | | `query` | string | No | Filter users by name or email | | `limit` | string | No | Maximum number of results (max 100) | | `offset` | string | No | Offset to start pagination search results | #### Output [#output-13] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------------------------ | | `users` | array | Array of users | | ↳ `id` | string | User ID | | ↳ `name` | string | User name | | ↳ `email` | string | User email | | ↳ `role` | string | User role | | ↳ `jobTitle` | string | User job title | | ↳ `timeZone` | string | User preferred time zone | | ↳ `htmlUrl` | string | PagerDuty web URL | | `total` | number | Total number of matching users (null unless explicitly requested by PagerDuty) | | `more` | boolean | Whether more results are available | | `offset` | number | Offset used for this page of results | ### PagerDuty Send Event [#pagerduty-send-event] Send a trigger, acknowledge, or resolve event to PagerDuty Events API v2 using a service integration key. Used to page from monitoring/alerting sources without a PagerDuty user account. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `routingKey` | string | Yes | The Events API v2 integration key (routing key) for the target service | | `eventAction` | string | Yes | Event action: trigger, acknowledge, or resolve | | `summary` | string | No | Brief summary of the event. Required when eventAction is trigger | | `source` | string | No | Unique location of the affected system (e.g. hostname). Required when eventAction is trigger | | `severity` | string | No | Perceived severity: critical, warning, error, or info. Required when eventAction is trigger | | `dedupKey` | string | No | De-duplication key identifying the alert. Required when eventAction is acknowledge or resolve; optional on trigger | | `component` | string | No | Component of the source machine responsible for the event | | `group` | string | No | Logical grouping of components of a service | | `class` | string | No | The class/type of the event | #### Output [#output-14] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `status` | string | Result status ("success" if accepted) | | `message` | string | Description of the result | | `dedupKey` | string | De-duplication key for the alert | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### PagerDuty Incident Acknowledged [#pagerduty-incident-acknowledged] Trigger workflow when an incident is acknowledged in PagerDuty #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-15] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | *** ### PagerDuty Incident Escalated [#pagerduty-incident-escalated] Trigger workflow when an incident is escalated in PagerDuty #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-16] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | *** ### PagerDuty Incident Event [#pagerduty-incident-event] Trigger workflow from any PagerDuty incident event #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-17] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | *** ### PagerDuty Incident Reassigned [#pagerduty-incident-reassigned] Trigger workflow when an incident is reassigned in PagerDuty #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-18] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | *** ### PagerDuty Incident Resolved [#pagerduty-incident-resolved] Trigger workflow when an incident is resolved in PagerDuty #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-19] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | *** ### PagerDuty Incident Triggered [#pagerduty-incident-triggered] Trigger workflow when a new incident is triggered in PagerDuty #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Used to create the webhook subscription. Must be a read/write REST API key. | #### Output [#output-20] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------- | | `event_id` | string | Unique ID of the webhook event | | `event_type` | string | Event type (e.g. incident.triggered, incident.resolved) | | `occurred_at` | string | When the event occurred (ISO 8601) | | `agent` | json | The user or service that caused the event (may be null) | | `incident` | object | incident output from the tool | | ↳ `id` | string | Incident ID | | ↳ `number` | number | Incident number | | ↳ `title` | string | Incident title | | ↳ `status` | string | Incident status (triggered, acknowledged, resolved) | | ↳ `urgency` | string | Incident urgency (high or low) | | ↳ `html_url` | string | Web URL of the incident | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `priority` | string | Priority label (may be null) | | ↳ `service` | object | service output from the tool | | ↳ `id` | string | Service ID | | ↳ `summary` | string | Service name | | ↳ `html_url` | string | Service web URL | | ↳ `escalation_policy` | object | escalation\_policy output from the tool | | ↳ `id` | string | Escalation policy ID | | ↳ `summary` | string | Escalation policy name | | ↳ `html_url` | string | Escalation policy web URL | | ↳ `assignees` | json | Array of assignee references (\{ id, summary, html\_url }) | --- # Parallel AI (/integrations/parallel_ai) {/* MANUAL-CONTENT-START:intro */} [Parallel AI](https://parallel.ai/) is an advanced web search and content extraction platform designed to deliver comprehensive, high-quality results for any query. By leveraging intelligent processing and large-scale data extraction, Parallel AI enables users and agents to access, analyze, and synthesize information from across the web with speed and accuracy. With Parallel AI, you can: * **Search the web intelligently**: Retrieve relevant, up-to-date information from a wide range of sources * **Extract and summarize content**: Get concise, meaningful excerpts from web pages and documents * **Customize search objectives**: Tailor queries to specific needs or questions for targeted results * **Process results at scale**: Handle large volumes of search results with advanced processing options * **Integrate with workflows**: Use Parallel AI within Agent Serve to automate research, content gathering, and knowledge extraction * **Control output granularity**: Specify the number of results and the amount of content per result * **Secure API access**: Protect your searches and data with API key authentication In Agent Serve, the Parallel AI integration empowers your agents to perform web searches and extract content programmatically. This enables powerful automation scenarios such as real-time research, competitive analysis, content monitoring, and knowledge base creation. By connecting Agent Serve with Parallel AI, you unlock the ability for agents to gather, process, and utilize web data as part of your automated workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Parallel AI into the workflow. Can search the web, extract information from URLs, and conduct deep research. ## Actions [#actions] ### Parallel AI Search [#parallel-ai-search] Search the web using Parallel AI. Provides comprehensive search results with intelligent processing and content extraction. #### Input [#input] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `search_queries` | string | Yes | Comma-separated list of concise keyword search queries (3-6 words each). At least one is required | | `objective` | string | No | Natural-language description of the search intent used to rank and excerpt results | | `mode` | string | No | Search mode: turbo, fast, basic, or advanced (default: advanced) | | `max_results` | number | No | Maximum number of results to return (default: 10, max: 20) | | `max_chars_per_result` | number | No | Maximum characters of excerpts per result | | `include_domains` | string | No | Comma-separated list of domains to restrict search results to | | `exclude_domains` | string | No | Comma-separated list of domains to exclude from search results | | `apiKey` | string | Yes | Parallel AI API Key | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------ | | `search_id` | string | Unique identifier for this search request | | `results` | array | Search results with excerpts from relevant pages | | ↳ `url` | string | The URL of the search result | | ↳ `title` | string | The title of the search result | | ↳ `publish_date` | string | Publication date of the page (YYYY-MM-DD) | | ↳ `excerpts` | array | LLM-optimized excerpts from the page | ### Parallel AI Extract [#parallel-ai-extract] Extract targeted information from specific URLs using Parallel AI. Processes provided URLs to pull relevant content based on your objective. #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `urls` | string | Yes | Comma-separated list of URLs to extract information from (up to 20) | | `objective` | string | No | What information to extract from the provided URLs (up to 5,000 characters) | | `full_content` | boolean | No | Include full page content as markdown in addition to excerpts (default: false) | | `apiKey` | string | Yes | Parallel AI API Key | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------------- | | `extract_id` | string | Unique identifier for this extraction request | | `results` | array | Extracted information from the provided URLs | | ↳ `url` | string | The source URL | | ↳ `title` | string | The title of the page | | ↳ `publish_date` | string | Publication date (YYYY-MM-DD) | | ↳ `excerpts` | array | Relevant text excerpts in markdown | | ↳ `full_content` | string | Full page content as markdown (only when requested) | | `errors` | array | URLs that could not be extracted, with the reason | | ↳ `url` | string | The URL that failed | | ↳ `error_type` | string | Category of the failure | | ↳ `http_status_code` | number | HTTP status returned by the page, if any | | ↳ `content` | string | Error detail | ### Parallel AI Deep Research [#parallel-ai-deep-research] Conduct comprehensive deep research across the web using Parallel AI. Synthesizes information from multiple sources with citations. Can take up to 45 minutes to complete. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `input` | string | Yes | Research query or question (up to 15,000 characters) | | `output_format` | string | No | Output format: text for a markdown report with inline citations, auto for a structured JSON object that needs the pro tier or higher (default: text) | | `processor` | string | No | Processing tier: core, core2x, pro, ultra, ultra2x, ultra4x, ultra8x, or a -fast variant (default: pro) | | `include_domains` | string | No | Comma-separated list of domains to restrict research to (source policy) | | `exclude_domains` | string | No | Comma-separated list of domains to exclude from research (source policy) | | `apiKey` | string | Yes | Parallel AI API Key | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | | `status` | string | Task status (completed, failed, running) | | `run_id` | string | Unique ID for this research task | | `message` | string | Status message | | `content` | json | Research findings: a markdown report string for the text output format, or a structured object with query-specific keys for the auto format | | `basis` | array | Citations and sources with reasoning and confidence levels | | ↳ `field` | string | Output field dot-notation path | | ↳ `reasoning` | string | Explanation for the result | | ↳ `citations` | array | Array of sources | | ↳ `url` | string | Source URL | | ↳ `title` | string | Source title | | ↳ `excerpts` | array | Relevant excerpts from the source | | ↳ `confidence` | string | Confidence level (low, medium, high) | --- # People Data Labs (/integrations/peopledatalabs) {/* MANUAL-CONTENT-START:intro */} [People Data Labs](https://www.peopledatalabs.com/) provides person and company data. The Agent Serve block exposes the core REST endpoints so agents can enrich a single contact, look up a company, or run dataset-wide search queries. Use this block to: * **Person Enrich** — resolve a single person by email, phone, LinkedIn URL, or name + company/location, and pull back their work history, contact info, and skills. * **Person Search** — run SQL or Elasticsearch DSL queries against the person dataset to build prospect lists or audience segments. * **Company Enrich** — resolve a single company by name, website, ticker, LinkedIn URL, or PDL ID, and pull back firmographics. * **Company Search** — query the company dataset with SQL or Elasticsearch DSL. * **Autocomplete** — get suggested values for fields like `title`, `skill`, `industry`, or `location` to build well-formed search queries. Authentication uses an API key passed as the `X-Api-Key` header. Get a key from the [PDL dashboard](https://dashboard.peopledatalabs.com/). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Enrich a single person or company with People Data Labs, or search the global person and company datasets with SQL or Elasticsearch DSL. Useful for sales enrichment, contact lookup, and CRM hygiene. ## Actions [#actions] ### PDL Person Enrich [#pdl-person-enrich] Enrich a single person profile using People Data Labs. Match by email, phone, LinkedIn URL, or name + company/location. Returns work history, contact details, location, and skills. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `email` | string | No | Email address to match | | `phone` | string | No | Phone number (E.164 format preferred) | | `profile` | string | No | LinkedIn profile URL | | `lid` | string | No | LinkedIn numeric ID | | `name` | string | No | Full name (use as an alternative to first\_name + last\_name) | | `first_name` | string | No | First name (use with last\_name + company or location) | | `last_name` | string | No | Last name | | `company` | string | No | Company name or website | | `school` | string | No | School name | | `location` | string | No | Location name (city, region, or country) | | `min_likelihood` | number | No | Minimum match likelihood (1-10) | | `required` | string | No | Required-fields expression (e.g., "emails AND job\_title") | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------- | | `matched` | boolean | Whether a person record was matched | | `likelihood` | number | Match likelihood score (1-10), null if no match | | `person` | object | Matched person record | | ↳ `id` | string | PDL person ID | | ↳ `full_name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `birth_year` | number | Birth year | | ↳ `linkedin_url` | string | LinkedIn profile URL | | ↳ `linkedin_username` | string | LinkedIn username | | ↳ `twitter_url` | string | Twitter profile URL | | ↳ `github_url` | string | GitHub profile URL | | ↳ `facebook_url` | string | Facebook profile URL | | ↳ `work_email` | string | Primary work email | | ↳ `personal_emails` | array | Personal email addresses | | ↳ `emails` | array | All known email addresses | | ↳ `phone_numbers` | array | Known phone numbers | | ↳ `mobile_phone` | string | Mobile phone number | | ↳ `job_title` | string | Current job title | | ↳ `job_title_role` | string | Normalized job role | | ↳ `job_title_sub_role` | string | Normalized job sub-role | | ↳ `job_title_levels` | array | Seniority levels (e.g., manager, director) | | ↳ `job_company_name` | string | Current employer name | | ↳ `job_company_website` | string | Current employer website | | ↳ `job_company_industry` | string | Current employer industry | | ↳ `job_company_size` | string | Current employer size band | | ↳ `job_company_linkedin_url` | string | Current employer's LinkedIn URL | | ↳ `job_start_date` | string | Start date at current employer (YYYY-MM) | | ↳ `location_name` | string | Full location name | | ↳ `location_locality` | string | City | | ↳ `location_region` | string | State/region | | ↳ `location_country` | string | Country | | ↳ `location_continent` | string | Continent | | ↳ `industry` | string | Industry | | ↳ `skills` | array | Skills | | ↳ `interests` | array | Interests | | ↳ `experience` | array | Work history entries | | ↳ `education` | array | Education history | ### PDL Person Identify [#pdl-person-identify] Return up to 20 candidate person matches with confidence scores. Useful when you want to see all plausible matches rather than the single best one. Reference: [https://docs.peopledatalabs.com/docs/identify-api-quickstart](https://docs.peopledatalabs.com/docs/identify-api-quickstart) #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `email` | string | No | Email | | `phone` | string | No | Phone number | | `profile` | string | No | LinkedIn profile URL | | `email_hash` | string | No | SHA-256 email hash | | `lid` | string | No | LinkedIn numeric ID | | `name` | string | No | Full name | | `first_name` | string | No | First name | | `middle_name` | string | No | Middle name | | `last_name` | string | No | Last name | | `company` | string | No | Company name or website | | `school` | string | No | School | | `location` | string | No | Location | | `street_address` | string | No | Street address | | `locality` | string | No | City | | `region` | string | No | State/region | | `country` | string | No | Country | | `postal_code` | string | No | Postal code | | `birth_date` | string | No | Birth date (YYYY-MM-DD) | | `data_include` | string | No | Comma-separated fields to include in each match | | `include_if_matched` | boolean | No | Include `matched_on` for each match | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output-1] | Parameter | Type | Description | | --------- | ----- | -------------------------------------------- | | `matches` | array | Up to 20 candidate matches, ordered by score | ### PDL Person Search [#pdl-person-search] Search the People Data Labs person dataset using SQL or Elasticsearch DSL. Returns up to 100 matching records per call. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `sql` | string | No | PDL SQL query (e.g., "SELECT \* FROM person WHERE job\_title='engineer' AND location\_country='united states'") | | `query` | string | No | Elasticsearch DSL query as JSON string. Use either sql or query, not both. | | `size` | number | No | Number of results to return (1-100, default 1) | | `scroll_token` | string | No | Pagination token returned from a prior response | | `dataset` | string | No | Dataset filter: all, resume, email, phone, mobile\_phone, street\_address, consumer\_social, developer (combinable with commas, exclude with `-` prefix) | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------ | ---------------------------------------------------------------- | | `total` | number | Total matching records in dataset | | `scroll_token` | string | Pagination token to fetch the next page; null if no more results | | `results` | array | Person records matching the query | | ↳ `id` | string | PDL person ID | | ↳ `full_name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `gender` | string | Gender | | ↳ `birth_year` | number | Birth year | | ↳ `linkedin_url` | string | LinkedIn profile URL | | ↳ `linkedin_username` | string | LinkedIn username | | ↳ `twitter_url` | string | Twitter profile URL | | ↳ `github_url` | string | GitHub profile URL | | ↳ `facebook_url` | string | Facebook profile URL | | ↳ `work_email` | string | Primary work email | | ↳ `personal_emails` | array | Personal email addresses | | ↳ `emails` | array | All known email addresses | | ↳ `phone_numbers` | array | Known phone numbers | | ↳ `mobile_phone` | string | Mobile phone number | | ↳ `job_title` | string | Current job title | | ↳ `job_title_role` | string | Normalized job role | | ↳ `job_title_sub_role` | string | Normalized job sub-role | | ↳ `job_title_levels` | array | Seniority levels (e.g., manager, director) | | ↳ `job_company_name` | string | Current employer name | | ↳ `job_company_website` | string | Current employer website | | ↳ `job_company_industry` | string | Current employer industry | | ↳ `job_company_size` | string | Current employer size band | | ↳ `job_company_linkedin_url` | string | Current employer's LinkedIn URL | | ↳ `job_start_date` | string | Start date at current employer (YYYY-MM) | | ↳ `location_name` | string | Full location name | | ↳ `location_locality` | string | City | | ↳ `location_region` | string | State/region | | ↳ `location_country` | string | Country | | ↳ `location_continent` | string | Continent | | ↳ `industry` | string | Industry | | ↳ `skills` | array | Skills | | ↳ `interests` | array | Interests | | ↳ `experience` | array | Work history entries | | ↳ `education` | array | Education history | ### PDL Bulk Person Enrich [#pdl-bulk-person-enrich] Enrich up to 100 person records in a single call. Provide a JSON array of request objects, each with a `params` object (and optional `metadata` echoed back). Reference: [https://docs.peopledatalabs.com/docs/bulk-person-enrichment-api](https://docs.peopledatalabs.com/docs/bulk-person-enrichment-api) #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `requests` | string | Yes | JSON array of request objects, max 100. Each item: \{ "params": \{ email \| profile \| first\_name+last\_name+company \| ... }, "metadata": \{...optional...} } | | `required` | string | No | Required-fields expression applied globally to every request | #### Output [#output-3] | Parameter | Type | Description | | --------- | ----- | ---------------------------------------------------------- | | `results` | array | Per-record results in the same order as the input requests | ### PDL Company Enrich [#pdl-company-enrich] Enrich a single company using People Data Labs. Match by name, website, LinkedIn URL, ticker, or PDL ID. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `name` | string | No | Company name | | `website` | string | No | Company website domain | | `profile` | string | No | LinkedIn company URL | | `ticker` | string | No | Stock ticker | | `pdl_id` | string | No | PDL company ID | | `location` | string | No | Company location (helps disambiguate) | | `locality` | string | No | City | | `region` | string | No | State/region | | `country` | string | No | Country | | `min_likelihood` | number | No | Minimum match likelihood (1-10) | | `required` | string | No | Required-fields expression | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------- | | `matched` | boolean | Whether a company record was matched | | `likelihood` | number | Match likelihood score (1-10), null if no match | | `company` | object | Matched company record | | ↳ `id` | string | PDL company ID | | ↳ `name` | string | Company name | | ↳ `display_name` | string | Display name | | ↳ `website` | string | Website domain | | ↳ `ticker` | string | Stock ticker | | ↳ `type` | string | Company type (public, private, etc.) | | ↳ `industry` | string | Industry | | ↳ `size` | string | Employee size band | | ↳ `employee_count` | number | Estimated employee count | | ↳ `founded` | number | Year founded | | ↳ `headline` | string | Company headline/tagline | | ↳ `summary` | string | Company description | | ↳ `linkedin_url` | string | LinkedIn URL | | ↳ `linkedin_id` | string | LinkedIn ID | | ↳ `twitter_url` | string | Twitter URL | | ↳ `facebook_url` | string | Facebook URL | | ↳ `location_name` | string | HQ location name | | ↳ `location_locality` | string | HQ city | | ↳ `location_region` | string | HQ state/region | | ↳ `location_country` | string | HQ country | | ↳ `tags` | array | Company tags | | ↳ `tickers` | array | All stock tickers | ### PDL Company Search [#pdl-company-search] Search the People Data Labs company dataset using SQL or Elasticsearch DSL. Returns up to 100 matching companies per call. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `sql` | string | No | PDL SQL query (e.g., "SELECT \* FROM company WHERE industry='computer software' AND size='51-200'") | | `query` | string | No | Elasticsearch DSL query as JSON string | | `size` | number | No | Number of results to return (1-100, default 1) | | `scroll_token` | string | No | Pagination token returned from a prior response | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output-5] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------------------------------------- | | `total` | number | Total matching companies in dataset | | `scroll_token` | string | Pagination token to fetch the next page; null if no more results | | `results` | array | Company records matching the query | | ↳ `id` | string | PDL company ID | | ↳ `name` | string | Company name | | ↳ `display_name` | string | Display name | | ↳ `website` | string | Website domain | | ↳ `ticker` | string | Stock ticker | | ↳ `type` | string | Company type (public, private, etc.) | | ↳ `industry` | string | Industry | | ↳ `size` | string | Employee size band | | ↳ `employee_count` | number | Estimated employee count | | ↳ `founded` | number | Year founded | | ↳ `headline` | string | Company headline/tagline | | ↳ `summary` | string | Company description | | ↳ `linkedin_url` | string | LinkedIn URL | | ↳ `linkedin_id` | string | LinkedIn ID | | ↳ `twitter_url` | string | Twitter URL | | ↳ `facebook_url` | string | Facebook URL | | ↳ `location_name` | string | HQ location name | | ↳ `location_locality` | string | HQ city | | ↳ `location_region` | string | HQ state/region | | ↳ `location_country` | string | HQ country | | ↳ `tags` | array | Company tags | | ↳ `tickers` | array | All stock tickers | ### PDL Bulk Company Enrich [#pdl-bulk-company-enrich] Enrich up to 100 companies in a single call. Provide a JSON array of request objects, each with a `params` object. Reference: [https://docs.peopledatalabs.com/docs/bulk-company-enrichment-api](https://docs.peopledatalabs.com/docs/bulk-company-enrichment-api) #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `requests` | string | Yes | JSON array of request objects, max 100. Each item: \{ "params": \{ name \| website \| profile \| ticker \| pdl\_id }, "metadata": \{...optional...} } | | `required` | string | No | Required-fields expression applied globally to every request | #### Output [#output-6] | Parameter | Type | Description | | --------- | ----- | ---------------------------------------------------------- | | `results` | array | Per-record results in the same order as the input requests | ### PDL Company Cleaner [#pdl-company-cleaner] Normalize a company string into a canonical company record. Provide at least one of name, website, or profile (LinkedIn URL). #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `name` | string | No | Raw company name to normalize | | `website` | string | No | Company website | | `profile` | string | No | LinkedIn company URL | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------ | | `matched` | boolean | Whether the input was matched to a known company | | `company` | object | Canonical company record | | ↳ `id` | string | PDL company ID | | ↳ `name` | string | Company name | | ↳ `display_name` | string | Display name | | ↳ `website` | string | Website domain | | ↳ `ticker` | string | Stock ticker | | ↳ `type` | string | Company type (public, private, etc.) | | ↳ `industry` | string | Industry | | ↳ `size` | string | Employee size band | | ↳ `employee_count` | number | Estimated employee count | | ↳ `founded` | number | Year founded | | ↳ `headline` | string | Company headline/tagline | | ↳ `summary` | string | Company description | | ↳ `linkedin_url` | string | LinkedIn URL | | ↳ `linkedin_id` | string | LinkedIn ID | | ↳ `twitter_url` | string | Twitter URL | | ↳ `facebook_url` | string | Facebook URL | | ↳ `location_name` | string | HQ location name | | ↳ `location_locality` | string | HQ city | | ↳ `location_region` | string | HQ state/region | | ↳ `location_country` | string | HQ country | | ↳ `tags` | array | Company tags | | ↳ `tickers` | array | All stock tickers | ### PDL Location Cleaner [#pdl-location-cleaner] Normalize a freeform location string into a structured locality/region/country record with coordinates. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | People Data Labs API key | | `location` | string | Yes | Raw location string (e.g., "SF, CA") | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------- | | `matched` | boolean | Whether the input was matched to a known location | | `location` | object | Canonical location record | | ↳ `name` | string | Normalized location name | | ↳ `locality` | string | City | | ↳ `region` | string | State/region | | ↳ `subregion` | string | Subregion (e.g., county) | | ↳ `country` | string | Country | | ↳ `continent` | string | Continent | | ↳ `type` | string | Location type | | ↳ `geo` | string | Latitude,longitude string | ### PDL School Cleaner [#pdl-school-cleaner] Normalize a school string into a canonical school record. Provide at least one of name, website, or profile (LinkedIn URL). #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | People Data Labs API key | | `name` | string | No | Raw school name to normalize | | `website` | string | No | School website | | `profile` | string | No | LinkedIn school URL | #### Output [#output-9] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------- | | `matched` | boolean | Whether the input was matched to a known school | | `school` | object | Canonical school record | | ↳ `id` | string | PDL school ID | | ↳ `name` | string | School name | | ↳ `type` | string | School type (e.g., university, secondary) | | ↳ `website` | string | Website domain | | ↳ `linkedin_url` | string | LinkedIn URL | | ↳ `linkedin_id` | string | LinkedIn ID | | ↳ `facebook_url` | string | Facebook URL | | ↳ `twitter_url` | string | Twitter URL | | ↳ `domain` | string | School domain | | ↳ `location_name` | string | Location name | | ↳ `location_locality` | string | City | | ↳ `location_region` | string | State/region | | ↳ `location_country` | string | Country | | ↳ `location_continent` | string | Continent | ### PDL Autocomplete [#pdl-autocomplete] Get autocomplete suggestions for a PDL field (title, skill, company, industry, location, school, major, role, sub\_role). #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | People Data Labs API key | | `field` | string | Yes | Field to autocomplete: all\_location, class, company, country, industry, location\_name, major, region, role, school, sub\_role, skill, title, website | | `text` | string | No | Search text prefix | | `size` | number | No | Number of suggestions to return (1-100, default 10) | | `titlecase` | boolean | No | Return name fields in title case | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ----- | --------------------------------------------- | | `suggestions` | array | Autocomplete suggestions ordered by frequency | --- # Perplexity (/integrations/perplexity) {/* MANUAL-CONTENT-START:intro */} Use [Perplexity](https://www.perplexity.ai) to generate chat responses with web citations or search the web with filtering. Pass the returned content and source references to downstream blocks as needed. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Perplexity into the workflow. Can generate completions using Perplexity AI chat models or perform web searches with advanced filtering. ## Actions [#actions] ### Perplexity Chat [#perplexity-chat] Generate completions using Perplexity AI chat models #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `systemPrompt` | string | No | System prompt to guide the model behavior | | `content` | string | Yes | The user message content to send to the model | | `model` | string | Yes | Model to use for chat completions (e.g., "sonar", "sonar-pro", "sonar-reasoning") | | `max_tokens` | number | No | Maximum number of tokens to generate (e.g., 1024, 2048, 4096) | | `temperature` | number | No | Sampling temperature between 0 and 1 (e.g., 0.0 for deterministic, 0.7 for creative) | | `apiKey` | string | Yes | Perplexity API key | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------ | ---------------------------------- | | `content` | string | Generated text content | | `model` | string | Model used for generation | | `usage` | object | Token usage information | | ↳ `prompt_tokens` | number | Number of tokens in the prompt | | ↳ `completion_tokens` | number | Number of tokens in the completion | | ↳ `total_tokens` | number | Total number of tokens used | ### Perplexity Search [#perplexity-search] Get ranked search results from Perplexity's continuously refreshed index with advanced filtering and customization options #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `query` | string | Yes | A search query or array of queries (max 5 for multi-query search) | | `max_results` | number | No | Maximum number of search results to return (1-20, default: 10) | | `search_domain_filter` | array | No | List of domains/URLs to limit search results to (e.g., \["github.com", "stackoverflow\.com"], max 20) | | `max_tokens_per_page` | number | No | Maximum number of tokens retrieved from each webpage (default: 1024) | | `country` | string | No | Country code to filter search results (e.g., US, GB, DE) | | `search_recency_filter` | string | No | Filter results by recency (e.g., "hour", "day", "week", "month", "year") | | `search_after_date` | string | No | Include only content published after this date (format: MM/DD/YYYY) | | `search_before_date` | string | No | Include only content published before this date (format: MM/DD/YYYY) | | `apiKey` | string | Yes | Perplexity API key | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------- | | `results` | array | Array of search results | | ↳ `title` | string | Title of the search result | | ↳ `url` | string | URL of the search result | | ↳ `snippet` | string | Brief excerpt or summary of the content | | ↳ `date` | string | Date the page was crawled and added to Perplexity's index | | ↳ `last_updated` | string | Date the page was last updated in Perplexity's index | --- # Persona (/integrations/persona) {/* MANUAL-CONTENT-START:intro */} [Persona](https://withpersona.com/) is an identity verification platform that helps businesses verify who their users are. Persona handles the full identity lifecycle — collecting government IDs, selfies, and documents through hosted verification flows, screening individuals against global watchlists and sanctions lists, and routing edge cases to human review. With Persona, you can: * **Verify identities end to end**: Create inquiries from your verification templates, send customers one-time verification links, and read back collected fields and decision results * **Automate KYC and compliance decisions**: Approve or decline inquiries programmatically, run watchlist, adverse media, and politically-exposed-person screening reports, and monitor cases that need manual review * **Manage your verified user base**: Create and look up accounts, bulk-import existing users from CSV, and keep your user model in sync with Persona via reference IDs * **Keep an audit trail**: Download inquiry summary PDFs and retrieve the underlying verifications and documents behind every decision In Agent Serve, the Persona block lets your agents drive identity verification as part of real workflows. Trigger verification when a customer signs up, route on approval status, screen names against watchlists before activating accounts, post pending reviews to Slack, or archive verification PDFs to cloud storage — all using your Persona API key and templates. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Persona identity verification into the workflow. Manage the full inquiry lifecycle (create, update, approve, decline, review, resume, expire, redact), generate one-time verification links and PDF summaries, manage accounts including CSV bulk import, run watchlist and adverse media reports, review cases, retrieve verifications and documents, and discover inquiry templates. ## Actions [#actions] ### Persona Create Inquiry [#persona-create-inquiry] Create a new identity verification inquiry from an inquiry template. Returns the created inquiry, which can then be completed by the individual via a one-time link. #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryTemplateId` | string | Yes | Inquiry template ID (starts with itmpl\_), inquiry template version ID (starts with itmplv\_), or legacy template ID (starts with tmpl\_) | | `accountId` | string | No | Account ID (starts with act\_) to associate with this inquiry | | `referenceId` | string | No | Reference ID that refers to an entity in your user model. An account is auto-created for it if one does not exist. | | `fields` | json | No | JSON object of field name to field value pairs to pre-fill, as defined by the inquiry template (e.g. \{"name-first": "Jane"}) | | `note` | string | No | Free-form note to attach to the inquiry | | `redirectUri` | string | No | URI to redirect the individual to after completing the inquiry flow | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `inquiry` | object | The created inquiry | ### Persona Get Inquiry [#persona-get-inquiry] Retrieve a single identity verification inquiry by ID, including its status, collected fields, and decision timestamps. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to retrieve (starts with inq\_) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `inquiry` | object | The retrieved inquiry | ### Persona List Inquiries [#persona-list-inquiries] List identity verification inquiries, optionally filtered by status, account ID, reference ID, or creation date range. Results are cursor-paginated. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `status` | string | No | Filter by inquiry status (created, pending, completed, failed, expired, needs\_review, approved, declined) | | `accountId` | string | No | Filter by account ID (starts with act\_); comma-separate multiple IDs | | `referenceId` | string | No | Filter by reference ID | | `createdAtStart` | string | No | Filter to inquiries created at or after this ISO 8601 timestamp | | `createdAtEnd` | string | No | Filter to inquiries created at or before this ISO 8601 timestamp | | `pageSize` | number | No | Number of inquiries to return per page (1-100, default 10) | | `pageAfter` | string | No | Pagination cursor: return inquiries after this inquiry ID | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------------------- | | `inquiries` | array | Inquiries matching the filters | | `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page | ### Persona Update Inquiry [#persona-update-inquiry] Update an inquiry’s note, fields, tags, or redirect URI. Only the provided values are changed. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to update (starts with inq\_) | | `note` | string | No | Free-form note to set on the inquiry | | `fields` | json | No | JSON object of field name to field value pairs to set, as defined by the inquiry template (e.g. \{"name-first": "Jane"}) | | `tags` | array | No | JSON array of tag names to set on the inquiry (e.g. \["vip"]) | | `redirectUri` | string | No | URI to redirect the individual to after completing the inquiry flow | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `inquiry` | object | The updated inquiry | ### Persona Approve Inquiry [#persona-approve-inquiry] Approve an identity verification inquiry. Approving prevents further progress on the inquiry and triggers any associated workflows and webhooks. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to approve (starts with inq\_) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `inquiry` | object | The approved inquiry | ### Persona Decline Inquiry [#persona-decline-inquiry] Decline an identity verification inquiry. Declining prevents further progress on the inquiry and triggers any associated workflows and webhooks. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to decline (starts with inq\_) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `inquiry` | object | The declined inquiry | ### Persona Mark Inquiry for Review [#persona-mark-inquiry-for-review] Mark an identity verification inquiry for manual review, moving it to the needs\_review status. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to mark for review (starts with inq\_) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `inquiry` | object | The inquiry marked for review | ### Persona Resume Inquiry [#persona-resume-inquiry] Resume a pending or expired inquiry, creating a new session so the individual can continue verification. Returns a session token. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to resume (starts with inq\_) | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------- | | `inquiry` | object | The resumed inquiry | | `sessionToken` | string | Session token for the new inquiry session, used to continue the flow in embedded SDKs | ### Persona Expire Inquiry [#persona-expire-inquiry] Expire an in-progress inquiry, invalidating its sessions and one-time links so the individual can no longer continue it. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to expire (starts with inq\_) | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `inquiry` | object | The expired inquiry | ### Persona Generate Inquiry Link [#persona-generate-inquiry-link] Generate a one-time link for an inquiry that the individual can open to complete their identity verification. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to generate a one-time link for (starts with inq\_) | | `expiresInSeconds` | number | No | Number of seconds from now until the link expires (must be greater than 0; defaults to the inquiry template setting, typically 24 hours) | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------- | | `inquiry` | object | The inquiry the link was generated for | | `oneTimeLink` | string | One-time link the individual can open to complete the inquiry | | `oneTimeLinkShort` | string | Shortened version of the one-time link | ### Persona Print Inquiry PDF [#persona-print-inquiry-pdf] Download a PDF summary of an inquiry, including its collected information and verification results. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to print (starts with inq\_) | #### Output [#output-10] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------------- | | `file` | file | PDF summary of the inquiry, stored in execution files | ### Persona Redact Inquiry [#persona-redact-inquiry] Permanently delete all personally identifiable information collected by an inquiry, for example to honor a data deletion request. This cannot be undone. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `inquiryId` | string | Yes | Inquiry ID to redact (starts with inq\_) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------- | | `inquiry` | object | The redacted inquiry (PII fields are removed) | ### Persona Create Account [#persona-create-account] Create an account that represents an individual in Persona. Accounts consolidate inquiries, verifications, and reports for the same person. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `accountTypeId` | string | No | Account type ID to create the account for (starts with acttp\_); defaults to your organization default | | `referenceId` | string | No | Reference ID that refers to an entity in your user model | | `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) | | `fields` | json | No | JSON object of field name to field value pairs, as defined by the account type (e.g. \{"name-first": "Jane"}) | | `tags` | array | No | JSON array of tag names to associate with the account (e.g. \["vip"]) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `account` | object | The created account | ### Persona Get Account [#persona-get-account] Retrieve a single account by ID, including its reference ID, fields, tags, and status. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Persona API key | | `accountId` | string | Yes | Account ID to retrieve (starts with act\_) | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | --------------------- | | `account` | object | The retrieved account | ### Persona List Accounts [#persona-list-accounts] List accounts in your Persona organization, optionally filtered by reference ID. Results are cursor-paginated. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `referenceId` | string | No | Filter by reference ID | | `pageSize` | number | No | Number of accounts to return per page (1-100, default 10) | | `pageAfter` | string | No | Pagination cursor: return accounts after this account ID | #### Output [#output-14] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------------------- | | `accounts` | array | Accounts matching the filters | | `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page | ### Persona Update Account [#persona-update-account] Update an account’s reference ID, country code, fields, or tags. Only the provided values are changed. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `accountId` | string | Yes | Account ID to update (starts with act\_) | | `referenceId` | string | No | Reference ID that refers to an entity in your user model | | `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) | | `fields` | json | No | JSON object of field name to field value pairs to set, as defined by the account type (e.g. \{"name-first": "Jane"}) | | `tags` | array | No | JSON array of tag names to set on the account (e.g. \["vip"]) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `account` | object | The updated account | ### Persona Import Accounts [#persona-import-accounts] Bulk-import accounts into Persona from a CSV file. Returns an importer whose status can be polled until processing completes. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Persona API key | | `file` | file | Yes | CSV file of accounts to import | #### Output [#output-16] | Parameter | Type | Description | | ---------- | ------ | ---------------------------- | | `importer` | object | The created account importer | ### Persona Redact Account [#persona-redact-account] Permanently delete all personally identifiable information stored on an account, for example to honor a data deletion request. This cannot be undone. #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `accountId` | string | Yes | Account ID to redact (starts with act\_) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------- | | `account` | object | The redacted account (PII fields are removed) | ### Persona List Cases [#persona-list-cases] List manual review cases, optionally filtered by status, account ID, or reference ID. Results are cursor-paginated. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Persona API key | | `status` | string | No | Filter by case status (e.g. Open, Resolved) | | `accountId` | string | No | Filter by account ID (starts with act\_) | | `referenceId` | string | No | Filter by reference ID | | `pageSize` | number | No | Number of cases to return per page (1-100, default 10) | | `pageAfter` | string | No | Pagination cursor: return cases after this case ID | #### Output [#output-18] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------------------- | | `cases` | array | Cases matching the filters | | `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page | ### Persona Get Case [#persona-get-case] Retrieve a single manual review case by ID, including its status, resolution, and assignee. #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `caseId` | string | Yes | Case ID to retrieve (starts with case\_) | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `case` | object | The retrieved case | ### Persona Create Report [#persona-create-report] Run a screening report (watchlist, adverse media, or politically exposed person) against an individual by name or search term. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `reportType` | string | Yes | Type of report to run: watchlist, adverse-media, or politically-exposed-person | | `reportTemplateId` | string | Yes | Report template ID to run (starts with rptp\_) | | `term` | string | No | Full-name search term (e.g. "Jane Q Doe"). Provide this or the separate name parts. | | `nameFirst` | string | No | First name of the individual to search | | `nameMiddle` | string | No | Middle name of the individual to search | | `nameLast` | string | No | Last name of the individual to search | | `birthdate` | string | No | Birthdate of the individual, formatted as YYYY-MM-DD | | `countryCode` | string | No | ISO 3166-1 alpha-2 country code (e.g. US) | | `accountId` | string | No | Account ID (starts with act\_) to associate with this report | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------- | | `report` | object | The created report. Reports run asynchronously; poll until status is ready. | ### Persona Get Report [#persona-get-report] Retrieve a single screening report by ID, including its status, match results, and full type-specific attributes. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `reportId` | string | Yes | Report ID to retrieve (starts with rep\_) | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `report` | object | The retrieved report | ### Persona List Reports [#persona-list-reports] List screening reports, optionally filtered by account ID or reference ID. Results are cursor-paginated. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `accountId` | string | No | Filter by account ID (starts with act\_) | | `referenceId` | string | No | Filter by reference ID | | `pageSize` | number | No | Number of reports to return per page (1-100, default 10) | | `pageAfter` | string | No | Pagination cursor: return reports after this report ID | #### Output [#output-22] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------------------------- | | `reports` | array | Reports matching the filters | | `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page | ### Persona Get Verification [#persona-get-verification] Retrieve a single verification by ID (government ID, selfie, document, database, and more), including its status and the checks that ran. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `verificationId` | string | Yes | Verification ID to retrieve (starts with ver\_) | #### Output [#output-23] | Parameter | Type | Description | | -------------- | ------ | -------------------------- | | `verification` | object | The retrieved verification | ### Persona Get Document [#persona-get-document] Retrieve a single document by ID (government ID, generic document, and more), including its processing status and uploaded files. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `documentId` | string | Yes | Document ID to retrieve (starts with doc\_) | #### Output [#output-24] | Parameter | Type | Description | | ---------- | ------ | ---------------------- | | `document` | object | The retrieved document | ### Persona List Inquiry Templates [#persona-list-inquiry-templates] List the inquiry templates in your Persona organization, to discover template IDs for creating inquiries. Results are cursor-paginated. #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Persona API key | | `pageSize` | number | No | Number of templates to return per page (1-100, default 10) | | `pageAfter` | string | No | Pagination cursor: return templates after this template ID | #### Output [#output-25] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------------------- | | `inquiryTemplates` | array | Inquiry templates in the organization | | `nextCursor` | string | Cursor for the next page (pass as pageAfter), or null on the last page | --- # Pinecone (/integrations/pinecone) {/* MANUAL-CONTENT-START:intro */} Use [Pinecone](https://www.pinecone.io) in Agent Serve to generate embeddings, store and update text records or vectors, search by text or vector, retrieve vectors, and manage indexes. Use the returned matches as input to later workflow steps. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Pinecone into the workflow. Generate embeddings, upsert and update text records, delete vectors, search with text or vectors, fetch and list vectors, inspect index statistics, and manage indexes. ## Actions [#actions] ### Pinecone Generate Embeddings [#pinecone-generate-embeddings] Generate embeddings from text using Pinecone's hosted models #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------- | | `model` | string | Yes | Model to use for generating embeddings | | `inputs` | array | Yes | Array of text inputs to generate embeddings for | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------- | | `data` | array | Generated embeddings data with values and vector type | | `model` | string | Model used for generating embeddings | | `vector_type` | string | Type of vector generated (dense/sparse) | | `usage` | object | Usage statistics for embeddings generation | ### Pinecone Upsert Text [#pinecone-upsert-text] Insert or update text records in a Pinecone index #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `namespace` | string | Yes | Namespace to upsert records into (e.g., "documents", "embeddings") | | `records` | array | Yes | Record or array of records to upsert, each containing \_id, text, and optional metadata | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | ------------------------------ | | `statusText` | string | Status of the upsert operation | ### Pinecone Update Vector [#pinecone-update-vector] Update the values, sparse values, or metadata of a vector in a Pinecone namespace #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `id` | string | Yes | Unique ID of the vector to update | | `namespace` | string | No | Namespace containing the vector (e.g., "documents", "embeddings") | | `values` | array | No | New dense vector values to overwrite the existing values | | `sparseValues` | object | No | New sparse vector values with indices and values arrays | | `setMetadata` | object | No | Metadata key-value pairs to add or overwrite on the vector | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | ------------------------------ | | `statusText` | string | Status of the update operation | ### Pinecone Delete Vectors [#pinecone-delete-vectors] Delete vectors from a Pinecone namespace by IDs, by metadata filter, or delete all #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `namespace` | string | No | Namespace to delete vectors from (e.g., "documents", "embeddings") | | `ids` | array | No | Vector IDs to delete (1-1000 items). Mutually exclusive with deleteAll and filter | | `deleteAll` | boolean | No | Delete all vectors in the namespace. Mutually exclusive with ids and filter | | `filter` | object | No | Metadata filter selecting vectors to delete (e.g., \{"category": \{"$eq": "product"}}). Mutually exclusive with ids and deleteAll | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ------------------------------ | | `statusText` | string | Status of the delete operation | ### Pinecone Search Text [#pinecone-search-text] Search for similar text in a Pinecone index #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `namespace` | string | No | Namespace to search in (e.g., "documents", "embeddings") | | `searchQuery` | string | Yes | Text to search for | | `topK` | string | No | Number of results to return (e.g., "10", "25") | | `fields` | array | No | Fields to return in the results | | `filter` | object | No | Filter to apply to the search (e.g., \{"category": "tech", "year": \{"$gte": 2020}}) | | `rerank` | object | No | Reranking parameters | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------------- | | `matches` | array | Search results with ID, score, and metadata | | ↳ `id` | string | Vector ID | | ↳ `score` | number | Similarity score | | ↳ `metadata` | object | Associated metadata | | `usage` | object | Usage statistics including tokens, read units, and rerank units | | ↳ `total_tokens` | number | Total tokens used for embedding | | ↳ `read_units` | number | Read units consumed | | ↳ `rerank_units` | number | Rerank units used | ### Pinecone Search Vector [#pinecone-search-vector] Search for similar vectors in a Pinecone index #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `namespace` | string | No | Namespace to search in (e.g., "documents", "embeddings") | | `vector` | array | Yes | Vector to search for | | `topK` | number | No | Number of results to return (e.g., 10, 25) | | `filter` | object | No | Filter to apply to the search (e.g., \{"category": "tech", "year": \{"$gte": 2020}}) | | `includeValues` | boolean | No | Include vector values in response | | `includeMetadata` | boolean | No | Include metadata in response (true/false) | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------------------------- | | `matches` | array | Vector search results with ID, score, values, and metadata | | `namespace` | string | Namespace where the search was performed | ### Pinecone Fetch [#pinecone-fetch] Fetch vectors by ID from a Pinecone index #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `ids` | array | Yes | Array of vector IDs to fetch (e.g., \["vec-001", "vec-002"]) | | `namespace` | string | No | Namespace to fetch vectors from (e.g., "documents", "embeddings") | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------- | | `matches` | array | Fetched vectors with ID, values, metadata, and score | | ↳ `id` | string | Vector ID | | ↳ `values` | array | Vector values | | ↳ `metadata` | object | Associated metadata | | ↳ `score` | number | Match score (1.0 for exact matches) | | `data` | array | Vector data with values and vector type | | ↳ `values` | array | Vector values | | ↳ `vector_type` | string | Vector type (dense/sparse) | | `usage` | object | Usage statistics including total read units | | ↳ `total_tokens` | number | Read units consumed | ### Pinecone List Vector IDs [#pinecone-list-vector-ids] List vector IDs in a Pinecone namespace by prefix (serverless indexes only) #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `namespace` | string | Yes | Namespace to list vector IDs from (e.g., "documents", "embeddings") | | `prefix` | string | No | Filter vector IDs by a common prefix (e.g., "doc1#") | | `limit` | number | No | Maximum number of IDs to return per page (default 100) | | `paginationToken` | string | No | Pagination token from a previous response to fetch the next page | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------------- | | `vectorIds` | array | Vector IDs in the namespace | | `pagination` | object | Pagination info with a next token when more results exist | | ↳ `next` | string | Token to fetch the next page | | `namespace` | string | Namespace the IDs were listed from | | `usage` | object | Usage statistics including read units | | ↳ `total_tokens` | number | Read units consumed | ### Pinecone Describe Index Stats [#pinecone-describe-index-stats] Get statistics about a Pinecone index, including per-namespace vector counts #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `indexHost` | string | Yes | Full Pinecone index host URL (e.g., "[https://my-index-abc123.svc.pinecone.io](https://my-index-abc123.svc.pinecone.io)") | | `filter` | object | No | Metadata filter to limit which vectors are counted (pod-based indexes only, e.g., \{"category": \{"$eq": "product"}}) | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------- | | `namespaces` | json | Map of namespace name to its summary including vectorCount | | `dimension` | number | Dimensionality of the indexed vectors | | `indexFullness` | number | Fullness of the index (pod-based indexes only) | | `totalVectorCount` | number | Total number of vectors across all namespaces | ### Pinecone List Indexes [#pinecone-list-indexes] List all Pinecone indexes in the project #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-9] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------------------------------------- | | `indexes` | array | List of indexes with name, dimension, metric, host, spec, and status | | ↳ `name` | string | Index name | | ↳ `dimension` | number | Vector dimensionality | | ↳ `metric` | string | Distance metric (cosine, euclidean, dotproduct) | | ↳ `host` | string | Index host URL for data-plane operations | | ↳ `vectorType` | string | Vector type (dense or sparse) | | ↳ `deletionProtection` | string | Deletion protection (enabled or disabled) | | ↳ `tags` | object | Custom user tags on the index | | ↳ `spec` | object | Index spec (serverless or pod configuration) | | ↳ `status` | object | Index status with ready and state | ### Pinecone Describe Index [#pinecone-describe-index] Get the configuration and status of a Pinecone index by name #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `indexName` | string | Yes | Name of the index to describe | | `apiKey` | string | Yes | Pinecone API key | #### Output [#output-10] | Parameter | Type | Description | | ---------------------- | ------ | ----------------------------------------------- | | `index` | object | Index configuration and status | | ↳ `name` | string | Index name | | ↳ `dimension` | number | Vector dimensionality | | ↳ `metric` | string | Distance metric (cosine, euclidean, dotproduct) | | ↳ `host` | string | Index host URL for data-plane operations | | ↳ `vectorType` | string | Vector type (dense or sparse) | | ↳ `deletionProtection` | string | Deletion protection (enabled or disabled) | | ↳ `tags` | object | Custom user tags on the index | | ↳ `spec` | object | Index spec (serverless or pod configuration) | | ↳ `status` | object | Index status with ready and state | --- # Pipedrive API Tokens (/integrations/pipedrive-service-account) Connect Pipedrive with an API token for one user in one company. The token uses that user's data access and remains valid until it is regenerated or the user loses access. The token carries the full data access of the Pipedrive user it belongs to, in that one company. For production workflows, create it from a dedicated Pipedrive user so a teammate leaving or regenerating their token doesn't break your automations. ## Prerequisites [#prerequisites] Any Pipedrive user with API access enabled can copy their token. If the API page is hidden, a Pipedrive admin may have disabled API access for non-admin users — an admin can enable it from the company's user settings. Each user has exactly **one** active API token per company. Regenerating it immediately invalidates the old value everywhere it's used, with no grace period. If the token is shared with other integrations, coordinate before regenerating. ## Finding the API Token [#finding-the-api-token] In Pipedrive, click your profile picture in the top right, then **Personal preferences** → **API** — or go directly to `https://app.pipedrive.com/settings/api` Copy **Your personal API token** (generate one if the field is empty) The API token grants everything its user can see and do in Pipedrive. Treat it like a password — do not commit it to source control or share it publicly. Agent Serve encrypts the token at rest. ## Adding the API Token to Agent Serve [#adding-the-api-token-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Pipedrive" and open it, then click **Add to Agent Serve** and choose **Add API token** Paste the **API token**, and optionally set a display name and description Click **Add API token**. Agent Serve verifies the token against Pipedrive (`GET /v1/users/me`) and names the credential after the Pipedrive user and company — if verification fails, you'll see a specific error explaining what went wrong. ## Using the API Token in Workflows [#using-the-api-token-in-workflows] Add a Pipedrive block to your workflow. In the credential dropdown, your Pipedrive API token appears alongside any OAuth credentials. Select it and configure the block as you normally would. Agent Serve sends the token in Pipedrive's `x-api-token` header (the documented scheme for personal API tokens), so every Pipedrive tool works unchanged. Pipedrive gives API-token traffic lower burst rate limits than OAuth (roughly a quarter of the OAuth allowance, by plan), and every company shares one daily API budget across all users and both auth methods. Heavy workflow schedules can eat into the budget your other Pipedrive integrations use. ## Rotating the Token [#rotating-the-token] Pipedrive tokens don't expire on a schedule. To rotate one, regenerate it on the same **Personal preferences** → **API** page, then paste the new value into the credential in Agent Serve right away — the old token stops working the moment a new one is generated. --- # Pipedrive (/integrations/pipedrive) {/* MANUAL-CONTENT-START:intro */} Use [Pipedrive](https://www.pipedrive.com) to manage deals, leads, activities, and projects, inspect pipelines, and retrieve CRM files and mail threads. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Pipedrive into your workflow. Manage deals, leads, persons, organizations, notes, projects, activities, files, and mail, and start workflows from Pipedrive webhooks when records change. ## Actions [#actions] ### Get All Deals from Pipedrive [#get-all-deals-from-pipedrive] Retrieve all deals from Pipedrive with optional filters #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `status` | string | No | Only fetch deals with a specific status. Values: open, won, lost. If omitted, all not deleted deals are returned | | `person_id` | string | No | If supplied, only deals linked to the specified person are returned (e.g., "456") | | `org_id` | string | No | If supplied, only deals linked to the specified organization are returned (e.g., "789") | | `pipeline_id` | string | No | If supplied, only deals in the specified pipeline are returned (e.g., "1") | | `updated_since` | string | No | If set, only deals updated after this time are returned. Format: 2025-01-01T10:20:00Z | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500) | | `cursor` | string | No | For pagination, the marker representing the first item on the next page | #### Output [#output] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `deals` | array | Array of deal objects from Pipedrive | | ↳ `id` | number | Deal ID | | ↳ `title` | string | Deal title | | ↳ `value` | number | Deal value | | ↳ `currency` | string | Currency code | | ↳ `status` | string | Deal status (open, won, lost, deleted) | | ↳ `stage_id` | number | Pipeline stage ID | | ↳ `pipeline_id` | number | Pipeline ID | | ↳ `person_id` | number | Associated person ID | | ↳ `org_id` | number | Associated organization ID | | ↳ `owner_id` | number | Deal owner user ID | | ↳ `add_time` | string | When the deal was created (ISO 8601) | | ↳ `update_time` | string | When the deal was last updated (ISO 8601) | | ↳ `won_time` | string | When the deal was won | | ↳ `lost_time` | string | When the deal was lost | | ↳ `close_time` | string | When the deal was closed | | ↳ `expected_close_date` | string | Expected close date | | `metadata` | object | Pagination metadata for the response | | ↳ `total_items` | number | Total number of items | | ↳ `has_more` | boolean | Whether more items are available | | ↳ `next_cursor` | string | Cursor for fetching the next page (v2 endpoints) | | ↳ `next_start` | number | Offset for fetching the next page (v1 endpoints) | | `success` | boolean | Operation success status | ### Get Deal Details from Pipedrive [#get-deal-details-from-pipedrive] Retrieve detailed information about a specific deal #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------- | | `deal_id` | string | Yes | The ID of the deal to retrieve (e.g., "123") | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deal` | object | Deal object with full details | | `success` | boolean | Operation success status | ### Create Deal in Pipedrive [#create-deal-in-pipedrive] Create a new deal in Pipedrive #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------- | | `title` | string | Yes | The title of the deal (e.g., "Enterprise Software License") | | `value` | string | No | The monetary value of the deal (e.g., "5000") | | `currency` | string | No | Currency code (e.g., "USD", "EUR", "GBP") | | `person_id` | string | No | ID of the person this deal is associated with (e.g., "456") | | `org_id` | string | No | ID of the organization this deal is associated with (e.g., "789") | | `pipeline_id` | string | No | ID of the pipeline this deal should be placed in (e.g., "1") | | `stage_id` | string | No | ID of the stage this deal should be placed in (e.g., "2") | | `status` | string | No | Status of the deal: open, won, lost | | `expected_close_date` | string | No | Expected close date in YYYY-MM-DD format (e.g., "2025-06-30") | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `deal` | object | The created deal object | | `success` | boolean | Operation success status | ### Update Deal in Pipedrive [#update-deal-in-pipedrive] Update an existing deal in Pipedrive #### Input [#input-3] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------- | | `deal_id` | string | Yes | The ID of the deal to update (e.g., "123") | | `title` | string | No | New title for the deal (e.g., "Updated Enterprise License") | | `value` | string | No | New monetary value for the deal (e.g., "7500") | | `status` | string | No | New status: open, won, lost | | `stage_id` | string | No | New stage ID for the deal (e.g., "3") | | `expected_close_date` | string | No | New expected close date in YYYY-MM-DD format (e.g., "2025-07-15") | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `deal` | object | The updated deal object | | `success` | boolean | Operation success status | ### Get Files from Pipedrive [#get-files-from-pipedrive] Retrieve files from Pipedrive with optional filters #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------- | | `sort` | string | No | Sort files by field (supported: "id", "update\_time") | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 100) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | | `downloadFiles` | boolean | No | Download file contents into file outputs | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------ | | `files` | array | Array of file objects from Pipedrive | | ↳ `id` | number | File ID | | ↳ `name` | string | File name | | ↳ `file_type` | string | File type/extension | | ↳ `file_size` | number | File size in bytes | | ↳ `add_time` | string | When the file was uploaded | | ↳ `update_time` | string | When the file was last updated | | ↳ `deal_id` | number | Associated deal ID | | ↳ `person_id` | number | Associated person ID | | ↳ `org_id` | number | Associated organization ID | | ↳ `url` | string | File download URL | | `downloadedFiles` | file\[] | Downloaded files from Pipedrive | | `total_items` | number | Total number of files returned | | `has_more` | boolean | Whether more files are available | | `next_start` | number | Offset for fetching the next page | | `success` | boolean | Operation success status | ### Get Mail Threads from Pipedrive [#get-mail-threads-from-pipedrive] Retrieve mail threads from Pipedrive mailbox #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `folder` | string | No | Filter by folder: inbox, drafts, sent, archive (default: inbox) | | `limit` | string | No | Number of results to return (e.g., "25", default: 50) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------- | | `messages` | array | Array of mail thread objects from Pipedrive mailbox | | `total_items` | number | Total number of mail threads returned | | `has_more` | boolean | Whether more messages are available | | `next_start` | number | Offset for fetching the next page | | `success` | boolean | Operation success status | ### Get Mail Thread Messages from Pipedrive [#get-mail-thread-messages-from-pipedrive] Retrieve all messages from a specific mail thread #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------- | | `thread_id` | string | Yes | The ID of the mail thread (e.g., "12345") | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------- | | `messages` | array | Array of mail message objects from the thread | | `metadata` | object | Thread and pagination metadata | | `success` | boolean | Operation success status | ### Get Pipelines from Pipedrive [#get-pipelines-from-pipedrive] Retrieve all pipelines from Pipedrive #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------- | | `sort_by` | string | No | Field to sort by: id, update\_time, add\_time (default: id) | | `sort_direction` | string | No | Sorting direction: asc, desc (default: asc) | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------- | | `pipelines` | array | Array of pipeline objects from Pipedrive | | ↳ `id` | number | Pipeline ID | | ↳ `name` | string | Pipeline name | | ↳ `url_title` | string | URL-friendly title | | ↳ `order_nr` | number | Pipeline order number | | ↳ `active` | boolean | Whether the pipeline is active | | ↳ `deal_probability` | boolean | Whether deal probability is enabled | | ↳ `add_time` | string | When the pipeline was created | | ↳ `update_time` | string | When the pipeline was last updated | | `total_items` | number | Total number of pipelines returned | | `has_more` | boolean | Whether more pipelines are available | | `next_start` | number | Offset for fetching the next page | | `success` | boolean | Operation success status | ### Get Pipeline Deals from Pipedrive [#get-pipeline-deals-from-pipedrive] Retrieve all deals in a specific pipeline #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------- | | `pipeline_id` | string | Yes | The ID of the pipeline (e.g., "1") | | `stage_id` | string | No | Filter by specific stage within the pipeline (e.g., "2") | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------- | | `deals` | array | Array of deal objects from the pipeline | | `metadata` | object | Pipeline and pagination metadata | | `success` | boolean | Operation success status | ### Get Projects from Pipedrive [#get-projects-from-pipedrive] Retrieve all projects or a specific project from Pipedrive #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `project_id` | string | No | Optional: ID of a specific project to retrieve (e.g., "123") | | `status` | string | No | Filter by project status: open, completed, deleted (only for listing all) | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500, only for listing all) | | `cursor` | string | No | For pagination, the marker representing the first item on the next page | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------- | | `projects` | array | Array of project objects (when listing all) | | `project` | object | Single project object (when project\_id is provided) | | `total_items` | number | Total number of projects returned | | `has_more` | boolean | Whether more projects are available | | `next_cursor` | string | Cursor for fetching the next page | | `success` | boolean | Operation success status | ### Create Project in Pipedrive [#create-project-in-pipedrive] Create a new project in Pipedrive #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------ | | `title` | string | Yes | The title of the project (e.g., "Q2 Marketing Campaign") | | `description` | string | No | Description of the project | | `start_date` | string | No | Project start date in YYYY-MM-DD format (e.g., "2025-04-01") | | `end_date` | string | No | Project end date in YYYY-MM-DD format (e.g., "2025-06-30") | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `project` | object | The created project object | | `success` | boolean | Operation success status | ### Get Activities from Pipedrive [#get-activities-from-pipedrive] Retrieve activities (tasks) from Pipedrive with optional filters #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------- | | `user_id` | string | No | Filter activities by user ID (e.g., "123") | | `type` | string | No | Filter by activity type (call, meeting, task, deadline, email, lunch) | | `done` | string | No | Filter by completion status: 0 for not done, 1 for done | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------- | | `activities` | array | Array of activity objects from Pipedrive | | ↳ `id` | number | Activity ID | | ↳ `subject` | string | Activity subject | | ↳ `type` | string | Activity type (call, meeting, task, etc.) | | ↳ `due_date` | string | Due date (YYYY-MM-DD) | | ↳ `due_time` | string | Due time (HH:MM) | | ↳ `duration` | string | Duration (HH:MM) | | ↳ `deal_id` | number | Associated deal ID | | ↳ `person_id` | number | Associated person ID | | ↳ `org_id` | number | Associated organization ID | | ↳ `done` | boolean | Whether the activity is done | | ↳ `note` | string | Activity note | | ↳ `add_time` | string | When the activity was created | | ↳ `update_time` | string | When the activity was last updated | | `total_items` | number | Total number of activities returned | | `has_more` | boolean | Whether more activities are available | | `next_start` | number | Offset for fetching the next page | | `success` | boolean | Operation success status | ### Create Activity in Pipedrive [#create-activity-in-pipedrive] Create a new activity (task) in Pipedrive #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------- | | `subject` | string | Yes | The subject/title of the activity (e.g., "Follow up call with John") | | `type` | string | Yes | Activity type: call, meeting, task, deadline, email, lunch | | `due_date` | string | Yes | Due date in YYYY-MM-DD format (e.g., "2025-03-15") | | `due_time` | string | No | Due time in HH:MM format (e.g., "14:30") | | `duration` | string | No | Duration in HH:MM format (e.g., "01:00" for 1 hour) | | `deal_id` | string | No | ID of the deal to associate with (e.g., "123") | | `person_id` | string | No | ID of the person to associate with (e.g., "456") | | `org_id` | string | No | ID of the organization to associate with (e.g., "789") | | `note` | string | No | Notes for the activity | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------- | --------------------------- | | `activity` | object | The created activity object | | `success` | boolean | Operation success status | ### Update Activity in Pipedrive [#update-activity-in-pipedrive] Update an existing activity (task) in Pipedrive #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `activity_id` | string | Yes | The ID of the activity to update (e.g., "12345") | | `subject` | string | No | New subject/title for the activity (e.g., "Updated meeting with client") | | `due_date` | string | No | New due date in YYYY-MM-DD format (e.g., "2025-03-20") | | `due_time` | string | No | New due time in HH:MM format (e.g., "15:00") | | `duration` | string | No | New duration in HH:MM format (e.g., "00:30" for 30 minutes) | | `done` | string | No | Mark as done: 0 for not done, 1 for done | | `note` | string | No | New notes for the activity | #### Output [#output-13] | Parameter | Type | Description | | ---------- | ------- | --------------------------- | | `activity` | object | The updated activity object | | `success` | boolean | Operation success status | ### Get Leads from Pipedrive [#get-leads-from-pipedrive] Retrieve all leads or a specific lead from Pipedrive #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------- | | `lead_id` | string | No | Optional: ID of a specific lead to retrieve (e.g., "abc123-def456-ghi789") | | `archived` | string | No | Get archived leads instead of active ones (e.g., "true" or "false") | | `owner_id` | string | No | Filter by owner user ID (e.g., "123") | | `person_id` | string | No | Filter by person ID (e.g., "456") | | `organization_id` | string | No | Filter by organization ID (e.g., "789") | | `limit` | string | No | Number of results to return (e.g., "50", default: 100, max: 500) | | `start` | string | No | Pagination start offset (0-based index of the first item to return) | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------- | | `leads` | array | Array of lead objects (when listing all) | | ↳ `id` | string | Lead ID (UUID) | | ↳ `title` | string | Lead title | | ↳ `person_id` | number | ID of the associated person | | ↳ `organization_id` | number | ID of the associated organization | | ↳ `owner_id` | number | ID of the lead owner | | ↳ `value` | object | Lead value | | ↳ `amount` | number | Value amount | | ↳ `currency` | string | Currency code (e.g., USD, EUR) | | ↳ `expected_close_date` | string | Expected close date (YYYY-MM-DD) | | ↳ `is_archived` | boolean | Whether the lead is archived | | ↳ `was_seen` | boolean | Whether the lead was seen | | ↳ `add_time` | string | When the lead was created (ISO 8601) | | ↳ `update_time` | string | When the lead was last updated (ISO 8601) | | `lead` | object | Single lead object (when lead\_id is provided) | | ↳ `id` | string | Lead ID (UUID) | | ↳ `title` | string | Lead title | | ↳ `person_id` | number | ID of the associated person | | ↳ `organization_id` | number | ID of the associated organization | | ↳ `owner_id` | number | ID of the lead owner | | ↳ `value` | object | Lead value | | ↳ `amount` | number | Value amount | | ↳ `currency` | string | Currency code (e.g., USD, EUR) | | ↳ `expected_close_date` | string | Expected close date (YYYY-MM-DD) | | ↳ `is_archived` | boolean | Whether the lead is archived | | ↳ `was_seen` | boolean | Whether the lead was seen | | ↳ `add_time` | string | When the lead was created (ISO 8601) | | ↳ `update_time` | string | When the lead was last updated (ISO 8601) | | `total_items` | number | Total number of leads returned | | `has_more` | boolean | Whether more leads are available | | `next_start` | number | Offset for fetching the next page | | `success` | boolean | Operation success status | ### Create Lead in Pipedrive [#create-lead-in-pipedrive] Create a new lead in Pipedrive #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `title` | string | Yes | The name of the lead (e.g., "Acme Corp - Website Redesign") | | `person_id` | string | No | ID of the person (REQUIRED unless organization\_id is provided) (e.g., "456") | | `organization_id` | string | No | ID of the organization (REQUIRED unless person\_id is provided) (e.g., "789") | | `owner_id` | string | No | ID of the user who will own the lead (e.g., "123") | | `value_amount` | string | No | Potential value amount (e.g., "10000") | | `value_currency` | string | No | Currency code (e.g., "USD", "EUR", "GBP") | | `expected_close_date` | string | No | Expected close date in YYYY-MM-DD format (e.g., "2025-04-15") | | `visible_to` | string | No | Visibility: 1 (Owner & followers), 3 (Entire company) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `lead` | object | The created lead object | | `success` | boolean | Operation success status | ### Update Lead in Pipedrive [#update-lead-in-pipedrive] Update an existing lead in Pipedrive #### Input [#input-16] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------- | | `lead_id` | string | Yes | The ID of the lead to update (e.g., "abc123-def456-ghi789") | | `title` | string | No | New name for the lead (e.g., "Updated Lead - Premium Package") | | `person_id` | string | No | New person ID (e.g., "456") | | `organization_id` | string | No | New organization ID (e.g., "789") | | `owner_id` | string | No | New owner user ID (e.g., "123") | | `value_amount` | string | No | New value amount (e.g., "15000") | | `value_currency` | string | No | New currency code (e.g., "USD", "EUR", "GBP") | | `expected_close_date` | string | No | New expected close date in YYYY-MM-DD format (e.g., "2025-05-01") | | `is_archived` | string | No | Archive the lead: true or false | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `lead` | object | The updated lead object | | `success` | boolean | Operation success status | ### Delete Lead from Pipedrive [#delete-lead-from-pipedrive] Delete a specific lead from Pipedrive #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------- | | `lead_id` | string | Yes | The ID of the lead to delete (e.g., "abc123-def456-ghi789") | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | -------------------------- | | `data` | object | Deletion confirmation data | | `success` | boolean | Operation success status | ### Convert Lead to Deal in Pipedrive [#convert-lead-to-deal-in-pipedrive] Start converting a Pipedrive lead into a deal. Returns a conversion ID; the new deal ID is available from the conversion status once the job completes. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------- | | `lead_id` | string | Yes | ID (UUID) of the lead to convert | | `stage_id` | string | No | Stage to place the new deal in. The pipeline follows from the stage | | `pipeline_id` | string | No | Pipeline to place the new deal in, at its first stage | #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------- | ------------------------------- | | `conversion_id` | string | ID (UUID) of the conversion job | | `success` | boolean | Operation success status | ### Get Lead Conversion Status from Pipedrive [#get-lead-conversion-status-from-pipedrive] Check a lead-to-deal conversion job. Returns the status and, once completed, the new deal ID. #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `lead_id` | string | Yes | ID (UUID) of the converted lead | | `conversion_id` | string | Yes | Conversion ID returned by the convert lead operation | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------- | | `conversion_id` | string | ID of the conversion job | | `status` | string | Job status: not\_started, running, completed, failed, or rejected | | `deal_id` | number | ID of the new deal, present once the conversion completed | | `lead_id` | string | ID of the lead | | `success` | boolean | Operation success status | ### Create Person in Pipedrive [#create-person-in-pipedrive] Create a new person (contact) in Pipedrive with emails, phones, and an organization #### Input [#input-20] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | Full name of the person (e.g., "Jane Smith") | | `email` | string | No | Email address, or several separated by commas. The first is primary (e.g., "[jane@acme.com](mailto:jane@acme.com)") | | `phone` | string | No | Phone number, or several separated by commas. The first is primary (e.g., "+14155550100") | | `org_id` | string | No | ID of the organization to link the person to (e.g., "789") | | `owner_id` | string | No | ID of the user who owns the person (e.g., "123") | | `visible_to` | string | No | Visibility: 1 owner only, 3 entire company, 5 or 7 on Professional plans | | `custom_fields` | json | No | Custom field values keyed by the 40-character field hash | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `person` | object | The created person | | ↳ `id` | number | Person ID | | ↳ `name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `owner_id` | number | Owner user ID | | ↳ `org_id` | number | Linked organization ID | | ↳ `emails` | array | Email addresses | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `phones` | array | Phone numbers | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `visible_to` | number | Visibility setting | | ↳ `label_ids` | array | IDs of labels on the person | | ↳ `is_deleted` | boolean | Whether the person is deleted | | ↳ `add_time` | string | When the person was created (ISO 8601) | | ↳ `update_time` | string | When the person was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Update Person in Pipedrive [#update-person-in-pipedrive] Update a Pipedrive person. Emails or phones you provide replace the existing list. #### Input [#input-21] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `person_id` | string | Yes | ID of the person to update (e.g., "456") | | `name` | string | No | New full name | | `email` | string | No | Replacement email list, separated by commas. The first is primary | | `phone` | string | No | Replacement phone list, separated by commas. The first is primary | | `org_id` | string | No | ID of the organization to link the person to | | `owner_id` | string | No | ID of the new owner user | | `visible_to` | string | No | Visibility: 1 owner only, 3 entire company, 5 or 7 on Professional plans | | `custom_fields` | json | No | Custom field values keyed by the 40-character field hash | #### Output [#output-21] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `person` | object | The updated person | | ↳ `id` | number | Person ID | | ↳ `name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `owner_id` | number | Owner user ID | | ↳ `org_id` | number | Linked organization ID | | ↳ `emails` | array | Email addresses | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `phones` | array | Phone numbers | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `visible_to` | number | Visibility setting | | ↳ `label_ids` | array | IDs of labels on the person | | ↳ `is_deleted` | boolean | Whether the person is deleted | | ↳ `add_time` | string | When the person was created (ISO 8601) | | ↳ `update_time` | string | When the person was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Get Person from Pipedrive [#get-person-from-pipedrive] Retrieve a Pipedrive person by ID #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `person_id` | string | Yes | ID of the person to retrieve (e.g., "456") | #### Output [#output-22] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `person` | object | The person | | ↳ `id` | number | Person ID | | ↳ `name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `owner_id` | number | Owner user ID | | ↳ `org_id` | number | Linked organization ID | | ↳ `emails` | array | Email addresses | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `phones` | array | Phone numbers | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `visible_to` | number | Visibility setting | | ↳ `label_ids` | array | IDs of labels on the person | | ↳ `is_deleted` | boolean | Whether the person is deleted | | ↳ `add_time` | string | When the person was created (ISO 8601) | | ↳ `update_time` | string | When the person was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Search Persons in Pipedrive [#search-persons-in-pipedrive] Search Pipedrive persons by name, email, phone, notes, or custom fields. Use it to match an inbound lead to an existing contact. #### Input [#input-23] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `term` | string | Yes | Search term, at least 2 characters or 1 with exact match (e.g., "[jane@acme.com](mailto:jane@acme.com)" or "+14155550100") | | `search_fields` | string | No | Comma-separated fields to search: name, email, phone, notes, custom\_fields. Defaults to all | | `exact_match` | boolean | No | Return only full, case-insensitive exact matches | | `org_id` | string | No | Only return persons linked to this organization ID | | `limit` | string | No | Number of results (default 100, max 100) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-23] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------- | | `items` | array | Matching persons, best match first | | ↳ `result_score` | number | Search relevancy score | | ↳ `item` | object | The matching person | | ↳ `id` | number | Person ID | | ↳ `type` | string | Item type (person) | | ↳ `name` | string | Person name | | ↳ `phones` | array | Phone numbers | | ↳ `emails` | array | Email addresses | | ↳ `visible_to` | number | Visibility setting | | ↳ `owner` | object | Owner of the person | | ↳ `id` | number | Owner user ID | | ↳ `organization` | object | Linked organization | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `custom_fields` | array | Matching custom field values | | ↳ `notes` | array | Matching notes | | `success` | boolean | Operation success status | ### List Persons in Pipedrive [#list-persons-in-pipedrive] List Pipedrive persons, optionally filtered by organization, owner, or deal #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------- | | `org_id` | string | No | Only return persons linked to this organization ID | | `owner_id` | string | No | Only return persons owned by this user ID | | `deal_id` | string | No | Only return persons linked to this deal ID | | `updated_since` | string | No | Only return persons updated at or after this RFC 3339 time | | `sort_by` | string | No | Sort field: id, update\_time, or add\_time | | `sort_direction` | string | No | Sort direction: asc or desc | | `limit` | string | No | Number of results (default 100, max 500) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-24] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `persons` | array | Persons in this page | | ↳ `id` | number | Person ID | | ↳ `name` | string | Full name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `owner_id` | number | Owner user ID | | ↳ `org_id` | number | Linked organization ID | | ↳ `emails` | array | Email addresses | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `phones` | array | Phone numbers | | ↳ `value` | string | The email address or phone number | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `label` | string | Classification label, e.g. work | | ↳ `visible_to` | number | Visibility setting | | ↳ `label_ids` | array | IDs of labels on the person | | ↳ `is_deleted` | boolean | Whether the person is deleted | | ↳ `add_time` | string | When the person was created (ISO 8601) | | ↳ `update_time` | string | When the person was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Create Organization in Pipedrive [#create-organization-in-pipedrive] Create a new organization (company) in Pipedrive #### Input [#input-25] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------- | | `name` | string | Yes | Name of the organization (e.g., "Acme Inc") | | `owner_id` | string | No | ID of the user who owns the organization (e.g., "123") | | `website` | string | No | Website of the organization (e.g., "[https://acme.com](https://acme.com)") | | `address` | string | No | Full address of the organization | | `visible_to` | string | No | Visibility: 1 owner only, 3 entire company, 5 or 7 on Professional plans | | `custom_fields` | json | No | Custom field values keyed by the 40-character field hash | #### Output [#output-25] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `organization` | object | The created organization | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `owner_id` | number | Owner user ID | | ↳ `visible_to` | number | Visibility setting | | ↳ `address` | object | Organization address | | ↳ `value` | string | Full address | | ↳ `country` | string | Country | | ↳ `admin_area_level_1` | string | State or region | | ↳ `locality` | string | City | | ↳ `postal_code` | string | Postal code | | ↳ `website` | string | Website | | ↳ `linkedin` | string | LinkedIn profile URL | | ↳ `industry` | number | Industry option ID | | ↳ `annual_revenue` | number | Annual revenue | | ↳ `employee_count` | number | Number of employees | | ↳ `label_ids` | array | IDs of labels on the organization | | ↳ `is_deleted` | boolean | Whether the organization is deleted | | ↳ `add_time` | string | When the organization was created (ISO 8601) | | ↳ `update_time` | string | When the organization was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Update Organization in Pipedrive [#update-organization-in-pipedrive] Update an existing Pipedrive organization #### Input [#input-26] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `org_id` | string | Yes | ID of the organization to update (e.g., "789") | | `name` | string | No | New organization name | | `owner_id` | string | No | ID of the new owner user | | `website` | string | No | New website | | `address` | string | No | New full address | | `visible_to` | string | No | Visibility: 1 owner only, 3 entire company, 5 or 7 on Professional plans | | `custom_fields` | json | No | Custom field values keyed by the 40-character field hash | #### Output [#output-26] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `organization` | object | The updated organization | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `owner_id` | number | Owner user ID | | ↳ `visible_to` | number | Visibility setting | | ↳ `address` | object | Organization address | | ↳ `value` | string | Full address | | ↳ `country` | string | Country | | ↳ `admin_area_level_1` | string | State or region | | ↳ `locality` | string | City | | ↳ `postal_code` | string | Postal code | | ↳ `website` | string | Website | | ↳ `linkedin` | string | LinkedIn profile URL | | ↳ `industry` | number | Industry option ID | | ↳ `annual_revenue` | number | Annual revenue | | ↳ `employee_count` | number | Number of employees | | ↳ `label_ids` | array | IDs of labels on the organization | | ↳ `is_deleted` | boolean | Whether the organization is deleted | | ↳ `add_time` | string | When the organization was created (ISO 8601) | | ↳ `update_time` | string | When the organization was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Get Organization from Pipedrive [#get-organization-from-pipedrive] Retrieve a Pipedrive organization by ID #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `org_id` | string | Yes | ID of the organization to retrieve (e.g., "789") | #### Output [#output-27] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `organization` | object | The organization | | ↳ `id` | number | Organization ID | | ↳ `name` | string | Organization name | | ↳ `owner_id` | number | Owner user ID | | ↳ `visible_to` | number | Visibility setting | | ↳ `address` | object | Organization address | | ↳ `value` | string | Full address | | ↳ `country` | string | Country | | ↳ `admin_area_level_1` | string | State or region | | ↳ `locality` | string | City | | ↳ `postal_code` | string | Postal code | | ↳ `website` | string | Website | | ↳ `linkedin` | string | LinkedIn profile URL | | ↳ `industry` | number | Industry option ID | | ↳ `annual_revenue` | number | Annual revenue | | ↳ `employee_count` | number | Number of employees | | ↳ `label_ids` | array | IDs of labels on the organization | | ↳ `is_deleted` | boolean | Whether the organization is deleted | | ↳ `add_time` | string | When the organization was created (ISO 8601) | | ↳ `update_time` | string | When the organization was last updated (ISO 8601) | | ↳ `custom_fields` | json | Custom field values keyed by the 40-character field hash | | `success` | boolean | Operation success status | ### Search Organizations in Pipedrive [#search-organizations-in-pipedrive] Search Pipedrive organizations by name, address, notes, or custom fields #### Input [#input-28] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | --------------------------------------------------------------------------------------- | | `term` | string | Yes | Search term, at least 2 characters or 1 with exact match (e.g., "Acme") | | `search_fields` | string | No | Comma-separated fields to search: name, address, notes, custom\_fields. Defaults to all | | `exact_match` | boolean | No | Return only full, case-insensitive exact matches | | `limit` | string | No | Number of results (default 100, max 100) | | `cursor` | string | No | Pagination cursor from a previous response | #### Output [#output-28] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------- | | `items` | array | Matching organizations, best match first | | ↳ `result_score` | number | Search relevancy score | | ↳ `item` | object | The matching organization | | ↳ `id` | number | Organization ID | | ↳ `type` | string | Item type (organization) | | ↳ `name` | string | Organization name | | ↳ `address` | string | Organization address | | ↳ `visible_to` | number | Visibility setting | | ↳ `owner` | object | Owner of the organization | | ↳ `id` | number | Owner user ID | | ↳ `custom_fields` | array | Matching custom field values | | ↳ `notes` | array | Matching notes | | `success` | boolean | Operation success status | ### Create Note in Pipedrive [#create-note-in-pipedrive] Add a note to a Pipedrive deal, person, organization, or lead #### Input [#input-29] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `content` | string | Yes | Note content. HTML is allowed and sanitized by Pipedrive | | `deal_id` | string | No | ID of the deal to attach the note to | | `person_id` | string | No | ID of the person to attach the note to | | `org_id` | string | No | ID of the organization to attach the note to | | `lead_id` | string | No | ID (UUID) of the lead to attach the note to | #### Output [#output-29] | Parameter | Type | Description | | --------------- | ------- | ------------------------------ | | `note` | object | The created note | | ↳ `id` | number | Note ID | | ↳ `content` | string | Note content (HTML) | | ↳ `deal_id` | number | Attached deal ID | | ↳ `person_id` | number | Attached person ID | | ↳ `org_id` | number | Attached organization ID | | ↳ `lead_id` | string | Attached lead ID | | ↳ `user_id` | number | Author user ID | | ↳ `active_flag` | boolean | Whether the note is active | | ↳ `add_time` | string | When the note was created | | ↳ `update_time` | string | When the note was last updated | | `success` | boolean | Operation success status | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Pipedrive Webhook [#pipedrive-webhook] Trigger a workflow when Pipedrive deals, persons, organizations, leads, activities, or other records are created, updated, or deleted. --- # PitchBook (/integrations/pitchbook) {/* MANUAL-CONTENT-START:intro */} [PitchBook](https://pitchbook.com/) provides private-market company, deal, investor, fund, limited-partner, and people data. Its API is a separate contracted add-on to a platform subscription, and calls spend purchased credits. Search for entity IDs, retrieve their datasets, inspect changed datasets for incremental sync, and check credit usage. The action reference lists the available company, deal, fund, investor, news, and related datasets. ## Authentication [#authentication] PitchBook uses an API key sent as `Authorization: PB-Token {key}`, not a bearer token. Keys are issued by your PitchBook account team alongside a credit balance; a sandbox key is available for testing, and the **List Sandbox Entities** operation returns the IDs that key is allowed to query. ## Working with filters [#working-with-filters] PitchBook range filters carry their operator inside the value rather than as a separate parameter: | Filter | Meaning | | ----------------------- | ------------------ | | `>2024-01-01` | after a date | | `<2024-01-01` | before a date | | `2023-01-01^2024-01-01` | between two dates | | `>100` | greater than 100 | | `10^100` | between 10 and 100 | Amounts are in millions. Codes such as industries, verticals, and deal types are not free text — use **List Lookup Tables** to find the right table, then **Get Lookup Table Codes** to read its values. Any documented filter without a dedicated field can be passed through **Additional Filters** as a JSON object. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates the PitchBook Public API into the workflow. Search and pull profiles across companies, deals, investors, people, funds, limited partners, and service providers, including financing history, valuations, cap tables, debt and lenders, fund performance and commitments, patents, and credit analysis news. Also reports API credit usage and the lookup-table codes the search filters expect. Every call consumes PitchBook API credits. ## Actions [#actions] ### PitchBook Search [#pitchbook-search] Search across every PitchBook entity type at once by name, PitchBook ID, website, or ticker. Use this to resolve a company, investor, or fund to its PitchBook ID before calling a profile operation. #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | PitchBook API key | | `query` | string | Yes | What to look up: an entity name, a PitchBook ID, a website, a ticker, or an exchange-qualified ticker. Names and websites match partially once the term is long enough; IDs and tickers match exactly. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Matching entities. Entries carry pbId/name for companies, investors, and service providers, and fundId/fundName for funds, so check which is populated before using an ID. | | ↳ `pbId` | string | PitchBook entity ID, null for fund results | | ↳ `name` | string | Entity name, null for fund results | | ↳ `fundId` | string | PitchBook fund ID, present only on fund results | | ↳ `fundName` | string | Fund name, present only on fund results | | ↳ `website` | string | Entity website, absent on fund results | | ↳ `pitchBookProfileLink` | string | Link to the entity profile in the PitchBook platform | | ↳ `primaryFirmType` | object | Primary type of the entity | | ↳ `pbId` | string | PitchBook entity ID | | ↳ `type` | string | Entity type (e.g. COMPANY, INVESTOR) | | ↳ `otherFirmTypes` | array | Additional types the entity is also classified as | | ↳ `pbId` | string | PitchBook entity ID | | ↳ `type` | string | Entity type (e.g. COMPANY, INVESTOR) | | ↳ `stockTicker` | string | Stock ticker when the entity is publicly traded | ### PitchBook Shared Search [#pitchbook-shared-search] Extract the names and PitchBook IDs behind an Advanced Search shared from the PitchBook platform, using the search ID and hash from the shared link #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `entityType` | string | Yes | Entity type the shared search returns: COMPANIES, DEALS, INVESTORS, SERVICE\_PROVIDERS, LIMITED\_PARTNERS, PEOPLE, ENTITY\_MANAGEMENT, or FUNDS | | `searchId` | string | Yes | Search ID from the shared link, the path segment after /search/ (e.g. 8e6bd17e-dea5-4eca-8143-dddb2ab623a0) | | `hash` | string | Yes | Hash query parameter from the shared link | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------- | | `stats` | object | Summary statistics for the response | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `searchCriteria` | string | Criteria of the shared search | | `items` | array | Records returned | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `website` | string | Website | ### PitchBook Entity People [#pitchbook-entity-people] Retrieve the people at an entity: primary contact, current and former team, and current and former board members #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook entity ID of a company, investor, or service provider, e.g. 51261-67. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-2] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------- | | `entityId` | string | PitchBook entity ID | | `primaryContact` | object | Primary contact at the entity | | ↳ `personId` | string | PitchBook person ID | | ↳ `fullName` | string | Full name | | ↳ `title` | string | Job title | | ↳ `phone` | string | Phone number | | ↳ `fax` | string | Fax number | | ↳ `email` | string | Email address | | `currentTeam` | array | People currently working at the entity | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Full name | | ↳ `title` | string | Job title | | ↳ `positionStart` | string | Date the position started (YYYY-MM-DD) | | ↳ `infoAvailable` | boolean | Whether a full person profile is available for them | | `formerTeam` | array | People who previously worked at the entity | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Full name | | ↳ `title` | string | Job title | | ↳ `positionStart` | string | Date the position started (YYYY-MM-DD) | | ↳ `positionFinish` | string | Date the position ended (YYYY-MM-DD) | | ↳ `infoAvailable` | boolean | Whether a full person profile is available for them | | `currentBoardMembersAndObservers` | array | Current board members and observers | | `formerBoardMembersAndObservers` | array | Former board members and observers | ### PitchBook Entity Locations [#pitchbook-entity-locations] Retrieve the headquarters and every alternate office on record for an entity #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook entity ID of a company, investor, or service provider, e.g. 51261-67. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-3] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------ | | `entityId` | string | PitchBook entity ID | | `hqOffice` | object | Headquarters office | | ↳ `location` | string | Office label | | ↳ `addressLine1` | string | Address line 1 | | ↳ `addressLine2` | json | Address line 2 | | ↳ `city` | string | City | | ↳ `stateProvince` | string | State or province | | ↳ `postCode` | string | Postal code | | ↳ `country` | string | Country | | ↳ `phone` | string | Phone number | | ↳ `fax` | json | Fax number | | ↳ `email` | string | Email address | | ↳ `globalRegion` | string | Global region | | ↳ `globalSubRegion` | string | Global sub-region | | `alternateOffices` | array | Other offices on record | | ↳ `location` | string | Office label | | ↳ `addressLine1` | string | Address line 1 | | ↳ `addressLine2` | string | Address line 2 | | ↳ `city` | string | City | | ↳ `stateProvince` | string | State or province | | ↳ `postCode` | string | Postal code | | ↳ `country` | string | Country | | ↳ `phone` | json | Phone number | | ↳ `fax` | json | Fax number | | ↳ `email` | string | Email address | | ↳ `globalRegion` | string | Global region | | ↳ `globalSubRegion` | string | Global sub-region | | `alternateOfficesCount` | number | How many other offices are on record | ### PitchBook Entity Affiliates [#pitchbook-entity-affiliates] Retrieve the affiliated entities linked to an entity and how each is related #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook entity ID of a company, investor, or service provider, e.g. 51261-67. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------- | | `affiliates` | array | Entities affiliated with the given entity | | ↳ `entityId` | string | PitchBook entity ID | | ↳ `affiliateId` | string | PitchBook ID of the affiliate | | ↳ `affiliateName` | string | Name of the affiliate | | ↳ `affiliateType` | string | Relationship to the affiliate | ### PitchBook Entity News [#pitchbook-entity-news] Retrieve recent news articles PitchBook has associated with an entity #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook entity ID of a company, investor, or service provider, e.g. 51261-67. | | `sinceDate` | string | No | Publication window, carrying its operator in the value: >YYYY-MM-DD for after a date, \YYYY-MM-DD for after a date, \YYYY-MM-DD, \100, \<100, or 10^100 for a range | | `dealDate` | string | No | Deal date filter. Use >YYYY-MM-DD, \100, \<100, or 10^100 for a range | | `investorNames` | string | No | Comma-separated investor names, PitchBook IDs, websites, or tickers | | `employeeCount` | string | No | Employee count. Use >100, \<100, or 10^100 for a range | | `revenue` | string | No | Revenue in millions. Use >100, \<100, or 10^100 for a range | | `filterCurrency` | string | No | ISO currency code the monetary filters on this search are expressed in, e.g. setting EUR means dealSize is read as millions of euros. Distinct from `currency`, which converts the values PitchBook returns. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `additionalFilters` | json | No | Any other documented search filter, as a JSON object of query parameter names to values (e.g. \{"emergingSpaces": "AGTECH"}). A dedicated field always wins over the same key set here. | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Companies matching the search criteria | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `website` | string | Company website | ### PitchBook Company Bio [#pitchbook-company-bio] Retrieve the core profile of a company: names, description, HQ, status, headcount, total raised, and social links #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `companyName` | object | The names the company is known by | | ↳ `formalName` | string | Formal name | | ↳ `alsoKnownAs` | string | Also-known-as name | | ↳ `legalName` | string | Registered legal name | | ↳ `formerlyKnownAs` | string | Previous name | | `parentCompanyId` | string | PitchBook ID of the parent company | | `parentCompanyName` | string | Name of the parent company | | `hqLocation` | object | Headquarters location | | ↳ `city` | string | City | | ↳ `stateProvince` | string | State or province | | ↳ `postCode` | string | Postal code | | ↳ `country` | string | Country | | `description` | string | Business description | | `financingStatus` | object | How the company is financed | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `businessStatus` | object | Operating status of the business | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `ownershipStatus` | object | Ownership status of the company | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `universe` | array | PitchBook universes the company belongs to | | ↳ `code` | string | Universe code | | ↳ `description` | string | Universe label | | `website` | string | Company website | | `employees` | number | Current employee count | | `employeeHistory` | array | Reported headcount over time | | ↳ `asOfDate` | string | Date the count was reported (YYYY-MM-DD) | | ↳ `employeeCount` | number | Headcount on that date | | `exchange` | string | Stock exchange the company trades on | | `ticker` | string | Stock ticker | | `yearFounded` | number | Year the company was founded | | `financingStatusNote` | object | Analyst note explaining the financing status | | ↳ `note` | string | Note text | | ↳ `asOfDate` | string | Date of the note (YYYY-MM-DD) | | `totalMoneyRaised` | object | Total capital raised to date | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `sicCodes` | array | SIC classification codes | | ↳ `code` | string | SIC code | | ↳ `description` | string | SIC code label | | `morningstarCode` | string | Morningstar identifier | | `cikCode` | string | SEC CIK identifier | | `companySocialURLs` | object | Social profile links | | ↳ `facebookProfileUrl` | string | Facebook profile | | ↳ `twitterProfileUrl` | string | X/Twitter profile | | ↳ `linkedInProfileUrl` | string | LinkedIn profile | | `pitchBookProfileLink` | string | Link to the company profile in the PitchBook platform | ### PitchBook Company Industries [#pitchbook-company-industries] Retrieve the industry classification, verticals, keywords, and emerging spaces assigned to a company #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `industries` | array | Industry classifications, most specific first. One entry is flagged primary. | | ↳ `industrySector` | object | Top-level sector | | ↳ `code` | string | Sector code | | ↳ `description` | string | Sector label | | ↳ `industryGroup` | object | Industry group within the sector | | ↳ `code` | string | Group code | | ↳ `description` | string | Group label | | ↳ `industryCode` | object | Most specific industry classification | | ↳ `code` | string | Industry code | | ↳ `description` | string | Industry label | | ↳ `primary` | boolean | Whether this is the primary industry | | `verticals` | array | Verticals the company operates in | | ↳ `code` | string | Vertical code | | ↳ `description` | string | Vertical label | | `keywords` | array | Keywords associated with the company | | `emergingSpaces` | array | Analyst-defined emerging spaces the company is placed in | ### PitchBook Company Investors [#pitchbook-company-investors] Retrieve every investor in a company, current and former, with the type of investor and when they invested #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------- | | `countAllInvestors` | number | Total number of investors on record | | `investors` | array | Investors in the company, current and former | | ↳ `companyId` | string | PitchBook company ID | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | | ↳ `investorTypes` | array | Types the investor is classified as, one flagged primary | | ↳ `type` | object | Investor type | | ↳ `code` | string | Investor type code | | ↳ `description` | string | Investor type label | | ↳ `primary` | boolean | Whether this is the primary type | | ↳ `investorSince` | string | Date the investor first invested (YYYY-MM-DD) | | ↳ `investorExit` | string | Date the investor exited (YYYY-MM-DD) | | ↳ `investorStatus` | object | Whether the investor is current or former | | ↳ `code` | string | Status code | | ↳ `description` | string | Status label | ### PitchBook Company Active Investors [#pitchbook-company-active-investors] Retrieve only the investors currently holding a position in a company #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------- | | `activeInvestors` | array | Investors currently holding a position in the company | | ↳ `companyId` | string | PitchBook company ID | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | | ↳ `investorTypes` | array | Types the investor is classified as, one flagged primary | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `investorSince` | string | Date the investor first invested (YYYY-MM-DD) | | ↳ `holding` | string | Current holding status | ### PitchBook Company Deals [#pitchbook-company-deals] Retrieve every deal a company has been involved in, in chronological order with its deal type #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------ | | `deals` | array | Deals involving the company, oldest first | | ↳ `companyId` | string | PitchBook company ID | | ↳ `dealId` | string | PitchBook deal ID | | ↳ `dealDate` | string | Date of the deal (YYYY-MM-DD) | | ↳ `dealType1` | object | Primary deal type | | ↳ `code` | string | Deal type code | | ↳ `description` | string | Deal type label | | ↳ `dealType2` | object | Secondary deal type, such as the round letter | | ↳ `code` | string | Deal type code | | ↳ `description` | string | Deal type label | | ↳ `dealType3` | object | Tertiary deal type | | ↳ `code` | string | Deal type code | | ↳ `description` | string | Deal type label | | ↳ `dealNumber` | number | Sequence of this deal in the company financing history | ### PitchBook Company Most Recent Financing [#pitchbook-company-most-recent-financing] Retrieve a company most recent financing round: date, size, type, and last known valuation #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `lastFinancingDealId` | string | PitchBook deal ID of the most recent financing | | `lastFinancingDate` | string | Date of the most recent financing (YYYY-MM-DD) | | `lastFinancingSize` | object | Size of the most recent financing | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `lastFinancingSizeStatus` | string | Whether the financing size is actual or estimated | | `lastFinancingValuation` | object | Valuation at the most recent financing | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `lastFinancingValuationStatus` | string | Whether the valuation is actual or estimated | | `lastFinancingDealType` | object | Primary deal type of the most recent financing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `lastFinancingDealType2` | object | Secondary deal type of the most recent financing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `lastFinancingDealType3` | object | Tertiary deal type of the most recent financing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `lastFinancingDealClass` | object | Deal class of the most recent financing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `lastKnownValuation` | object | Most recent known valuation of the company | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `lastKnownValuationDate` | string | Date of the last known valuation (YYYY-MM-DD) | | `lastKnownValuationDealType` | object | Deal type the last known valuation came from | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | ### PitchBook Company Most Recent Debt Financing [#pitchbook-company-most-recent-debt-financing] Retrieve a company most recent debt financing, including each debt instrument raised #### Input [#input-14] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-14] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `lastDebtFinancingDealId` | string | PitchBook deal ID of the most recent debt financing | | `lastDebtFinancingDate` | string | Date of the most recent debt financing (YYYY-MM-DD) | | `lastDebtFinancing` | array | Debt instruments in the most recent debt financing | | ↳ `lastDebtFinancingType` | object | Type of the most recent debt financing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `lastDebtFinancingAmount` | object | Amount of the most recent debt financing | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `seniority` | json | Seniority of the debt | | ↳ `security` | json | Security backing the debt | | ↳ `subordination` | json | Subordination terms | | ↳ `term` | json | Term of the debt | | ↳ `additionalDebtCharacteristics` | object | Other characteristics of the debt | | ↳ `unitranche` | boolean | Whether the debt is unitranche | | ↳ `syndicated` | boolean | Whether the debt is syndicated | | ↳ `mezzanine` | boolean | Whether the debt is mezzanine | | ↳ `covLite` | boolean | Whether the debt is covenant-lite | | ↳ `warrants` | boolean | Whether warrants are attached | | ↳ `convertible` | boolean | Whether the instrument is convertible | | ↳ `rate` | json | Interest rate | | ↳ `lenders` | array | Lenders on the debt | ### PitchBook Company Most Recent Financials [#pitchbook-company-most-recent-financials] Retrieve the most recent reported financials for a private company: revenue, net income, EBITDA, assets, and debt #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `period` | number | Fiscal period the figures cover | | `endDate` | string | Period end date (YYYY-MM-DD) | | `enterpriseValue` | object | Enterprise value | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `revenue` | object | Revenue | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `netIncome` | object | Net income | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `ebitda` | object | EBITDA | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `totalAssets` | object | Total assets | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `totalDebt` | object | Total debt | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | ### PitchBook Company Financials [#pitchbook-company-financials] Retrieve reported financials for a private company across every available fiscal period. Annual data is returned by default. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-16] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `items` | array | Records returned | | ↳ `period` | string | Fiscal period the figures cover | | ↳ `endDate` | string | End date (YYYY-MM-DD) | | ↳ `enterpriseValue` | object | Enterprise value | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `revenue` | object | Revenue | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `netIncome` | object | Net income | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `ebitda` | object | EBITDA | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `totalAssets` | object | Total assets | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `totalDebt` | object | Total debt | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | ### PitchBook Similar Companies [#pitchbook-similar-companies] Retrieve companies PitchBook scores as similar to a given company, flagging which are direct competitors #### Input [#input-17] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-17] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------------- | | `similarCompanies` | array | Similar companies, most similar first | | ↳ `companyId` | string | PitchBook ID of the company compared against | | ↳ `similarCompanyId` | string | PitchBook ID of the similar company | | ↳ `similarCompanyName` | string | Name of the similar company | | ↳ `similarityScore` | number | Similarity score between 0 and 1, higher is more similar | | ↳ `competitor` | boolean | Whether PitchBook classifies the company as a direct competitor | ### PitchBook VC Exit Predictions [#pitchbook-vc-exit-predictions] Retrieve PitchBook machine-learning exit predictions for a VC-backed company. Requires at least two funding rounds in the past six years. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-18] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------------------------- | | `companyId` | string | PitchBook company ID | | `predictionDate` | string | Date the prediction was generated (YYYY-MM-DD) | | `opportunityScore` | number | PitchBook opportunity score | | `successClass` | string | Predicted outcome class, such as Success | | `successProbability` | number | Probability of a successful outcome, as a percentage | | `noexitProbability` | number | Probability of no exit, as a percentage | | `exitClass` | string | Most likely exit type, such as IPO or M\&A | | `ipoProbability` | number | Probability of an IPO exit, as a percentage | | `mergeracquisitionProbability` | number | Probability of an M\&A exit, as a percentage | | `vcDealNumber` | number | Number of VC deals the prediction is based on | ### PitchBook Company Social Analytics [#pitchbook-company-social-analytics] Retrieve web and social growth and size metrics for a company, with percentile ranks #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `compare` | string | No | Benchmark the signals against a peer set: SIMILAR\_COMPANIES, INDUSTRY, VERTICALS, or ALL\_COMPANIES | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-19] | Parameter | Type | Description | | ------------------------------- | ------ | ----------------------------------------- | | `companyId` | string | PitchBook company ID | | `growthRate` | number | Overall growth rate | | `growthRatePercentile` | number | Percentile of the overall growth rate | | `growthRateChange` | number | Change in the overall growth rate | | `growthRatePercentChange` | number | Percent change in the overall growth rate | | `webGrowthRate` | number | Web traffic growth rate | | `webGrowthRatePercentile` | number | Percentile of the web growth rate | | `socialGrowthRate` | number | Social following growth rate | | `socialGrowthRatePercentile` | number | Percentile of the social growth rate | | `sizeMultiple` | number | Overall size multiple | | `sizeMultiplePercentile` | number | Percentile of the size multiple | | `sizeMultipleChange` | number | Change in the size multiple | | `sizeMultiplePercentChange` | number | Percent change in the size multiple | | `webSizeMultiple` | number | Web size multiple | | `webSizeMultiplePercentile` | number | Percentile of the web size multiple | | `socialSizeMultiple` | number | Social size multiple | | `socialSizeMultiplePercentile` | number | Percentile of the social size multiple | | `twitterFollowers` | number | Twitter/X follower count | | `twitterFollowersChange` | number | Change in follower count | | `twitterFollowersPercentChange` | number | Percent change in follower count | ### PitchBook Company General Service Providers [#pitchbook-company-general-service-providers] Retrieve the current and former general service providers engaged by a company #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-20] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------ | | `companyId` | string | PitchBook company ID | | `currentGeneralServices` | array | Current general service relationships | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | `formerGeneralServices` | array | Former general service relationships | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | ### PitchBook Company Deal Service Providers [#pitchbook-company-deal-service-providers] Retrieve the service providers that worked on a company deals, and what each was hired for #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-21] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------ | | `dealServiceProviders` | array | Service providers engaged on the company deals | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `dealIdServiceProvided` | string | PitchBook deal ID the service was provided on | ### PitchBook Company Updates [#pitchbook-company-updates] Check which company datasets changed in a window, so a sync only refetches what moved #### Input [#input-22] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook company ID, e.g. 10618-03. Use PitchBook Search to resolve a name to an ID. | | `sinceDate` | string | No | Window to report changes over, carrying its operator in the value: >YYYY-MM-DD for after a date, \YYYY-MM-DD, \YYYY-MM-DD, \100, \<100, or 10^100 for a range | | `dealDate` | string | No | Deal date filter. Use >YYYY-MM-DD, \100, \<100, or 10^100 for a range | | `revenue` | string | No | Revenue of the companies involved in millions. Use >100, \<100, or 10^100 for a range | | `filterCurrency` | string | No | ISO currency code the monetary filters on this search are expressed in, e.g. setting EUR means dealSize is read as millions of euros. Distinct from `currency`, which converts the values PitchBook returns. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `additionalFilters` | json | No | Any other documented search filter, as a JSON object of query parameter names to values (e.g. \{"emergingSpaces": "AGTECH"}). A dedicated field always wins over the same key set here. | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Deals matching the search criteria | | ↳ `dealId` | string | PitchBook deal ID | | ↳ `companyId` | string | PitchBook ID of the company in the deal | | ↳ `companyName` | string | Name of the company in the deal | ### PitchBook Deal Bio [#pitchbook-deal-bio] Retrieve the summary of a deal: company, date, size, status, type, and which detail datasets are available for it #### Input [#input-26] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T and come from a deal search or a company deals lookup. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-26] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of this deal in the company financing history | | `companyId` | string | PitchBook ID of the company in the deal | | `companyName` | string | Name of the company in the deal | | `dealAnnouncedDate` | string | Date the deal was announced (YYYY-MM-DD) | | `dealDate` | string | Date the deal closed (YYYY-MM-DD) | | `dealSize` | object | Size of the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `dealSizeStatus` | string | Whether the deal size is actual or estimated | | `dealStatus` | object | Status of the deal, such as Completed | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealType1` | object | Primary deal type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealType2` | object | Secondary deal type, such as the round letter | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealType3` | object | Tertiary deal type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealClass` | object | Deal class, such as Venture Capital | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `valuationAvailable` | boolean | Whether valuation data exists for this deal | | `capTableAvailable` | boolean | Whether cap table history exists for this deal | | `trancheInfoAvailable` | boolean | Whether tranche information exists for this deal | | `debtLenderInfoAvailable` | boolean | Whether debt and lender information exists for this deal | ### PitchBook Deal Detailed [#pitchbook-deal-detailed] Retrieve the full detail of a deal: synopsis, percent acquired, round, invested capital, ownership, debt, and stock split #### Input [#input-27] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T and come from a deal search or a company deals lookup. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-27] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of this deal in the company financing history | | `companyId` | string | PitchBook ID of the company in the deal | | `companyName` | string | Name of the company in the deal | | `dealDate` | string | Date the deal closed (YYYY-MM-DD) | | `dealSize` | object | Size of the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `dealSizeStatus` | string | Whether the deal size is actual or estimated | | `dealStatus` | object | Status of the deal, such as Completed | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `percentAcquired` | number | Percentage of the company acquired in the deal | | `raisedToDate` | object | Total the company had raised as of this deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `vcRound` | string | Venture round label, such as 1st Round | | `vcRoundUpDownFlat` | string | Whether the round was up, down, or flat versus the previous one | | `totalInvestedCapital` | object | Total capital invested in the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `investorOwnership` | number | Percentage of the company owned by investors after the deal | | `stockSplit` | string | Stock split applied at the deal, such as 1:1 | | `dealType1` | object | Primary deal type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealType2` | object | Secondary deal type, such as the round letter | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealType3` | object | Tertiary deal type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealClass` | object | Deal class, such as Venture Capital | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `dealSynopsis` | string | Narrative summary of the deal | | `totalInvestedEquity` | object | Total equity invested in the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `debtType1` | object | Primary debt type raised in the deal | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `debtType2` | object | Secondary debt type raised in the deal | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `debtType3` | object | Tertiary debt type raised in the deal | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `debtAmount1` | object | Amount of the primary debt type | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `debtAmount2` | object | Amount of the secondary debt type | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `debtAmount3` | object | Amount of the tertiary debt type | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `debtRaisedInRound` | object | Total debt raised in the round | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `contingentPayout` | object | Contingent payout attached to the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `valuationAvailable` | boolean | Whether valuation data exists for this deal | | `capTableAvailable` | boolean | Whether cap table history exists for this deal | | `trancheInfoAvailable` | boolean | Whether tranche information exists for this deal | | `debtLenderInfoAvailable` | boolean | Whether debt and lender information exists for this deal | ### PitchBook Deal Valuation [#pitchbook-deal-valuation] Retrieve the pre-money and post-money valuation recorded for a deal #### Input [#input-28] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T and come from a deal search or a company deals lookup. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-28] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of this deal in the company financing history | | `companyId` | string | PitchBook ID of the company in the deal | | `companyName` | string | Name of the company in the deal | | `preValuation` | object | Pre-money valuation | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `postValuation` | object | Post-money valuation | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `postValuationStatus` | string | Whether the post-money valuation is actual or estimated | ### PitchBook Deal Multiples [#pitchbook-deal-multiples] Retrieve the valuation multiples for a deal against revenue, EBITDA, EBIT, cash flow, and net income #### Input [#input-29] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-29] | Parameter | Type | Description | | --------------------------- | ------ | ----------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of the deal in the company financing history | | `companyId` | string | PitchBook company ID | | `companyName` | string | Company name | | `dealSizeToCashFlow` | number | Deal size to cash flow | | `dealSizeToEBIT` | number | Deal size to EBIT | | `dealSizeToEBITDA` | number | Deal size to EBITDA | | `dealSizeToNetIncome` | json | Deal size to net income | | `dealSizeToRevenue` | number | Deal size to revenue | | `debtRaisedInRoundToEBITDA` | json | Debt raised in round to EBITDA | | `debtRaisedInRoundToEquity` | json | Debt raised in round to equity | | `impliedEvToCashFlow` | number | Implied EV to cash flow | | `impliedEvToEBIT` | number | Implied EV to EBIT | | `impliedEvToEBITDA` | number | Implied EV to EBITDA | | `impliedEvToNetIncome` | json | Implied EV to net income | | `impliedEvToRevenue` | number | Implied EV to revenue | | `valuationToCashFlow` | number | Valuation to cash flow | | `valuationToEBIT` | number | Valuation to EBIT | | `valuationToEBITDA` | number | Valuation to EBITDA | | `valuationToNetIncome` | json | Valuation to net income | | `valuationToRevenue` | number | Valuation to revenue | ### PitchBook Deal Investors [#pitchbook-deal-investors] Retrieve the investors, sellers, and exiting investors on a deal, including who led it #### Input [#input-30] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T and come from a deal search or a company deals lookup. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-30] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `companyId` | string | PitchBook ID of the company in the deal | | `companyName` | string | Name of the company in the deal | | `investors` | array | Investors participating in the deal | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | | ↳ `investmentStatus` | string | Whether the investor is new or following on | | ↳ `leadSoleInvestor` | boolean | Whether the investor led or solely funded the round | | ↳ `leadPartnerId` | string | PitchBook person ID of the lead partner | | ↳ `leadPartnerName` | string | Name of the lead partner | | ↳ `investorFunds` | array | Funds the investor deployed into the deal | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `fundName` | string | Fund name | | ↳ `investmentAmount` | object | Amount this investor put into the deal | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `formOfPayment` | object | How the investment was paid | | ↳ `code` | string | Payment form code | | ↳ `description` | string | Payment form label | | `sellers` | array | Parties selling in the deal | | `exiters` | array | Investors exiting through the deal | ### PitchBook Deal Stock Info [#pitchbook-deal-stock-info] Retrieve the share terms of a deal: price per share, shares acquired, and the preference, dividend, and voting rights attached #### Input [#input-31] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-31] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of the deal in the company financing history | | `companyId` | string | PitchBook company ID | | `companyName` | string | Company name | | `series` | string | Stock series | | `pricePerShare` | object | Price per share | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `stockType` | json | Type of stock | | `numberOfSharesAcquired` | number | Shares acquired | | `sharesSought` | number | Shares sought | | `conversionRatio` | string | Conversion ratio | | `liquidationPreferences` | string | Liquidation preference terms | | `liquidationParticipating` | string | Whether the preference participates | | `dividendRights` | string | Dividend rights terms | | `cumulativeness` | string | Whether dividends are cumulative | | `antiDilutionProvisions` | string | Anti-dilution provisions | | `redemptionRights` | json | Redemption rights terms | | `boardVotingRights` | string | Board voting rights terms | | `generalVotingRights` | string | General voting rights terms | ### PitchBook Deal Cap Table History [#pitchbook-deal-cap-table-history] Retrieve the cap table as of a deal, one row per stock series with its terms and ownership #### Input [#input-32] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-32] | Parameter | Type | Description | | --------------------------------- | ------- | ----------------------------------------------------- | | `capTable` | array | Stock series on the cap table as of the deal | | ↳ `dealId` | string | PitchBook deal ID | | ↳ `dealNumber` | number | Sequence of the deal in the company financing history | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `stockSeries` | string | Stock series | | ↳ `numberOfSharesAuthorized` | number | Shares authorized | | ↳ `parValue` | object | Par value per share | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `dividendRate` | number | Dividend rate | | ↳ `dividendAmount` | json | Dividend amount | | ↳ `originalIssuePrice` | object | Original issue price per share | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `liquidationPrice` | object | Liquidation price per share | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `liquidationPreferenceMultiple` | number | Liquidation preference multiple | | ↳ `conversionPrice` | object | Conversion price per share | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `percentOwned` | number | Percentage owned | ### PitchBook Deal Tranche Info [#pitchbook-deal-tranche-info] Retrieve the tranches a deal was funded in, with each tranche date, size, and investors #### Input [#input-33] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-33] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of the deal in the company financing history | | `company` | object | Company the record belongs to | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | | `tranches` | array | Tranches making up the deal | | ↳ `trancheSize` | object | Size of the tranche | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `currency` | string | Currency of amount | | ↳ `amount` | number | Value in the requested currency | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `trancheSizeStatus` | string | Whether the tranche size is actual or estimated | | ↳ `trancheDate` | string | Date of the tranche (YYYY-MM-DD) | | ↳ `financingType` | object | Type of financing | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `stockType` | object | Type of stock | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `stockSeriesType` | string | Type of the stock series | | ↳ `conversionStatus` | json | Conversion status | | ↳ `conversionDate` | json | Conversion date (YYYY-MM-DD) | | ↳ `investor` | object | Investor on the record | | ↳ `name` | string | Name | | ↳ `id` | string | PitchBook person ID | | ↳ `investor2` | object | Second investor on the record | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | | ↳ `investor3` | object | Third investor on the record | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | ### PitchBook Deal Debt and Lenders [#pitchbook-deal-debt-and-lenders] Retrieve the debt raised in a deal and the lenders behind it, with rate, maturity, seniority, and covenant terms #### Input [#input-34] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-34] | Parameter | Type | Description | | --------------------------------- | ------- | ----------------------------------------------------- | | `dealId` | string | PitchBook deal ID | | `dealNumber` | number | Sequence of the deal in the company financing history | | `company` | object | Company the record belongs to | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | | `debts` | array | Debt instruments in the deal | | ↳ `debtSize` | json | Size of the debt instrument | | ↳ `paymentInKind` | json | Whether interest is paid in kind | | ↳ `debtType` | object | Type of debt | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `seniority` | json | Seniority of the debt | | ↳ `security` | json | Security backing the debt | | ↳ `subordination` | json | Subordination terms | | ↳ `term` | json | Term of the debt | | ↳ `additionalDebtCharacteristics` | object | Other characteristics of the debt | | ↳ `unitranche` | boolean | Whether the debt is unitranche | | ↳ `syndicated` | boolean | Whether the debt is syndicated | | ↳ `mezzanine` | boolean | Whether the debt is mezzanine | | ↳ `covLite` | boolean | Whether the debt is covenant-lite | | ↳ `warrants` | boolean | Whether warrants are attached | | ↳ `convertible` | boolean | Whether the instrument is convertible | | ↳ `rate` | json | Interest rate | | ↳ `maturityDate` | json | Maturity date (YYYY-MM-DD) | | ↳ `spreadInterestRate` | json | Spread over the reference interest rate | | ↳ `lenders` | array | Lenders on the debt | | ↳ `lenderId` | string | PitchBook ID of the lender | | ↳ `lenderName` | string | Name of the lender | | ↳ `firmType` | string | Type of the associated firm | | ↳ `serviceProviderType` | object | Service provider type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `lenderSize` | json | Amount provided by the lender | ### PitchBook Deal Service Providers [#pitchbook-deal-service-providers] Retrieve the service providers that worked on a deal and which party each represented #### Input [#input-35] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-35] | Parameter | Type | Description | | ------------------------- | ------- | ----------------------------------------------------- | | `serviceProviders` | array | Service providers that worked on the deal | | ↳ `dealId` | string | PitchBook deal ID | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `serviceProvidedToId` | string | PitchBook ID of the party the service was provided to | | ↳ `serviceProvidedToName` | string | Name of the party the service was provided to | | ↳ `leadPartnerId` | json | PitchBook person ID of the lead partner | | ↳ `leadPartnerName` | json | Name of the lead partner | ### PitchBook Deal Updates [#pitchbook-deal-updates] Check which deal datasets changed in a window, so a sync only refetches what moved #### Input [#input-36] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook deal ID, e.g. 52721-65T. Deal IDs end in T. | | `sinceDate` | string | No | Window to report changes over, carrying its operator in the value: >YYYY-MM-DD for after a date, \1000, \<1000, or 100^1000 for a range | | `dryPowder` | string | No | Dry powder in millions. Use >500, \<500, or 1^500 for a range | | `fundType` | string | No | PitchBook fund type code of the investor funds | | `fundSize` | string | No | Fund size in millions. Use >500, \<500, or 1^500 for a range | | `dealType` | string | No | PitchBook deal type code the investor has participated in | | `dealDate` | string | No | Deal date filter. Use >YYYY-MM-DD, \100, \<100, or 10^100 for a range | | `preferredDealTypes` | string | No | Preferred deal type codes the investor targets | | `industryPreferences` | string | No | Preferred industry codes the investor targets | | `geographicalPreferences` | string | No | Preferred geography codes the investor targets | | `filterCurrency` | string | No | ISO currency code the monetary filters on this search are expressed in, e.g. setting EUR means dealSize is read as millions of euros. Distinct from `currency`, which converts the values PitchBook returns. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `additionalFilters` | json | No | Any other documented search filter, as a JSON object of query parameter names to values (e.g. \{"emergingSpaces": "AGTECH"}). A dedicated field always wins over the same key set here. | #### Output [#output-37] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Investors matching the search criteria | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | | ↳ `website` | string | Investor website | ### PitchBook Investor Bio [#pitchbook-investor-bio] Retrieve the core profile of an investor: names, description, HQ, type, AUM, dry powder, and headcount #### Input [#input-38] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-38] | Parameter | Type | Description | | ------------------------------ | ------- | -------------------------------------------------------- | | `investorId` | string | PitchBook investor ID | | `investorName` | object | The names the investor is known by | | ↳ `formalName` | string | Formal name | | ↳ `alsoKnownAs` | string | Also-known-as name | | ↳ `legalName` | string | Registered legal name | | ↳ `formerlyKnownAs` | string | Previous name | | `hqLocation` | object | Headquarters location | | ↳ `city` | string | City | | ↳ `stateProvince` | string | State or province | | ↳ `postCode` | string | Postal code | | ↳ `country` | string | Country | | `description` | object | Investor description in brief and full form | | ↳ `brief` | string | Short description | | ↳ `full` | string | Full description | | `investorStatus` | object | Whether the investor is actively investing | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `investorType` | array | Types the investor is classified as, one flagged primary | | ↳ `type` | object | Investor type | | ↳ `code` | string | Investor type code | | ↳ `description` | string | Investor type label | | ↳ `primary` | boolean | Whether this is the primary type | | `assetsUnderManagement` | object | Assets under management | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `dryPowder` | object | Uncalled capital available to deploy | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `yearFounded` | number | Year the investor was founded | | `website` | string | Investor website | | `countInvestmentProfessionals` | number | Number of investment professionals on staff | | `tradeAssociations` | array | Trade associations the investor belongs to | ### PitchBook Investor Investments [#pitchbook-investor-investments] Retrieve every investment an investor has made, active and exited, with the deals that opened and closed each position #### Input [#input-39] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-39] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------- | | `investments` | array | Investments the investor has made, active and exited | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `companyId` | string | PitchBook ID of the portfolio company | | ↳ `companyName` | string | Name of the portfolio company | | ↳ `investorStatus` | string | Whether the investor is a current or former holder | | ↳ `investmentDate` | string | Date the position was opened (YYYY-MM-DD) | | ↳ `investmentDealId` | string | PitchBook deal ID of the investment | | ↳ `exitDate` | string | Date the position was exited (YYYY-MM-DD) | | ↳ `exitDealId` | string | PitchBook deal ID of the exit | ### PitchBook Investor Active Investments [#pitchbook-investor-active-investments] Retrieve only the positions an investor still holds #### Input [#input-40] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-40] | Parameter | Type | Description | | -------------------- | ------ | --------------------------------------------- | | `activeInvestments` | array | Positions the investor still holds | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `investorSince` | string | Date the investor first invested (YYYY-MM-DD) | | ↳ `investmentDealId` | string | PitchBook deal ID of the investment | | ↳ `investmentDate` | string | Date the position was opened (YYYY-MM-DD) | ### PitchBook Investor Funds [#pitchbook-investor-funds] Retrieve the funds an investor manages, with open and closed counts and the min, median, and max fund size #### Input [#input-41] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-41] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------- | | `investorId` | string | PitchBook investor ID | | `stats` | object | Counts of open and closed funds | | ↳ `totalFundsOpen` | number | Number of open funds | | ↳ `totalFundsClosed` | number | Number of closed funds | | `minFundSize` | object | Smallest fund raised | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `medianFundSize` | object | Median fund size | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `maxFundSize` | object | Largest fund raised | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `fundInfo` | array | Funds the investor manages | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `fundName` | string | Fund name | | ↳ `fundType` | object | Type of the fund | | ↳ `code` | string | Fund type code | | ↳ `description` | string | Fund type label | ### PitchBook Investor Last Closed Fund [#pitchbook-investor-last-closed-fund] Retrieve the most recently closed fund raised by an investor, with its size, type, and vintage #### Input [#input-42] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-42] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------- | | `investorId` | string | PitchBook investor ID | | `fundId` | string | PitchBook fund ID | | `fundName` | string | Fund name | | `fundVintage` | number | Vintage year of the fund | | `fundSize` | object | Capital raised by the fund | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `fundType` | object | Fund type | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `fundCloseDate` | string | Date the fund closed (YYYY-MM-DD) | | `fundOpenDate` | json | Date the fund opened (YYYY-MM-DD) | ### PitchBook Investor Preferences [#pitchbook-investor-preferences] Retrieve what an investor targets: check size, deal size, valuation, revenue, geography, industry, and deal type preferences #### Input [#input-43] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. Use PitchBook Search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-43] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------- | | `investorId` | string | PitchBook investor ID | | `investorName` | string | Investor name | | `preferredInvestmentAmount` | object | Preferred check size, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredDealSize` | object | Preferred total deal size, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredCompanyValuation` | object | Preferred company valuation, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredEbitda` | object | Preferred EBITDA, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredEbit` | object | Preferred EBIT, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredRevenue` | object | Preferred revenue, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `preferredInvestmentHorizon` | object | Preferred holding period in years | | ↳ `min` | number | Minimum years | | ↳ `max` | number | Maximum years | | `geographicalPreferences` | array | Regions the investor targets, from broad group down to state | | ↳ `regionGroup` | json | Broad region as a code and description pair | | ↳ `regionSegment` | json | Region segment as a code and description pair | | ↳ `regionCode` | json | Country as a code and description pair | | ↳ `regionState` | json | State or province as a code and description pair | | `otherInvestmentPreferences` | array | Other stated preferences, such as preferring a minority stake | | ↳ `code` | string | Preference code | | ↳ `description` | string | Preference label | | `preferredIndustry` | array | Industries the investor targets | | ↳ `industryCode` | json | Most specific industry classification | | ↳ `industrySector` | object | Top-level sector | | ↳ `code` | string | Sector code | | ↳ `description` | string | Sector label | | ↳ `industryGroup` | object | Industry group within the sector | | ↳ `code` | string | Group code | | ↳ `description` | string | Group label | | ↳ `primary` | boolean | Whether this is the primary industry | | `preferredDealTypes` | array | Deal types the investor targets | | ↳ `code` | string | Deal type code | | ↳ `description` | string | Deal type label | | `preferredVerticals` | array | Verticals the investor targets | | ↳ `code` | string | Vertical code | | ↳ `description` | string | Vertical label | | `assetPreferences` | array | Asset classes and subcategories the investor targets | | ↳ `assetClass` | json | Asset class as a code and description pair | | ↳ `subcategory` | json | Subcategory as a code and description pair | ### PitchBook Investor Board Seats [#pitchbook-investor-board-seats] Retrieve the board seats an investor holds and previously held across its portfolio #### Input [#input-44] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-44] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `investorId` | string | PitchBook investor ID | | `current` | array | Current entries | | ↳ `personId` | string | PitchBook person ID | | ↳ `personName` | string | Full name of the person | | ↳ `boardCompanyId` | string | PitchBook ID of the company the seat is on | | ↳ `boardCompanyName` | string | Name of the company the seat is on | | ↳ `onBoard` | boolean | Whether the person holds a board seat | | ↳ `boardStartDate` | string | Date the seat started (YYYY-MM-DD) | | ↳ `boardEndDate` | json | Date the seat ended (YYYY-MM-DD) | | ↳ `role` | string | Role played | | `former` | array | Former team members | ### PitchBook Investor General Service Providers [#pitchbook-investor-general-service-providers] Retrieve the current and former general service providers engaged by an investor #### Input [#input-45] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-45] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------ | | `investorId` | string | PitchBook investor ID | | `currentGeneralServices` | array | Current general service relationships | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | `formerGeneralServices` | array | Former general service relationships | ### PitchBook Investor Deal Service Providers [#pitchbook-investor-deal-service-providers] Retrieve the service providers that worked on an investor deals, and what each was hired for #### Input [#input-46] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-46] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------ | | `dealServiceProviders` | array | Service providers engaged on the investor deals | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `serviceProviderTypes` | array | Types the service provider is classified as | | ↳ `primary` | boolean | Whether this is the primary entry | | ↳ `type` | object | Type as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `dealIdServiceProvided` | string | PitchBook deal ID the service was provided on | ### PitchBook Investor Updates [#pitchbook-investor-updates] Check which investor datasets changed in a window, so a sync only refetches what moved #### Input [#input-47] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook investor ID, e.g. 58781-35. | | `sinceDate` | string | No | Window to report changes over, carrying its operator in the value: >YYYY-MM-DD for after a date, \500, \<500, or 1^5000 for a range | | `dryPowder` | string | No | Dry powder in millions. Use >500, \<500, or 1^500 for a range | | `vintage` | string | No | Vintage year. Use >2015, \<2015, or 2015^2020 for a range | | `city` | string | No | City the fund is located in | | `country` | string | No | Country the fund is located in (e.g. USA) | | `irr` | string | No | Internal rate of return as a percentage. Use >20, \<20, or 10^20 for a range | | `tvpi` | string | No | Total value to paid-in multiple. Use >2, \<2, or 1^2 for a range | | `dpi` | string | No | Distributions to paid-in multiple. Use >1, \<1, or 1^2 for a range | | `industryPreferences` | string | No | Preferred industry codes the fund targets | | `geographicalPreferences` | string | No | Preferred geography codes the fund targets | | `filterCurrency` | string | No | ISO currency code the monetary filters on this search are expressed in, e.g. setting EUR means dealSize is read as millions of euros. Distinct from `currency`, which converts the values PitchBook returns. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `additionalFilters` | json | No | Any other documented search filter, as a JSON object of query parameter names to values (e.g. \{"emergingSpaces": "AGTECH"}). A dedicated field always wins over the same key set here. | #### Output [#output-52] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Funds matching the search criteria | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `fundName` | string | Fund name | | ↳ `investors` | array | Managers of the fund | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | ### PitchBook Fund Bio [#pitchbook-fund-bio] Retrieve the profile of a fund: managers, vintage, status, type, size, target, location, and team #### Input [#input-53] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F and come from a fund search. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-53] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------- | | `fundId` | string | PitchBook fund ID | | `name` | string | Fund name | | `fundInvestors` | array | Managers of the fund, with where it sits in their fund series | | ↳ `investorId` | string | PitchBook investor ID | | ↳ `investorName` | string | Investor name | | ↳ `fundNo` | number | Position in the manager fund series | | ↳ `firstFund` | boolean | Whether this is the manager first fund | | `vintage` | number | Vintage year of the fund | | `fundStatus` | string | Whether the fund is open or closed | | `fundType` | string | Type of the fund | | `fundSize` | object | Capital raised by the fund | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `location` | object | Office the fund is run from | | ↳ `location` | string | Office label | | ↳ `addressLine1` | string | Address line 1 | | ↳ `addressLine2` | string | Address line 2 | | ↳ `city` | string | City | | ↳ `stateProvince` | string | State or province | | ↳ `postCode` | string | Postal code | | ↳ `country` | string | Country | | ↳ `phone` | string | Phone number | | ↳ `fax` | string | Fax number | | ↳ `email` | string | Email address | | ↳ `globalRegion` | string | Global region | | ↳ `globalSubRegion` | string | Global sub-region | | `fundTeam` | array | People on the fund team | | ↳ `personId` | string | PitchBook person ID | | ↳ `personFullName` | string | Full name of the person | | `openDate` | string | Date the fund opened (YYYY-MM-DD) | | `closeDate` | string | Date the fund closed (YYYY-MM-DD) | | `fundTargetSize` | object | Target raise for the fund, as a min and max monetary value | | ↳ `min` | json | Minimum, as a PitchBook monetary value | | ↳ `max` | json | Maximum, as a PitchBook monetary value | | `sbic` | boolean | Whether the fund is a Small Business Investment Company | | `returnsInfoAvailable` | array | Which returns datasets are available for the fund | ### PitchBook Fund Performance [#pitchbook-fund-performance] Retrieve the most recent reported returns for a fund: IRR, DPI, RVPI, TVPI, NAV, and benchmark quartile #### Input [#input-54] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F and come from a fund search. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-54] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------ | | `fundId` | string | PitchBook fund ID | | `fundName` | string | Fund name | | `asOfQuarter` | number | Quarter the figures are reported as of | | `asOfYear` | number | Year the figures are reported as of | | `irr` | number | Internal rate of return, as a percentage | | `dpi` | number | Distributions to paid-in multiple | | `rvpi` | number | Residual value to paid-in multiple | | `tvpi` | number | Total value to paid-in multiple | | `nav` | number | Net asset value | | `quartile` | number | Benchmark quartile the fund falls in, 1 being the best | | `numberOfFundsInBenchmark` | number | How many funds the benchmark is drawn from | ### PitchBook Fund Benchmark [#pitchbook-fund-benchmark] Retrieve the peer benchmark for a fund: benchmark IRR, DPI, TVPI, RVPI, and the funds it is drawn from #### Input [#input-55] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-55] | Parameter | Type | Description | | -------------------------- | ------ | -------------------------------------------- | | `fundId` | string | PitchBook fund ID | | `fundName` | string | Fund name | | `benchmarkFundType` | object | Fund type the benchmark is built from | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `benchmarkFundSize` | object | Fund size bucket the benchmark is built from | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `benchmarkFundLocation` | object | Location the benchmark is built from | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `benchmarkFundVintageYear` | number | Vintage year the benchmark is built from | | `irrBenchmark` | number | Benchmark IRR | | `dpiBenchmark` | number | Benchmark DPI | | `tvpiBenchmark` | number | Benchmark TVPI | | `rvpiBenchmark` | number | Benchmark RVPI | | `numberOfFundsInBenchmark` | number | How many funds the benchmark is drawn from | | `benchmarkFunds` | array | Funds making up the benchmark | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `fundName` | string | Fund name | ### PitchBook Fund Cash Flows [#pitchbook-fund-cash-flows] Retrieve contributed, distributed, and remaining value for a fund as of a specific quarter #### Input [#input-56] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `period` | string | Yes | Reporting quarter to fetch, formatted as quarter then year, e.g. 4Q2018 | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-56] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------- | | `fundId` | string | PitchBook fund ID | | `fundName` | string | Fund name | | `asOfQuarter` | number | Quarter the figures are reported as of | | `asOfYear` | number | Year the figures are reported as of | | `contributed` | object | Capital contributed by limited partners | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `percentCalledDown` | number | Percentage of committed capital called down | | `dryPowder` | object | Uncalled capital available to deploy | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `percentDryPowder` | number | Percentage of committed capital still uncalled | | `distributed` | object | Capital distributed back to limited partners | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `remainingValue` | object | Remaining value held in the fund | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | | `distributedRemaining` | object | Distributed plus remaining value | | ↳ `amount` | number | Value in the requested currency | | ↳ `currency` | string | Currency of amount | | ↳ `nativeAmount` | number | Value in the currency it was originally reported in | | ↳ `nativeCurrency` | string | Currency of nativeAmount | | ↳ `estimated` | boolean | Whether the value is a PitchBook estimate | ### PitchBook Fund Investments [#pitchbook-fund-investments] Retrieve every investment a fund has made, active and exited, with the deals that opened and closed each position #### Input [#input-57] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-57] | Parameter | Type | Description | | ------------------------------- | ------ | ----------------------------------------- | | `fundId` | string | PitchBook fund ID | | `fundName` | string | Fund name | | `investments` | array | Investments held | | ↳ `targetCompanyId` | string | PitchBook ID of the portfolio company | | ↳ `targetCompanyName` | string | Name of the portfolio company | | ↳ `investmentStatus` | string | Whether the position is active or exited | | ↳ `targetCompanyInvestmentDate` | string | Date the position was opened (YYYY-MM-DD) | | ↳ `investmentDealId` | string | PitchBook deal ID of the investment | | ↳ `targetCompanyExitDate` | string | Date the position was exited (YYYY-MM-DD) | | ↳ `exitDealId` | string | PitchBook deal ID of the exit | ### PitchBook Fund Active Investments [#pitchbook-fund-active-investments] Retrieve only the portfolio positions a fund still holds #### Input [#input-58] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-58] | Parameter | Type | Description | | ------------------------------- | ------ | ----------------------------------------- | | `activeInvestments` | array | Portfolio positions the fund still holds | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `targetCompanyId` | string | PitchBook ID of the portfolio company | | ↳ `targetCompanyName` | string | Name of the portfolio company | | ↳ `targetCompanyInvestmentDate` | string | Date the position was opened (YYYY-MM-DD) | | ↳ `investmentDealId` | string | PitchBook deal ID of the investment | ### PitchBook Fund Commitments [#pitchbook-fund-commitments] Retrieve the limited partners committed to a fund, with commitment date, size, status, and type #### Input [#input-59] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F and come from a fund search. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-59] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------------------------- | | `commitments` | array | Limited partner commitments to the fund | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `limitedPartnerId` | string | PitchBook limited partner ID | | ↳ `limitedPartnerName` | string | Limited partner name | | ↳ `commitmentDate` | string | Date of the commitment (YYYY-MM-DD) | | ↳ `commitmentSize` | json | Size of the commitment, as a PitchBook monetary value | | ↳ `commitmentStatus` | json | Status of the commitment, as a code and description pair | | ↳ `commitmentType` | json | Type of the commitment, as a code and description pair | ### PitchBook Fund Investment Preferences [#pitchbook-fund-investment-preferences] Retrieve what a fund targets: check size, valuation, geography, industry, vertical, and deal type preferences #### Input [#input-60] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-60] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------ | | `fundId` | string | PitchBook fund ID | | `preferredInvestmentAmount` | json | Preferred check size | | `preferredDealSize` | json | Preferred deal size | | `preferredCompanyValuation` | json | Preferred company valuation | | `preferredEbitda` | json | Preferred EBITDA | | `preferredEbit` | json | Preferred EBIT | | `preferredRevenue` | json | Preferred revenue | | `preferredInvestmentHorizon` | json | Preferred holding period in years | | `geographicalPreferences` | array | Regions targeted | | ↳ `regionGroup` | object | Broad region as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `regionSegment` | object | Region segment as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `regionCode` | object | Country as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `regionState` | json | State or province as a code and description pair | | `otherInvestmentPreferences` | array | Other stated preferences | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `preferredIndustry` | array | Industries targeted | | ↳ `industryCode` | json | Most specific industry classification | | ↳ `industrySector` | object | Top-level sector | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `industryGroup` | object | Industry group within the sector | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `primary` | boolean | Whether this is the primary entry | | `preferredDealTypes` | array | Deal types targeted | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `preferredVerticals` | array | Verticals targeted | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `assetPreferences` | array | Asset classes and subcategories targeted | ### PitchBook Fund Team [#pitchbook-fund-team] Retrieve the active and former people on a fund team #### Input [#input-61] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-61] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------- | | `fundId` | string | PitchBook fund ID | | `investorIds` | array | PitchBook IDs of the fund managers | | `countActiveTeam` | number | Number of active team members | | `active` | array | Active team members | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | | ↳ `title` | string | Title | | ↳ `infoAvailable` | boolean | Whether a full PitchBook profile is available | | `former` | array | Former team members | | ↳ `id` | string | PitchBook person ID | | ↳ `name` | string | Name | | ↳ `title` | string | Title | | ↳ `infoAvailable` | boolean | Whether a full PitchBook profile is available | ### PitchBook Fund Updates [#pitchbook-fund-updates] Check which fund datasets changed in a window, so a sync only refetches what moved #### Input [#input-62] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook fund ID, e.g. 11373-13F. Fund IDs end in F. | | `sinceDate` | string | No | Window to report changes over, carrying its operator in the value: >YYYY-MM-DD for after a date, \1000, \<1000, or 100^1000 for a range | | `numberOfCommitments` | string | No | Number of fund commitments. Use >1000, \<1000, or 10^100 for a range | | `commitmentSize` | string | No | Commitment size in millions. Use >100, \<100, or 10^100 for a range | | `commitmentDate` | string | No | Commitment date filter. Use >YYYY-MM-DD, \YYYY-MM-DD for after a date, \50, \<50, or 10^50 for a range | | `dealType` | string | No | PitchBook deal type code of the deals worked on | | `dealDate` | string | No | Deal date filter. Use >YYYY-MM-DD, \450, \<450, or 10^450 for a range | | `serviceTypesOnDeal` | string | No | Service type codes provided on the deal | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | | `page` | number | No | Page of results to return, starting at 1 | | `perPage` | number | No | How many results to return per page | | `additionalFilters` | json | No | Any other documented search filter, as a JSON object of query parameter names to values (e.g. \{"emergingSpaces": "AGTECH"}). A dedicated field always wins over the same key set here. | #### Output [#output-72] | Parameter | Type | Description | | ----------------------- | ------ | ---------------------------------------------- | | `stats` | object | Paging envelope for the result set | | ↳ `total` | number | Total number of matching results | | ↳ `perPage` | number | Results returned per page | | ↳ `page` | number | Current page number | | ↳ `lastPage` | number | Number of the last available page | | `items` | array | Service providers matching the search criteria | | ↳ `serviceProviderId` | string | PitchBook service provider ID | | ↳ `serviceProviderName` | string | Service provider name | | ↳ `website` | string | Service provider website | ### PitchBook Service Provider Bio [#pitchbook-service-provider-bio] Retrieve the profile of a service provider: names, types, description, and how many companies, deals, investors, funds, and limited partners it has serviced #### Input [#input-73] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. Use a service provider search to resolve a name to an ID. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-73] | Parameter | Type | Description | | ------------------------- | ------- | ---------------------------------------------------------------- | | `serviceProviderId` | string | PitchBook service provider ID | | `serviceProviderName` | object | The names the service provider is known by | | ↳ `formalName` | string | Formal name | | ↳ `alsoKnownAs` | string | Also-known-as name | | ↳ `legalName` | string | Registered legal name | | ↳ `formerlyKnownAs` | string | Previous name | | `serviceProviderTypes` | array | Types the service provider is classified as, one flagged primary | | ↳ `type` | object | Service provider type | | ↳ `code` | string | Type code | | ↳ `description` | string | Type label | | ↳ `primary` | boolean | Whether this is the primary type | | `description` | string | Description of the service provider | | `website` | string | Service provider website | | `employees` | number | Employee count | | `servicedCompanies` | number | Number of companies serviced | | `servicedDeals` | number | Number of deals serviced | | `servicedInvestors` | number | Number of investors serviced | | `servicedFunds` | number | Number of funds serviced | | `servicedLimitedPartners` | number | Number of limited partners serviced | ### PitchBook Serviced Companies [#pitchbook-serviced-companies] Retrieve the companies a service provider currently and formerly serves #### Input [#input-74] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-74] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------ | | `serviceProviderId` | string | PitchBook service provider ID | | `serviceProviderName` | string | Service provider name | | `currentGeneralServices` | array | Current general service relationships | | ↳ `entityId` | string | PitchBook entity ID | | ↳ `entityName` | string | Entity name | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `formerGeneralServices` | array | Former general service relationships | ### PitchBook Serviced Deals [#pitchbook-serviced-deals] Retrieve the deals a service provider worked on and what it was hired for on each #### Input [#input-75] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-75] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------- | | `serviceProviderName` | string | Service provider name | | `servicedDealInfo` | array | Deals the service provider worked on | | ↳ `companyId` | string | PitchBook company ID | | ↳ `companyName` | string | Company name | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | ↳ `dealId` | string | PitchBook deal ID | | ↳ `dealNumber` | number | Sequence of the deal in the company financing history | | ↳ `dealDate` | string | Date the deal closed (YYYY-MM-DD) | ### PitchBook Serviced Investors [#pitchbook-serviced-investors] Retrieve the investors a service provider currently and formerly serves #### Input [#input-76] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-76] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------ | | `serviceProviderId` | string | PitchBook service provider ID | | `serviceProviderName` | string | Service provider name | | `currentGeneralServices` | array | Current general service relationships | | ↳ `entityId` | string | PitchBook entity ID | | ↳ `entityName` | string | Entity name | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | | `formerGeneralServices` | array | Former general service relationships | ### PitchBook Serviced Funds [#pitchbook-serviced-funds] Retrieve the funds a service provider has worked with and the service provided to each #### Input [#input-77] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-77] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------ | | `serviceProviderId` | string | PitchBook service provider ID | | `serviceProviderName` | string | Service provider name | | `fundServices` | array | Funds the service provider worked with | | ↳ `fundId` | string | PitchBook fund ID | | ↳ `fundName` | string | Fund name | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | | ↳ `servicedEntityType` | object | Type of entity that was serviced | | ↳ `description` | string | Human-readable label for the code | | ↳ `code` | string | PitchBook code | ### PitchBook Serviced Limited Partners [#pitchbook-serviced-limited-partners] Retrieve the limited partners a service provider currently and formerly serves #### Input [#input-78] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `currency` | string | No | ISO currency code to convert monetary values into, sent as the X-Currency header (e.g. USD, EUR, JPY). Defaults to the currency on the account preferences. | #### Output [#output-78] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------------------ | | `serviceProviderId` | string | PitchBook service provider ID | | `serviceProviderName` | string | Service provider name | | `currentGeneralServices` | array | Current general service relationships | | `formerGeneralServices` | array | Former general service relationships | | ↳ `entityId` | string | PitchBook entity ID | | ↳ `entityName` | string | Entity name | | ↳ `serviceProvided` | object | Service provided, as a code and description pair | | ↳ `code` | string | PitchBook code | | ↳ `description` | string | Human-readable label for the code | ### PitchBook Service Provider Updates [#pitchbook-service-provider-updates] Check which service provider datasets changed in a window, so a sync only refetches what moved #### Input [#input-79] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PitchBook API key | | `pbId` | string | Yes | PitchBook service provider ID, e.g. 11356-75. | | `sinceDate` | string | No | Window to report changes over, carrying its operator in the value: >YYYY-MM-DD for after a date, \YYYY-MM-DD, \YYYY-MM-DD for after a date, \YYYY-MM-DD for after a date, \ ## Usage Instructions [#usage-instructions] Connect Plane Cloud or a self-hosted Plane instance. API v2 is the default; choose API v1 for Community Edition or older instances. Actions with a current successor are consolidated. Unsupported version-specific inputs fail explicitly. Manage work items, projects, cycles, modules, states, labels, comments, links, attachments, pages, and webhooks. API v1 compatibility is available within supported current actions. ## Actions [#actions] ### Plane Archive a project [#plane-archive-a-project] Archive a project in Plane. Supports API v1 compatibility. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The project id. | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Archive a work item [#plane-archive-a-work-item] Archive a work item in Plane. Requires API v2. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `pk` | string | Yes | The work item's UUID. This lookup is UUID-only — a `PROJ-142` identifier here returns `404`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | string | Unique identifier for the work item. This is the `\{pk\}` on every project-scoped detail route. | | ↳ `name` | string | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | number | Sequence id | | ↳ `priority` | string | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | boolean | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `modules` | array | Modules | | ↳ `parent` | object | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | object | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Asset Id | | ↳ `type` | object | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | | ↳ `project_id` | string | Project id | ### Plane Confirm a work item attachment upload [#plane-confirm-a-work-item-attachment-upload] Confirm a work item attachment upload in Plane. Supports API v1 compatibility. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The attachment id. | | `is_uploaded` | boolean | No | Whether is uploaded. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `asset_url`, `attributes`, `content_type`, `created_at`, `created_by_id`, `external_id`, `external_source`, `id`, `is_uploaded`, `name`, `size`, `work_item_id`. | #### Output [#output-2] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------- | | `result` | object | Plane V2 Work- Item- Attachments | | ↳ `asset_url` | string | Asset url | | ↳ `attributes` | json | Attributes | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `id` | string | Unique identifier. | | ↳ `is_uploaded` | boolean | Is uploaded | | ↳ `name` | string | Name | | ↳ `size` | json | Size | | ↳ `work_item_id` | string | Work item id | | `success` | boolean | Operation completed successfully. | ### Plane Create a work item attachment upload [#plane-create-a-work-item-attachment-upload] Create a work item attachment upload in Plane. Supports API v1 compatibility. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `name` | string | Yes | Display name. | | `size` | number | Yes | Attachment size in bytes. For signed form uploads, allow room for multipart overhead in the storage policy. | | `external_id` | string | No | Your system's identifier for this record, for sync and import correlation. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Nullable. | | `type` | string | No | Required with API v1: attachment type, for example work\_item\_attachment. Optional with API v2. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `asset_url`, `attributes`, `content_type`, `created_at`, `created_by_id`, `external_id`, `external_source`, `id`, `is_uploaded`, `name`, `size`, `work_item_id`. | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------- | | `result` | object | Plane V2 Work- Item- Attachments | | ↳ `asset_url` | string | The asset url. | | ↳ `attributes` | string | Attributes | | ↳ `content_type` | string | The content type. | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `external_id` | json | External id | | ↳ `external_source` | json | External source | | ↳ `id` | string | Unique identifier. | | ↳ `is_uploaded` | boolean | Whether is uploaded. | | ↳ `name` | string | Display name. | | ↳ `size` | json | Size | | ↳ `work_item_id` | string | The related work item. | | ↳ `asset_id` | string | Asset id | | ↳ `upload_data` | json | Upload data | | ↳ `url` | string | Asset Id | | ↳ `fields` | json | Fields | | ↳ `attachment` | object | Attachment | | ↳ `id` | json | Id | | ↳ `asset_url` | string | Asset url | | ↳ `attributes` | json | Attributes | | ↳ `content_type` | string | Content type | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `is_uploaded` | boolean | Is uploaded | | ↳ `name` | string | Name | | ↳ `size` | json | Size | | ↳ `work_item_id` | string | Work item id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `asset` | string | Asset | | ↳ `entity_type` | string | Entity type | | ↳ `entity_identifier` | string | Entity identifier | | ↳ `is_deleted` | boolean | Is deleted | | ↳ `is_archived` | boolean | Is archived | | ↳ `storage_metadata` | json | Storage metadata | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `user` | string | User | | ↳ `workspace` | string | Workspace | | ↳ `draft_issue` | string | Draft issue | | ↳ `project` | string | Project | | ↳ `issue` | string | Issue | | ↳ `comment` | string | Comment | | ↳ `page` | string | Page | | ↳ `deleted_by` | json | Deleted by | | ↳ `detail` | string | Provider confirmation message. | ### Plane Create a comment [#plane-create-a-comment] Create a comment in Plane. Supports API v1 compatibility. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `work_item_id` | string | Yes | The work item to comment on. | | `comment_html` | string | No | HTML comment content. Required with API v2; API v1 also supports comment\_json. | | `access` | string | No | Visibility of the comment. - `INTERNAL` — visible to the project team - `EXTERNAL` — marked as visible outside the team, for example on a published project Omit it to take the server's default. Change it later with a `PATCH`. | | `external_id` | string | No | Your system's identifier for this comment, for sync and import correlation. Maximum 255 characters. Accepts `null`. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `zendesk`. Maximum 255 characters. Accepts `null`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `access`, `actor_id`, `comment_html`, `comment_stripped`, `created_at`, `created_by_id`, `edited_at`, `external_id`, `external_source`, `id`, `work_item_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `actor` (the comment author). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `comment_json` | json | No | v1 compatibility only. Comment json. | | `created_at` | string | No | v1 compatibility only. Creation timestamp for imports. | | `created_by` | string | No | v1 compatibility only. Original creator user ID for imports. | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------- | | `result` | object | Plane V2 Work- Item- Comments | | ↳ `id` | json | Id | | ↳ `work_item_id` | string | Work item id | | ↳ `comment_html` | json | Comment html | | ↳ `comment_stripped` | json | Comment stripped | | ↳ `access` | json | Access | | ↳ `actor_id` | string | Actor id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `edited_at` | string | Edited at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `actor` | json | Actor | | ↳ `is_member` | boolean | Is member | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `attachments` | array | Attachments | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `parent` | string | Parent | | ↳ `description` | string | Description | | ↳ `comment_json` | object | Comment json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `text` | string | Asset Id | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_hidden` | boolean | Is hidden | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `hidden_reason` | json | Hidden reason | | ↳ `hidden_at` | json | Hidden at | | ↳ `hidden_by` | json | Hidden by | | ↳ `source` | json | Source | ### Plane Create a cycle [#plane-create-a-cycle] Create a cycle in Plane. Supports API v1 compatibility. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to add the cycle to. | | `name` | string | Yes | Display name for the cycle, unique within the project. Maximum 255 characters. | | `description` | string | No | Free-form description of what the cycle covers. | | `start_date` | string | No | When the cycle opens, as an ISO 8601 date-time. Nullable — omit it or send `null` for an unscheduled cycle. | | `end_date` | string | No | When the cycle closes, as an ISO 8601 date-time. Nullable. | | `timezone` | string | No | The IANA time zone the cycle's dates are interpreted in, for example `America/New_York`, `Asia/Kolkata`, `Europe/London`, or `UTC`. Set it to the team's working zone so a cycle boundary lands at local midnight instead of UTC midnight. Any value outside the IANA list is rejected with `400 invalid_request`. | | `sort_order` | number | No | Ordering weight for the cycle within the project. Lower values sort first when you list with `?order_by=sort_order`. | | `logo_props` | json | No | JSON blob holding the cycle's icon configuration, as written by Plane clients. Stored and returned unchanged. | | `external_id` | string | No | Your system's identifier for this cycle, for sync and import correlation. Maximum 255 characters. You can find the cycle again later with `?external_id=` on \[List cycles]\([https://developers.plane.so/api-reference/v2/cycles/list-cycles](https://developers.plane.so/api-reference/v2/cycles/list-cycles)). | | `external_source` | string | No | The system `external_id` came from, for example `jira` or `linear`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `created_at`, `created_by_id`, `description`, `end_date`, `external_id`, `external_source`, `id`, `logo_props`, `name`, `owned_by_id`, `sort_order`, `start_date`, `timezone`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `owned_by` (the cycle owner). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `owned_by` | string | No | v1 compatibility only. Cycle owner user ID; defaults to the authenticated user. | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ------ | ------------------- | | `result` | object | Plane V2 Cycles | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `timezone` | json | Timezone | | ↳ `owned_by_id` | string | Owned by id | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `owned_by` | json | Owned by | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `total_estimates` | number | Total estimates | | ↳ `completed_estimates` | number | Completed estimates | | ↳ `started_estimates` | number | Started estimates | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `view_props` | json | View props | | ↳ `progress_snapshot` | json | Progress snapshot | | ↳ `archived_at` | string | Archived at | | ↳ `version` | json | Version | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `status` | string | Status | | ↳ `deleted_by` | json | Deleted by | ### Plane Create a label [#plane-create-a-label] Create a label in Plane. Supports API v1 compatibility. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to add the label to. | | `name` | string | Yes | Display name for the label, unique within the project. Maximum 255 characters. | | `color` | string | No | Hex color used wherever the label is rendered, for example `#e5484d`. Maximum 255 characters. Send one if the label needs to be recognizable at a glance on a board. | | `description` | string | No | Free-form note about what the label is for and when to apply it. | | `parent_id` | string | No | The label this one nests under, for grouping related tags such as `Billing` and `Search` beneath an `Area` label. The parent must be a label in the same project — an id from another project is a `400`, not a silent link. Omit it, or send `null`, for a top-level label. | | `sort_order` | number | No | Ordering weight within the project. Lower values sort first. Assigned automatically when omitted, so send it only when you are recreating a specific order. | | `external_id` | string | No | Your system's identifier for this label, for sync and import correlation. Maximum 255 characters. Store it here and you can find the label later with `?external_id=`, without keeping a map of Plane ids. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `name`, `parent_id`, `sort_order`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------ | --------------- | | `result` | object | Plane V2 Labels | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `sort_order` | json | Sort order | | ↳ `parent_id` | string | Parent id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `project` | string | Project | | ↳ `parent` | string | Parent | | ↳ `deleted_by` | json | Deleted by | ### Plane Create a link [#plane-create-a-link] Create a link in Plane. Supports API v1 compatibility. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `url` | string | Yes | Target URL. | | `metadata` | json | No | JSON metadata object for the link. API v2 only. | | `title` | string | No | Title. Maximum 255 characters. Nullable. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `created_at`, `created_by_id`, `id`, `metadata`, `title`, `url`, `work_item_id`. | | `created_by` | string | No | v1 compatibility only. Original creator user ID for imports. | | `issue_id` | string | No | v1 compatibility only. Work item ID for the link. | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------ | -------------------------- | | `result` | object | Plane V2 Work- Item- Links | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | json | Id | | ↳ `metadata` | json | Metadata | | ↳ `title` | json | Title | | ↳ `url` | json | Url | | ↳ `work_item_id` | string | Work item id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `deleted_by` | json | Deleted by | ### Plane Create a module [#plane-create-a-module] Create a module in Plane. Supports API v1 compatibility. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to create the module in. | | `name` | string | Yes | Display name for the module, unique within the project. Maximum 255 characters. | | `description` | string | No | Plain-text summary of what the module covers. | | `status` | string | No | Where the module sits in its lifecycle. - `backlog` — Captured, not yet committed to - `planned` — Committed to but not started - `in-progress` — Actively being worked on - `paused` — Started, then put on hold - `completed` — Delivered - `cancelled` — Dropped without delivering Defaults to `planned` when omitted. A value outside this list is a `400 invalid_request`. | | `start_date` | string | No | Date the module is scheduled to begin, as `YYYY-MM-DD`. Nullable. | | `target_date` | string | No | Date the module is expected to land, as `YYYY-MM-DD`. Nullable, and must not be earlier than `start_date`. | | `lead_id` | string | No | The user accountable for the module. Must be a member of this project — any other user id is rejected with a `400` naming `lead_id`, never linked silently. Nullable. | | `sort_order` | number | No | Ordering weight used when modules are listed. Lower values sort first. In a project that already has modules, Plane positions the new module ahead of them on create, so send `sort_order` in a follow-up `PATCH` if you need a specific slot. | | `logo_props` | json | No | Free-form JSON object holding the icon Plane renders for the module. | | `external_id` | string | No | Your system's identifier for this module, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `lead_id`, `logo_props`, `member_ids`, `name`, `sort_order`, `start_date`, `status`, `target_date`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `lead` (the module lead), `members` (the module members). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `members` | json | No | v1 compatibility only. Members. | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------ | ---------------- | | `result` | object | Plane V2 Modules | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `status` | json | Status | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `lead_id` | string | Lead id | | ↳ `member_ids` | array | Member ids | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `lead` | json | Lead | | ↳ `members` | array | Members | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `view_props` | json | View props | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `deleted_by` | json | Deleted by | ### Plane Create a project [#plane-create-a-project] Create a project in Plane. Supports API v1 compatibility. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `identifier` | string | Yes | Short project key used to prefix work item numbers, for example `ENG` in `ENG-142`. Maximum 255 characters. | | `name` | string | Yes | Display name. Maximum 255 characters. | | `archive_in` | number | No | The archive in. | | `close_in` | number | No | The close in. | | `cover_image` | string | No | URL of the cover image. Nullable. | | `cycle_view` | boolean | No | Whether cycle view. | | `default_assignee_id` | string | No | Id of the related default assignee. Nullable. | | `default_state_id` | string | No | Id of the related default state. Nullable. | | `description` | string | No | Free-form description. | | `emoji` | string | No | Emoji shown alongside the name. Maximum 255 characters. Nullable. | | `estimate_id` | string | No | Id of the related estimate. Nullable. | | `external_id` | string | No | Your system's identifier for this record, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `guest_view_all_features` | boolean | No | Whether guest view all features. | | `icon_prop` | string | No | The icon prop. Nullable. | | `intake_view` | boolean | No | Whether intake view. | | `is_issue_type_enabled` | boolean | No | Whether is issue type enabled. | | `is_time_tracking_enabled` | boolean | No | Whether is time tracking enabled. | | `issue_views_view` | boolean | No | Whether issue views view. | | `logo_props` | string | No | Editor-owned logo descriptor. Pass back what you read rather than composing it by hand. | | `module_view` | boolean | No | Whether module view. | | `network` | string | No | Project visibility: `0` is private to members, `2` is visible to the whole workspace. | | `page_view` | boolean | No | Whether page view. | | `priority` | string | No | - `none` - None - `low` - Low - `medium` - Medium - `high` - High - `urgent` - Urgent One of `none`, `low`, `medium`, `high`, `urgent`. | | `project_lead_id` | string | No | Id of the related project lead. Nullable. | | `start_date` | string | No | Planned start date, as `YYYY-MM-DD`. Nullable. | | `state_id` | string | No | Id of the related state. Nullable. | | `target_date` | string | No | Planned due date, as `YYYY-MM-DD`. Nullable. | | `timezone` | string | No | - `Africa/Abidjan` - Africa/Abidjan - `Africa/Accra` - Africa/Accra - `Africa/Addis_Ababa` - Africa/Addis\_Ababa - `Africa/Algiers` - Africa/Algiers - `Africa/Asmara` - Africa/Asmara - `Africa/Bamako` - Africa/Bamako - `Africa/Bangui` - Africa/Bangui - `Africa/Banjul` - Africa/Banjul - `Africa/Bissau` - Africa/Bissau - `Africa/Blantyre` - Africa/Blantyre - `Africa/Brazzaville` - Africa/Brazzaville - `Africa/Bujumbura` - Africa/Bujumbura - `Africa/Cairo` - Africa/Cairo - `Africa/Casablanca` - Africa/Casablanca - `Africa/Ceuta` - Africa/Ceuta - `Africa/Conakry` - Africa/Conakry - `Africa/Dakar` - Africa/Dakar - `Africa/Dar_es_Salaam` - Africa/Dar\_es\_Salaam - `Africa/Djibouti` - Africa/Djibouti - `Africa/Douala` - Africa/Douala - `Africa/El_Aaiun` - Africa/El\_Aaiun - `Africa/Freetown` - Africa/Freetown - `Africa/Gaborone` - Africa/Gaborone - `Africa/Harare` - Africa/Harare - `Africa/Johannesburg` - Africa/Johannesburg - `Africa/Juba` - Africa/Juba - `Africa/Kampala` - Africa/Kampala - `Africa/Khartoum` - Africa/Khartoum - `Africa/Kigali` - Africa/Kigali - `Africa/Kinshasa` - Africa/Kinshasa - `Africa/Lagos` - Africa/Lagos - `Africa/Libreville` - Africa/Libreville - `Africa/Lome` - Africa/Lome - `Africa/Luanda` - Africa/Luanda - `Africa/Lubumbashi` - Africa/Lubumbashi - `Africa/Lusaka` - Africa/Lusaka - `Africa/Malabo` - Africa/Malabo - `Africa/Maputo` - Africa/Maputo - `Africa/Maseru` - Africa/Maseru - `Africa/Mbabane` - Africa/Mbabane - `Africa/Mogadishu` - Africa/Mogadishu - `Africa/Monrovia` - Africa/Monrovia - `Africa/Nairobi` - Africa/Nairobi - `Africa/Ndjamena` - Africa/Ndjamena - `Africa/Niamey` - Africa/Niamey - `Africa/Nouakchott` - Africa/Nouakchott - `Africa/Ouagadougou` - Africa/Ouagadougou - `Africa/Porto-Novo` - Africa/Porto-Novo - `Africa/Sao_Tome` - Africa/Sao\_Tome - `Africa/Tripoli` - Africa/Tripoli - `Africa/Tunis` - Africa/Tunis - `Africa/Windhoek` - Africa/Windhoek - `America/Adak` - America/Adak - `America/Anchorage` - America/Anchorage - `America/Anguilla` - America/Anguilla - `America/Antigua` - America/Antigua - `America/Araguaina` - America/Araguaina - `America/Argentina/Buenos_Aires` - America/Argentina/Buenos\_Aires - `America/Argentina/Catamarca` - America/Argentina/Catamarca - `America/Argentina/Cordoba` - America/Argentina/Cordoba - `America/Argentina/Jujuy` - America/Argentina/Jujuy - `America/Argentina/La_Rioja` - America/Argentina/La\_Rioja - `America/Argentina/Mendoza` - America/Argentina/Mendoza - `America/Argentina/Rio_Gallegos` - America/Argentina/Rio\_Gallegos - `America/Argentina/Salta` - America/Argentina/Salta - `America/Argentina/San_Juan` - America/Argentina/San\_Juan - `America/Argentina/San_Luis` - America/Argentina/San\_Luis - `America/Argentina/Tucuman` - America/Argentina/Tucuman - `America/Argentina/Ushuaia` - America/Argentina/Ushuaia - `America/Aruba` - America/Aruba - `America/Asuncion` - America/Asuncion - `America/Atikokan` - America/Atikokan - `America/Bahia` - America/Bahia - `America/Bahia_Banderas` - America/Bahia\_Banderas - `America/Barbados` - America/Barbados - `America/Belem` - America/Belem - `America/Belize` - America/Belize - `America/Blanc-Sablon` - America/Blanc-Sablon - `America/Boa_Vista` - America/Boa\_Vista - `America/Bogota` - America/Bogota - `America/Boise` - America/Boise - `America/Cambridge_Bay` - America/Cambridge\_Bay - `America/Campo_Grande` - America/Campo\_Grande - `America/Cancun` - America/Cancun - `America/Caracas` - America/Caracas - `America/Cayenne` - America/Cayenne - `America/Cayman` - America/Cayman - `America/Chicago` - America/Chicago - `America/Chihuahua` - America/Chihuahua - `America/Ciudad_Juarez` - America/Ciudad\_Juarez - `America/Costa_Rica` - America/Costa\_Rica - `America/Creston` - America/Creston - `America/Cuiaba` - America/Cuiaba - `America/Curacao` - America/Curacao - `America/Danmarkshavn` - America/Danmarkshavn - `America/Dawson` - America/Dawson - `America/Dawson_Creek` - America/Dawson\_Creek - `America/Denver` - America/Denver - `America/Detroit` - America/Detroit - `America/Dominica` - America/Dominica - `America/Edmonton` - America/Edmonton - `America/Eirunepe` - America/Eirunepe - `America/El_Salvador` - America/El\_Salvador - `America/Fort_Nelson` - America/Fort\_Nelson - `America/Fortaleza` - America/Fortaleza - `America/Glace_Bay` - America/Glace\_Bay - `America/Goose_Bay` - America/Goose\_Bay - `America/Grand_Turk` - America/Grand\_Turk - `America/Grenada` - America/Grenada - `America/Guadeloupe` - America/Guadeloupe - `America/Guatemala` - America/Guatemala - `America/Guayaquil` - America/Guayaquil - `America/Guyana` - America/Guyana - `America/Halifax` - America/Halifax - `America/Havana` - America/Havana - `America/Hermosillo` - America/Hermosillo - `America/Indiana/Indianapolis` - America/Indiana/Indianapolis - `America/Indiana/Knox` - America/Indiana/Knox - `America/Indiana/Marengo` - America/Indiana/Marengo - `America/Indiana/Petersburg` - America/Indiana/Petersburg - `America/Indiana/Tell_City` - America/Indiana/Tell\_City - `America/Indiana/Vevay` - America/Indiana/Vevay - `America/Indiana/Vincennes` - America/Indiana/Vincennes - `America/Indiana/Winamac` - America/Indiana/Winamac - `America/Inuvik` - America/Inuvik - `America/Iqaluit` - America/Iqaluit - `America/Jamaica` - America/Jamaica - `America/Juneau` - America/Juneau - `America/Kentucky/Louisville` - America/Kentucky/Louisville - `America/Kentucky/Monticello` - America/Kentucky/Monticello - `America/Kralendijk` - America/Kralendijk - `America/La_Paz` - America/La\_Paz - `America/Lima` - America/Lima - `America/Los_Angeles` - America/Los\_Angeles - `America/Lower_Princes` - America/Lower\_Princes - `America/Maceio` - America/Maceio - `America/Managua` - America/Managua - `America/Manaus` - America/Manaus - `America/Marigot` - America/Marigot - `America/Martinique` - America/Martinique - `America/Matamoros` - America/Matamoros - `America/Mazatlan` - America/Mazatlan - `America/Menominee` - America/Menominee - `America/Merida` - America/Merida - `America/Metlakatla` - America/Metlakatla - `America/Mexico_City` - America/Mexico\_City - `America/Miquelon` - America/Miquelon - `America/Moncton` - America/Moncton - `America/Monterrey` - America/Monterrey - `America/Montevideo` - America/Montevideo - `America/Montserrat` - America/Montserrat - `America/Nassau` - America/Nassau - `America/New_York` - America/New\_York - `America/Nome` - America/Nome - `America/Noronha` - America/Noronha - `America/North_Dakota/Beulah` - America/North\_Dakota/Beulah - `America/North_Dakota/Center` - America/North\_Dakota/Center - `America/North_Dakota/New_Salem` - America/North\_Dakota/New\_Salem - `America/Nuuk` - America/Nuuk - `America/Ojinaga` - America/Ojinaga - `America/Panama` - America/Panama - `America/Paramaribo` - America/Paramaribo - `America/Phoenix` - America/Phoenix - `America/Port-au-Prince` - America/Port-au-Prince - `America/Port_of_Spain` - America/Port\_of\_Spain - `America/Porto_Velho` - America/Porto\_Velho - `America/Puerto_Rico` - America/Puerto\_Rico - `America/Punta_Arenas` - America/Punta\_Arenas - `America/Rankin_Inlet` - America/Rankin\_Inlet - `America/Recife` - America/Recife - `America/Regina` - America/Regina - `America/Resolute` - America/Resolute - `America/Rio_Branco` - America/Rio\_Branco - `America/Santarem` - America/Santarem - `America/Santiago` - America/Santiago - `America/Santo_Domingo` - America/Santo\_Domingo - `America/Sao_Paulo` - America/Sao\_Paulo - `America/Scoresbysund` - America/Scoresbysund - `America/Sitka` - America/Sitka - `America/St_Barthelemy` - America/St\_Barthelemy - `America/St_Johns` - America/St\_Johns - `America/St_Kitts` - America/St\_Kitts - `America/St_Lucia` - America/St\_Lucia - `America/St_Thomas` - America/St\_Thomas - `America/St_Vincent` - America/St\_Vincent - `America/Swift_Current` - America/Swift\_Current - `America/Tegucigalpa` - America/Tegucigalpa - `America/Thule` - America/Thule - `America/Tijuana` - America/Tijuana - `America/Toronto` - America/Toronto - `America/Tortola` - America/Tortola - `America/Vancouver` - America/Vancouver - `America/Whitehorse` - America/Whitehorse - `America/Winnipeg` - America/Winnipeg - `America/Yakutat` - America/Yakutat - `Antarctica/Casey` - Antarctica/Casey - `Antarctica/Davis` - Antarctica/Davis - `Antarctica/DumontDUrville` - Antarctica/DumontDUrville - `Antarctica/Macquarie` - Antarctica/Macquarie - `Antarctica/Mawson` - Antarctica/Mawson - `Antarctica/McMurdo` - Antarctica/McMurdo - `Antarctica/Palmer` - Antarctica/Palmer - `Antarctica/Rothera` - Antarctica/Rothera - `Antarctica/Syowa` - Antarctica/Syowa - `Antarctica/Troll` - Antarctica/Troll - `Antarctica/Vostok` - Antarctica/Vostok - `Arctic/Longyearbyen` - Arctic/Longyearbyen - `Asia/Aden` - Asia/Aden - `Asia/Almaty` - Asia/Almaty - `Asia/Amman` - Asia/Amman - `Asia/Anadyr` - Asia/Anadyr - `Asia/Aqtau` - Asia/Aqtau - `Asia/Aqtobe` - Asia/Aqtobe - `Asia/Ashgabat` - Asia/Ashgabat - `Asia/Atyrau` - Asia/Atyrau - `Asia/Baghdad` - Asia/Baghdad - `Asia/Bahrain` - Asia/Bahrain - `Asia/Baku` - Asia/Baku - `Asia/Bangkok` - Asia/Bangkok - `Asia/Barnaul` - Asia/Barnaul - `Asia/Beirut` - Asia/Beirut - `Asia/Bishkek` - Asia/Bishkek - `Asia/Brunei` - Asia/Brunei - `Asia/Chita` - Asia/Chita - `Asia/Choibalsan` - Asia/Choibalsan - `Asia/Colombo` - Asia/Colombo - `Asia/Damascus` - Asia/Damascus - `Asia/Dhaka` - Asia/Dhaka - `Asia/Dili` - Asia/Dili - `Asia/Dubai` - Asia/Dubai - `Asia/Dushanbe` - Asia/Dushanbe - `Asia/Famagusta` - Asia/Famagusta - `Asia/Gaza` - Asia/Gaza - `Asia/Hebron` - Asia/Hebron - `Asia/Ho_Chi_Minh` - Asia/Ho\_Chi\_Minh - `Asia/Hong_Kong` - Asia/Hong\_Kong - `Asia/Hovd` - Asia/Hovd - `Asia/Irkutsk` - Asia/Irkutsk - `Asia/Jakarta` - Asia/Jakarta - `Asia/Jayapura` - Asia/Jayapura - `Asia/Jerusalem` - Asia/Jerusalem - `Asia/Kabul` - Asia/Kabul - `Asia/Kamchatka` - Asia/Kamchatka - `Asia/Karachi` - Asia/Karachi - `Asia/Kathmandu` - Asia/Kathmandu - `Asia/Khandyga` - Asia/Khandyga - `Asia/Kolkata` - Asia/Kolkata - `Asia/Krasnoyarsk` - Asia/Krasnoyarsk - `Asia/Kuala_Lumpur` - Asia/Kuala\_Lumpur - `Asia/Kuching` - Asia/Kuching - `Asia/Kuwait` - Asia/Kuwait - `Asia/Macau` - Asia/Macau - `Asia/Magadan` - Asia/Magadan - `Asia/Makassar` - Asia/Makassar - `Asia/Manila` - Asia/Manila - `Asia/Muscat` - Asia/Muscat - `Asia/Nicosia` - Asia/Nicosia - `Asia/Novokuznetsk` - Asia/Novokuznetsk - `Asia/Novosibirsk` - Asia/Novosibirsk - `Asia/Omsk` - Asia/Omsk - `Asia/Oral` - Asia/Oral - `Asia/Phnom_Penh` - Asia/Phnom\_Penh - `Asia/Pontianak` - Asia/Pontianak - `Asia/Pyongyang` - Asia/Pyongyang - `Asia/Qatar` - Asia/Qatar - `Asia/Qostanay` - Asia/Qostanay - `Asia/Qyzylorda` - Asia/Qyzylorda - `Asia/Riyadh` - Asia/Riyadh - `Asia/Sakhalin` - Asia/Sakhalin - `Asia/Samarkand` - Asia/Samarkand - `Asia/Seoul` - Asia/Seoul - `Asia/Shanghai` - Asia/Shanghai - `Asia/Singapore` - Asia/Singapore - `Asia/Srednekolymsk` - Asia/Srednekolymsk - `Asia/Taipei` - Asia/Taipei - `Asia/Tashkent` - Asia/Tashkent - `Asia/Tbilisi` - Asia/Tbilisi - `Asia/Tehran` - Asia/Tehran - `Asia/Thimphu` - Asia/Thimphu - `Asia/Tokyo` - Asia/Tokyo - `Asia/Tomsk` - Asia/Tomsk - `Asia/Ulaanbaatar` - Asia/Ulaanbaatar - `Asia/Urumqi` - Asia/Urumqi - `Asia/Ust-Nera` - Asia/Ust-Nera - `Asia/Vientiane` - Asia/Vientiane - `Asia/Vladivostok` - Asia/Vladivostok - `Asia/Yakutsk` - Asia/Yakutsk - `Asia/Yangon` - Asia/Yangon - `Asia/Yekaterinburg` - Asia/Yekaterinburg - `Asia/Yerevan` - Asia/Yerevan - `Atlantic/Azores` - Atlantic/Azores - `Atlantic/Bermuda` - Atlantic/Bermuda - `Atlantic/Canary` - Atlantic/Canary - `Atlantic/Cape_Verde` - Atlantic/Cape\_Verde - `Atlantic/Faroe` - Atlantic/Faroe - `Atlantic/Madeira` - Atlantic/Madeira - `Atlantic/Reykjavik` - Atlantic/Reykjavik - `Atlantic/South_Georgia` - Atlantic/South\_Georgia - `Atlantic/St_Helena` - Atlantic/St\_Helena - `Atlantic/Stanley` - Atlantic/Stanley - `Australia/Adelaide` - Australia/Adelaide - `Australia/Brisbane` - Australia/Brisbane - `Australia/Broken_Hill` - Australia/Broken\_Hill - `Australia/Darwin` - Australia/Darwin - `Australia/Eucla` - Australia/Eucla - `Australia/Hobart` - Australia/Hobart - `Australia/Lindeman` - Australia/Lindeman - `Australia/Lord_Howe` - Australia/Lord\_Howe - `Australia/Melbourne` - Australia/Melbourne - `Australia/Perth` - Australia/Perth - `Australia/Sydney` - Australia/Sydney - `Canada/Atlantic` - Canada/Atlantic - `Canada/Central` - Canada/Central - `Canada/Eastern` - Canada/Eastern - `Canada/Mountain` - Canada/Mountain - `Canada/Newfoundland` - Canada/Newfoundland - `Canada/Pacific` - Canada/Pacific - `Europe/Amsterdam` - Europe/Amsterdam - `Europe/Andorra` - Europe/Andorra - `Europe/Astrakhan` - Europe/Astrakhan - `Europe/Athens` - Europe/Athens - `Europe/Belgrade` - Europe/Belgrade - `Europe/Berlin` - Europe/Berlin - `Europe/Bratislava` - Europe/Bratislava - `Europe/Brussels` - Europe/Brussels - `Europe/Bucharest` - Europe/Bucharest - `Europe/Budapest` - Europe/Budapest - `Europe/Busingen` - Europe/Busingen - `Europe/Chisinau` - Europe/Chisinau - `Europe/Copenhagen` - Europe/Copenhagen - `Europe/Dublin` - Europe/Dublin - `Europe/Gibraltar` - Europe/Gibraltar - `Europe/Guernsey` - Europe/Guernsey - `Europe/Helsinki` - Europe/Helsinki - `Europe/Isle_of_Man` - Europe/Isle\_of\_Man - `Europe/Istanbul` - Europe/Istanbul - `Europe/Jersey` - Europe/Jersey - `Europe/Kaliningrad` - Europe/Kaliningrad - `Europe/Kirov` - Europe/Kirov - `Europe/Kyiv` - Europe/Kyiv - `Europe/Lisbon` - Europe/Lisbon - `Europe/Ljubljana` - Europe/Ljubljana - `Europe/London` - Europe/London - `Europe/Luxembourg` - Europe/Luxembourg - `Europe/Madrid` - Europe/Madrid - `Europe/Malta` - Europe/Malta - `Europe/Mariehamn` - Europe/Mariehamn - `Europe/Minsk` - Europe/Minsk - `Europe/Monaco` - Europe/Monaco - `Europe/Moscow` - Europe/Moscow - `Europe/Oslo` - Europe/Oslo - `Europe/Paris` - Europe/Paris - `Europe/Podgorica` - Europe/Podgorica - `Europe/Prague` - Europe/Prague - `Europe/Riga` - Europe/Riga - `Europe/Rome` - Europe/Rome - `Europe/Samara` - Europe/Samara - `Europe/San_Marino` - Europe/San\_Marino - `Europe/Sarajevo` - Europe/Sarajevo - `Europe/Saratov` - Europe/Saratov - `Europe/Simferopol` - Europe/Simferopol - `Europe/Skopje` - Europe/Skopje - `Europe/Sofia` - Europe/Sofia - `Europe/Stockholm` - Europe/Stockholm - `Europe/Tallinn` - Europe/Tallinn - `Europe/Tirane` - Europe/Tirane - `Europe/Ulyanovsk` - Europe/Ulyanovsk - `Europe/Vaduz` - Europe/Vaduz - `Europe/Vatican` - Europe/Vatican - `Europe/Vienna` - Europe/Vienna - `Europe/Vilnius` - Europe/Vilnius - `Europe/Volgograd` - Europe/Volgograd - `Europe/Warsaw` - Europe/Warsaw - `Europe/Zagreb` - Europe/Zagreb - `Europe/Zurich` - Europe/Zurich - `GMT` - GMT - `Indian/Antananarivo` - Indian/Antananarivo - `Indian/Chagos` - Indian/Chagos - `Indian/Christmas` - Indian/Christmas - `Indian/Cocos` - Indian/Cocos - `Indian/Comoro` - Indian/Comoro - `Indian/Kerguelen` - Indian/Kerguelen - `Indian/Mahe` - Indian/Mahe - `Indian/Maldives` - Indian/Maldives - `Indian/Mauritius` - Indian/Mauritius - `Indian/Mayotte` - Indian/Mayotte - `Indian/Reunion` - Indian/Reunion - `Pacific/Apia` - Pacific/Apia - `Pacific/Auckland` - Pacific/Auckland - `Pacific/Bougainville` - Pacific/Bougainville - `Pacific/Chatham` - Pacific/Chatham - `Pacific/Chuuk` - Pacific/Chuuk - `Pacific/Easter` - Pacific/Easter - `Pacific/Efate` - Pacific/Efate - `Pacific/Fakaofo` - Pacific/Fakaofo - `Pacific/Fiji` - Pacific/Fiji - `Pacific/Funafuti` - Pacific/Funafuti - `Pacific/Galapagos` - Pacific/Galapagos - `Pacific/Gambier` - Pacific/Gambier - `Pacific/Guadalcanal` - Pacific/Guadalcanal - `Pacific/Guam` - Pacific/Guam - `Pacific/Honolulu` - Pacific/Honolulu - `Pacific/Kanton` - Pacific/Kanton - `Pacific/Kiritimati` - Pacific/Kiritimati - `Pacific/Kosrae` - Pacific/Kosrae - `Pacific/Kwajalein` - Pacific/Kwajalein - `Pacific/Majuro` - Pacific/Majuro - `Pacific/Marquesas` - Pacific/Marquesas - `Pacific/Midway` - Pacific/Midway - `Pacific/Nauru` - Pacific/Nauru - `Pacific/Niue` - Pacific/Niue - `Pacific/Norfolk` - Pacific/Norfolk - `Pacific/Noumea` - Pacific/Noumea - `Pacific/Pago_Pago` - Pacific/Pago\_Pago - `Pacific/Palau` - Pacific/Palau - `Pacific/Pitcairn` - Pacific/Pitcairn - `Pacific/Pohnpei` - Pacific/Pohnpei - `Pacific/Port_Moresby` - Pacific/Port\_Moresby - `Pacific/Rarotonga` - Pacific/Rarotonga - `Pacific/Saipan` - Pacific/Saipan - `Pacific/Tahiti` - Pacific/Tahiti - `Pacific/Tarawa` - Pacific/Tarawa - `Pacific/Tongatapu` - Pacific/Tongatapu - `Pacific/Wake` - Pacific/Wake - `Pacific/Wallis` - Pacific/Wallis - `US/Alaska` - US/Alaska - `US/Arizona` - US/Arizona - `US/Central` - US/Central - `US/Eastern` - US/Eastern - `US/Hawaii` - US/Hawaii - `US/Mountain` - US/Mountain - `US/Pacific` - US/Pacific - `UTC` - UTC One of `Africa/Abidjan`, `Africa/Accra`, `Africa/Addis_Ababa`, `Africa/Algiers`, `Africa/Asmara`, `Africa/Bamako`, `Africa/Bangui`, `Africa/Banjul`, `Africa/Bissau`, `Africa/Blantyre`, `Africa/Brazzaville`, `Africa/Bujumbura`, `Africa/Cairo`, `Africa/Casablanca`, `Africa/Ceuta`, `Africa/Conakry`, `Africa/Dakar`, `Africa/Dar_es_Salaam`, `Africa/Djibouti`, `Africa/Douala`, `Africa/El_Aaiun`, `Africa/Freetown`, `Africa/Gaborone`, `Africa/Harare`, `Africa/Johannesburg`, `Africa/Juba`, `Africa/Kampala`, `Africa/Khartoum`, `Africa/Kigali`, `Africa/Kinshasa`, `Africa/Lagos`, `Africa/Libreville`, `Africa/Lome`, `Africa/Luanda`, `Africa/Lubumbashi`, `Africa/Lusaka`, `Africa/Malabo`, `Africa/Maputo`, `Africa/Maseru`, `Africa/Mbabane`, `Africa/Mogadishu`, `Africa/Monrovia`, `Africa/Nairobi`, `Africa/Ndjamena`, `Africa/Niamey`, `Africa/Nouakchott`, `Africa/Ouagadougou`, `Africa/Porto-Novo`, `Africa/Sao_Tome`, `Africa/Tripoli`, `Africa/Tunis`, `Africa/Windhoek`, `America/Adak`, `America/Anchorage`, `America/Anguilla`, `America/Antigua`, `America/Araguaina`, `America/Argentina/Buenos_Aires`, `America/Argentina/Catamarca`, `America/Argentina/Cordoba`, `America/Argentina/Jujuy`, `America/Argentina/La_Rioja`, `America/Argentina/Mendoza`, `America/Argentina/Rio_Gallegos`, `America/Argentina/Salta`, `America/Argentina/San_Juan`, `America/Argentina/San_Luis`, `America/Argentina/Tucuman`, `America/Argentina/Ushuaia`, `America/Aruba`, `America/Asuncion`, `America/Atikokan`, `America/Bahia`, `America/Bahia_Banderas`, `America/Barbados`, `America/Belem`, `America/Belize`, `America/Blanc-Sablon`, `America/Boa_Vista`, `America/Bogota`, `America/Boise`, `America/Cambridge_Bay`, `America/Campo_Grande`, `America/Cancun`, `America/Caracas`, `America/Cayenne`, `America/Cayman`, `America/Chicago`, `America/Chihuahua`, `America/Ciudad_Juarez`, `America/Costa_Rica`, `America/Creston`, `America/Cuiaba`, `America/Curacao`, `America/Danmarkshavn`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Detroit`, `America/Dominica`, `America/Edmonton`, `America/Eirunepe`, `America/El_Salvador`, `America/Fort_Nelson`, `America/Fortaleza`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Grand_Turk`, `America/Grenada`, `America/Guadeloupe`, `America/Guatemala`, `America/Guayaquil`, `America/Guyana`, `America/Halifax`, `America/Havana`, `America/Hermosillo`, `America/Indiana/Indianapolis`, `America/Indiana/Knox`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Tell_City`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Inuvik`, `America/Iqaluit`, `America/Jamaica`, `America/Juneau`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Kralendijk`, `America/La_Paz`, `America/Lima`, `America/Los_Angeles`, `America/Lower_Princes`, `America/Maceio`, `America/Managua`, `America/Manaus`, `America/Marigot`, `America/Martinique`, `America/Matamoros`, `America/Mazatlan`, `America/Menominee`, `America/Merida`, `America/Metlakatla`, `America/Mexico_City`, `America/Miquelon`, `America/Moncton`, `America/Monterrey`, `America/Montevideo`, `America/Montserrat`, `America/Nassau`, `America/New_York`, `America/Nome`, `America/Noronha`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Nuuk`, `America/Ojinaga`, `America/Panama`, `America/Paramaribo`, `America/Phoenix`, `America/Port-au-Prince`, `America/Port_of_Spain`, `America/Porto_Velho`, `America/Puerto_Rico`, `America/Punta_Arenas`, `America/Rankin_Inlet`, `America/Recife`, `America/Regina`, `America/Resolute`, `America/Rio_Branco`, `America/Santarem`, `America/Santiago`, `America/Santo_Domingo`, `America/Sao_Paulo`, `America/Scoresbysund`, `America/Sitka`, `America/St_Barthelemy`, `America/St_Johns`, `America/St_Kitts`, `America/St_Lucia`, `America/St_Thomas`, `America/St_Vincent`, `America/Swift_Current`, `America/Tegucigalpa`, `America/Thule`, `America/Tijuana`, `America/Toronto`, `America/Tortola`, `America/Vancouver`, `America/Whitehorse`, `America/Winnipeg`, `America/Yakutat`, `Antarctica/Casey`, `Antarctica/Davis`, `Antarctica/DumontDUrville`, `Antarctica/Macquarie`, `Antarctica/Mawson`, `Antarctica/McMurdo`, `Antarctica/Palmer`, `Antarctica/Rothera`, `Antarctica/Syowa`, `Antarctica/Troll`, `Antarctica/Vostok`, `Arctic/Longyearbyen`, `Asia/Aden`, `Asia/Almaty`, `Asia/Amman`, `Asia/Anadyr`, `Asia/Aqtau`, `Asia/Aqtobe`, `Asia/Ashgabat`, `Asia/Atyrau`, `Asia/Baghdad`, `Asia/Bahrain`, `Asia/Baku`, `Asia/Bangkok`, `Asia/Barnaul`, `Asia/Beirut`, `Asia/Bishkek`, `Asia/Brunei`, `Asia/Chita`, `Asia/Choibalsan`, `Asia/Colombo`, `Asia/Damascus`, `Asia/Dhaka`, `Asia/Dili`, `Asia/Dubai`, `Asia/Dushanbe`, `Asia/Famagusta`, `Asia/Gaza`, `Asia/Hebron`, `Asia/Ho_Chi_Minh`, `Asia/Hong_Kong`, `Asia/Hovd`, `Asia/Irkutsk`, `Asia/Jakarta`, `Asia/Jayapura`, `Asia/Jerusalem`, `Asia/Kabul`, `Asia/Kamchatka`, `Asia/Karachi`, `Asia/Kathmandu`, `Asia/Khandyga`, `Asia/Kolkata`, `Asia/Krasnoyarsk`, `Asia/Kuala_Lumpur`, `Asia/Kuching`, `Asia/Kuwait`, `Asia/Macau`, `Asia/Magadan`, `Asia/Makassar`, `Asia/Manila`, `Asia/Muscat`, `Asia/Nicosia`, `Asia/Novokuznetsk`, `Asia/Novosibirsk`, `Asia/Omsk`, `Asia/Oral`, `Asia/Phnom_Penh`, `Asia/Pontianak`, `Asia/Pyongyang`, `Asia/Qatar`, `Asia/Qostanay`, `Asia/Qyzylorda`, `Asia/Riyadh`, `Asia/Sakhalin`, `Asia/Samarkand`, `Asia/Seoul`, `Asia/Shanghai`, `Asia/Singapore`, `Asia/Srednekolymsk`, `Asia/Taipei`, `Asia/Tashkent`, `Asia/Tbilisi`, `Asia/Tehran`, `Asia/Thimphu`, `Asia/Tokyo`, `Asia/Tomsk`, `Asia/Ulaanbaatar`, `Asia/Urumqi`, `Asia/Ust-Nera`, `Asia/Vientiane`, `Asia/Vladivostok`, `Asia/Yakutsk`, `Asia/Yangon`, `Asia/Yekaterinburg`, `Asia/Yerevan`, `Atlantic/Azores`, `Atlantic/Bermuda`, `Atlantic/Canary`, `Atlantic/Cape_Verde`, `Atlantic/Faroe`, `Atlantic/Madeira`, `Atlantic/Reykjavik`, `Atlantic/South_Georgia`, `Atlantic/St_Helena`, `Atlantic/Stanley`, `Australia/Adelaide`, `Australia/Brisbane`, `Australia/Broken_Hill`, `Australia/Darwin`, `Australia/Eucla`, `Australia/Hobart`, `Australia/Lindeman`, `Australia/Lord_Howe`, `Australia/Melbourne`, `Australia/Perth`, `Australia/Sydney`, `Canada/Atlantic`, `Canada/Central`, `Canada/Eastern`, `Canada/Mountain`, `Canada/Newfoundland`, `Canada/Pacific`, `Europe/Amsterdam`, `Europe/Andorra`, `Europe/Astrakhan`, `Europe/Athens`, `Europe/Belgrade`, `Europe/Berlin`, `Europe/Bratislava`, `Europe/Brussels`, `Europe/Bucharest`, `Europe/Budapest`, `Europe/Busingen`, `Europe/Chisinau`, `Europe/Copenhagen`, `Europe/Dublin`, `Europe/Gibraltar`, `Europe/Guernsey`, `Europe/Helsinki`, `Europe/Isle_of_Man`, `Europe/Istanbul`, `Europe/Jersey`, `Europe/Kaliningrad`, `Europe/Kirov`, `Europe/Kyiv`, `Europe/Lisbon`, `Europe/Ljubljana`, `Europe/London`, `Europe/Luxembourg`, `Europe/Madrid`, `Europe/Malta`, `Europe/Mariehamn`, `Europe/Minsk`, `Europe/Monaco`, `Europe/Moscow`, `Europe/Oslo`, `Europe/Paris`, `Europe/Podgorica`, `Europe/Prague`, `Europe/Riga`, `Europe/Rome`, `Europe/Samara`, `Europe/San_Marino`, `Europe/Sarajevo`, `Europe/Saratov`, `Europe/Simferopol`, `Europe/Skopje`, `Europe/Sofia`, `Europe/Stockholm`, `Europe/Tallinn`, `Europe/Tirane`, `Europe/Ulyanovsk`, `Europe/Vaduz`, `Europe/Vatican`, `Europe/Vienna`, `Europe/Vilnius`, `Europe/Volgograd`, `Europe/Warsaw`, `Europe/Zagreb`, `Europe/Zurich`, `GMT`, `Indian/Antananarivo`, `Indian/Chagos`, `Indian/Christmas`, `Indian/Cocos`, `Indian/Comoro`, `Indian/Kerguelen`, `Indian/Mahe`, `Indian/Maldives`, `Indian/Mauritius`, `Indian/Mayotte`, `Indian/Reunion`, `Pacific/Apia`, `Pacific/Auckland`, `Pacific/Bougainville`, `Pacific/Chatham`, `Pacific/Chuuk`, `Pacific/Easter`, `Pacific/Efate`, `Pacific/Fakaofo`, `Pacific/Fiji`, `Pacific/Funafuti`, `Pacific/Galapagos`, `Pacific/Gambier`, `Pacific/Guadalcanal`, `Pacific/Guam`, `Pacific/Honolulu`, `Pacific/Kanton`, `Pacific/Kiritimati`, `Pacific/Kosrae`, `Pacific/Kwajalein`, `Pacific/Majuro`, `Pacific/Marquesas`, `Pacific/Midway`, `Pacific/Nauru`, `Pacific/Niue`, `Pacific/Norfolk`, `Pacific/Noumea`, `Pacific/Pago_Pago`, `Pacific/Palau`, `Pacific/Pitcairn`, `Pacific/Pohnpei`, `Pacific/Port_Moresby`, `Pacific/Rarotonga`, `Pacific/Saipan`, `Pacific/Tahiti`, `Pacific/Tarawa`, `Pacific/Tongatapu`, `Pacific/Wake`, `Pacific/Wallis`, `US/Alaska`, `US/Arizona`, `US/Central`, `US/Eastern`, `US/Hawaii`, `US/Mountain`, `US/Pacific`, `UTC`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `archive_in`, `archived_at`, `close_in`, `cover_image`, `cover_image_url`, `created_at`, `created_by_id`, `cycle_view`, `default_assignee_id`, `default_state_id`, `description`, `emoji`, `estimate_id`, `external_id`, `external_source`, `guest_view_all_features`, `icon_prop`, `id`, `identifier`, `intake_view`, `is_issue_type_enabled`, `is_time_tracking_enabled`, `issue_views_view`, `logo_props`, `module_view`, `name`, `network`, `page_view`, `priority`, `project_lead_id`, `start_date`, `state_id`, `target_date`, `timezone`. | | `expand` | string | No | Comma-separated relations to embed: `default_assignee`, `project_lead`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `v1_icon_prop` | json | No | v1 compatibility only. Icon prop. | #### Output [#output-9] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------ | | `result` | object | Plane V2 Projects | | ↳ `archive_in` | json | Archive in | | ↳ `archived_at` | string | Archived at | | ↳ `close_in` | json | Close in | | ↳ `cover_image` | json | Cover image | | ↳ `cover_image_url` | json | Cover image url | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `cycle_view` | json | Cycle view | | ↳ `default_assignee_id` | string | Default assignee id | | ↳ `default_state_id` | string | Default state id | | ↳ `description` | json | Description | | ↳ `emoji` | json | Emoji | | ↳ `estimate_id` | string | Estimate id | | ↳ `external_id` | json | External id | | ↳ `external_source` | json | External source | | ↳ `guest_view_all_features` | json | Guest view all features | | ↳ `icon_prop` | json | Icon prop | | ↳ `id` | json | Id | | ↳ `identifier` | json | Identifier | | ↳ `intake_view` | json | Intake view | | ↳ `is_issue_type_enabled` | json | Is issue type enabled | | ↳ `is_time_tracking_enabled` | json | Is time tracking enabled | | ↳ `issue_views_view` | json | Issue views view | | ↳ `logo_props` | json | Logo props | | ↳ `module_view` | json | Module view | | ↳ `name` | json | Name | | ↳ `network` | json | Network | | ↳ `page_view` | json | Page view | | ↳ `priority` | json | Priority | | ↳ `project_lead_id` | string | Project lead id | | ↳ `start_date` | string | Start date | | ↳ `state_id` | string | State id | | ↳ `target_date` | string | Target date | | ↳ `timezone` | json | Timezone | | ↳ `default_assignee` | json | Default assignee | | ↳ `project_lead` | json | Project lead | | ↳ `total_members` | json | Total members | | ↳ `total_cycles` | json | Total cycles | | ↳ `total_modules` | json | Total modules | | ↳ `is_member` | boolean | Is member | | ↳ `sort_order` | number | Sort order | | ↳ `member_role` | json | Member role | | ↳ `is_deployed` | boolean | Is deployed | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `cover_image_asset` | string | Cover image asset | | ↳ `estimate` | string | Estimate | | ↳ `default_state` | string | Default state | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_voting_enabled` | boolean | Is voting enabled | | ↳ `auto_reminder_days` | number | Auto reminder days | | ↳ `state` | string | State | ### Plane Create a project page [#plane-create-a-project-page] Create a project page in Plane. Supports API v1 compatibility. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `name` | string | Yes | Display name. | | `access` | string | No | Who can see this. | | `archived_at` | string | No | The archived at. Nullable. | | `collection_id` | string | No | Id of the related collection. Nullable. | | `color` | string | No | Hex color used wherever this is rendered, for example `#3f76ff`. Maximum 255 characters. | | `description_html` | string | No | Rich-text body as HTML. This is the field the Plane editor round-trips. | | `external_id` | string | No | Your system's identifier for this record, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `is_locked` | boolean | No | Prevents further edits to the content. | | `logo_props` | string | No | Editor-owned logo descriptor. Pass back what you read rather than composing it by hand. | | `parent_id` | string | No | Id of the related parent. Nullable. | | `sort_order` | number | No | Manual ordering weight. Lower sorts first. | | `view_props` | string | No | Editor-owned layout descriptor. Pass back what you read. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `access`, `archived_at`, `collection_id`, `color`, `created_at`, `created_by_id`, `description_html`, `description_stripped`, `external_id`, `external_source`, `id`, `is_global`, `is_locked`, `logo_props`, `name`, `owned_by_id`, `parent_id`, `sort_order`, `view_props`. | | `expand` | string | No | Comma-separated relations to embed: `owned_by`, `parent`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `v1_access` | number | No | v1 compatibility only. - `0` - Public - `1` - Private | | `v1_view_props` | json | No | v1 compatibility only. View props. | | `v1_logo_props` | json | No | v1 compatibility only. Logo props. | #### Output [#output-10] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------- | | `result` | object | Plane V2 Project- Pages | | ↳ `access` | json | Access | | ↳ `archived_at` | string | Archived at | | ↳ `collection_id` | json | Collection id | | ↳ `color` | json | Color | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `description_html` | json | Description html | | ↳ `description_stripped` | json | Description stripped | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `id` | json | Id | | ↳ `is_global` | boolean | Is global | | ↳ `is_locked` | json | Is locked | | ↳ `logo_props` | json | Logo props | | ↳ `name` | json | Name | | ↳ `owned_by_id` | string | Owned by id | | ↳ `parent_id` | json | Parent id | | ↳ `sort_order` | json | Sort order | | ↳ `view_props` | json | View props | | ↳ `owned_by` | json | Owned by | | ↳ `parent` | json | Parent | | ↳ `description_binary` | string | Description binary | | ↳ `description` | json | Description | | ↳ `updated_at` | string | Updated at | | ↳ `anchor` | string | Anchor | | ↳ `workspace` | string | Workspace | | ↳ `projects` | array | Projects | | ↳ `page_collection_id` | string | Page collection id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `description_json` | object | Description json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `attrs` | object | Attrs | | ↳ `id` | json | Id | | ↳ `textAlign` | json | Id | | ↳ `aiSuggestion` | json | Id | | ↳ `content` | array | Content | | ↳ `text` | string | Asset Id | | ↳ `type` | string | Asset Id | ### Plane Create a state [#plane-create-a-state] Create a state in Plane. Supports API v1 compatibility. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to add the state to. | | `name` | string | Yes | Display name for the state, unique within the project. Maximum 255 characters. | | `color` | string | Yes | Hex color used wherever the state is rendered, for example `#3f76ff`. Maximum 255 characters. | | `group` | string | No | The workflow group the state belongs to. Determines how the state is treated by boards, charts, and cycle progress. - `backlog` — Not yet scheduled - `unstarted` — Scheduled but not begun - `started` — Actively in progress - `completed` — Finished successfully - `cancelled` — Closed without completion - `triage` — Awaiting intake review Defaults to `backlog` when omitted. | | `description` | string | No | Free-form description of what the state means in this workflow. | | `sequence` | number | No | Ordering weight within the project. Lower values sort first. Assigned automatically when omitted. | | `is_default` | boolean | No | Make this the project's default state — where work items land when no `state_id` is supplied. Setting it clears the flag on the previous default. | | `external_id` | string | No | Your system's identifier for this state, for sync and import correlation. Maximum 255 characters. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `group`, `id`, `is_default`, `is_triage`, `name`, `sequence`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `is_triage` | boolean | No | v1 compatibility only. Is triage. | | `default` | boolean | No | v1 compatibility only. Default. | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | --------------- | | `result` | object | Plane V2 States | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `group` | json | Group | | ↳ `sequence` | json | Sequence | | ↳ `is_default` | boolean | Is default | | ↳ `is_triage` | json | Is triage | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `default` | boolean | Default | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `slug` | string | Slug | | ↳ `deleted_by` | json | Deleted by | ### Plane Create a webhook [#plane-create-a-webhook] Create a webhook in Plane. Requires API v2. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `content_type` | string | No | - `application/json` - application/json - `application/x-www-form-urlencoded` - application/x-www-form-urlencoded One of `application/json`, `application/x-www-form-urlencoded`. | | `is_active` | boolean | No | Whether the record is active. | | `name` | string | No | Display name. Maximum 255 characters. Nullable. | | `scopes` | json | No | The scopes. | | `url` | string | Yes | Target URL. | | `version` | string | No | Version string, for example `1.4.0`. Maximum 10 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `content_type`, `created_at`, `created_by_id`, `id`, `is_active`, `name`, `scopes`, `url`, `version`. | #### Output [#output-12] | Parameter | Type | Description | | ----------------- | ------- | ------------------ | | `result` | object | Plane V2 Webhooks | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | string | Unique identifier. | | ↳ `is_active` | boolean | Is active | | ↳ `name` | string | Name | | ↳ `scopes` | array | Scopes | | ↳ `url` | string | Url | | ↳ `version` | string | Version | | ↳ `secret_key` | string | Secret key | ### Plane Create a work item [#plane-create-a-work-item] Create a work item in Plane. Supports API v1 compatibility. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to create the work item in. | | `name` | string | Yes | Title of the work item. Maximum 255 characters. The only required field. | | `description_html` | string | No | Rich-text body as HTML, for example `Steps to reproduce…`. The HTML is sanitized on the way in; content that can't be sanitized is rejected with a `400`. `description_html` is **not** part of the read shape, so it will not appear in the response. | | `priority` | string | No | One of `urgent`, `high`, `medium`, `low`, `none`. Defaults to `none`. | | `state_id` | string | No | The workflow state to create the work item in. Must be a state of this project. Omit it and the work item lands in the project's default state. | | `state` | string | No | The state's **name** instead of its id, for example `In Progress`. Matched case-insensitively within the project. Write-only. Unknown name or a name that matches more than one state is a `400`. Sending both `state` and `state_id` is a `400`. | | `type_id` | string | No | The work item type. Accepts a type owned by the project and a workspace-level type imported into it. Requires work item types to be enabled. | | `type` | string | No | The type's **name** instead of its id, for example `Bug`. Matched case-insensitively among the project's non-epic types. Write-only. | | `parent_id` | string | No | The parent work item. The parent must be in the same workspace, but it may live in a different project. | | `parent` | string | No | The parent's **identifier** instead of its id, for example `PROJ-118`. Resolved within the workspace. Write-only. | | `assignee_ids` | json | No | User ids to assign. Each must be an active, assignable member of the project. Leave it out and the project's default assignee is applied, if one is configured. Send `\[\]` to create the work item with no assignee at all. | | `assignees` | json | No | Member **email addresses** instead of ids, for example `\["ana@example.com"\]`. Every address must belong to an active, assignable project member — any that don't are named in the `400`. Write-only. | | `label_ids` | json | No | Label ids to apply. Each must be a label of this project, or a workspace-level label available to it. | | `labels` | json | No | Label **names** instead of ids, for example `\["regression", "auth"\]`. Matched case-insensitively against the project's labels and the workspace-level labels available to it. A name that exists at both levels is ambiguous and returns a `400` telling you to use `label_ids`. Write-only. | | `estimate_point_id` | string | No | The estimate point to assign, from the project's active estimate system. | | `estimate` | string | No | The estimate point's **value** instead of its id, for example `5` or `L`. Resolved against the project's active estimate. Write-only. | | `start_date` | string | No | Planned start, for example `2026-01-12`. Must not be after `target_date`. | | `target_date` | string | No | Planned due date, for example `2026-01-20`. | | `external_id` | string | No | Your system's identifier for this work item, for sync and import correlation. Maximum 255 characters. Stored and filterable on \[List work items]\([https://developers.plane.so/api-reference/v2/work-items/list-work-items](https://developers.plane.so/api-reference/v2/work-items/list-work-items)), but not returned on reads. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `deleted_at` | string | No | v1 compatibility only. Deleted at. | | `point` | number | No | v1 compatibility only. Point. | | `sequence_id` | number | No | v1 compatibility only. Sequence id. | | `sort_order` | number | No | v1 compatibility only. Sort order. | | `archived_at` | string | No | v1 compatibility only. Archived at. | | `is_draft` | boolean | No | v1 compatibility only. Is draft. | | `created_by` | string | No | v1 compatibility only. Created by. | | `created_at` | string | No | v1 compatibility only. Creation timestamp for imports. | | `custom_fields` | json | No | JSON custom field values. API v2 only. | | `cycle_id` | string | No | Cycle ID. API v2 only. | | `module_ids` | json | No | Module IDs. API v2 only. | #### Output [#output-13] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | json | Sequence id | | ↳ `priority` | json | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | json | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `avatar` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `deleted_by` | json | Id | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | json | Id | | ↳ `name` | string | Asset Id | | ↳ `description` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `sort_order` | number | Sort Order | | ↳ `external_source` | json | Id | | ↳ `external_id` | json | Id | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | json | Id | | ↳ `workspace` | string | Asset Id | | ↳ `project` | string | Asset Id | | ↳ `parent` | json | Id | | ↳ `modules` | array | Modules | | ↳ `parent` | json | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | json | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | json | Group | | ↳ `type` | json | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `project_id` | string | Project id | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `point` | number | Point | | ↳ `description_html` | string | Description html | | ↳ `description_stripped` | string | Description stripped | | ↳ `description_binary` | string | Description binary | | ↳ `sort_order` | number | Sort order | | ↳ `completed_at` | string | Completed at | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | json | Project | | ↳ `workspace` | string | Workspace | | ↳ `estimate_point` | string | Estimate point | | ↳ `description` | string | Description | | ↳ `deleted_by` | json | Deleted by | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `last_activity_at` | string | Last activity at | | ↳ `min_assignee_first_name` | string | Min assignee first name | | ↳ `min_label_name` | string | Min label name | | ↳ `min_module_name` | string | Min module name | | ↳ `priority_rank` | number | Priority rank | | ↳ `state_group` | string | State group | ### Plane Delete an attachment [#plane-delete-an-attachment] Delete an attachment in Plane. Supports API v1 compatibility. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The attachment id. | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a comment [#plane-delete-a-comment] Delete a comment in Plane. Supports API v1 compatibility. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `work_item_id` | string | Yes | The work item the comment is attached to. | | `pk` | string | Yes | The comment to delete. | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a cycle [#plane-delete-a-cycle] Delete a cycle in Plane. Supports API v1 compatibility. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the cycle belongs to. | | `pk` | string | Yes | The cycle to delete. | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a label [#plane-delete-a-label] Delete a label in Plane. Supports API v1 compatibility. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the label belongs to. | | `pk` | string | Yes | The label id to delete. | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a link [#plane-delete-a-link] Delete a link in Plane. Supports API v1 compatibility. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The link id. | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a module [#plane-delete-a-module] Delete a module in Plane. Supports API v1 compatibility. #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the module belongs to. | | `pk` | string | Yes | The module to delete. | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a project [#plane-delete-a-project] Delete a project in Plane. Supports API v1 compatibility. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The project id. | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a project page [#plane-delete-a-project-page] Delete a project page in Plane. Supports API v1 compatibility. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | The project page id. | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a state [#plane-delete-a-state] Delete a state in Plane. Supports API v1 compatibility. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the state belongs to. | | `pk` | string | Yes | The id of the state to delete. | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a webhook [#plane-delete-a-webhook] Delete a webhook in Plane. Requires API v2. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The webhook id. | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Delete a work item [#plane-delete-a-work-item] Delete a work item in Plane. Supports API v1 compatibility. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `pk` | string | Yes | The work item's UUID. This lookup is UUID-only — a `PROJ-142` identifier here returns `404`. | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Get an attachment [#plane-get-an-attachment] Get an attachment in Plane. Requires API v2. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The attachment id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `asset_url`, `attributes`, `content_type`, `created_at`, `created_by_id`, `external_id`, `external_source`, `id`, `is_uploaded`, `name`, `size`, `work_item_id`. | #### Output [#output-25] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------- | | `result` | object | Plane V2 Work- Item- Attachments | | ↳ `asset_url` | string | Asset url | | ↳ `attributes` | json | Attributes | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `id` | string | Unique identifier. | | ↳ `is_uploaded` | boolean | Is uploaded | | ↳ `name` | string | Name | | ↳ `size` | json | Size | | ↳ `work_item_id` | string | Work item id | ### Plane Get a comment [#plane-get-a-comment] Get a comment in Plane. Supports API v1 compatibility. #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `work_item_id` | string | Yes | The work item the comment is attached to. | | `pk` | string | Yes | The comment to retrieve. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `access`, `actor_id`, `comment_html`, `comment_stripped`, `created_at`, `created_by_id`, `edited_at`, `external_id`, `external_source`, `id`, `work_item_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `actor` (the comment author). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-26] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------- | | `result` | object | Plane V2 Work- Item- Comments | | ↳ `id` | json | Id | | ↳ `work_item_id` | string | Work item id | | ↳ `comment_html` | json | Comment html | | ↳ `comment_stripped` | json | Comment stripped | | ↳ `access` | json | Access | | ↳ `actor_id` | string | Actor id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `edited_at` | string | Edited at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `actor` | json | Actor | | ↳ `is_member` | boolean | Is member | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `attachments` | array | Attachments | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `parent` | string | Parent | | ↳ `description` | string | Description | | ↳ `comment_json` | object | Comment json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `text` | string | Asset Id | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_hidden` | boolean | Is hidden | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `hidden_reason` | json | Hidden reason | | ↳ `hidden_at` | json | Hidden at | | ↳ `hidden_by` | json | Hidden by | | ↳ `source` | json | Source | ### Plane Get current user [#plane-get-current-user] Get current user in Plane. Supports API v1 compatibility. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | #### Output [#output-27] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------- | | `result` | object | Plane V2 V2 Get Current Userresult | | ↳ `id` | string | Id | | ↳ `email` | string | Email | | ↳ `display_name` | string | Display name | | ↳ `principal_kind` | string | Principal kind | | ↳ `scopes` | array | Scopes | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `avatar` | string | Avatar | | ↳ `avatar_url` | string | Avatar URL | ### Plane Get a cycle [#plane-get-a-cycle] Get a cycle in Plane. Supports API v1 compatibility. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the cycle belongs to. A cycle id from a different project returns `404`, not the record. | | `pk` | string | Yes | The cycle to retrieve. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `created_at`, `created_by_id`, `description`, `end_date`, `external_id`, `external_source`, `id`, `logo_props`, `name`, `owned_by_id`, `sort_order`, `start_date`, `timezone`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `owned_by` (the cycle owner). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-28] | Parameter | Type | Description | | ----------------------- | ------ | ------------------- | | `result` | object | Plane V2 Cycles | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `timezone` | json | Timezone | | ↳ `owned_by_id` | string | Owned by id | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `owned_by` | json | Owned by | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `total_estimates` | number | Total estimates | | ↳ `completed_estimates` | number | Completed estimates | | ↳ `started_estimates` | number | Started estimates | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `view_props` | json | View props | | ↳ `progress_snapshot` | json | Progress snapshot | | ↳ `archived_at` | string | Archived at | | ↳ `version` | json | Version | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `status` | string | Status | | ↳ `deleted_by` | json | Deleted by | ### Plane Get a label [#plane-get-a-label] Get a label in Plane. Supports API v1 compatibility. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the label belongs to. | | `pk` | string | Yes | The label id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `name`, `parent_id`, `sort_order`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | #### Output [#output-29] | Parameter | Type | Description | | ------------------- | ------ | --------------- | | `result` | object | Plane V2 Labels | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `sort_order` | json | Sort order | | ↳ `parent_id` | string | Parent id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `project` | string | Project | | ↳ `parent` | string | Parent | | ↳ `deleted_by` | json | Deleted by | ### Plane Get a link [#plane-get-a-link] Get a link in Plane. Supports API v1 compatibility. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The link id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `created_at`, `created_by_id`, `id`, `metadata`, `title`, `url`, `work_item_id`. | | `cursor` | string | No | v1 compatibility only. Pagination cursor for getting next set of results | | `expand` | string | No | v1 compatibility only. Comma-separated list of related fields to expand in response Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `per_page` | number | No | v1 compatibility only. Number of results per page (default: 20, max: 100) | #### Output [#output-30] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------- | | `result` | object | Plane V2 Work- Item- Links | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | json | Id | | ↳ `metadata` | json | Metadata | | ↳ `url` | string | Asset Id | | ↳ `title` | string | Asset Id | | ↳ `favicon` | string | Asset Id | | ↳ `favicon_url` | json | Logo Props | | ↳ `title` | json | Title | | ↳ `url` | json | Url | | ↳ `work_item_id` | string | Work item id | | ↳ `name` | string | Legacy link name. | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `grouped_by` | string | Grouped by | | ↳ `sub_grouped_by` | string | Sub grouped by | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `prev_cursor` | string | Prev cursor | | ↳ `next_page_results` | boolean | Next page results | | ↳ `prev_page_results` | boolean | Prev page results | | ↳ `count` | number | Count | | ↳ `total_pages` | number | Total pages | | ↳ `total_results` | number | Total results | | ↳ `extra_stats` | json | Extra stats (nullable provider value). | | ↳ `results` | array | Results | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `created_at` | string | Asset Id | | ↳ `deleted_by` | json | Deleted by | ### Plane Get a module [#plane-get-a-module] Get a module in Plane. Supports API v1 compatibility. #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the module belongs to. | | `pk` | string | Yes | The module to retrieve. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `lead_id`, `logo_props`, `member_ids`, `name`, `sort_order`, `start_date`, `status`, `target_date`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `lead` (the module lead), `members` (the module members). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-31] | Parameter | Type | Description | | -------------------- | ------ | ---------------- | | `result` | object | Plane V2 Modules | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `status` | json | Status | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `lead_id` | string | Lead id | | ↳ `member_ids` | array | Member ids | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `lead` | json | Lead | | ↳ `members` | array | Members | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `view_props` | json | View props | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `deleted_by` | json | Deleted by | ### Plane Get a project [#plane-get-a-project] Get a project in Plane. Supports API v1 compatibility. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The project id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `archive_in`, `archived_at`, `close_in`, `cover_image`, `cover_image_url`, `created_at`, `created_by_id`, `cycle_view`, `default_assignee_id`, `default_state_id`, `description`, `emoji`, `estimate_id`, `external_id`, `external_source`, `guest_view_all_features`, `icon_prop`, `id`, `identifier`, `intake_view`, `is_issue_type_enabled`, `is_time_tracking_enabled`, `issue_views_view`, `logo_props`, `module_view`, `name`, `network`, `page_view`, `priority`, `project_lead_id`, `start_date`, `state_id`, `target_date`, `timezone`. | | `expand` | string | No | Comma-separated relations to embed: `default_assignee`, `project_lead`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-32] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------ | | `result` | object | Plane V2 Projects | | ↳ `archive_in` | json | Archive in | | ↳ `archived_at` | string | Archived at | | ↳ `close_in` | json | Close in | | ↳ `cover_image` | json | Cover image | | ↳ `cover_image_url` | json | Cover image url | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `cycle_view` | json | Cycle view | | ↳ `default_assignee_id` | string | Default assignee id | | ↳ `default_state_id` | string | Default state id | | ↳ `description` | json | Description | | ↳ `emoji` | json | Emoji | | ↳ `estimate_id` | string | Estimate id | | ↳ `external_id` | json | External id | | ↳ `external_source` | json | External source | | ↳ `guest_view_all_features` | json | Guest view all features | | ↳ `icon_prop` | json | Icon prop | | ↳ `id` | json | Id | | ↳ `identifier` | json | Identifier | | ↳ `intake_view` | json | Intake view | | ↳ `is_issue_type_enabled` | json | Is issue type enabled | | ↳ `is_time_tracking_enabled` | json | Is time tracking enabled | | ↳ `issue_views_view` | json | Issue views view | | ↳ `logo_props` | json | Logo props | | ↳ `module_view` | json | Module view | | ↳ `name` | json | Name | | ↳ `network` | json | Network | | ↳ `page_view` | json | Page view | | ↳ `priority` | json | Priority | | ↳ `project_lead_id` | string | Project lead id | | ↳ `start_date` | string | Start date | | ↳ `state_id` | string | State id | | ↳ `target_date` | string | Target date | | ↳ `timezone` | json | Timezone | | ↳ `default_assignee` | json | Default assignee | | ↳ `project_lead` | json | Project lead | | ↳ `total_members` | json | Total members | | ↳ `total_cycles` | json | Total cycles | | ↳ `total_modules` | json | Total modules | | ↳ `is_member` | boolean | Is member | | ↳ `sort_order` | number | Sort order | | ↳ `member_role` | json | Member role | | ↳ `is_deployed` | boolean | Is deployed | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `cover_image_asset` | string | Cover image asset | | ↳ `estimate` | string | Estimate | | ↳ `default_state` | string | Default state | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_voting_enabled` | boolean | Is voting enabled | | ↳ `auto_reminder_days` | number | Auto reminder days | | ↳ `state` | string | State | ### Plane Get a project page [#plane-get-a-project-page] Get a project page in Plane. Supports API v1 compatibility. #### Input [#input-33] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | The project page id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `access`, `archived_at`, `collection_id`, `color`, `created_at`, `created_by_id`, `description_html`, `description_stripped`, `external_id`, `external_source`, `id`, `is_global`, `is_locked`, `logo_props`, `name`, `owned_by_id`, `parent_id`, `sort_order`, `view_props`. | | `expand` | string | No | Comma-separated relations to embed: `owned_by`, `parent`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `external_id` | string | No | v1 compatibility only. External system identifier for filtering or lookup | | `external_source` | string | No | v1 compatibility only. External system source name for filtering or lookup | | `order_by` | string | No | v1 compatibility only. Field to order results by. Prefix with '-' for descending order | #### Output [#output-33] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------- | | `result` | object | Plane V2 Project- Pages | | ↳ `access` | json | Access | | ↳ `archived_at` | string | Archived at | | ↳ `collection_id` | json | Collection id | | ↳ `color` | json | Color | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `description_html` | json | Description html | | ↳ `description_stripped` | json | Description stripped | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `id` | json | Id | | ↳ `is_global` | boolean | Is global | | ↳ `is_locked` | json | Is locked | | ↳ `logo_props` | json | Logo props | | ↳ `name` | json | Name | | ↳ `owned_by_id` | string | Owned by id | | ↳ `parent_id` | json | Parent id | | ↳ `sort_order` | json | Sort order | | ↳ `view_props` | json | View props | | ↳ `owned_by` | json | Owned by | | ↳ `parent` | json | Parent | | ↳ `description_binary` | string | Description binary | | ↳ `description` | json | Description | | ↳ `updated_at` | string | Updated at | | ↳ `anchor` | string | Anchor | | ↳ `workspace` | string | Workspace | | ↳ `projects` | array | Projects | | ↳ `page_collection_id` | string | Page collection id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | json | Updated by | | ↳ `description_json` | object | Description json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `attrs` | object | Attrs | | ↳ `id` | json | Id | | ↳ `textAlign` | json | Id | | ↳ `aiSuggestion` | json | Id | | ↳ `content` | array | Content | | ↳ `text` | string | Asset Id | | ↳ `type` | string | Asset Id | ### Plane Get a project summary [#plane-get-a-project-summary] Get a project summary in Plane. Supports API v1 compatibility. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | Project ID or bare project identifier whose summary to retrieve. | | `counts` | string | No | Comma-separated count keys to include. Allowed: members, states, labels, cycles, modules, issues, intakes, work\_item\_types, work\_item\_properties, pages. Omitting returns all. Unknown keys are a 400. | | `fields` | string | No | v1 compatibility only. Comma-separated list of fields. | #### Output [#output-34] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------- | | `result` | object | Plane V2 V2 Get Project Summaryresult | | ↳ `counts` | object | Counts | | ↳ `modules` | number | Modules | | ↳ `work_item_types` | number | Work item types | | ↳ `issues` | number | Issues | | ↳ `members` | number | Members | | ↳ `work_item_properties` | number | Work item properties | | ↳ `states` | number | States | | ↳ `intakes` | number | Intakes | | ↳ `cycles` | number | Cycles | | ↳ `labels` | number | Labels | | ↳ `pages` | number | Pages | | ↳ `id` | string | Id | | ↳ `identifier` | string | Identifier | | ↳ `name` | string | Name | ### Plane Get a state [#plane-get-a-state] Get a state in Plane. Supports API v1 compatibility. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the state belongs to. A state id from a different project returns `404`, even inside the same workspace. | | `pk` | string | Yes | The id of the state to retrieve. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `group`, `id`, `is_default`, `is_triage`, `name`, `sequence`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | #### Output [#output-35] | Parameter | Type | Description | | ------------------- | ------- | --------------- | | `result` | object | Plane V2 States | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `group` | json | Group | | ↳ `sequence` | json | Sequence | | ↳ `is_default` | boolean | Is default | | ↳ `is_triage` | json | Is triage | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `default` | boolean | Default | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `slug` | string | Slug | | ↳ `deleted_by` | json | Deleted by | ### Plane Get a webhook [#plane-get-a-webhook] Get a webhook in Plane. Requires API v2. #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The webhook id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `content_type`, `created_at`, `created_by_id`, `id`, `is_active`, `name`, `scopes`, `url`, `version`. | #### Output [#output-36] | Parameter | Type | Description | | ----------------- | ------- | ------------------ | | `result` | object | Plane V2 Webhooks | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | string | Unique identifier. | | ↳ `is_active` | boolean | Is active | | ↳ `name` | string | Name | | ↳ `scopes` | array | Scopes | | ↳ `url` | string | Url | | ↳ `version` | string | Version | ### Plane Get a work item [#plane-get-a-work-item] Get a work item in Plane. Supports API v1 compatibility. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `pk` | string | Yes | The work item's UUID. This lookup is UUID-only — a `PROJ-142` identifier here returns `404`. | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expansion is separate-key: `?expand=state` keeps `state_id` and adds a `state` object next to it, so an id is never replaced by an object. An unknown value is a `400`. `?fields=` and `?expand=` are independent namespaces. Relation names are not valid `?fields=` tokens (and vice versa), and an expanded object survives field filtering — `?fields=id,name&expand=state` returns `id`, `name` and `state`. See \[Expanding relations]\([https://developers.plane.so/api-reference/v2/expanding-relations](https://developers.plane.so/api-reference/v2/expanding-relations)). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `external_id` | string | No | v1 compatibility only. External system identifier for filtering or lookup | | `external_source` | string | No | v1 compatibility only. External system source name for filtering or lookup | | `order_by` | string | No | v1 compatibility only. Field to order results by. Prefix with '-' for descending order | #### Output [#output-37] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | json | Sequence id | | ↳ `priority` | json | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | json | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `state` | json | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | json | Group | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `avatar` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `deleted_by` | json | Id | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | string | Asset Id | | ↳ `description` | string | Asset Id | | ↳ `sort_order` | number | Sort Order | | ↳ `external_source` | string | Asset Id | | ↳ `external_id` | string | Asset Id | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | string | Asset Id | | ↳ `workspace` | string | Asset Id | | ↳ `project` | string | Asset Id | | ↳ `parent` | string | Asset Id | | ↳ `modules` | array | Modules | | ↳ `parent` | json | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `type` | json | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `project_id` | string | Project id | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `point` | number | Point | | ↳ `description_html` | string | Description html | | ↳ `description_stripped` | string | Description stripped | | ↳ `description_binary` | string | Description binary | | ↳ `sort_order` | number | Sort order | | ↳ `completed_at` | string | Completed at | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | json | Project | | ↳ `workspace` | string | Workspace | | ↳ `estimate_point` | string | Estimate point | | ↳ `description` | string | Description | | ↳ `deleted_by` | json | Deleted by | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `last_activity_at` | string | Last activity at | | ↳ `min_assignee_first_name` | string | Min assignee first name | | ↳ `min_label_name` | string | Min label name | | ↳ `min_module_name` | string | Min module name | | ↳ `priority_rank` | number | Priority rank | | ↳ `state_group` | string | State group | ### Plane Get a work item by identifier [#plane-get-a-work-item-by-identifier] Get a work item by identifier in Plane. Requires API v2. #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `identifier` | string | Yes | The work item's human key: the project identifier, a hyphen, and the work item's number — `PROJ-142`. The project part must start with a letter, and it is upper-cased before lookup, so `proj-142` resolves the same work item as `PROJ-142`. A project identifier is unique within a workspace, which is what makes this key unambiguous. | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expansion is separate-key: `?expand=state` keeps `state_id` and adds a `state` object next to it, so an id is never replaced by an object. An unknown value is a `400`. `?fields=` and `?expand=` are independent namespaces. Relation names are not valid `?fields=` tokens (and vice versa), and an expanded object survives field filtering — `?fields=id,name&expand=state` returns `id`, `name` and `state`. See \[Expanding relations]\([https://developers.plane.so/api-reference/v2/expanding-relations](https://developers.plane.so/api-reference/v2/expanding-relations)). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | #### Output [#output-38] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | string | Unique identifier for the work item. This is the `\{pk\}` on every project-scoped detail route. | | ↳ `name` | string | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | json | Sequence id | | ↳ `priority` | string | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | boolean | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `modules` | array | Modules | | ↳ `parent` | object | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | object | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Asset Id | | ↳ `type` | object | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `project_id` | string | Project id | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | ### Plane List attachments [#plane-list-attachments] List attachments in Plane. Supports API v1 compatibility. #### Input [#input-39] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `external_id` | string | No | Filter by `external_id`. | | `external_source` | string | No | Filter by `external_source`. | | `is_uploaded` | boolean | No | Filter by `is_uploaded`. | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `per_page` | number | No | API v2 only. Page size (maximum 200). | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `asset_url`, `attributes`, `content_type`, `created_at`, `created_by_id`, `external_id`, `external_source`, `id`, `is_uploaded`, `name`, `size`, `work_item_id`. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-39] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Attachmentsresult | | ↳ `data` | array | Data | | ↳ `asset_url` | string | The asset url. | | ↳ `attributes` | json | View Props | | ↳ `content_type` | string | The content type. | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `external_id` | string | Your system's identifier for this record, for sync and import correlation. | | ↳ `external_source` | string | The system `external_id` came from, for example `github` or `jira`. | | ↳ `id` | string | Unique identifier. | | ↳ `is_uploaded` | boolean | Whether is uploaded. | | ↳ `name` | string | Display name. | | ↳ `size` | json | Size | | ↳ `work_item_id` | string | The related work item. | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `attributes` | json | Attributes | | ↳ `asset` | string | Asset | | ↳ `entity_type` | string | Entity type | | ↳ `entity_identifier` | string | Entity identifier | | ↳ `is_deleted` | boolean | Is deleted | | ↳ `is_archived` | boolean | Is archived | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `size` | json | Size | | ↳ `is_uploaded` | boolean | Is uploaded | | ↳ `storage_metadata` | json | Storage metadata | | ↳ `ETag` | string | Asset Id | | ↳ `Metadata` | json | Progress Snapshot | | ↳ `ContentType` | string | Asset Id | | ↳ `LastModified` | string | Asset Id | | ↳ `ContentLength` | number | Sort Order | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `user` | string | User | | ↳ `workspace` | string | Workspace | | ↳ `draft_issue` | string | Draft issue | | ↳ `project` | string | Project | | ↳ `issue` | string | Issue | | ↳ `comment` | string | Comment | | ↳ `page` | string | Page | | ↳ `name` | string | Name | | ↳ `asset_url` | string | Asset url | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | ### Plane List comments [#plane-list-comments] List comments in Plane. Supports API v1 compatibility. #### Input [#input-40] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `work_item_id` | string | Yes | The work item whose comments you want. Comments never span work items, so this narrows the result set by itself. | | `access` | string | No | Return only comments with this visibility. - `INTERNAL` — visible to the project team - `EXTERNAL` — marked as visible outside the team | | `external_id` | string | No | Return comments carrying this identifier from your system. `external_id` is not a unique key, so this can match more than one comment — pair it with `external_source` and handle a multi-row result. | | `external_source` | string | No | Return comments that came from this system, for example `github` or `zendesk`. | | `search` | string | No | Match comments against their plain-text body (`comment_stripped`), so HTML markup in `comment_html` never affects whether a term hits. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. Send it explicitly whenever order matters — a thread you render should not depend on the server's unstated default. - `created_at` — oldest first - `-created_at` — newest first - `id` - `-id` | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Number of rows to skip from the start of the result set. Maximum 10000 — for deeper traversal switch to cursor pagination. | | `paginate` | string | No | Set to `cursor` to opt into the COUNT-free keyset envelope instead of the default offset envelope. The response then carries `next_cursor` and `has_more`; send the value of `next_cursor` back as `?cursor=` to fetch the next page. See \[Pagination]\([https://developers.plane.so/api-reference/v2/pagination](https://developers.plane.so/api-reference/v2/pagination)) for the full envelope. | | `count` | boolean | No | Defaults to `true`. Set to `false` to skip the `COUNT\(*\)` and omit `total_count` from the offset envelope. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `access`, `actor_id`, `comment_html`, `comment_stripped`, `created_at`, `created_by_id`, `edited_at`, `external_id`, `external_source`, `id`, `work_item_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `actor` (the comment author). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-40] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `result` | object | Plane V2 V2 List Commentsresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the comment. | | ↳ `work_item_id` | string | The work item this comment is attached to. Always matches the `work_item_id` in the request path. | | ↳ `comment_html` | string | The comment body, as HTML. This is the field you write. | | ↳ `comment_stripped` | string | The plain-text version of `comment_html`, derived server-side. It is what `?search=` matches, so markup never affects a search hit. Read-only — you never send it. | | ↳ `access` | string | Visibility of the comment. One of `INTERNAL` or `EXTERNAL`. `INTERNAL` keeps the comment inside the project team; `EXTERNAL` marks it as visible outside the team, for example on a published project. | | ↳ `actor_id` | string | Asset Id | | ↳ `external_id` | string | Asset Id | | ↳ `external_source` | string | Asset Id | | ↳ `edited_at` | string | Asset Id | | ↳ `created_at` | string | When the comment was created. | | ↳ `created_by_id` | string | Asset Id | | ↳ `actor` | json | Logo Props | | ↳ `next` | number | Next | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `is_member` | boolean | Is member | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `comment_stripped` | string | Comment stripped | | ↳ `comment_html` | string | Comment html | | ↳ `attachments` | array | Attachments | | ↳ `access` | string | Access | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `edited_at` | string | Edited at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `actor` | string | Actor | | ↳ `parent` | string | Parent | | ↳ `description` | string | Description | | ↳ `name` | string | Name | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_hidden` | boolean | Is hidden | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `hidden_reason` | json | Hidden reason | | ↳ `hidden_at` | json | Hidden at | | ↳ `hidden_by` | json | Hidden by | | ↳ `source` | json | Source | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List cycles [#plane-list-cycles] List cycles in Plane. Supports API v1 compatibility. #### Input [#input-41] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project whose cycles you want. | | `owned_by_id` | string | No | Return only cycles owned by this user. This is how you build a "my cycles" view — pass the authenticated user's id. Ownership is assigned by Plane, so this is a read-side filter only. | | `external_id` | string | No | Return only cycles whose `external_id` matches exactly. Pair it with `external_source` when the same identifier could come from more than one system. | | `external_source` | string | No | Return only cycles imported from this source, for example `jira`. | | `search` | string | No | Free-text search term matched against the cycle. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. - `sort_order` / `-sort_order` — the project's manual cycle ordering - `created_at` / `-created_at` — newest or oldest first - `id` / `-id` | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Number of rows to skip from the start of the result set. Maximum 10000 — past that, switch to cursor pagination. | | `paginate` | string | No | Set to `cursor` to opt into the COUNT-free keyset envelope instead of the default offset envelope. The response then carries `next_cursor` and `has_more` rather than `next`, `previous`, and `total_count`; pass `next_cursor` back as `cursor` to walk to the following page. Use it for deep traversal, where offset paging gets expensive. | | `count` | boolean | No | Defaults to `true`. Set to `false` to skip the `COUNT\(*\)` behind `total_count` — the field is then omitted from the envelope. Worth doing when you only need the rows. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `created_at`, `created_by_id`, `description`, `end_date`, `external_id`, `external_source`, `id`, `logo_props`, `name`, `owned_by_id`, `sort_order`, `start_date`, `timezone`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `owned_by` (the cycle owner). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | | `cycle_view` | string | No | v1 compatibility only. Filter cycles by status | #### Output [#output-41] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Cyclesresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the cycle. | | ↳ `name` | string | Display name, unique within the project. Maximum 255 characters. | | ↳ `description` | string | Free-form description of what the cycle covers. | | ↳ `start_date` | string | Asset Id | | ↳ `end_date` | string | Asset Id | | ↳ `timezone` | string | The IANA time zone the cycle's dates are interpreted in, for example `America/New_York` or `UTC`. This is what makes a cycle boundary land at local midnight rather than UTC midnight for a distributed team. | | ↳ `owned_by_id` | string | The user who owns the cycle. Read-only — assigned by Plane and not settable through the API. Use it to filter cycles on list. | | ↳ `sort_order` | json | Sort Order | | ↳ `logo_props` | json | View Props | | ↳ `external_id` | string | Asset Id | | ↳ `external_source` | string | Asset Id | | ↳ `created_at` | string | When the cycle was created. | | ↳ `created_by_id` | string | The user who created the cycle. | | ↳ `owned_by` | json | Logo Props | | ↳ `next` | number | Next | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `total_estimates` | number | Total estimates | | ↳ `completed_estimates` | number | Completed estimates | | ↳ `started_estimates` | number | Started estimates | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `name` | string | Name | | ↳ `description` | string | Description | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `view_props` | json | View props | | ↳ `sort_order` | number | Sort order | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `progress_snapshot` | json | Progress snapshot | | ↳ `archived_at` | string | Archived at | | ↳ `logo_props` | json | Logo props | | ↳ `timezone` | string | Timezone | | ↳ `version` | json | Version | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `owned_by` | json | Owned by | | ↳ `id` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `email` | string | Email | | ↳ `avatar` | string | Asset Id | | ↳ `avatar_url` | string | Avatar URL | | ↳ `display_name` | string | Display name | | ↳ `status` | string | Status | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List labels [#plane-list-labels] List labels in Plane. Supports API v1 compatibility. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project whose labels you want. | | `parent_id` | string | No | Return only the labels nested under this label. Pair it with `parent_id__isnull=true` to get the opposite view — every top-level label in the project. Use `parent_id__isnull=false` for every label that has a parent. | | `external_id` | string | No | Return labels whose `external_id` matches. Combine with `external_source` to resolve a record from another system to its Plane label without keeping a local id map. | | `external_source` | string | No | Return labels that came from this system, for example `github` or `jira`. | | `search` | string | No | A search term matched against the label `name`. Use it to power type-ahead in a picker rather than downloading every page and filtering client-side. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. Defaults to `sort_order`. - `sort_order` , `-sort_order` — the project's own label ordering - `created_at` , `-created_at` — newest or oldest first - `id` , `-id` A value outside this list is not rejected — it silently falls back to the default `sort_order`. Check your spelling: a typo in `order_by` fails silently and shows up as a differently sorted page, not as an error. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Number of rows to skip from the start of the result set. Maximum 10000. Read the `next` value from the response and send it back as `offset` to walk forward. | | `paginate` | string | No | Set to `cursor` to switch from the default offset envelope to the keyset cursor envelope, which skips the `COUNT\(*\)` and returns `next_cursor` and `has_more` instead of `next` and `total_count`. Send the returned `next_cursor` back as `cursor` to fetch the following page. Only `created_at` and `id` are cursor-eligible, because a keyset needs a strictly ordered column and `sort_order` is neither unique nor monotonic. Pair `paginate=cursor` with `order_by=created_at` or `order_by=id` — the default `sort_order` ordering is rejected with `400 ordering_not_cursor_eligible`. Most projects have few enough labels that the default offset envelope is all you need. | | `count` | boolean | No | Defaults to `true`. Set to `false` to omit `total_count` and skip the count query. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `name`, `parent_id`, `sort_order`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | | `expand` | string | No | API v1 only. Comma-separated relations: `created_by`, `updated_by`, `workspace`, `project`, `parent`. Expansion replaces each relation ID with an object. Include the relation in `fields` when also requesting sparse fields. | | `parent_id__isnull` | boolean | No | API v2: true selects top-level labels, false selects labels with a parent. | #### Output [#output-42] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Labelsresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the label. This is the value you send in a work item's `label_ids`. | | ↳ `name` | string | Display name, unique within the project. Maximum 255 characters. | | ↳ `description` | string | Free-form note about what the label is for. Useful when a team needs a convention written down next to the tag. | | ↳ `color` | string | Hex color used wherever the label is rendered, for example `#e5484d`. | | ↳ `sort_order` | json | Sort Order | | ↳ `parent_id` | string | Asset Id | | ↳ `external_id` | string | Asset Id | | ↳ `external_source` | string | Asset Id | | ↳ `created_at` | string | When the label was created. | | ↳ `created_by_id` | string | Asset Id | | ↳ `next` | number | Next | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `name` | string | Name | | ↳ `description` | string | Description | | ↳ `color` | string | Color | | ↳ `sort_order` | number | Sort order | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | json | Creator ID or expanded user. | | ↳ `id` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `email` | string | Email | | ↳ `avatar` | string | Asset Id | | ↳ `avatar_url` | string | Avatar URL | | ↳ `display_name` | string | Display name | | ↳ `updated_by` | json | Updater ID or expanded user. | | ↳ `id` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `email` | string | Email | | ↳ `avatar` | string | Asset Id | | ↳ `avatar_url` | string | Avatar URL | | ↳ `display_name` | string | Display name | | ↳ `workspace` | json | Workspace ID or expanded workspace. | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `slug` | string | Slug | | ↳ `project` | json | Project ID or expanded project. | | ↳ `id` | string | Asset Id | | ↳ `identifier` | string | Identifier | | ↳ `name` | string | Asset Id | | ↳ `cover_image` | string | Asset Id | | ↳ `icon_prop` | json | Logo Props | | ↳ `emoji` | string | Asset Id | | ↳ `description` | string | Asset Id | | ↳ `cover_image_url` | string | Asset Id | | ↳ `archived_at` | string | Asset Id | | ↳ `parent` | json | Parent ID or expanded parent reference. | | ↳ `id` | string | Asset Id | | ↳ `sequence_id` | number | Sequence ID | | ↳ `project_id` | string | Asset Id | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List links [#plane-list-links] List links in Plane. Supports API v1 compatibility. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `search` | string | No | A search term. | | `title` | string | No | Filter by `title`. | | `url` | string | No | Filter by `url`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `created_at`, `created_by_id`, `id`, `metadata`, `title`, `url`, `work_item_id`. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | | `expand` | string | No | v1 compatibility only. Comma-separated list of related fields to expand in response Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-43] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Linksresult | | ↳ `data` | array | Data | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `id` | string | Unique identifier. | | ↳ `metadata` | json | Metadata | | ↳ `title` | string | Title. | | ↳ `url` | string | Target URL. | | ↳ `work_item_id` | string | The related work item. | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `title` | string | Title | | ↳ `url` | string | Url | | ↳ `metadata` | json | Metadata | | ↳ `url` | string | Asset Id | | ↳ `title` | string | Asset Id | | ↳ `favicon` | string | Asset Id | | ↳ `favicon_url` | json | Logo Props | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `name` | string | Name | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List modules [#plane-list-modules] List modules in Plane. Supports API v1 compatibility. #### Input [#input-44] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project whose modules you want. | | `status` | string | No | Return only modules in this lifecycle position. One of `backlog`, `planned`, `in-progress`, `paused`, `completed`, or `cancelled`. Use `status__in` with a comma-separated list to match several at once, for example `?status__in=planned,in-progress`. | | `lead_id` | string | No | Return only modules led by this user. Match is exact on the module's `lead_id`. | | `external_id` | string | No | Return only modules carrying this external identifier. Pair it with `external_source` to resolve a record you imported from another system. | | `external_source` | string | No | Return only modules that came from this system, for example `github` or `jira`. | | `search` | string | No | Free-text match on the module name. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. - `sort_order` , `-sort_order` - `created_at` , `-created_at` - `id` , `-id` Defaults to `sort_order`. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Number of rows to skip from the start of the result set. Maximum 10000 — go deeper with cursor pagination. | | `paginate` | string | No | Set to `cursor` to opt into the COUNT-free keyset envelope, then follow `next_cursor` with `?cursor=`. | | `count` | boolean | No | Set to `false` to skip the count query and omit `total_count` from the offset envelope. Defaults to `true`. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `lead_id`, `logo_props`, `member_ids`, `name`, `sort_order`, `start_date`, `status`, `target_date`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `status__in` | string | No | Documented filter variant. Return only modules in this lifecycle position. One of `backlog`, `planned`, `in-progress`, `paused`, `completed`, or `cancelled`. Use `status__in` with a comma-separated list to match several at once, for example `?status__in=planned,in-progress`. | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `lead` (the module lead), `members` (the module members). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-44] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Modulesresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the module. | | ↳ `name` | string | Display name, unique within the project. Maximum 255 characters. | | ↳ `description` | string | Plain-text summary of what the module covers. | | ↳ `status` | string | Where the module sits in its lifecycle. One of `backlog`, `planned`, `in-progress`, `paused`, `completed`, or `cancelled`. | | ↳ `start_date` | string | Asset Id | | ↳ `target_date` | string | Asset Id | | ↳ `lead_id` | string | Asset Id | | ↳ `member_ids` | array | Project members assigned to the module. Read-only in v2 — module membership is not yet writable through the v2 API. | | ↳ `sort_order` | number | Ordering weight used when modules are listed. Lower values sort first. | | ↳ `logo_props` | json | View Props | | ↳ `external_id` | string | Asset Id | | ↳ `external_source` | string | Asset Id | | ↳ `archived_at` | string | Asset Id | | ↳ `created_at` | string | When the module was created. | | ↳ `created_by_id` | string | The user who created the module. | | ↳ `lead` | json | Logo Props | | ↳ `members` | array | Members | | ↳ `next` | number | Next | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `name` | string | Name | | ↳ `description` | string | Description | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `status` | string | Status | | ↳ `view_props` | json | View props | | ↳ `sort_order` | number | Sort order | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `archived_at` | string | Archived at | | ↳ `logo_props` | json | Logo props | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `lead` | string | Lead | | ↳ `members` | array | Members | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List project pages [#plane-list-project-pages] List project pages in Plane. Supports API v1 compatibility. #### Input [#input-45] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `access` | number | No | - `0` - Public - `1` - Private One of `0`, `1`. | | `collection_id` | string | No | Filter by `collection_id`. | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `external_id` | string | No | Filter by `external_id`. | | `external_source` | string | No | Filter by `external_source`. | | `is_global` | boolean | No | Filter by `is_global`. | | `is_locked` | boolean | No | Filter by `is_locked`. | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `owned_by_id` | string | No | Filter by `owned_by_id`. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `parent_id` | string | No | Filter by `parent_id`. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `search` | string | No | A search term. | | `type` | string | No | - `all` - All - `public` - Public - `private` - Private - `shared` - Shared - `archived` - Archived One of `all`, `archived`, `private`, `public`, `shared`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `access`, `archived_at`, `collection_id`, `color`, `created_at`, `created_by_id`, `description_html`, `description_stripped`, `external_id`, `external_source`, `id`, `is_global`, `is_locked`, `logo_props`, `name`, `owned_by_id`, `parent_id`, `sort_order`, `view_props`. | | `expand` | string | No | Comma-separated relations to embed: `owned_by`, `parent`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-45] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Project Pagesresult | | ↳ `data` | array | Data | | ↳ `access` | json | Access | | ↳ `archived_at` | string | Asset Id | | ↳ `collection_id` | string | The related collection. | | ↳ `color` | string | Hex color used wherever this is rendered, for example `#3f76ff`. | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `description_html` | string | Rich-text body as HTML. This is the field the Plane editor round-trips. | | ↳ `description_stripped` | string | The description stripped. | | ↳ `external_id` | string | Your system's identifier for this record, for sync and import correlation. | | ↳ `external_source` | string | The system `external_id` came from, for example `github` or `jira`. | | ↳ `id` | string | Unique identifier. | | ↳ `is_global` | boolean | Whether this lives at the workspace level rather than inside a project. | | ↳ `is_locked` | boolean | Prevents further edits to the content. | | ↳ `logo_props` | json | View Props | | ↳ `name` | string | Display name. | | ↳ `owned_by_id` | string | The related owned by. | | ↳ `parent_id` | string | The related parent. | | ↳ `sort_order` | json | Sort Order | | ↳ `view_props` | json | View Props | | ↳ `owned_by` | json | Logo Props | | ↳ `parent` | json | Logo Props | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `name` | string | Name | | ↳ `description_stripped` | string | Description stripped | | ↳ `description_html` | string | Description html | | ↳ `description_binary` | string | Description binary | | ↳ `description` | json | Description | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `owned_by` | json | Owned by | | ↳ `id` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `email` | string | Email | | ↳ `avatar` | string | Asset Id | | ↳ `avatar_url` | string | Avatar URL | | ↳ `display_name` | string | Display name | | ↳ `anchor` | string | Anchor | | ↳ `workspace` | string | Workspace | | ↳ `projects` | array | Projects | | ↳ `access` | json | Access | | ↳ `is_locked` | boolean | Is locked | | ↳ `archived_at` | string | Archived at | | ↳ `parent_id` | string | Parent id | | ↳ `parent` | json | Parent page ID or expanded page object in API v1. | | ↳ `collection_id` | string | Collection id | | ↳ `page_collection_id` | string | Page collection id | | ↳ `color` | string | Color | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | json | Updated by | | ↳ `view_props` | json | View props | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | json | External id | | ↳ `external_source` | json | External source | | ↳ `description_json` | object | Description json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `attrs` | object | Attrs | | ↳ `id` | json | Id | | ↳ `textAlign` | json | Id | | ↳ `aiSuggestion` | json | Id | | ↳ `content` | array | Content | | ↳ `text` | string | Asset Id | | ↳ `type` | string | Asset Id | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List projects [#plane-list-projects] List projects in Plane. Supports API v1 compatibility. #### Input [#input-46] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `external_id` | string | No | Filter by `external_id`. | | `external_source` | string | No | Filter by `external_source`. | | `identifier` | string | No | Filter by `identifier`. | | `include_archived` | boolean | No | Filter by `include_archived`. | | `is_archived` | boolean | No | Filter by `is_archived`. | | `key` | string | No | Filter by `key`. | | `name` | string | No | Filter by `name`. | | `network` | number | No | Filter by `network`. | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `priority` | string | No | - `none` - None - `low` - Low - `medium` - Medium - `high` - High - `urgent` - Urgent One of `high`, `low`, `medium`, `none`, `urgent`. | | `priority__in` | json | No | Multiple values may be separated by commas. - `none` - None - `low` - Low - `medium` - Medium - `high` - High - `urgent` - Urgent | | `search` | string | No | A search term. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `archive_in`, `archived_at`, `close_in`, `cover_image`, `cover_image_url`, `created_at`, `created_by_id`, `cycle_view`, `default_assignee_id`, `default_state_id`, `description`, `emoji`, `estimate_id`, `external_id`, `external_source`, `guest_view_all_features`, `icon_prop`, `id`, `identifier`, `intake_view`, `is_issue_type_enabled`, `is_time_tracking_enabled`, `issue_views_view`, `logo_props`, `module_view`, `name`, `network`, `page_view`, `priority`, `project_lead_id`, `start_date`, `state_id`, `target_date`, `timezone`. | | `expand` | string | No | Comma-separated relations to embed: `default_assignee`, `project_lead`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-46] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Projectsresult | | ↳ `data` | array | Data | | ↳ `archive_in` | json | Archive In | | ↳ `archived_at` | string | Asset Id | | ↳ `close_in` | json | Close In | | ↳ `cover_image` | string | URL of the cover image. | | ↳ `cover_image_url` | string | The cover image url. | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `cycle_view` | boolean | Whether cycle view. | | ↳ `default_assignee_id` | string | The related default assignee. | | ↳ `default_state_id` | string | The related default state. | | ↳ `description` | string | Free-form description. | | ↳ `emoji` | string | Emoji shown alongside the name. | | ↳ `estimate_id` | string | The related estimate. | | ↳ `external_id` | string | Your system's identifier for this record, for sync and import correlation. | | ↳ `external_source` | string | The system `external_id` came from, for example `github` or `jira`. | | ↳ `guest_view_all_features` | boolean | Whether guest view all features. | | ↳ `icon_prop` | json | Icon Prop | | ↳ `id` | string | Unique identifier. | | ↳ `identifier` | string | Short project key used to prefix work item numbers, for example `ENG` in `ENG-142`. | | ↳ `intake_view` | boolean | Whether intake view. | | ↳ `is_issue_type_enabled` | boolean | Whether is issue type enabled. | | ↳ `is_time_tracking_enabled` | boolean | Whether is time tracking enabled. | | ↳ `issue_views_view` | boolean | Whether issue views view. | | ↳ `logo_props` | json | View Props | | ↳ `module_view` | boolean | Whether module view. | | ↳ `name` | string | Display name. | | ↳ `network` | json | Network | | ↳ `page_view` | boolean | Whether page view. | | ↳ `priority` | string | Urgency of the work item. | | ↳ `project_lead_id` | string | The related project lead. | | ↳ `start_date` | string | Planned start date, as `YYYY-MM-DD`. | | ↳ `state_id` | string | The related state. | | ↳ `target_date` | string | Planned due date, as `YYYY-MM-DD`. | | ↳ `timezone` | string | IANA timezone name, for example `America/New_York`. | | ↳ `default_assignee` | json | Logo Props | | ↳ `project_lead` | json | Logo Props | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `total_members` | json | Total members | | ↳ `total_cycles` | json | Total cycles | | ↳ `total_modules` | json | Total modules | | ↳ `is_member` | boolean | Is member | | ↳ `sort_order` | number | Sort order | | ↳ `member_role` | json | Member role | | ↳ `is_deployed` | boolean | Is deployed | | ↳ `cover_image_url` | string | Cover image url | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `name` | string | Name | | ↳ `description` | string | Description | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `network` | json | Network | | ↳ `identifier` | string | Identifier | | ↳ `emoji` | string | Emoji | | ↳ `icon_prop` | json | Icon prop | | ↳ `module_view` | boolean | Module view | | ↳ `cycle_view` | boolean | Cycle view | | ↳ `issue_views_view` | boolean | Issue views view | | ↳ `page_view` | boolean | Page view | | ↳ `intake_view` | boolean | Intake view | | ↳ `is_time_tracking_enabled` | boolean | Is time tracking enabled | | ↳ `is_issue_type_enabled` | boolean | Is issue type enabled | | ↳ `guest_view_all_features` | boolean | Guest view all features | | ↳ `cover_image` | string | Cover image | | ↳ `archive_in` | json | Archive in | | ↳ `close_in` | json | Close in | | ↳ `logo_props` | json | Logo props | | ↳ `archived_at` | string | Archived at | | ↳ `timezone` | string | Timezone | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `default_assignee` | string | Default assignee | | ↳ `project_lead` | string | Project lead | | ↳ `cover_image_asset` | string | Cover image asset | | ↳ `estimate` | string | Estimate | | ↳ `default_state` | string | Default state | | ↳ `deleted_by` | json | Deleted by | | ↳ `priority` | string | Priority | | ↳ `start_date` | json | Start date | | ↳ `target_date` | json | Target date | | ↳ `is_voting_enabled` | boolean | Is voting enabled | | ↳ `auto_reminder_days` | number | Auto reminder days | | ↳ `state` | string | State | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List states [#plane-list-states] List states in Plane. Supports API v1 compatibility. #### Input [#input-47] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project whose states you want to list. | | `group` | string | No | Return only states in this workflow group. One of `backlog`, `unstarted`, `started`, `completed`, `cancelled`, or `triage`. Use the `group__in` variant to match several groups at once, passing them comma-separated — `?group__in=started,completed`. Filtering by group is the portable way to ask "what counts as in progress here", because every project names its states differently but the groups are fixed. | | `is_default` | boolean | No | Return only the project's default state (`true`) or only the non-default states (`false`). Pairing `?is_default=true` with `?per_page=1` is the cheapest way to find where new work items will land. | | `external_id` | string | No | Return states whose `external_id` matches exactly. Use it to find the state you previously created for a record in another system. | | `external_source` | string | No | Return states that came from a particular system, for example `github` or `jira`. Combine it with `external_id` — an `external_id` is only unique within its source. | | `search` | string | No | A search term matched against the state name. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `group`, `id`, `is_default`, `is_triage`, `name`, `sequence`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `group__in` | string | No | Documented filter variant. Return only states in this workflow group. One of `backlog`, `unstarted`, `started`, `completed`, `cancelled`, or `triage`. Use the `group__in` variant to match several groups at once, passing them comma-separated — `?group__in=started,completed`. Filtering by group is the portable way to ask "what counts as in progress here", because every project names its states differently but the groups are fixed. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. - `sequence` , `-sequence` — the project's own workflow order - `created_at` , `-created_at` — when each state was added - `id` , `-id` Order by `sequence` when you are rendering the workflow to a user; it is the order the project itself uses. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Number of rows to skip from the start of the result set. Maximum 10000. Read the `next` value from the response rather than computing offsets yourself. | | `paginate` | string | No | Set to `cursor` to opt into the COUNT-free keyset envelope, which returns `next_cursor` and `has_more` instead of `next` and `total_count`. Omit it for the default offset envelope. | | `count` | boolean | No | Defaults to `true`. Set to `false` to skip the `COUNT\(*\)` behind `total_count`; the field is then omitted from the response. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | | `expand` | string | No | v1 compatibility only. Comma-separated list of related fields to expand in response Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-47] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Statesresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the state. | | ↳ `name` | string | Display name, unique within the project. Maximum 255 characters. | | ↳ `description` | string | Free-form description of what the state means in this workflow. | | ↳ `color` | string | Hex color used wherever the state is rendered, for example `#3f76ff`. | | ↳ `group` | string | The workflow group this state belongs to. One of `backlog`, `unstarted`, `started`, `completed`, `cancelled`, or `triage`. | | ↳ `sequence` | json | Sequence | | ↳ `is_default` | boolean | Whether new work items land in this state when no `state_id` is supplied. Exactly one state per project is the default. | | ↳ `is_triage` | boolean | Whether this is the project's triage state, used by intake. Read-only — a triage state is created and managed by Plane. | | ↳ `external_id` | string | Asset Id | | ↳ `external_source` | string | Asset Id | | ↳ `created_at` | string | When the state was created. | | ↳ `created_by_id` | string | The user who created the state. | | ↳ `next` | number | Next | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `name` | string | Name | | ↳ `description` | string | Description | | ↳ `color` | string | Color | | ↳ `sequence` | number | Sequence | | ↳ `group` | string | Group | | ↳ `is_triage` | boolean | Is triage | | ↳ `default` | boolean | Default | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `slug` | string | Slug | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List webhooks [#plane-list-webhooks] List webhooks in Plane. Requires API v2. #### Input [#input-48] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `is_active` | boolean | No | Filter by `is_active`. | | `name` | string | No | Filter by `name`. | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `per_page` | number | No | Page size (max 200). | | `search` | string | No | A search term. | | `url` | string | No | Filter by `url`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `content_type`, `created_at`, `created_by_id`, `id`, `is_active`, `name`, `scopes`, `url`, `version`. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-48] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------ | | `result` | object | Plane V2 V2 List Webhooksresult | | ↳ `data` | array | Data | | ↳ `content_type` | string | The content type. | | ↳ `created_at` | string | When the record was created. | | ↳ `created_by_id` | string | The user who created the record. | | ↳ `id` | string | Unique identifier. | | ↳ `is_active` | boolean | Whether the record is active. | | ↳ `name` | string | Display name. | | ↳ `scopes` | array | The scopes. | | ↳ `url` | string | Target URL. | | ↳ `version` | string | Version string, for example `1.4.0`. | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | ### Plane List work items [#plane-list-work-items] List work items in Plane. Supports API v1 compatibility. #### Input [#input-49] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project to list work items from. | | `fields` | string | No | Comma-separated list of fields to return on each row. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. Naming `custom_fields` here is a `400` — it is only available on single-object responses. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `state_id` | string | No | Match work items in a specific state. Use `state_id__in` with a comma-separated list to match any of several states. | | `state_id__in` | string | No | Documented filter variant. Match work items in a specific state. Use `state_id__in` with a comma-separated list to match any of several states. | | `state_group` | string | No | Match by the state's workflow group instead of a specific state — stable across projects that name their states differently. One of `backlog`, `unstarted`, `started`, `completed`, `cancelled`, `triage`. Use `state_group__in` for several groups, for example `?state_group__in=started,completed`. | | `state_group__in` | string | No | Documented filter variant. Match by the state's workflow group instead of a specific state — stable across projects that name their states differently. One of `backlog`, `unstarted`, `started`, `completed`, `cancelled`, `triage`. Use `state_group__in` for several groups, for example `?state_group__in=started,completed`. | | `priority` | string | No | One of `urgent`, `high`, `medium`, `low`, `none`. Use `priority__in` for several, for example `?priority__in=urgent,high`. | | `priority__in` | string | No | Documented filter variant. One of `urgent`, `high`, `medium`, `low`, `none`. Use `priority__in` for several, for example `?priority__in=urgent,high`. | | `assignee_id` | string | No | Match work items assigned to a user. `assignee_id__in` matches any of several users; `assignee_id__isnull=true` returns only unassigned work items. | | `assignee_id__in` | string | No | Documented filter variant. Match work items assigned to a user. `assignee_id__in` matches any of several users; `assignee_id__isnull=true` returns only unassigned work items. | | `label_id` | string | No | Match work items carrying a label. `label_id__in` matches any of several labels; `label_id__isnull=true` returns only unlabeled work items. | | `label_id__in` | string | No | Documented filter variant. Match work items carrying a label. `label_id__in` matches any of several labels; `label_id__isnull=true` returns only unlabeled work items. | | `type_id` | string | No | Match work items of a given work item type. `type_id__in` accepts a comma-separated list. | | `type_id__in` | string | No | Documented filter variant. Match work items of a given work item type. `type_id__in` accepts a comma-separated list. | | `parent_id` | string | No | Match the children of a work item. `parent_id__in` accepts several parents; `parent_id__isnull=true` returns only top-level work items. | | `parent_id__in` | string | No | Documented filter variant. Match the children of a work item. `parent_id__in` accepts several parents; `parent_id__isnull=true` returns only top-level work items. | | `cycle_id` | string | No | Match work items in a cycle. `cycle_id__in` accepts several cycles; `cycle_id__isnull=true` returns the backlog of work items in no cycle at all. | | `cycle_id__in` | string | No | Documented filter variant. Match work items in a cycle. `cycle_id__in` accepts several cycles; `cycle_id__isnull=true` returns the backlog of work items in no cycle at all. | | `module_id` | string | No | Match work items in a module. `module_id__in` accepts several modules; `module_id__isnull=true` returns work items in no module. | | `module_id__in` | string | No | Documented filter variant. Match work items in a module. `module_id__in` accepts several modules; `module_id__isnull=true` returns work items in no module. | | `sequence_id` | number | No | Match the single work item with this number within the project — the `142` of `PROJ-142`. | | `is_draft` | boolean | No | Filter drafts in or out. Drafts are work items still being composed in the Plane app. | | `external_id` | string | No | Correlation filters for sync and import. `external_source` is the system a record came from and `external_id` is its key there, so the pair is how you find the Plane work item that mirrors a row in your own database. These values are not returned on reads — the lookup is one-way. | | `external_source` | string | No | Correlation filters for sync and import. `external_source` is the system a record came from and `external_id` is its key there, so the pair is how you find the Plane work item that mirrors a row in your own database. These values are not returned on reads — the lookup is one-way. | | `created_at__gte` | string | No | Bound the creation timestamp. Pass an ISO 8601 datetime, for example `2026-01-01T00:00:00Z`. Use both for a window. | | `created_at__lte` | string | No | Bound the creation timestamp. Pass an ISO 8601 datetime, for example `2026-01-01T00:00:00Z`. Use both for a window. | | `updated_at__gte` | string | No | Bound the last-modified timestamp. This is the pair to use for incremental sync — poll with `?updated_at__gte=&order_by=updated_at`. `updated_at` is filterable and orderable but is not part of the read shape, so it does not come back in the response body. | | `updated_at__lte` | string | No | Bound the last-modified timestamp. This is the pair to use for incremental sync — poll with `?updated_at__gte=&order_by=updated_at`. `updated_at` is filterable and orderable but is not part of the read shape, so it does not come back in the response body. | | `start_date__gte` | string | No | Bound the planned start date, for example `2026-01-01`. | | `start_date__lte` | string | No | Bound the planned start date, for example `2026-01-01`. | | `target_date__gte` | string | No | Bound the planned due date. `?target_date__lte=2026-01-31&state_group__in=backlog,unstarted,started` is the "what is about to slip" query. | | `target_date__lte` | string | No | Bound the planned due date. `?target_date__lte=2026-01-31&state_group__in=backlog,unstarted,started` is the "what is about to slip" query. | | `search` | string | No | Free-text search over the work item name. | | `order_by` | string | No | Field to sort by. Prefix with `-` for descending. Defaults to `-created_at`. - `created_at`, `-created_at` - `updated_at`, `-updated_at` - `sequence_id`, `-sequence_id` - `id`, `-id` - `sort_order`, `-sort_order` — the manual board ordering - `priority`, `-priority` — semantic: `urgent` → `high` → `medium` → `low` → `none`, not alphabetical - `state_group`, `-state_group` — semantic: workflow order, not alphabetical `priority` and `state_group` sort by meaning, which is what you want for a board but is not cursor-eligible. Pair either with `?paginate=cursor` and you get `400 ordering_not_cursor_eligible`; use the default offset pages instead. | | `per_page` | number | No | Page size. Maximum 200 for API v2 and 100 for API v1. | | `offset` | number | No | Rows to skip from the start of the result set. Maximum 10000 — past that, switch to cursor pagination. | | `count` | boolean | No | Defaults to `true`. Pass `?count=false` to skip the `COUNT\(*\)` and omit `total_count` from the envelope. Worth doing on large projects when you only need the rows. | | `paginate` | string | No | Set to `cursor` to opt into keyset pagination. The envelope changes to `next_cursor` / `has_more` and drops `total_count`. Use it for deep or long-running traversals where offset pages would drift as rows are inserted. Follow the returned `next_cursor` as described in \[Pagination]\([https://developers.plane.so/api-reference/v2/pagination](https://developers.plane.so/api-reference/v2/pagination)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | | `pql` | string | No | v1 compatibility only. Plane Query Language expression. Human-readable alternative to `filters`. Example: `priority = "urgent" AND assignee = currentUser\(\)`. Requires a Plane edition with work item query filtering; Community Edition rejects this parameter. | | `filters` | json | No | v1 compatibility only. Structured filter expression. Supports nested `and`/`or`/`not` groups and field comparisons with operators like `__in`, `__gte`, `__range`, `__isnull`, `__icontains`, etc. JSON-encoded into the `filters=` query param by the client. Requires a Plane edition with work item query filtering; Community Edition rejects this parameter. | | `assignee_id__isnull` | boolean | No | API v2: select records with a missing assignee when true, or a present assignee when false. | | `label_id__isnull` | boolean | No | API v2: select records with a missing label when true, or a present label when false. | | `parent_id__isnull` | boolean | No | API v2: select records with a missing parent when true, or a present parent when false. | | `cycle_id__isnull` | boolean | No | API v2: select records with a missing cycle when true, or a present cycle when false. | | `module_id__isnull` | boolean | No | API v2: select records with a missing module when true, or a present module when false. | #### Output [#output-49] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Work Itemsresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the work item. This is the `\{pk\}` on every project-scoped detail route. | | ↳ `name` | string | Title of the work item. Maximum 255 characters. | | ↳ `identifier` | string | The human key, for example `PROJ-142`. It is the project's identifier joined to `sequence_id`, and it is what people paste into chat and commit messages. Use it with \[Get a work item by identifier]\([https://developers.plane.so/api-reference/v2/work-items/get-work-item-by-identifier](https://developers.plane.so/api-reference/v2/work-items/get-work-item-by-identifier)) when you don't have the project UUID. | | ↳ `sequence_id` | json | Sequence Id | | ↳ `priority` | string | One of `urgent`, `high`, `medium`, `low`, or `none`. Never null — an unprioritized work item reads `none`. | | ↳ `state_id` | string | The workflow state the work item is currently in. | | ↳ `type_id` | string | Asset Id | | ↳ `assignee_ids` | array | User ids assigned to the work item. Empty array when unassigned. | | ↳ `label_ids` | array | Label ids applied to the work item. Empty array when unlabeled. | | ↳ `parent_id` | string | Asset Id | | ↳ `start_date` | string | Asset Id | | ↳ `target_date` | string | Asset Id | | ↳ `is_draft` | boolean | Whether the work item is still a draft. Drafts are created in the Plane app and are excluded from most boards. | | ↳ `archived_at` | string | Asset Id | | ↳ `created_at` | string | When the work item was created. | | ↳ `created_by_id` | string | Asset Id | | ↳ `custom_fields` | json | View Props | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `cycle` | json | Logo Props | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `modules` | array | Members | | ↳ `parent` | object | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | object | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Asset Id | | ↳ `type` | object | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `project_id` | string | Asset Id | | ↳ `cycle_id` | string | Asset Id | | ↳ `module_ids` | array | Module Ids | | ↳ `next` | json | Next | | ↳ `previous` | json | Previous | | ↳ `total_count` | number | Total count | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `type_id` | string | Type id | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `point` | number | Point | | ↳ `name` | string | Name | | ↳ `description_html` | string | Description html | | ↳ `description_stripped` | string | Description stripped | | ↳ `description_binary` | string | Description binary | | ↳ `priority` | string | Priority | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `sequence_id` | json | Sequence id | | ↳ `sort_order` | number | Sort order | | ↳ `completed_at` | string | Completed at | | ↳ `archived_at` | string | Archived at | | ↳ `is_draft` | boolean | Is draft | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | json | Project | | ↳ `workspace` | string | Workspace | | ↳ `parent` | string | Parent | | ↳ `state` | json | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Group | | ↳ `estimate_point` | string | Estimate point | | ↳ `type` | json | Type | | ↳ `description` | string | Description | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `avatar` | string | Asset Id | | ↳ `avatar_url` | json | Id | | ↳ `display_name` | string | Asset Id | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `deleted_by` | json | Id | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | json | Id | | ↳ `name` | string | Asset Id | | ↳ `description` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `sort_order` | number | Sort Order | | ↳ `external_source` | json | Id | | ↳ `external_id` | json | Id | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | json | Id | | ↳ `workspace` | string | Asset Id | | ↳ `project` | string | Asset Id | | ↳ `parent` | json | Id | | ↳ `deleted_by` | json | Deleted by | | ↳ `cycle_id` | string | Cycle id | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `last_activity_at` | string | Last activity at | | ↳ `min_assignee_first_name` | string | Min assignee first name | | ↳ `min_label_name` | string | Min label name | | ↳ `min_module_name` | string | Min module name | | ↳ `priority_rank` | number | Priority rank | | ↳ `state_group` | string | State group | | `detail` | string | Provider message when no records are returned. | | `pagination` | object | Cursor pagination information. Bare-array responses have empty pagination. | | ↳ `next_cursor` | string | Cursor for the next page. | | ↳ `prev_cursor` | string | Cursor for the previous page. | | ↳ `next_page_results` | boolean | Whether a next page exists. | | ↳ `prev_page_results` | boolean | Whether a previous page exists. | | ↳ `count` | number | Records on this page. | | ↳ `total_pages` | number | Total pages. | | ↳ `total_results` | number | Total records. | | ↳ `total_count` | number | Total records when supplied by this endpoint. | | ↳ `extra_stats` | json | Endpoint-specific aggregate statistics. | | ↳ `grouped_by` | string | Grouping field. | | ↳ `sub_grouped_by` | string | Secondary grouping field. | | ↳ `total_groups` | number | Total primary groups. | | ↳ `next_group_offset` | number | Next primary group offset. | | ↳ `sub_total_groups` | number | Total secondary groups. | | ↳ `sub_next_group_offset` | number | Next secondary group offset. | ### Plane List work items across a workspace [#plane-list-work-items-across-a-workspace] List work items across a workspace in Plane. Requires API v2. #### Input [#input-50] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `assignee_id` | string | No | Filter by `assignee_id`. | | `assignee_id__in` | json | No | Multiple values may be separated by commas. | | `assignee_id__isnull` | boolean | No | Filter by `assignee_id__isnull`. | | `count` | boolean | No | Set to false to skip the total\_count COUNT(\*) (omits total\_count). | | `created_at__gte` | string | No | Filter by `created_at__gte`. | | `created_at__lte` | string | No | Filter by `created_at__lte`. | | `cycle_id` | string | No | Filter by `cycle_id`. | | `cycle_id__in` | json | No | Multiple values may be separated by commas. | | `cycle_id__isnull` | boolean | No | Filter by `cycle_id__isnull`. | | `external_id` | string | No | Filter by `external_id`. | | `external_source` | string | No | Filter by `external_source`. | | `is_draft` | boolean | No | Filter by `is_draft`. | | `label_id` | string | No | Filter by `label_id`. | | `label_id__in` | json | No | Multiple values may be separated by commas. | | `label_id__isnull` | boolean | No | Filter by `label_id__isnull`. | | `module_id` | string | No | Filter by `module_id`. | | `module_id__in` | json | No | Multiple values may be separated by commas. | | `module_id__isnull` | boolean | No | Filter by `module_id__isnull`. | | `offset` | number | No | Number of rows to skip from the start of the result set. | | `order_by` | string | No | Field to order the list by. Prefix with '-' for descending (e.g. '-created\_at'). Annotation-backed orders sort semantically and ride the default offset page. | | `paginate` | string | No | Set to 'cursor' to opt into the COUNT-free keyset cursor envelope (use for deep traversal); omit for the default offset envelope with total\_count. One of `cursor`. | | `parent_id` | string | No | Filter by `parent_id`. | | `parent_id__in` | json | No | Multiple values may be separated by commas. | | `parent_id__isnull` | boolean | No | Filter by `parent_id__isnull`. | | `per_page` | number | No | Page size (max 200). | | `priority` | string | No | - `urgent` - Urgent - `high` - High - `medium` - Medium - `low` - Low - `none` - None One of `high`, `low`, `medium`, `none`, `urgent`. | | `priority__in` | json | No | Multiple values may be separated by commas. - `urgent` - Urgent - `high` - High - `medium` - Medium - `low` - Low - `none` - None | | `project_id` | string | No | Filter by `project_id`. | | `project_id__in` | json | No | Multiple values may be separated by commas. | | `search` | string | No | A search term. | | `sequence_id` | number | No | Filter by `sequence_id`. | | `start_date__gte` | string | No | Filter by `start_date__gte`. | | `start_date__lte` | string | No | Filter by `start_date__lte`. | | `state_group` | string | No | - `backlog` - Backlog - `unstarted` - Unstarted - `started` - Started - `completed` - Completed - `cancelled` - Cancelled - `triage` - Triage One of `backlog`, `cancelled`, `completed`, `started`, `triage`, `unstarted`. | | `state_group__in` | json | No | Multiple values may be separated by commas. - `backlog` - Backlog - `unstarted` - Unstarted - `started` - Started - `completed` - Completed - `cancelled` - Cancelled - `triage` - Triage | | `state_id` | string | No | Filter by `state_id`. | | `state_id__in` | json | No | Multiple values may be separated by commas. | | `target_date__gte` | string | No | Filter by `target_date__gte`. | | `target_date__lte` | string | No | Filter by `target_date__lte`. | | `type_id` | string | No | Filter by `type_id`. | | `type_id__in` | json | No | Multiple values may be separated by commas. | | `updated_at__gte` | string | No | Filter by `updated_at__gte`. | | `updated_at__lte` | string | No | Filter by `updated_at__lte`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from each row, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400` that names the valid set, so a typo can't silently cost you the saving. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. | | `expand` | string | No | Comma-separated relations to embed: `assignees`, `cycle`, `labels`, `modules`, `parent`, `state`, `type`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `cursor` | string | No | Cursor from next\_cursor. Repeat the original filters, per\_page, and order\_by when following it. | #### Output [#output-50] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 V2 List Workspace Work Itemsresult | | ↳ `data` | array | Data | | ↳ `id` | string | Unique identifier for the work item. This is the `\{pk\}` on every project-scoped detail route. | | ↳ `name` | string | Title of the work item. Maximum 255 characters. | | ↳ `identifier` | string | The human key, for example `PROJ-142`. It is the project's identifier joined to `sequence_id`, and it is what people paste into chat and commit messages. Use it with \[Get a work item by identifier]\([https://developers.plane.so/api-reference/v2/work-items/get-work-item-by-identifier](https://developers.plane.so/api-reference/v2/work-items/get-work-item-by-identifier)) when you don't have the project UUID. | | ↳ `sequence_id` | json | Sequence Id | | ↳ `priority` | string | One of `urgent`, `high`, `medium`, `low`, or `none`. Never null — an unprioritized work item reads `none`. | | ↳ `state_id` | string | The workflow state the work item is currently in. | | ↳ `type_id` | string | Asset Id | | ↳ `assignee_ids` | array | User ids assigned to the work item. Empty array when unassigned. | | ↳ `label_ids` | array | Label ids applied to the work item. Empty array when unlabeled. | | ↳ `parent_id` | string | Asset Id | | ↳ `start_date` | string | Asset Id | | ↳ `target_date` | string | Asset Id | | ↳ `is_draft` | boolean | Whether the work item is still a draft. Drafts are created in the Plane app and are excluded from most boards. | | ↳ `archived_at` | string | Asset Id | | ↳ `created_at` | string | When the work item was created. | | ↳ `created_by_id` | string | Asset Id | | ↳ `custom_fields` | json | View Props | | ↳ `cycle_id` | string | Asset Id | | ↳ `module_ids` | array | Module Ids | | ↳ `project_id` | string | Asset Id | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `cycle` | json | Logo Props | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `modules` | array | Members | | ↳ `parent` | object | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | object | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Asset Id | | ↳ `type` | object | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `next` | number | Next | | ↳ `pagination` | object | Pagination | | ↳ `style` | string | Style | | ↳ `previous` | number | Previous | | ↳ `total_count` | number | Total count | | ↳ `next_cursor` | string | Next cursor | | ↳ `has_more` | boolean | Has more | ### Plane Add or remove cycle work items [#plane-add-or-remove-cycle-work-items] Add or remove cycle work items in Plane. Supports API v1 compatibility. #### Input [#input-51] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | The cycle work item id. | | `add` | json | No | The add. | | `remove` | json | No | The remove. | #### Output [#output-51] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------- | | `result` | object | Plane V2 V2 Manage Cycle Work Itemsresult | | ↳ `added` | array | Added | | ↳ `removed` | array | Removed | | `success` | boolean | v1 removal completed successfully. | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `sub_issues_count` | json | Sub issues count | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `cycle` | string | Cycle | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | ### Plane Add or remove module work items [#plane-add-or-remove-module-work-items] Add or remove module work items in Plane. Supports API v1 compatibility. #### Input [#input-52] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | The module work item id. | | `add` | json | No | The add. | | `remove` | json | No | The remove. | #### Output [#output-52] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------- | | `result` | object | Plane V2 V2 Manage Module Work Itemsresult | | ↳ `added` | array | Added | | ↳ `removed` | array | Removed | | `success` | boolean | v1 removal completed successfully. | | `results` | array | Returned Plane records. | | ↳ `id` | string | Id | | ↳ `sub_issues_count` | json | Sub issues count | | ↳ `created_at` | string | Created at | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `module` | string | Module | | ↳ `issue` | json | Issue | | ↳ `id` | string | Asset Id | | ↳ `cycle` | json | Logo Props | | ↳ `module` | object | Lite module information. | | ↳ `id` | string | Asset Id | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | string | Asset Id | | ↳ `name` | string | Name | | ↳ `description` | string | Asset Id | | ↳ `description_text` | json | Logo Props | | ↳ `description_html` | json | Logo Props | | ↳ `start_date` | string | Asset Id | | ↳ `target_date` | string | Asset Id | | ↳ `status` | string | Status | | ↳ `view_props` | json | Logo Props | | ↳ `sort_order` | number | Sort Order | | ↳ `external_source` | string | Asset Id | | ↳ `external_id` | string | Asset Id | | ↳ `archived_at` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | string | Asset Id | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `lead` | string | Asset Id | | ↳ `members` | array | Default Value | | ↳ `labels` | json | Labels | | ↳ `assignees` | json | Assignees | | ↳ `state` | object | Lite state information. | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Group | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | string | Asset Id | | ↳ `point` | number | Access | | ↳ `name` | string | Asset Id | | ↳ `description` | json | Logo Props | | ↳ `description_html` | string | Asset Id | | ↳ `description_stripped` | string | Asset Id | | ↳ `description_binary` | string | Asset Id | | ↳ `priority` | string | Priority | | ↳ `start_date` | string | Asset Id | | ↳ `target_date` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `sort_order` | number | Sort Order | | ↳ `completed_at` | string | Asset Id | | ↳ `archived_at` | string | Asset Id | | ↳ `is_draft` | boolean | Has Pages | | ↳ `external_source` | string | Asset Id | | ↳ `external_id` | string | Asset Id | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | string | Asset Id | | ↳ `project` | json | Project | | ↳ `workspace` | string | Asset Id | | ↳ `parent` | string | Asset Id | | ↳ `estimate_point` | string | Asset Id | | ↳ `type` | json | Type | | ↳ `deleted_by` | json | Deleted by | | `detail` | string | Provider message when no records are returned. | ### Plane Regenerate a webhook secret [#plane-regenerate-a-webhook-secret] Regenerate a webhook secret in Plane. Requires API v2. #### Input [#input-53] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The webhook id. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `content_type`, `created_at`, `created_by_id`, `id`, `is_active`, `name`, `scopes`, `secret_key`, `url`, `version`. | #### Output [#output-53] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `result` | object | Plane V2 V2 Regenerate Webhook Secretresult | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | string | Id | | ↳ `is_active` | boolean | Is active | | ↳ `name` | string | Name | | ↳ `scopes` | array | Scopes | | ↳ `secret_key` | string | Secret key | | ↳ `url` | string | Url | | ↳ `version` | string | Version | ### Plane Transfer work items between cycles [#plane-transfer-work-items-between-cycles] Transfer work items between cycles in Plane. Supports API v1 compatibility. #### Input [#input-54] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | Source cycle ID. The source cycle must be completed. | | `new_cycle_id` | string | Yes | Id of the related new cycle. | #### Output [#output-54] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------- | | `result` | object | Plane V2 V2 Transfer Cycle Work Itemsresult | | ↳ `new_cycle_id` | string | New cycle id | | ↳ `message` | string | Message | ### Plane Unarchive a project [#plane-unarchive-a-project] Unarchive a project in Plane. Supports API v1 compatibility. #### Input [#input-55] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The project id. | #### Output [#output-55] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Operation completed successfully. | ### Plane Unarchive a work item [#plane-unarchive-a-work-item] Unarchive a work item in Plane. Requires API v2. #### Input [#input-56] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `pk` | string | Yes | The work item's UUID. This lookup is UUID-only — a `PROJ-142` identifier here returns `404`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | #### Output [#output-56] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------------------------------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | string | Unique identifier for the work item. This is the `\{pk\}` on every project-scoped detail route. | | ↳ `name` | string | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | json | Sequence id | | ↳ `priority` | string | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | boolean | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `modules` | array | Modules | | ↳ `parent` | object | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | object | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | string | Asset Id | | ↳ `type` | object | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | | ↳ `project_id` | string | Project id | ### Plane Update a comment [#plane-update-a-comment] Update a comment in Plane. Supports API v1 compatibility. #### Input [#input-57] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `work_item_id` | string | Yes | The work item the comment is attached to. | | `pk` | string | Yes | The comment to update. | | `comment_html` | string | No | Replacement body for the comment, as HTML. It overwrites the previous body — there is no append mode, so send the full new text. | | `access` | string | No | Change the comment's visibility. - `INTERNAL` — visible to the project team - `EXTERNAL` — marked as visible outside the team, for example on a published project | | `external_id` | string | No | Your system's identifier for this comment. Maximum 255 characters. Accepts `null` to clear the correlation. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `zendesk`. Maximum 255 characters. Accepts `null`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `access`, `actor_id`, `comment_html`, `comment_stripped`, `created_at`, `created_by_id`, `edited_at`, `external_id`, `external_source`, `id`, `work_item_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `actor` (the comment author). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `comment_json` | json | No | v1 compatibility only. Comment json. | #### Output [#output-57] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------- | | `result` | object | Plane V2 Work- Item- Comments | | ↳ `id` | json | Id | | ↳ `work_item_id` | string | Work item id | | ↳ `comment_html` | json | Comment html | | ↳ `comment_stripped` | json | Comment stripped | | ↳ `access` | json | Access | | ↳ `actor_id` | string | Actor id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `edited_at` | string | Edited at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `actor` | json | Actor | | ↳ `is_member` | boolean | Is member | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `attachments` | array | Attachments | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `parent` | string | Parent | | ↳ `description` | string | Description | | ↳ `comment_json` | object | Comment json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `text` | string | Asset Id | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_hidden` | boolean | Is hidden | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `hidden_reason` | json | Hidden reason | | ↳ `hidden_at` | json | Hidden at | | ↳ `hidden_by` | json | Hidden by | | ↳ `source` | json | Source | ### Plane Update a cycle [#plane-update-a-cycle] Update a cycle in Plane. Supports API v1 compatibility. #### Input [#input-58] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the cycle belongs to. | | `pk` | string | Yes | The cycle to update. | | `name` | string | No | New display name, unique within the project. Maximum 255 characters. Renaming onto a name another cycle already holds returns `409 conflict`. | | `description` | string | No | Free-form description of what the cycle covers. | | `start_date` | string | No | New opening date-time, in ISO 8601. Send `null` to unschedule the start. | | `end_date` | string | No | New closing date-time, in ISO 8601. Send `null` to unschedule the end. | | `timezone` | string | No | The IANA time zone the cycle's dates are interpreted in, for example `America/New_York` or `UTC`. Changing it re-anchors where the existing boundaries fall locally, so send it together with the dates when you are moving a cycle between regions. Any value outside the IANA list is rejected with `400 invalid_request`. | | `sort_order` | number | No | Ordering weight for the cycle within the project. Lower values sort first when you list with `?order_by=sort_order`. | | `logo_props` | json | No | JSON blob holding the cycle's icon configuration. Replaces the stored value outright — it is not merged key by key. | | `external_id` | string | No | Your system's identifier for this cycle. Maximum 255 characters, nullable. | | `external_source` | string | No | The system `external_id` came from, for example `jira`. Maximum 255 characters, nullable. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `created_at`, `created_by_id`, `description`, `end_date`, `external_id`, `external_source`, `id`, `logo_props`, `name`, `owned_by_id`, `sort_order`, `start_date`, `timezone`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `owned_by` (the cycle owner). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `owned_by` | string | No | v1 compatibility only. User who owns the cycle. If not provided, defaults to the current user. | #### Output [#output-58] | Parameter | Type | Description | | ----------------------- | ------ | ------------------- | | `result` | object | Plane V2 Cycles | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `timezone` | json | Timezone | | ↳ `owned_by_id` | string | Owned by id | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `owned_by` | json | Owned by | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `total_estimates` | number | Total estimates | | ↳ `completed_estimates` | number | Completed estimates | | ↳ `started_estimates` | number | Started estimates | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `view_props` | json | View props | | ↳ `progress_snapshot` | json | Progress snapshot | | ↳ `archived_at` | string | Archived at | | ↳ `version` | json | Version | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `status` | string | Status | | ↳ `deleted_by` | json | Deleted by | ### Plane Update a label [#plane-update-a-label] Update a label in Plane. Supports API v1 compatibility. #### Input [#input-59] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the label belongs to. | | `pk` | string | Yes | The label id. | | `name` | string | No | New display name, unique within the project. Maximum 255 characters. Renaming onto a name another label already holds returns `409 conflict`. | | `color` | string | No | Hex color used wherever the label is rendered, for example `#e5484d`. Maximum 255 characters. | | `description` | string | No | Free-form note about what the label is for. | | `parent_id` | string | No | Move the label under a different parent. The new parent must be a label in the same project. Send `null` to make the label top-level again. | | `sort_order` | number | No | Ordering weight within the project. Lower values sort first. | | `external_id` | string | No | Your system's identifier for this label, for sync and import correlation. Maximum 255 characters. Send `null` to clear it. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Send `null` to clear it. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `name`, `parent_id`, `sort_order`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | #### Output [#output-59] | Parameter | Type | Description | | ------------------- | ------ | --------------- | | `result` | object | Plane V2 Labels | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `sort_order` | json | Sort order | | ↳ `parent_id` | string | Parent id | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `project` | string | Project | | ↳ `parent` | string | Parent | | ↳ `deleted_by` | json | Deleted by | ### Plane Update a link [#plane-update-a-link] Update a link in Plane. Supports API v1 compatibility. #### Input [#input-60] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `work_item_id` | string | Yes | The work item the resource hangs off. Accepts the work item UUID or its `PROJ-123` identifier. | | `pk` | string | Yes | The link id. | | `metadata` | json | No | JSON metadata object for the link. API v2 only. | | `title` | string | No | Title. Maximum 255 characters. Nullable. | | `url` | string | No | Target URL. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `created_at`, `created_by_id`, `id`, `metadata`, `title`, `url`, `work_item_id`. | | `issue_id` | string | No | v1 compatibility only. Work item ID for the link. | #### Output [#output-60] | Parameter | Type | Description | | ----------------- | ------ | -------------------------- | | `result` | object | Plane V2 Work- Item- Links | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | json | Id | | ↳ `metadata` | json | Metadata | | ↳ `url` | string | Asset Id | | ↳ `title` | string | Asset Id | | ↳ `favicon` | string | Asset Id | | ↳ `favicon_url` | json | Logo Props | | ↳ `title` | json | Title | | ↳ `url` | json | Url | | ↳ `work_item_id` | string | Work item id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `issue` | string | Issue | | ↳ `deleted_by` | json | Deleted by | ### Plane Update a module [#plane-update-a-module] Update a module in Plane. Supports API v1 compatibility. #### Input [#input-61] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the module belongs to. | | `pk` | string | Yes | The module to update. | | `name` | string | No | New display name, unique within the project. Maximum 255 characters. Renaming onto an existing module's name returns `409 conflict`. | | `description` | string | No | Plain-text summary of what the module covers. | | `status` | string | No | Move the module to a different lifecycle position. - `backlog` — Captured, not yet committed to - `planned` — Committed to but not started - `in-progress` — Actively being worked on - `paused` — Started, then put on hold - `completed` — Delivered - `cancelled` — Dropped without delivering Any value outside this list is a `400 invalid_request`. Transitions are unrestricted — a `completed` module can be sent back to `in-progress`. | | `start_date` | string | No | Date the module is scheduled to begin, as `YYYY-MM-DD`. Send `null` to clear it. | | `target_date` | string | No | Date the module is expected to land, as `YYYY-MM-DD`. Send `null` to clear it. Must not be earlier than the module's `start_date` — including the `start_date` already stored when you only send `target_date`. | | `lead_id` | string | No | Reassign the module. Must be a member of this project — any other user id is rejected with a `400` naming `lead_id`. Send `null` to leave the module without a lead. | | `sort_order` | number | No | Ordering weight used when modules are listed. Lower values sort first. | | `logo_props` | json | No | Free-form JSON object holding the icon Plane renders for the module. The value you send replaces the stored object. | | `external_id` | string | No | Your system's identifier for this module, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `id`, `lead_id`, `logo_props`, `member_ids`, `name`, `sort_order`, `start_date`, `status`, `target_date`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `lead` (the module lead), `members` (the module members). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `members` | json | No | v1 compatibility only. Members. | #### Output [#output-61] | Parameter | Type | Description | | -------------------- | ------ | ---------------- | | `result` | object | Plane V2 Modules | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `status` | json | Status | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `lead_id` | string | Lead id | | ↳ `member_ids` | array | Member ids | | ↳ `sort_order` | json | Sort order | | ↳ `logo_props` | json | Logo props | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `lead` | json | Lead | | ↳ `members` | array | Members | | ↳ `total_issues` | json | Total issues | | ↳ `cancelled_issues` | json | Cancelled issues | | ↳ `completed_issues` | json | Completed issues | | ↳ `started_issues` | json | Started issues | | ↳ `unstarted_issues` | json | Unstarted issues | | ↳ `backlog_issues` | json | Backlog issues | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `view_props` | json | View props | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `deleted_by` | json | Deleted by | ### Plane Update a project [#plane-update-a-project] Update a project in Plane. Supports API v1 compatibility. #### Input [#input-62] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The project id. | | `archive_in` | number | No | The archive in. | | `close_in` | number | No | The close in. | | `cover_image` | string | No | URL of the cover image. Nullable. | | `cycle_view` | boolean | No | Whether cycle view. | | `default_assignee_id` | string | No | Id of the related default assignee. Nullable. | | `default_state_id` | string | No | Id of the related default state. Nullable. | | `description` | string | No | Free-form description. | | `emoji` | string | No | Emoji shown alongside the name. Maximum 255 characters. Nullable. | | `estimate_id` | string | No | Id of the related estimate. Nullable. | | `external_id` | string | No | Your system's identifier for this record, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `guest_view_all_features` | boolean | No | Whether guest view all features. | | `icon_prop` | string | No | The icon prop. Nullable. | | `identifier` | string | No | Short project key used to prefix work item numbers, for example `ENG` in `ENG-142`. Maximum 255 characters. | | `intake_view` | boolean | No | Whether intake view. | | `is_issue_type_enabled` | boolean | No | Whether is issue type enabled. | | `is_time_tracking_enabled` | boolean | No | Whether is time tracking enabled. | | `issue_views_view` | boolean | No | Whether issue views view. | | `logo_props` | string | No | Editor-owned logo descriptor. Pass back what you read rather than composing it by hand. | | `module_view` | boolean | No | Whether module view. | | `name` | string | No | Display name. Maximum 255 characters. | | `network` | string | No | Project visibility: `0` is private to members, `2` is visible to the whole workspace. | | `page_view` | boolean | No | Whether page view. | | `priority` | string | No | - `none` - None - `low` - Low - `medium` - Medium - `high` - High - `urgent` - Urgent One of `none`, `low`, `medium`, `high`, `urgent`. | | `project_lead_id` | string | No | Id of the related project lead. Nullable. | | `start_date` | string | No | Planned start date, as `YYYY-MM-DD`. Nullable. | | `state_id` | string | No | Id of the related state. Nullable. | | `target_date` | string | No | Planned due date, as `YYYY-MM-DD`. Nullable. | | `timezone` | string | No | - `Africa/Abidjan` - Africa/Abidjan - `Africa/Accra` - Africa/Accra - `Africa/Addis_Ababa` - Africa/Addis\_Ababa - `Africa/Algiers` - Africa/Algiers - `Africa/Asmara` - Africa/Asmara - `Africa/Bamako` - Africa/Bamako - `Africa/Bangui` - Africa/Bangui - `Africa/Banjul` - Africa/Banjul - `Africa/Bissau` - Africa/Bissau - `Africa/Blantyre` - Africa/Blantyre - `Africa/Brazzaville` - Africa/Brazzaville - `Africa/Bujumbura` - Africa/Bujumbura - `Africa/Cairo` - Africa/Cairo - `Africa/Casablanca` - Africa/Casablanca - `Africa/Ceuta` - Africa/Ceuta - `Africa/Conakry` - Africa/Conakry - `Africa/Dakar` - Africa/Dakar - `Africa/Dar_es_Salaam` - Africa/Dar\_es\_Salaam - `Africa/Djibouti` - Africa/Djibouti - `Africa/Douala` - Africa/Douala - `Africa/El_Aaiun` - Africa/El\_Aaiun - `Africa/Freetown` - Africa/Freetown - `Africa/Gaborone` - Africa/Gaborone - `Africa/Harare` - Africa/Harare - `Africa/Johannesburg` - Africa/Johannesburg - `Africa/Juba` - Africa/Juba - `Africa/Kampala` - Africa/Kampala - `Africa/Khartoum` - Africa/Khartoum - `Africa/Kigali` - Africa/Kigali - `Africa/Kinshasa` - Africa/Kinshasa - `Africa/Lagos` - Africa/Lagos - `Africa/Libreville` - Africa/Libreville - `Africa/Lome` - Africa/Lome - `Africa/Luanda` - Africa/Luanda - `Africa/Lubumbashi` - Africa/Lubumbashi - `Africa/Lusaka` - Africa/Lusaka - `Africa/Malabo` - Africa/Malabo - `Africa/Maputo` - Africa/Maputo - `Africa/Maseru` - Africa/Maseru - `Africa/Mbabane` - Africa/Mbabane - `Africa/Mogadishu` - Africa/Mogadishu - `Africa/Monrovia` - Africa/Monrovia - `Africa/Nairobi` - Africa/Nairobi - `Africa/Ndjamena` - Africa/Ndjamena - `Africa/Niamey` - Africa/Niamey - `Africa/Nouakchott` - Africa/Nouakchott - `Africa/Ouagadougou` - Africa/Ouagadougou - `Africa/Porto-Novo` - Africa/Porto-Novo - `Africa/Sao_Tome` - Africa/Sao\_Tome - `Africa/Tripoli` - Africa/Tripoli - `Africa/Tunis` - Africa/Tunis - `Africa/Windhoek` - Africa/Windhoek - `America/Adak` - America/Adak - `America/Anchorage` - America/Anchorage - `America/Anguilla` - America/Anguilla - `America/Antigua` - America/Antigua - `America/Araguaina` - America/Araguaina - `America/Argentina/Buenos_Aires` - America/Argentina/Buenos\_Aires - `America/Argentina/Catamarca` - America/Argentina/Catamarca - `America/Argentina/Cordoba` - America/Argentina/Cordoba - `America/Argentina/Jujuy` - America/Argentina/Jujuy - `America/Argentina/La_Rioja` - America/Argentina/La\_Rioja - `America/Argentina/Mendoza` - America/Argentina/Mendoza - `America/Argentina/Rio_Gallegos` - America/Argentina/Rio\_Gallegos - `America/Argentina/Salta` - America/Argentina/Salta - `America/Argentina/San_Juan` - America/Argentina/San\_Juan - `America/Argentina/San_Luis` - America/Argentina/San\_Luis - `America/Argentina/Tucuman` - America/Argentina/Tucuman - `America/Argentina/Ushuaia` - America/Argentina/Ushuaia - `America/Aruba` - America/Aruba - `America/Asuncion` - America/Asuncion - `America/Atikokan` - America/Atikokan - `America/Bahia` - America/Bahia - `America/Bahia_Banderas` - America/Bahia\_Banderas - `America/Barbados` - America/Barbados - `America/Belem` - America/Belem - `America/Belize` - America/Belize - `America/Blanc-Sablon` - America/Blanc-Sablon - `America/Boa_Vista` - America/Boa\_Vista - `America/Bogota` - America/Bogota - `America/Boise` - America/Boise - `America/Cambridge_Bay` - America/Cambridge\_Bay - `America/Campo_Grande` - America/Campo\_Grande - `America/Cancun` - America/Cancun - `America/Caracas` - America/Caracas - `America/Cayenne` - America/Cayenne - `America/Cayman` - America/Cayman - `America/Chicago` - America/Chicago - `America/Chihuahua` - America/Chihuahua - `America/Ciudad_Juarez` - America/Ciudad\_Juarez - `America/Costa_Rica` - America/Costa\_Rica - `America/Creston` - America/Creston - `America/Cuiaba` - America/Cuiaba - `America/Curacao` - America/Curacao - `America/Danmarkshavn` - America/Danmarkshavn - `America/Dawson` - America/Dawson - `America/Dawson_Creek` - America/Dawson\_Creek - `America/Denver` - America/Denver - `America/Detroit` - America/Detroit - `America/Dominica` - America/Dominica - `America/Edmonton` - America/Edmonton - `America/Eirunepe` - America/Eirunepe - `America/El_Salvador` - America/El\_Salvador - `America/Fort_Nelson` - America/Fort\_Nelson - `America/Fortaleza` - America/Fortaleza - `America/Glace_Bay` - America/Glace\_Bay - `America/Goose_Bay` - America/Goose\_Bay - `America/Grand_Turk` - America/Grand\_Turk - `America/Grenada` - America/Grenada - `America/Guadeloupe` - America/Guadeloupe - `America/Guatemala` - America/Guatemala - `America/Guayaquil` - America/Guayaquil - `America/Guyana` - America/Guyana - `America/Halifax` - America/Halifax - `America/Havana` - America/Havana - `America/Hermosillo` - America/Hermosillo - `America/Indiana/Indianapolis` - America/Indiana/Indianapolis - `America/Indiana/Knox` - America/Indiana/Knox - `America/Indiana/Marengo` - America/Indiana/Marengo - `America/Indiana/Petersburg` - America/Indiana/Petersburg - `America/Indiana/Tell_City` - America/Indiana/Tell\_City - `America/Indiana/Vevay` - America/Indiana/Vevay - `America/Indiana/Vincennes` - America/Indiana/Vincennes - `America/Indiana/Winamac` - America/Indiana/Winamac - `America/Inuvik` - America/Inuvik - `America/Iqaluit` - America/Iqaluit - `America/Jamaica` - America/Jamaica - `America/Juneau` - America/Juneau - `America/Kentucky/Louisville` - America/Kentucky/Louisville - `America/Kentucky/Monticello` - America/Kentucky/Monticello - `America/Kralendijk` - America/Kralendijk - `America/La_Paz` - America/La\_Paz - `America/Lima` - America/Lima - `America/Los_Angeles` - America/Los\_Angeles - `America/Lower_Princes` - America/Lower\_Princes - `America/Maceio` - America/Maceio - `America/Managua` - America/Managua - `America/Manaus` - America/Manaus - `America/Marigot` - America/Marigot - `America/Martinique` - America/Martinique - `America/Matamoros` - America/Matamoros - `America/Mazatlan` - America/Mazatlan - `America/Menominee` - America/Menominee - `America/Merida` - America/Merida - `America/Metlakatla` - America/Metlakatla - `America/Mexico_City` - America/Mexico\_City - `America/Miquelon` - America/Miquelon - `America/Moncton` - America/Moncton - `America/Monterrey` - America/Monterrey - `America/Montevideo` - America/Montevideo - `America/Montserrat` - America/Montserrat - `America/Nassau` - America/Nassau - `America/New_York` - America/New\_York - `America/Nome` - America/Nome - `America/Noronha` - America/Noronha - `America/North_Dakota/Beulah` - America/North\_Dakota/Beulah - `America/North_Dakota/Center` - America/North\_Dakota/Center - `America/North_Dakota/New_Salem` - America/North\_Dakota/New\_Salem - `America/Nuuk` - America/Nuuk - `America/Ojinaga` - America/Ojinaga - `America/Panama` - America/Panama - `America/Paramaribo` - America/Paramaribo - `America/Phoenix` - America/Phoenix - `America/Port-au-Prince` - America/Port-au-Prince - `America/Port_of_Spain` - America/Port\_of\_Spain - `America/Porto_Velho` - America/Porto\_Velho - `America/Puerto_Rico` - America/Puerto\_Rico - `America/Punta_Arenas` - America/Punta\_Arenas - `America/Rankin_Inlet` - America/Rankin\_Inlet - `America/Recife` - America/Recife - `America/Regina` - America/Regina - `America/Resolute` - America/Resolute - `America/Rio_Branco` - America/Rio\_Branco - `America/Santarem` - America/Santarem - `America/Santiago` - America/Santiago - `America/Santo_Domingo` - America/Santo\_Domingo - `America/Sao_Paulo` - America/Sao\_Paulo - `America/Scoresbysund` - America/Scoresbysund - `America/Sitka` - America/Sitka - `America/St_Barthelemy` - America/St\_Barthelemy - `America/St_Johns` - America/St\_Johns - `America/St_Kitts` - America/St\_Kitts - `America/St_Lucia` - America/St\_Lucia - `America/St_Thomas` - America/St\_Thomas - `America/St_Vincent` - America/St\_Vincent - `America/Swift_Current` - America/Swift\_Current - `America/Tegucigalpa` - America/Tegucigalpa - `America/Thule` - America/Thule - `America/Tijuana` - America/Tijuana - `America/Toronto` - America/Toronto - `America/Tortola` - America/Tortola - `America/Vancouver` - America/Vancouver - `America/Whitehorse` - America/Whitehorse - `America/Winnipeg` - America/Winnipeg - `America/Yakutat` - America/Yakutat - `Antarctica/Casey` - Antarctica/Casey - `Antarctica/Davis` - Antarctica/Davis - `Antarctica/DumontDUrville` - Antarctica/DumontDUrville - `Antarctica/Macquarie` - Antarctica/Macquarie - `Antarctica/Mawson` - Antarctica/Mawson - `Antarctica/McMurdo` - Antarctica/McMurdo - `Antarctica/Palmer` - Antarctica/Palmer - `Antarctica/Rothera` - Antarctica/Rothera - `Antarctica/Syowa` - Antarctica/Syowa - `Antarctica/Troll` - Antarctica/Troll - `Antarctica/Vostok` - Antarctica/Vostok - `Arctic/Longyearbyen` - Arctic/Longyearbyen - `Asia/Aden` - Asia/Aden - `Asia/Almaty` - Asia/Almaty - `Asia/Amman` - Asia/Amman - `Asia/Anadyr` - Asia/Anadyr - `Asia/Aqtau` - Asia/Aqtau - `Asia/Aqtobe` - Asia/Aqtobe - `Asia/Ashgabat` - Asia/Ashgabat - `Asia/Atyrau` - Asia/Atyrau - `Asia/Baghdad` - Asia/Baghdad - `Asia/Bahrain` - Asia/Bahrain - `Asia/Baku` - Asia/Baku - `Asia/Bangkok` - Asia/Bangkok - `Asia/Barnaul` - Asia/Barnaul - `Asia/Beirut` - Asia/Beirut - `Asia/Bishkek` - Asia/Bishkek - `Asia/Brunei` - Asia/Brunei - `Asia/Chita` - Asia/Chita - `Asia/Choibalsan` - Asia/Choibalsan - `Asia/Colombo` - Asia/Colombo - `Asia/Damascus` - Asia/Damascus - `Asia/Dhaka` - Asia/Dhaka - `Asia/Dili` - Asia/Dili - `Asia/Dubai` - Asia/Dubai - `Asia/Dushanbe` - Asia/Dushanbe - `Asia/Famagusta` - Asia/Famagusta - `Asia/Gaza` - Asia/Gaza - `Asia/Hebron` - Asia/Hebron - `Asia/Ho_Chi_Minh` - Asia/Ho\_Chi\_Minh - `Asia/Hong_Kong` - Asia/Hong\_Kong - `Asia/Hovd` - Asia/Hovd - `Asia/Irkutsk` - Asia/Irkutsk - `Asia/Jakarta` - Asia/Jakarta - `Asia/Jayapura` - Asia/Jayapura - `Asia/Jerusalem` - Asia/Jerusalem - `Asia/Kabul` - Asia/Kabul - `Asia/Kamchatka` - Asia/Kamchatka - `Asia/Karachi` - Asia/Karachi - `Asia/Kathmandu` - Asia/Kathmandu - `Asia/Khandyga` - Asia/Khandyga - `Asia/Kolkata` - Asia/Kolkata - `Asia/Krasnoyarsk` - Asia/Krasnoyarsk - `Asia/Kuala_Lumpur` - Asia/Kuala\_Lumpur - `Asia/Kuching` - Asia/Kuching - `Asia/Kuwait` - Asia/Kuwait - `Asia/Macau` - Asia/Macau - `Asia/Magadan` - Asia/Magadan - `Asia/Makassar` - Asia/Makassar - `Asia/Manila` - Asia/Manila - `Asia/Muscat` - Asia/Muscat - `Asia/Nicosia` - Asia/Nicosia - `Asia/Novokuznetsk` - Asia/Novokuznetsk - `Asia/Novosibirsk` - Asia/Novosibirsk - `Asia/Omsk` - Asia/Omsk - `Asia/Oral` - Asia/Oral - `Asia/Phnom_Penh` - Asia/Phnom\_Penh - `Asia/Pontianak` - Asia/Pontianak - `Asia/Pyongyang` - Asia/Pyongyang - `Asia/Qatar` - Asia/Qatar - `Asia/Qostanay` - Asia/Qostanay - `Asia/Qyzylorda` - Asia/Qyzylorda - `Asia/Riyadh` - Asia/Riyadh - `Asia/Sakhalin` - Asia/Sakhalin - `Asia/Samarkand` - Asia/Samarkand - `Asia/Seoul` - Asia/Seoul - `Asia/Shanghai` - Asia/Shanghai - `Asia/Singapore` - Asia/Singapore - `Asia/Srednekolymsk` - Asia/Srednekolymsk - `Asia/Taipei` - Asia/Taipei - `Asia/Tashkent` - Asia/Tashkent - `Asia/Tbilisi` - Asia/Tbilisi - `Asia/Tehran` - Asia/Tehran - `Asia/Thimphu` - Asia/Thimphu - `Asia/Tokyo` - Asia/Tokyo - `Asia/Tomsk` - Asia/Tomsk - `Asia/Ulaanbaatar` - Asia/Ulaanbaatar - `Asia/Urumqi` - Asia/Urumqi - `Asia/Ust-Nera` - Asia/Ust-Nera - `Asia/Vientiane` - Asia/Vientiane - `Asia/Vladivostok` - Asia/Vladivostok - `Asia/Yakutsk` - Asia/Yakutsk - `Asia/Yangon` - Asia/Yangon - `Asia/Yekaterinburg` - Asia/Yekaterinburg - `Asia/Yerevan` - Asia/Yerevan - `Atlantic/Azores` - Atlantic/Azores - `Atlantic/Bermuda` - Atlantic/Bermuda - `Atlantic/Canary` - Atlantic/Canary - `Atlantic/Cape_Verde` - Atlantic/Cape\_Verde - `Atlantic/Faroe` - Atlantic/Faroe - `Atlantic/Madeira` - Atlantic/Madeira - `Atlantic/Reykjavik` - Atlantic/Reykjavik - `Atlantic/South_Georgia` - Atlantic/South\_Georgia - `Atlantic/St_Helena` - Atlantic/St\_Helena - `Atlantic/Stanley` - Atlantic/Stanley - `Australia/Adelaide` - Australia/Adelaide - `Australia/Brisbane` - Australia/Brisbane - `Australia/Broken_Hill` - Australia/Broken\_Hill - `Australia/Darwin` - Australia/Darwin - `Australia/Eucla` - Australia/Eucla - `Australia/Hobart` - Australia/Hobart - `Australia/Lindeman` - Australia/Lindeman - `Australia/Lord_Howe` - Australia/Lord\_Howe - `Australia/Melbourne` - Australia/Melbourne - `Australia/Perth` - Australia/Perth - `Australia/Sydney` - Australia/Sydney - `Canada/Atlantic` - Canada/Atlantic - `Canada/Central` - Canada/Central - `Canada/Eastern` - Canada/Eastern - `Canada/Mountain` - Canada/Mountain - `Canada/Newfoundland` - Canada/Newfoundland - `Canada/Pacific` - Canada/Pacific - `Europe/Amsterdam` - Europe/Amsterdam - `Europe/Andorra` - Europe/Andorra - `Europe/Astrakhan` - Europe/Astrakhan - `Europe/Athens` - Europe/Athens - `Europe/Belgrade` - Europe/Belgrade - `Europe/Berlin` - Europe/Berlin - `Europe/Bratislava` - Europe/Bratislava - `Europe/Brussels` - Europe/Brussels - `Europe/Bucharest` - Europe/Bucharest - `Europe/Budapest` - Europe/Budapest - `Europe/Busingen` - Europe/Busingen - `Europe/Chisinau` - Europe/Chisinau - `Europe/Copenhagen` - Europe/Copenhagen - `Europe/Dublin` - Europe/Dublin - `Europe/Gibraltar` - Europe/Gibraltar - `Europe/Guernsey` - Europe/Guernsey - `Europe/Helsinki` - Europe/Helsinki - `Europe/Isle_of_Man` - Europe/Isle\_of\_Man - `Europe/Istanbul` - Europe/Istanbul - `Europe/Jersey` - Europe/Jersey - `Europe/Kaliningrad` - Europe/Kaliningrad - `Europe/Kirov` - Europe/Kirov - `Europe/Kyiv` - Europe/Kyiv - `Europe/Lisbon` - Europe/Lisbon - `Europe/Ljubljana` - Europe/Ljubljana - `Europe/London` - Europe/London - `Europe/Luxembourg` - Europe/Luxembourg - `Europe/Madrid` - Europe/Madrid - `Europe/Malta` - Europe/Malta - `Europe/Mariehamn` - Europe/Mariehamn - `Europe/Minsk` - Europe/Minsk - `Europe/Monaco` - Europe/Monaco - `Europe/Moscow` - Europe/Moscow - `Europe/Oslo` - Europe/Oslo - `Europe/Paris` - Europe/Paris - `Europe/Podgorica` - Europe/Podgorica - `Europe/Prague` - Europe/Prague - `Europe/Riga` - Europe/Riga - `Europe/Rome` - Europe/Rome - `Europe/Samara` - Europe/Samara - `Europe/San_Marino` - Europe/San\_Marino - `Europe/Sarajevo` - Europe/Sarajevo - `Europe/Saratov` - Europe/Saratov - `Europe/Simferopol` - Europe/Simferopol - `Europe/Skopje` - Europe/Skopje - `Europe/Sofia` - Europe/Sofia - `Europe/Stockholm` - Europe/Stockholm - `Europe/Tallinn` - Europe/Tallinn - `Europe/Tirane` - Europe/Tirane - `Europe/Ulyanovsk` - Europe/Ulyanovsk - `Europe/Vaduz` - Europe/Vaduz - `Europe/Vatican` - Europe/Vatican - `Europe/Vienna` - Europe/Vienna - `Europe/Vilnius` - Europe/Vilnius - `Europe/Volgograd` - Europe/Volgograd - `Europe/Warsaw` - Europe/Warsaw - `Europe/Zagreb` - Europe/Zagreb - `Europe/Zurich` - Europe/Zurich - `GMT` - GMT - `Indian/Antananarivo` - Indian/Antananarivo - `Indian/Chagos` - Indian/Chagos - `Indian/Christmas` - Indian/Christmas - `Indian/Cocos` - Indian/Cocos - `Indian/Comoro` - Indian/Comoro - `Indian/Kerguelen` - Indian/Kerguelen - `Indian/Mahe` - Indian/Mahe - `Indian/Maldives` - Indian/Maldives - `Indian/Mauritius` - Indian/Mauritius - `Indian/Mayotte` - Indian/Mayotte - `Indian/Reunion` - Indian/Reunion - `Pacific/Apia` - Pacific/Apia - `Pacific/Auckland` - Pacific/Auckland - `Pacific/Bougainville` - Pacific/Bougainville - `Pacific/Chatham` - Pacific/Chatham - `Pacific/Chuuk` - Pacific/Chuuk - `Pacific/Easter` - Pacific/Easter - `Pacific/Efate` - Pacific/Efate - `Pacific/Fakaofo` - Pacific/Fakaofo - `Pacific/Fiji` - Pacific/Fiji - `Pacific/Funafuti` - Pacific/Funafuti - `Pacific/Galapagos` - Pacific/Galapagos - `Pacific/Gambier` - Pacific/Gambier - `Pacific/Guadalcanal` - Pacific/Guadalcanal - `Pacific/Guam` - Pacific/Guam - `Pacific/Honolulu` - Pacific/Honolulu - `Pacific/Kanton` - Pacific/Kanton - `Pacific/Kiritimati` - Pacific/Kiritimati - `Pacific/Kosrae` - Pacific/Kosrae - `Pacific/Kwajalein` - Pacific/Kwajalein - `Pacific/Majuro` - Pacific/Majuro - `Pacific/Marquesas` - Pacific/Marquesas - `Pacific/Midway` - Pacific/Midway - `Pacific/Nauru` - Pacific/Nauru - `Pacific/Niue` - Pacific/Niue - `Pacific/Norfolk` - Pacific/Norfolk - `Pacific/Noumea` - Pacific/Noumea - `Pacific/Pago_Pago` - Pacific/Pago\_Pago - `Pacific/Palau` - Pacific/Palau - `Pacific/Pitcairn` - Pacific/Pitcairn - `Pacific/Pohnpei` - Pacific/Pohnpei - `Pacific/Port_Moresby` - Pacific/Port\_Moresby - `Pacific/Rarotonga` - Pacific/Rarotonga - `Pacific/Saipan` - Pacific/Saipan - `Pacific/Tahiti` - Pacific/Tahiti - `Pacific/Tarawa` - Pacific/Tarawa - `Pacific/Tongatapu` - Pacific/Tongatapu - `Pacific/Wake` - Pacific/Wake - `Pacific/Wallis` - Pacific/Wallis - `US/Alaska` - US/Alaska - `US/Arizona` - US/Arizona - `US/Central` - US/Central - `US/Eastern` - US/Eastern - `US/Hawaii` - US/Hawaii - `US/Mountain` - US/Mountain - `US/Pacific` - US/Pacific - `UTC` - UTC One of `Africa/Abidjan`, `Africa/Accra`, `Africa/Addis_Ababa`, `Africa/Algiers`, `Africa/Asmara`, `Africa/Bamako`, `Africa/Bangui`, `Africa/Banjul`, `Africa/Bissau`, `Africa/Blantyre`, `Africa/Brazzaville`, `Africa/Bujumbura`, `Africa/Cairo`, `Africa/Casablanca`, `Africa/Ceuta`, `Africa/Conakry`, `Africa/Dakar`, `Africa/Dar_es_Salaam`, `Africa/Djibouti`, `Africa/Douala`, `Africa/El_Aaiun`, `Africa/Freetown`, `Africa/Gaborone`, `Africa/Harare`, `Africa/Johannesburg`, `Africa/Juba`, `Africa/Kampala`, `Africa/Khartoum`, `Africa/Kigali`, `Africa/Kinshasa`, `Africa/Lagos`, `Africa/Libreville`, `Africa/Lome`, `Africa/Luanda`, `Africa/Lubumbashi`, `Africa/Lusaka`, `Africa/Malabo`, `Africa/Maputo`, `Africa/Maseru`, `Africa/Mbabane`, `Africa/Mogadishu`, `Africa/Monrovia`, `Africa/Nairobi`, `Africa/Ndjamena`, `Africa/Niamey`, `Africa/Nouakchott`, `Africa/Ouagadougou`, `Africa/Porto-Novo`, `Africa/Sao_Tome`, `Africa/Tripoli`, `Africa/Tunis`, `Africa/Windhoek`, `America/Adak`, `America/Anchorage`, `America/Anguilla`, `America/Antigua`, `America/Araguaina`, `America/Argentina/Buenos_Aires`, `America/Argentina/Catamarca`, `America/Argentina/Cordoba`, `America/Argentina/Jujuy`, `America/Argentina/La_Rioja`, `America/Argentina/Mendoza`, `America/Argentina/Rio_Gallegos`, `America/Argentina/Salta`, `America/Argentina/San_Juan`, `America/Argentina/San_Luis`, `America/Argentina/Tucuman`, `America/Argentina/Ushuaia`, `America/Aruba`, `America/Asuncion`, `America/Atikokan`, `America/Bahia`, `America/Bahia_Banderas`, `America/Barbados`, `America/Belem`, `America/Belize`, `America/Blanc-Sablon`, `America/Boa_Vista`, `America/Bogota`, `America/Boise`, `America/Cambridge_Bay`, `America/Campo_Grande`, `America/Cancun`, `America/Caracas`, `America/Cayenne`, `America/Cayman`, `America/Chicago`, `America/Chihuahua`, `America/Ciudad_Juarez`, `America/Costa_Rica`, `America/Creston`, `America/Cuiaba`, `America/Curacao`, `America/Danmarkshavn`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Detroit`, `America/Dominica`, `America/Edmonton`, `America/Eirunepe`, `America/El_Salvador`, `America/Fort_Nelson`, `America/Fortaleza`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Grand_Turk`, `America/Grenada`, `America/Guadeloupe`, `America/Guatemala`, `America/Guayaquil`, `America/Guyana`, `America/Halifax`, `America/Havana`, `America/Hermosillo`, `America/Indiana/Indianapolis`, `America/Indiana/Knox`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Tell_City`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Inuvik`, `America/Iqaluit`, `America/Jamaica`, `America/Juneau`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Kralendijk`, `America/La_Paz`, `America/Lima`, `America/Los_Angeles`, `America/Lower_Princes`, `America/Maceio`, `America/Managua`, `America/Manaus`, `America/Marigot`, `America/Martinique`, `America/Matamoros`, `America/Mazatlan`, `America/Menominee`, `America/Merida`, `America/Metlakatla`, `America/Mexico_City`, `America/Miquelon`, `America/Moncton`, `America/Monterrey`, `America/Montevideo`, `America/Montserrat`, `America/Nassau`, `America/New_York`, `America/Nome`, `America/Noronha`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Nuuk`, `America/Ojinaga`, `America/Panama`, `America/Paramaribo`, `America/Phoenix`, `America/Port-au-Prince`, `America/Port_of_Spain`, `America/Porto_Velho`, `America/Puerto_Rico`, `America/Punta_Arenas`, `America/Rankin_Inlet`, `America/Recife`, `America/Regina`, `America/Resolute`, `America/Rio_Branco`, `America/Santarem`, `America/Santiago`, `America/Santo_Domingo`, `America/Sao_Paulo`, `America/Scoresbysund`, `America/Sitka`, `America/St_Barthelemy`, `America/St_Johns`, `America/St_Kitts`, `America/St_Lucia`, `America/St_Thomas`, `America/St_Vincent`, `America/Swift_Current`, `America/Tegucigalpa`, `America/Thule`, `America/Tijuana`, `America/Toronto`, `America/Tortola`, `America/Vancouver`, `America/Whitehorse`, `America/Winnipeg`, `America/Yakutat`, `Antarctica/Casey`, `Antarctica/Davis`, `Antarctica/DumontDUrville`, `Antarctica/Macquarie`, `Antarctica/Mawson`, `Antarctica/McMurdo`, `Antarctica/Palmer`, `Antarctica/Rothera`, `Antarctica/Syowa`, `Antarctica/Troll`, `Antarctica/Vostok`, `Arctic/Longyearbyen`, `Asia/Aden`, `Asia/Almaty`, `Asia/Amman`, `Asia/Anadyr`, `Asia/Aqtau`, `Asia/Aqtobe`, `Asia/Ashgabat`, `Asia/Atyrau`, `Asia/Baghdad`, `Asia/Bahrain`, `Asia/Baku`, `Asia/Bangkok`, `Asia/Barnaul`, `Asia/Beirut`, `Asia/Bishkek`, `Asia/Brunei`, `Asia/Chita`, `Asia/Choibalsan`, `Asia/Colombo`, `Asia/Damascus`, `Asia/Dhaka`, `Asia/Dili`, `Asia/Dubai`, `Asia/Dushanbe`, `Asia/Famagusta`, `Asia/Gaza`, `Asia/Hebron`, `Asia/Ho_Chi_Minh`, `Asia/Hong_Kong`, `Asia/Hovd`, `Asia/Irkutsk`, `Asia/Jakarta`, `Asia/Jayapura`, `Asia/Jerusalem`, `Asia/Kabul`, `Asia/Kamchatka`, `Asia/Karachi`, `Asia/Kathmandu`, `Asia/Khandyga`, `Asia/Kolkata`, `Asia/Krasnoyarsk`, `Asia/Kuala_Lumpur`, `Asia/Kuching`, `Asia/Kuwait`, `Asia/Macau`, `Asia/Magadan`, `Asia/Makassar`, `Asia/Manila`, `Asia/Muscat`, `Asia/Nicosia`, `Asia/Novokuznetsk`, `Asia/Novosibirsk`, `Asia/Omsk`, `Asia/Oral`, `Asia/Phnom_Penh`, `Asia/Pontianak`, `Asia/Pyongyang`, `Asia/Qatar`, `Asia/Qostanay`, `Asia/Qyzylorda`, `Asia/Riyadh`, `Asia/Sakhalin`, `Asia/Samarkand`, `Asia/Seoul`, `Asia/Shanghai`, `Asia/Singapore`, `Asia/Srednekolymsk`, `Asia/Taipei`, `Asia/Tashkent`, `Asia/Tbilisi`, `Asia/Tehran`, `Asia/Thimphu`, `Asia/Tokyo`, `Asia/Tomsk`, `Asia/Ulaanbaatar`, `Asia/Urumqi`, `Asia/Ust-Nera`, `Asia/Vientiane`, `Asia/Vladivostok`, `Asia/Yakutsk`, `Asia/Yangon`, `Asia/Yekaterinburg`, `Asia/Yerevan`, `Atlantic/Azores`, `Atlantic/Bermuda`, `Atlantic/Canary`, `Atlantic/Cape_Verde`, `Atlantic/Faroe`, `Atlantic/Madeira`, `Atlantic/Reykjavik`, `Atlantic/South_Georgia`, `Atlantic/St_Helena`, `Atlantic/Stanley`, `Australia/Adelaide`, `Australia/Brisbane`, `Australia/Broken_Hill`, `Australia/Darwin`, `Australia/Eucla`, `Australia/Hobart`, `Australia/Lindeman`, `Australia/Lord_Howe`, `Australia/Melbourne`, `Australia/Perth`, `Australia/Sydney`, `Canada/Atlantic`, `Canada/Central`, `Canada/Eastern`, `Canada/Mountain`, `Canada/Newfoundland`, `Canada/Pacific`, `Europe/Amsterdam`, `Europe/Andorra`, `Europe/Astrakhan`, `Europe/Athens`, `Europe/Belgrade`, `Europe/Berlin`, `Europe/Bratislava`, `Europe/Brussels`, `Europe/Bucharest`, `Europe/Budapest`, `Europe/Busingen`, `Europe/Chisinau`, `Europe/Copenhagen`, `Europe/Dublin`, `Europe/Gibraltar`, `Europe/Guernsey`, `Europe/Helsinki`, `Europe/Isle_of_Man`, `Europe/Istanbul`, `Europe/Jersey`, `Europe/Kaliningrad`, `Europe/Kirov`, `Europe/Kyiv`, `Europe/Lisbon`, `Europe/Ljubljana`, `Europe/London`, `Europe/Luxembourg`, `Europe/Madrid`, `Europe/Malta`, `Europe/Mariehamn`, `Europe/Minsk`, `Europe/Monaco`, `Europe/Moscow`, `Europe/Oslo`, `Europe/Paris`, `Europe/Podgorica`, `Europe/Prague`, `Europe/Riga`, `Europe/Rome`, `Europe/Samara`, `Europe/San_Marino`, `Europe/Sarajevo`, `Europe/Saratov`, `Europe/Simferopol`, `Europe/Skopje`, `Europe/Sofia`, `Europe/Stockholm`, `Europe/Tallinn`, `Europe/Tirane`, `Europe/Ulyanovsk`, `Europe/Vaduz`, `Europe/Vatican`, `Europe/Vienna`, `Europe/Vilnius`, `Europe/Volgograd`, `Europe/Warsaw`, `Europe/Zagreb`, `Europe/Zurich`, `GMT`, `Indian/Antananarivo`, `Indian/Chagos`, `Indian/Christmas`, `Indian/Cocos`, `Indian/Comoro`, `Indian/Kerguelen`, `Indian/Mahe`, `Indian/Maldives`, `Indian/Mauritius`, `Indian/Mayotte`, `Indian/Reunion`, `Pacific/Apia`, `Pacific/Auckland`, `Pacific/Bougainville`, `Pacific/Chatham`, `Pacific/Chuuk`, `Pacific/Easter`, `Pacific/Efate`, `Pacific/Fakaofo`, `Pacific/Fiji`, `Pacific/Funafuti`, `Pacific/Galapagos`, `Pacific/Gambier`, `Pacific/Guadalcanal`, `Pacific/Guam`, `Pacific/Honolulu`, `Pacific/Kanton`, `Pacific/Kiritimati`, `Pacific/Kosrae`, `Pacific/Kwajalein`, `Pacific/Majuro`, `Pacific/Marquesas`, `Pacific/Midway`, `Pacific/Nauru`, `Pacific/Niue`, `Pacific/Norfolk`, `Pacific/Noumea`, `Pacific/Pago_Pago`, `Pacific/Palau`, `Pacific/Pitcairn`, `Pacific/Pohnpei`, `Pacific/Port_Moresby`, `Pacific/Rarotonga`, `Pacific/Saipan`, `Pacific/Tahiti`, `Pacific/Tarawa`, `Pacific/Tongatapu`, `Pacific/Wake`, `Pacific/Wallis`, `US/Alaska`, `US/Arizona`, `US/Central`, `US/Eastern`, `US/Hawaii`, `US/Mountain`, `US/Pacific`, `UTC`. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `archive_in`, `archived_at`, `close_in`, `cover_image`, `cover_image_url`, `created_at`, `created_by_id`, `cycle_view`, `default_assignee_id`, `default_state_id`, `description`, `emoji`, `estimate_id`, `external_id`, `external_source`, `guest_view_all_features`, `icon_prop`, `id`, `identifier`, `intake_view`, `is_issue_type_enabled`, `is_time_tracking_enabled`, `issue_views_view`, `logo_props`, `module_view`, `name`, `network`, `page_view`, `priority`, `project_lead_id`, `start_date`, `state_id`, `target_date`, `timezone`. | | `expand` | string | No | Comma-separated relations to embed: `default_assignee`, `project_lead`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `v1_icon_prop` | json | No | v1 compatibility only. Icon prop. | #### Output [#output-62] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------ | | `result` | object | Plane V2 Projects | | ↳ `archive_in` | json | Archive in | | ↳ `archived_at` | string | Archived at | | ↳ `close_in` | json | Close in | | ↳ `cover_image` | json | Cover image | | ↳ `cover_image_url` | json | Cover image url | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `cycle_view` | json | Cycle view | | ↳ `default_assignee_id` | string | Default assignee id | | ↳ `default_state_id` | string | Default state id | | ↳ `description` | json | Description | | ↳ `emoji` | json | Emoji | | ↳ `estimate_id` | string | Estimate id | | ↳ `external_id` | json | External id | | ↳ `external_source` | json | External source | | ↳ `guest_view_all_features` | json | Guest view all features | | ↳ `icon_prop` | json | Icon prop | | ↳ `id` | json | Id | | ↳ `identifier` | json | Identifier | | ↳ `intake_view` | json | Intake view | | ↳ `is_issue_type_enabled` | json | Is issue type enabled | | ↳ `is_time_tracking_enabled` | json | Is time tracking enabled | | ↳ `issue_views_view` | json | Issue views view | | ↳ `logo_props` | json | Logo props | | ↳ `module_view` | json | Module view | | ↳ `name` | json | Name | | ↳ `network` | json | Network | | ↳ `page_view` | json | Page view | | ↳ `priority` | json | Priority | | ↳ `project_lead_id` | string | Project lead id | | ↳ `start_date` | string | Start date | | ↳ `state_id` | string | State id | | ↳ `target_date` | string | Target date | | ↳ `timezone` | json | Timezone | | ↳ `default_assignee` | json | Default assignee | | ↳ `project_lead` | json | Project lead | | ↳ `total_members` | json | Total members | | ↳ `total_cycles` | json | Total cycles | | ↳ `total_modules` | json | Total modules | | ↳ `is_member` | boolean | Is member | | ↳ `sort_order` | number | Sort order | | ↳ `member_role` | json | Member role | | ↳ `is_deployed` | boolean | Is deployed | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `description_text` | json | Description text | | ↳ `description_html` | json | Description html | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `workspace` | string | Workspace | | ↳ `cover_image_asset` | string | Cover image asset | | ↳ `estimate` | string | Estimate | | ↳ `default_state` | string | Default state | | ↳ `deleted_by` | json | Deleted by | | ↳ `is_voting_enabled` | boolean | Is voting enabled | | ↳ `auto_reminder_days` | number | Auto reminder days | | ↳ `state` | string | State | ### Plane Update a project page [#plane-update-a-project-page] Update a project page in Plane. Supports API v1 compatibility. #### Input [#input-63] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the resource belongs to. Accepts the project UUID or its bare identifier, for example `ENG`. | | `pk` | string | Yes | The project page id. | | `access` | string | No | Who can see this. | | `archived_at` | string | No | The archived at. Nullable. | | `collection_id` | string | No | Id of the related collection. Nullable. | | `color` | string | No | Hex color used wherever this is rendered, for example `#3f76ff`. Maximum 255 characters. | | `description_html` | string | No | Rich-text body as HTML. This is the field the Plane editor round-trips. | | `external_id` | string | No | Your system's identifier for this record, for sync and import correlation. Maximum 255 characters. Nullable. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. Nullable. | | `is_locked` | boolean | No | Prevents further edits to the content. | | `logo_props` | string | No | Editor-owned logo descriptor. Pass back what you read rather than composing it by hand. | | `name` | string | No | Display name. | | `parent_id` | string | No | Id of the related parent. Nullable. | | `sort_order` | number | No | Manual ordering weight. Lower sorts first. | | `view_props` | string | No | Editor-owned layout descriptor. Pass back what you read. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `access`, `archived_at`, `collection_id`, `color`, `created_at`, `created_by_id`, `description_html`, `description_stripped`, `external_id`, `external_source`, `id`, `is_global`, `is_locked`, `logo_props`, `name`, `owned_by_id`, `parent_id`, `sort_order`, `view_props`. | | `expand` | string | No | Comma-separated relations to embed: `owned_by`, `parent`. Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `v1_access` | number | No | v1 compatibility only. Access | | `v1_view_props` | json | No | v1 compatibility only. View props | | `v1_logo_props` | json | No | v1 compatibility only. Logo props | #### Output [#output-63] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------- | | `result` | object | Plane V2 Project- Pages | | ↳ `access` | json | Access | | ↳ `archived_at` | string | Archived at | | ↳ `collection_id` | json | Collection id | | ↳ `color` | json | Color | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `description_html` | json | Description html | | ↳ `description_stripped` | json | Description stripped | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `id` | json | Id | | ↳ `is_global` | boolean | Is global | | ↳ `is_locked` | json | Is locked | | ↳ `logo_props` | json | Logo props | | ↳ `name` | json | Name | | ↳ `owned_by_id` | string | Owned by id | | ↳ `parent_id` | json | Parent id | | ↳ `sort_order` | json | Sort order | | ↳ `view_props` | json | View props | | ↳ `owned_by` | json | Owned by | | ↳ `parent` | json | Parent | | ↳ `description_binary` | string | Description binary | | ↳ `description` | json | Description | | ↳ `updated_at` | string | Updated at | | ↳ `anchor` | string | Anchor | | ↳ `workspace` | string | Workspace | | ↳ `projects` | array | Projects | | ↳ `page_collection_id` | string | Page collection id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | json | Updated by | | ↳ `description_json` | object | Description json | | ↳ `type` | string | Type | | ↳ `content` | array | Content | | ↳ `type` | string | Asset Id | | ↳ `attrs` | object | Attrs | | ↳ `id` | json | Id | | ↳ `textAlign` | json | Id | | ↳ `aiSuggestion` | json | Id | | ↳ `content` | array | Content | | ↳ `text` | string | Asset Id | | ↳ `type` | string | Asset Id | ### Plane Update a state [#plane-update-a-state] Update a state in Plane. Supports API v1 compatibility. #### Input [#input-64] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the state belongs to. | | `pk` | string | Yes | The id of the state to update. | | `name` | string | No | New display name, unique within the project. Maximum 255 characters. Renaming is safe for reporting: boards and charts key off `group`, not `name`. | | `color` | string | No | Hex color used wherever the state is rendered, for example `#3f76ff`. Maximum 255 characters. | | `description` | string | No | Free-form description of what the state means in this workflow. | | `group` | string | No | Move the state to a different workflow group. This changes how every work item in the state is counted by boards, charts, and cycle progress, so switching a state from `started` to `completed` retroactively changes what those work items report as. - `backlog` — Not yet scheduled - `unstarted` — Scheduled but not begun - `started` — Actively in progress - `completed` — Finished successfully - `cancelled` — Closed without completion - `triage` — Awaiting intake review | | `sequence` | number | No | Ordering weight within the project. Lower values sort first. Set it to reposition the state in the workflow. | | `is_default` | boolean | No | Make this the project's default state — where work items land when no `state_id` is supplied. A project has exactly one default, so setting this to `true` clears the flag on the state that held it. | | `external_id` | string | No | Your system's identifier for this state, for sync and import correlation. Maximum 255 characters. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `color`, `created_at`, `created_by_id`, `description`, `external_id`, `external_source`, `group`, `id`, `is_default`, `is_triage`, `name`, `sequence`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `is_triage` | boolean | No | v1 compatibility only. Is triage. | | `default` | boolean | No | v1 compatibility only. Default. | #### Output [#output-64] | Parameter | Type | Description | | ------------------- | ------- | --------------- | | `result` | object | Plane V2 States | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `description` | json | Description | | ↳ `color` | json | Color | | ↳ `group` | json | Group | | ↳ `sequence` | json | Sequence | | ↳ `is_default` | boolean | Is default | | ↳ `is_triage` | json | Is triage | | ↳ `external_id` | string | External id | | ↳ `external_source` | string | External source | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `default` | boolean | Default | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | string | Project | | ↳ `workspace` | string | Workspace | | ↳ `slug` | string | Slug | | ↳ `deleted_by` | json | Deleted by | ### Plane Update a webhook [#plane-update-a-webhook] Update a webhook in Plane. Requires API v2. #### Input [#input-65] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `pk` | string | Yes | The webhook id. | | `content_type` | string | No | - `application/json` - application/json - `application/x-www-form-urlencoded` - application/x-www-form-urlencoded One of `application/json`, `application/x-www-form-urlencoded`. | | `is_active` | boolean | No | Whether the record is active. | | `name` | string | No | Display name. Maximum 255 characters. Nullable. | | `scopes` | json | No | The scopes. | | `url` | string | No | Target URL. | | `version` | string | No | Version string, for example `1.4.0`. Maximum 10 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted**, not returned as `null`. `id` always comes back. Pass `all` for every requestable field. An unknown name is a `400`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). Requestable here: `content_type`, `created_at`, `created_by_id`, `id`, `is_active`, `name`, `scopes`, `url`, `version`. | #### Output [#output-65] | Parameter | Type | Description | | ----------------- | ------- | ------------------ | | `result` | object | Plane V2 Webhooks | | ↳ `content_type` | string | Content type | | ↳ `created_at` | string | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `id` | string | Unique identifier. | | ↳ `is_active` | boolean | Is active | | ↳ `name` | string | Name | | ↳ `scopes` | array | Scopes | | ↳ `url` | string | Url | | ↳ `version` | string | Version | ### Plane Update a work item [#plane-update-a-work-item] Update a work item in Plane. Supports API v1 compatibility. #### Input [#input-66] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Plane personal access token from Profile → API tokens. | | `baseUrl` | string | No | Plane instance origin, optionally with a reverse-proxy path prefix. Defaults to [https://api.plane.so](https://api.plane.so). Do not include /api/v1 or /api/v2. | | `apiVersion` | string | No | API version: v2 (default) for Plane Cloud and current commercial instances; v1 for Community Edition or older self-hosted instances. Unsupported operations or fields fail explicitly. | | `bodyOverrides` | json | No | JSON overrides using the canonical input names for the selected API version. Preserves empty strings, null, and empty arrays; unsupported fields are rejected. | | `workspace_slug` | string | Yes | Workspace slug from the Plane URL (for example, my-team). | | `project_id` | string | Yes | The project the work item belongs to. | | `pk` | string | Yes | The work item's UUID. This lookup is UUID-only — a `PROJ-142` identifier here returns `404`. | | `name` | string | No | New title. Maximum 255 characters. | | `description_html` | string | No | Replacement rich-text body as HTML. Sanitized on the way in; content that can't be sanitized is rejected with a `400`. Not part of the read shape, so it won't appear in the response. | | `priority` | string | No | One of `urgent`, `high`, `medium`, `low`, `none`. | | `state_id` | string | No | Move the work item to another state of the same project. This is the field workflow rules police — see \[Workflow rules]\(#workflow-rules-can-reject-a-transition). | | `state` | string | No | The target state's **name** instead of its id, for example `Done`. Matched case-insensitively within the project. Write-only. Sending both `state` and `state_id` is a `400`. | | `type_id` | string | No | Change the work item type. Send `null` to make the work item untyped. | | `type` | string | No | The type's **name** instead of its id, for example `Bug`. Write-only. | | `parent_id` | string | No | Re-parent the work item. The parent must be in the same workspace and may be in a different project. Send `null` to detach it and make it top-level. | | `parent` | string | No | The parent's **identifier** instead of its id, for example `PROJ-118`. Write-only. | | `assignee_ids` | json | No | **Replaces** the whole assignee set — it is not additive. Send the complete list you want, `\[\]` to unassign everyone, or omit the field to leave assignees untouched. | | `assignees` | json | No | Member **email addresses** instead of ids. Same replace-the-set semantics. Every address must belong to an active, assignable project member. Write-only. | | `label_ids` | json | No | **Replaces** the whole label set. Send `\[\]` to strip all labels, or omit the field to leave them untouched. | | `labels` | json | No | Label **names** instead of ids. Same replace-the-set semantics. A name that exists at both project and workspace level is ambiguous and returns a `400` telling you to use `label_ids`. Write-only. | | `estimate_point_id` | string | No | Change the estimate point, from the project's active estimate system. Send `null` to clear the estimate. | | `estimate` | string | No | The estimate point's **value** instead of its id, for example `5`. Write-only. | | `start_date` | string | No | Planned start, or `null` to clear it. Must not be after `target_date`. | | `target_date` | string | No | Planned due date, or `null` to clear it. | | `external_id` | string | No | Your system's identifier for this work item. Maximum 255 characters. Filterable on \[List work items]\([https://developers.plane.so/api-reference/v2/work-items/list-work-items](https://developers.plane.so/api-reference/v2/work-items/list-work-items)), but not returned on reads. | | `external_source` | string | No | The system `external_id` came from, for example `github` or `jira`. Maximum 255 characters. | | `fields` | string | No | Comma-separated list of fields to return. Unrequested keys are **omitted** from the response, not returned as `null`, so absent means "not requested" and `null` means "actually null". `id` always comes back whether or not you name it. Pass `all` for every requestable field. An unknown name is a `400` that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving. Requestable here: `archived_at`, `assignee_ids`, `created_at`, `created_by_id`, `custom_fields`, `cycle_id`, `id`, `identifier`, `is_draft`, `label_ids`, `module_ids`, `name`, `parent_id`, `priority`, `project_id`, `sequence_id`, `start_date`, `state_id`, `target_date`, `type_id`. See \[Sparse fields]\([https://developers.plane.so/api-reference/v2/sparse-fields](https://developers.plane.so/api-reference/v2/sparse-fields)). | | `expand` | string | No | Comma-separated relations to embed alongside the ids: `assignees` (the assigned users), `cycle` (the cycle it belongs to), `labels` (the applied labels), `modules` (the modules it belongs to), `parent` (its parent work item), `state` (the work item's state object), `type` (its work item type). Expanded relations appear beside their ID fields and survive sparse field filtering. Use only the relation names listed above. | | `deleted_at` | string | No | v1 compatibility only. Deleted at. | | `point` | number | No | v1 compatibility only. Point. | | `sequence_id` | number | No | v1 compatibility only. Sequence id. | | `sort_order` | number | No | v1 compatibility only. Sort order. | | `archived_at` | string | No | v1 compatibility only. Archived at. | | `is_draft` | boolean | No | v1 compatibility only. Is draft. | | `created_by` | string | No | v1 compatibility only. Created by. | | `custom_fields` | json | No | JSON custom field values. API v2 only. | | `cycle_id` | string | No | Cycle ID. API v2 only. | | `module_ids` | json | No | Module IDs. API v2 only. | #### Output [#output-66] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------- | | `result` | object | Plane V2 Work- Items | | ↳ `id` | json | Id | | ↳ `name` | json | Name | | ↳ `identifier` | string | Identifier | | ↳ `sequence_id` | json | Sequence id | | ↳ `priority` | json | Priority | | ↳ `state_id` | string | State id | | ↳ `type_id` | string | Type id | | ↳ `assignee_ids` | array | Assignee ids | | ↳ `label_ids` | array | Label ids | | ↳ `parent_id` | string | Parent id | | ↳ `start_date` | string | Start date | | ↳ `target_date` | string | Target date | | ↳ `is_draft` | json | Is draft | | ↳ `archived_at` | string | Archived at | | ↳ `created_at` | json | Created at | | ↳ `created_by_id` | string | Created by id | | ↳ `custom_fields` | json | Custom fields | | ↳ `assignees` | array | Assignees | | ↳ `id` | string | Asset Id | | ↳ `display_name` | string | Asset Id | | ↳ `avatar_url` | string | Asset Id | | ↳ `email` | string | Asset Id | | ↳ `first_name` | string | Asset Id | | ↳ `last_name` | string | Asset Id | | ↳ `avatar` | string | Asset Id | | ↳ `cycle` | json | Cycle | | ↳ `labels` | array | Labels | | ↳ `id` | string | Asset Id | | ↳ `deleted_by` | json | Id | | ↳ `created_at` | string | Asset Id | | ↳ `updated_at` | string | Asset Id | | ↳ `deleted_at` | json | Id | | ↳ `name` | string | Asset Id | | ↳ `description` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `sort_order` | number | Sort Order | | ↳ `external_source` | json | Id | | ↳ `external_id` | json | Id | | ↳ `created_by` | string | Asset Id | | ↳ `updated_by` | json | Id | | ↳ `workspace` | string | Asset Id | | ↳ `project` | string | Asset Id | | ↳ `parent` | json | Id | | ↳ `modules` | array | Modules | | ↳ `parent` | json | Parent | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `sequence_id` | number | Access | | ↳ `state` | json | State | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `color` | string | Asset Id | | ↳ `group` | json | Group | | ↳ `type` | json | Type | | ↳ `id` | string | Asset Id | | ↳ `name` | string | Asset Id | | ↳ `logo_props` | json | Logo Props | | ↳ `is_epic` | boolean | Has Pages | | ↳ `project_id` | string | Project id | | ↳ `cycle_id` | string | Cycle id | | ↳ `module_ids` | array | Module ids | | ↳ `updated_at` | string | Updated at | | ↳ `deleted_at` | string | Deleted at | | ↳ `point` | number | Point | | ↳ `description_html` | string | Description html | | ↳ `description_stripped` | string | Description stripped | | ↳ `description_binary` | string | Description binary | | ↳ `sort_order` | number | Sort order | | ↳ `completed_at` | string | Completed at | | ↳ `external_source` | string | External source | | ↳ `external_id` | string | External id | | ↳ `created_by` | string | Created by | | ↳ `updated_by` | string | Updated by | | ↳ `project` | json | Project | | ↳ `workspace` | string | Workspace | | ↳ `estimate_point` | string | Estimate point | | ↳ `description` | string | Description | | ↳ `deleted_by` | json | Deleted by | | ↳ `created_via` | json | Created via | | ↳ `updated_via` | json | Updated via | | ↳ `last_activity_at` | string | Last activity at | | ↳ `min_assignee_first_name` | string | Min assignee first name | | ↳ `min_label_name` | string | Min label name | | ↳ `min_module_name` | string | Min module name | | ↳ `priority_rank` | number | Priority rank | | ↳ `state_group` | string | State group | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Plane All Events [#plane-all-events] Trigger a workflow for any signed Plane event. #### Configuration [#configuration] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-67] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Cycle Archived [#plane-cycle-archived] Trigger a workflow for Plane cycle archived events. #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-68] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Cycle Created [#plane-cycle-created] Trigger a workflow for Plane cycle created events. #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-69] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Cycle Deleted [#plane-cycle-deleted] Trigger a workflow for Plane cycle deleted events. #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-70] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Cycle Updated [#plane-cycle-updated] Trigger a workflow for Plane cycle updated events. #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-71] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Milestone Created [#plane-milestone-created] Trigger a workflow for Plane milestone created events. #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-72] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Milestone Deleted [#plane-milestone-deleted] Trigger a workflow for Plane milestone deleted events. #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-73] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Milestone Updated [#plane-milestone-updated] Trigger a workflow for Plane milestone updated events. #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-74] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Module Archived [#plane-module-archived] Trigger a workflow for Plane module archived events. #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-75] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Module Created [#plane-module-created] Trigger a workflow for Plane module created events. #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-76] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Module Deleted [#plane-module-deleted] Trigger a workflow for Plane module deleted events. #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-77] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Module Updated [#plane-module-updated] Trigger a workflow for Plane module updated events. #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-78] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Archived [#plane-page-archived] Trigger a workflow for Plane page archived events. #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-79] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Comment Created [#plane-page-comment-created] Trigger a workflow for Plane page comment created events. #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-80] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Comment Deleted [#plane-page-comment-deleted] Trigger a workflow for Plane page comment deleted events. #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-81] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Comment Updated [#plane-page-comment-updated] Trigger a workflow for Plane page comment updated events. #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-82] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Created [#plane-page-created] Trigger a workflow for Plane page created events. #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-83] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Deleted [#plane-page-deleted] Trigger a workflow for Plane page deleted events. #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-84] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Page Updated [#plane-page-updated] Trigger a workflow for Plane page updated events. #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-85] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Project Archived [#plane-project-archived] Trigger a workflow for Plane project archived events. #### Configuration [#configuration-19] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-86] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Project Created [#plane-project-created] Trigger a workflow for Plane project created events. #### Configuration [#configuration-20] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-87] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Project Deleted [#plane-project-deleted] Trigger a workflow for Plane project deleted events. #### Configuration [#configuration-21] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-88] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Project Updated [#plane-project-updated] Trigger a workflow for Plane project updated events. #### Configuration [#configuration-22] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-89] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Archived [#plane-work-item-archived] Trigger a workflow for Plane work item archived events. #### Configuration [#configuration-23] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-90] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Attachment Created [#plane-work-item-attachment-created] Trigger a workflow for Plane work item attachment created events. #### Configuration [#configuration-24] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-91] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Attachment Deleted [#plane-work-item-attachment-deleted] Trigger a workflow for Plane work item attachment deleted events. #### Configuration [#configuration-25] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-92] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Attachment Updated [#plane-work-item-attachment-updated] Trigger a workflow for Plane work item attachment updated events. #### Configuration [#configuration-26] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-93] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Comment Created [#plane-work-item-comment-created] Trigger a workflow for Plane work item comment created events. #### Configuration [#configuration-27] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-94] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Comment Deleted [#plane-work-item-comment-deleted] Trigger a workflow for Plane work item comment deleted events. #### Configuration [#configuration-28] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-95] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Comment Updated [#plane-work-item-comment-updated] Trigger a workflow for Plane work item comment updated events. #### Configuration [#configuration-29] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-96] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Created [#plane-work-item-created] Trigger a workflow for Plane work item created events. #### Configuration [#configuration-30] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-97] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Deleted [#plane-work-item-deleted] Trigger a workflow for Plane work item deleted events. #### Configuration [#configuration-31] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-98] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Dependency Created [#plane-work-item-dependency-created] Trigger a workflow for Plane work item dependency created events. #### Configuration [#configuration-32] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-99] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Dependency Deleted [#plane-work-item-dependency-deleted] Trigger a workflow for Plane work item dependency deleted events. #### Configuration [#configuration-33] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-100] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Link Created [#plane-work-item-link-created] Trigger a workflow for Plane work item link created events. #### Configuration [#configuration-34] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-101] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Link Deleted [#plane-work-item-link-deleted] Trigger a workflow for Plane work item link deleted events. #### Configuration [#configuration-35] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-102] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Link Updated [#plane-work-item-link-updated] Trigger a workflow for Plane work item link updated events. #### Configuration [#configuration-36] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-103] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Page Link Created [#plane-work-item-page-link-created] Trigger a workflow for Plane work item page link created events. #### Configuration [#configuration-37] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-104] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Page Link Deleted [#plane-work-item-page-link-deleted] Trigger a workflow for Plane work item page link deleted events. #### Configuration [#configuration-38] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-105] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Relation Created [#plane-work-item-relation-created] Trigger a workflow for Plane work item relation created events. #### Configuration [#configuration-39] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-106] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Relation Deleted [#plane-work-item-relation-deleted] Trigger a workflow for Plane work item relation deleted events. #### Configuration [#configuration-40] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-107] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Updated [#plane-work-item-updated] Trigger a workflow for Plane work item updated events. #### Configuration [#configuration-41] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-108] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Vote Created [#plane-work-item-vote-created] Trigger a workflow for Plane work item vote created events. #### Configuration [#configuration-42] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-109] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | *** ### Plane Work Item Vote Deleted [#plane-work-item-vote-deleted] Trigger a workflow for Plane work item vote deleted events. #### Configuration [#configuration-43] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `autoRegister` | boolean | No | Requires the Plane v2 webhook API. Use manual setup for Community Edition. | | `triggerApiKey` | string | No | API Token | | `triggerBaseUrl` | string | No | Instance URL | | `triggerWorkspaceSlug` | string | No | Workspace Slug | | `webhookSecret` | string | No | Webhook Secret | | `projectId` | string | No | Self-hosted v1 deletions without project information are skipped when this filter is set. | | `workspaceId` | string | No | Workspace ID | #### Output [#output-110] | Parameter | Type | Description | | --------------------- | ------ | ----------------------------------------------------------------------------------------------- | | `version` | string | Payload version: v1 or v2. | | `event` | string | Original Plane event or v1 resource name. | | `eventName` | string | Normalized event name, such as workitem.updated. | | `action` | string | v1 action; null for v2. | | `event_id` | string | v2 event ID, stable across retries; null for v1. | | `delivery_id` | string | Delivery attempt ID from the payload or X-Plane-Delivery header. | | `entity_id` | string | v2 primary entity ID; null for v1. | | `entity_type` | string | v2 entity type; null for v1. | | `webhook_id` | string | Plane webhook configuration ID. | | `workspace_id` | string | Plane workspace ID. | | `workspace_slug` | string | v1 workspace slug; null for v2. | | `data` | json | Complete entity payload, including resource-specific fields. v2 deletions send an empty object. | | `activity` | json | v1 changed field, old/new values, actor and identifiers; null for v2. | | `previous_attributes` | json | v2 previous changed values or full deleted record; null for v1. | --- # PlanetScale (/integrations/planetscale) ## Usage Instructions [#usage-instructions] Manage PlanetScale databases and branches, create and inspect backups, and create, review, queue, and close Vitess deploy requests. Authenticate with an organization service token. Deploy-request actions require a Vitess database; SQL queries are available through the MySQL and PostgreSQL integrations. ## Actions [#actions] ### PlanetScale List Databases [#planetscale-list-databases] List databases #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `q` | string | No | Search term to filter databases by name | | `page` | number | No | If provided, specifies the page offset of returned results | | `perPage` | number | No | If provided, specifies the number of returned results | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------- | | `pagination` | json | Pagination metadata | | ↳ `currentPage` | number | current page | | ↳ `perPage` | number | per page | | ↳ `nextPage` | number | next page | | ↳ `totalCount` | number | total count | | ↳ `totalPages` | number | total pages | | `databases` | array | databases | | ↳ `id` | string | The ID of the database | | ↳ `name` | string | Name of the database | | ↳ `kind` | string | The kind of database | | ↳ `state` | string | State of the database | | ↳ `ready` | boolean | If the database is ready to be used | | ↳ `defaultBranch` | string | The default branch for the database | | ↳ `branchesCount` | number | The total number of database branches | | ↳ `deletionProtected` | boolean | Whether deletion protection is enabled for the database | | ↳ `requireApprovalForDeploy` | boolean | Whether an approval is required to deploy schema changes to this database | | ↳ `createdAt` | string | When the database was created | | ↳ `updatedAt` | string | When the database was last updated | | ↳ `htmlUrl` | string | The URL to see this database's branches in the web UI | ### PlanetScale Get Database [#planetscale-get-database] Get a database #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | Database name slug from `list_databases`. Example: `app-db`. | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------- | | `database` | json | Database details | | ↳ `id` | string | The ID of the database | | ↳ `name` | string | Name of the database | | ↳ `kind` | string | The kind of database | | ↳ `state` | string | State of the database | | ↳ `ready` | boolean | If the database is ready to be used | | ↳ `defaultBranch` | string | The default branch for the database | | ↳ `branchesCount` | number | The total number of database branches | | ↳ `deletionProtected` | boolean | Whether deletion protection is enabled for the database | | ↳ `requireApprovalForDeploy` | boolean | Whether an approval is required to deploy schema changes to this database | | ↳ `createdAt` | string | When the database was created | | ↳ `updatedAt` | string | When the database was last updated | | ↳ `htmlUrl` | string | The URL to see this database's branches in the web UI | ### PlanetScale List Branches [#planetscale-list-branches] List branches #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------ | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | Database name slug from `list_databases`. Example: `app-db`. | | `q` | string | No | Search branches by name | | `production` | boolean | No | Filter branches by production status | | `safeMigrations` | boolean | No | Filter branches by safe migrations (DDL protection) | | `order` | string | No | Order branches by created\_at time | | `page` | number | No | If provided, specifies the page offset of returned results | | `perPage` | number | No | If provided, specifies the number of returned results | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------- | | `pagination` | json | Pagination metadata | | ↳ `currentPage` | number | current page | | ↳ `perPage` | number | per page | | ↳ `nextPage` | number | next page | | ↳ `totalCount` | number | total count | | ↳ `totalPages` | number | total pages | | `branches` | array | branches | | ↳ `id` | string | The ID of the branch | | ↳ `name` | string | The name of the branch | | ↳ `kind` | string | The kind of branch | | ↳ `state` | string | The current state of the branch | | ↳ `ready` | boolean | Whether or not the branch is ready to serve queries | | ↳ `production` | boolean | Whether or not the branch is a production branch | | ↳ `safeMigrations` | boolean | Whether or not the branch has safe migrations enabled | | ↳ `deletionProtected` | boolean | Whether deletion protection is enabled for the branch | | ↳ `parentBranch` | string | The name of the parent branch from which the branch was created | | ↳ `createdAt` | string | When the branch was created | | ↳ `updatedAt` | string | When the branch was last updated | | ↳ `htmlUrl` | string | Planetscale app URL for the branch | ### PlanetScale Get Branch [#planetscale-get-branch] Get a branch #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | Database name slug from `list_databases`. Example: `app-db`. | | `branch` | string | Yes | Branch name from `list_branches`. Example: `main`. | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------- | | `branch` | json | Branch details | | ↳ `id` | string | The ID of the branch | | ↳ `name` | string | The name of the branch | | ↳ `kind` | string | The kind of branch | | ↳ `state` | string | The current state of the branch | | ↳ `ready` | boolean | Whether or not the branch is ready to serve queries | | ↳ `production` | boolean | Whether or not the branch is a production branch | | ↳ `safeMigrations` | boolean | Whether or not the branch has safe migrations enabled | | ↳ `deletionProtected` | boolean | Whether deletion protection is enabled for the branch | | ↳ `parentBranch` | string | The name of the parent branch from which the branch was created | | ↳ `createdAt` | string | When the branch was created | | ↳ `updatedAt` | string | When the branch was last updated | | ↳ `htmlUrl` | string | Planetscale app URL for the branch | ### PlanetScale Create Branch [#planetscale-create-branch] Create a branch #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the database the branch belongs to | | `name` | string | Yes | The name of the branch to create | | `deletionProtected` | boolean | No | Whether deletion protection is enabled for the branch | | `parentBranch` | string | No | The name of the parent branch. Defaults to the database's default branch if not provided. | | `backupId` | string | No | If provided, restores the backup's schema and data to the new branch. Must have `restore_production_branch_backup\(s\)` or `restore_backup\(s\)` access to do this. | | `region` | string | No | The region to create the branch in. If not provided, the branch will be created in the default region for its database. | | `restorePoint` | string | No | Restore from a point-in-time recovery timestamp (e.g. 2023-01-01T00:00:00Z). Available only for PostgreSQL databases. | | `replicas` | number | No | For PostgreSQL backup restores and point-in-time recovery, the number of additional replicas from 0 to 8, subject to the target cluster size. 0 creates a single-node branch. If omitted, the target cluster size's minimum is used. | | `seedData` | string | No | If provided, restores the last successful backup's schema and data to the new branch. Must have `restore_production_branch_backup\(s\)` or `restore_backup\(s\)` access to do this, in addition to Data Branching™ being enabled for the branch. | | `clusterSize` | string | No | The database cluster size. Required when backupId is provided, optional otherwise. Options: PS\_10, PS\_20, PS\_40, ..., PS\_2800 | | `majorVersion` | string | No | For PostgreSQL and Neki databases, the PostgreSQL major version to use for the branch. Defaults to the major version of the parent branch if it exists or the database's default branch major version. Ignored for branches restored from backups. | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------- | | `branch` | json | Branch details | | ↳ `id` | string | The ID of the branch | | ↳ `name` | string | The name of the branch | | ↳ `kind` | string | The kind of branch | | ↳ `state` | string | The current state of the branch | | ↳ `ready` | boolean | Whether or not the branch is ready to serve queries | | ↳ `production` | boolean | Whether or not the branch is a production branch | | ↳ `safeMigrations` | boolean | Whether or not the branch has safe migrations enabled | | ↳ `deletionProtected` | boolean | Whether deletion protection is enabled for the branch | | ↳ `parentBranch` | string | The name of the parent branch from which the branch was created | | ↳ `createdAt` | string | When the branch was created | | ↳ `updatedAt` | string | When the branch was last updated | | ↳ `htmlUrl` | string | Planetscale app URL for the branch | ### PlanetScale Delete Branch [#planetscale-delete-branch] Delete a branch #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the database the branch belongs to | | `branch` | string | Yes | The name of the branch | | `deleteDescendants` | boolean | No | If true, recursively delete all descendant branches along with this branch | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the branch was deleted | ### PlanetScale List Backups [#planetscale-list-backups] List backups #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the database the branch belongs to | | `branch` | string | Yes | The name of the branch | | `all` | boolean | No | Whether to include all backups, including deleted ones | | `state` | string | No | Filter backups by state | | `policy` | string | No | Filter backups by backup policy ID | | `from` | string | No | Filter backups started after this date (e.g. 2023-01-01T00:00:00Z) | | `to` | string | No | Filter backups started before this date (e.g. 2023-01-31T23:59:59Z) | | `runningAt` | string | No | Filter backups that are running during a specific time (e.g. 2023-01-01T00:00:00Z..2023-01-01T23:59:59Z) | | `production` | boolean | No | Filter backups by production branch | | `page` | number | No | If provided, specifies the page offset of returned results | | `perPage` | number | No | If provided, specifies the number of returned results | #### Output [#output-6] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------- | | `pagination` | json | Pagination metadata | | ↳ `currentPage` | number | current page | | ↳ `perPage` | number | per page | | ↳ `nextPage` | number | next page | | ↳ `totalCount` | number | total count | | ↳ `totalPages` | number | total pages | | `backups` | array | backups | | ↳ `id` | string | The ID of the backup | | ↳ `name` | string | The name of the backup | | ↳ `state` | string | The current state of the backup | | ↳ `size` | number | The size of the backup in bytes | | ↳ `estimatedStorageCost` | number | The estimated storage cost of the backup | | ↳ `protected` | boolean | Whether or not the backup is protected from deletion | | ↳ `createdAt` | string | When the backup was created | | ↳ `updatedAt` | string | When the backup was last updated | | ↳ `startedAt` | string | When the backup started | | ↳ `completedAt` | string | When the backup completed | | ↳ `expiresAt` | string | When the backup expires | ### PlanetScale Get Backup [#planetscale-get-backup] Get a backup #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `backupId` | string | Yes | The ID for the backup | | `database` | string | Yes | The name of the database the branch belongs to | | `branch` | string | Yes | The name of the branch | #### Output [#output-7] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------- | | `backup` | json | Backup details | | ↳ `id` | string | The ID of the backup | | ↳ `name` | string | The name of the backup | | ↳ `state` | string | The current state of the backup | | ↳ `size` | number | The size of the backup in bytes | | ↳ `estimatedStorageCost` | number | The estimated storage cost of the backup | | ↳ `protected` | boolean | Whether or not the backup is protected from deletion | | ↳ `createdAt` | string | When the backup was created | | ↳ `updatedAt` | string | When the backup was last updated | | ↳ `startedAt` | string | When the backup started | | ↳ `completedAt` | string | When the backup completed | | ↳ `expiresAt` | string | When the backup expires | ### PlanetScale Create Backup [#planetscale-create-backup] Create a backup #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the database the branch belongs to | | `branch` | string | Yes | The name of the branch | | `name` | string | No | Name for the backup | | `retentionUnit` | string | No | Unit for the retention period of the backup | | `retentionValue` | number | No | Value between `1` and `1000` for the retention period of the backup (i.e retention\_value `6` and retention\_unit `hour` means 6 hours) | | `emergency` | boolean | No | Whether the backup is an immediate backup that may affect database performance. Emergency backups are only supported for PostgreSQL databases. | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------- | | `backup` | json | Backup details | | ↳ `id` | string | The ID of the backup | | ↳ `name` | string | The name of the backup | | ↳ `state` | string | The current state of the backup | | ↳ `size` | number | The size of the backup in bytes | | ↳ `estimatedStorageCost` | number | The estimated storage cost of the backup | | ↳ `protected` | boolean | Whether or not the backup is protected from deletion | | ↳ `createdAt` | string | When the backup was created | | ↳ `updatedAt` | string | When the backup was last updated | | ↳ `startedAt` | string | When the backup started | | ↳ `completedAt` | string | When the backup completed | | ↳ `expiresAt` | string | When the backup expires | ### PlanetScale List Deploy Requests [#planetscale-list-deploy-requests] List deploy requests (Vitess only) #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the deploy request's database | | `state` | string | No | Filter by state of the deploy request (open, closed, deployed) | | `branch` | string | No | Filter by the name of the branch the deploy request is created from | | `intoBranch` | string | No | Filter by the name of the branch the deploy request will be merged into | | `deployedAt` | string | No | Filter deploy requests by the date they were deployed. (e.g. 2023-01-01T00:00:00Z..2023-01-31T23:59:59Z) | | `runningAt` | string | No | Filter deploy requests by the date they were running. (e.g. 2023-01-01T00:00:00Z..2023-01-31T23:59:59Z) | | `page` | number | No | If provided, specifies the page offset of returned results | | `perPage` | number | No | If provided, specifies the number of returned results | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `pagination` | json | Pagination metadata | | ↳ `currentPage` | number | current page | | ↳ `perPage` | number | per page | | ↳ `nextPage` | number | next page | | ↳ `totalCount` | number | total count | | ↳ `totalPages` | number | total pages | | `deployRequests` | array | deploy requests | | ↳ `id` | string | The ID of the deploy request | | ↳ `number` | number | The number of the deploy request | | ↳ `branch` | string | The name of the branch the deploy request was created from | | ↳ `intoBranch` | string | The name of the branch the deploy request will be merged into | | ↳ `state` | string | Whether the deploy request is open or closed | | ↳ `deploymentState` | string | The deployment state of the deploy request | | ↳ `approved` | boolean | Whether or not the deploy request is approved | | ↳ `numComments` | number | The number of comments on the deploy request | | ↳ `notes` | string | Notes on the deploy request | | ↳ `createdAt` | string | When the deploy request was created | | ↳ `updatedAt` | string | When the deploy request was last updated | | ↳ `closedAt` | string | When the deploy request was closed | | ↳ `deployedAt` | string | When the deploy request was deployed | | ↳ `htmlUrl` | string | The PlanetScale app address for the deploy request | ### PlanetScale Get Deploy Request [#planetscale-get-deploy-request] Get a deploy request (Vitess only) #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the deploy request's database | | `deployRequestNumber` | number | Yes | The number of the deploy request | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `deployRequest` | json | DeployRequest details | | ↳ `id` | string | The ID of the deploy request | | ↳ `number` | number | The number of the deploy request | | ↳ `branch` | string | The name of the branch the deploy request was created from | | ↳ `intoBranch` | string | The name of the branch the deploy request will be merged into | | ↳ `state` | string | Whether the deploy request is open or closed | | ↳ `deploymentState` | string | The deployment state of the deploy request | | ↳ `approved` | boolean | Whether or not the deploy request is approved | | ↳ `numComments` | number | The number of comments on the deploy request | | ↳ `notes` | string | Notes on the deploy request | | ↳ `createdAt` | string | When the deploy request was created | | ↳ `updatedAt` | string | When the deploy request was last updated | | ↳ `closedAt` | string | When the deploy request was closed | | ↳ `deployedAt` | string | When the deploy request was deployed | | ↳ `htmlUrl` | string | The PlanetScale app address for the deploy request | ### PlanetScale Create Deploy Request [#planetscale-create-deploy-request] Create a deploy request (Vitess only) #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the deploy request's database | | `branch` | string | Yes | The name of the branch the deploy request is created from | | `intoBranch` | string | Yes | The name of the branch the deploy request will be merged into | | `notes` | string | No | Notes about the deploy request | | `autoCutover` | boolean | No | Whether or not to enable auto\_cutover for the deploy request. When enabled, will auto cutover to the new schema as soon as it is ready. | | `autoDeleteBranch` | boolean | No | Whether or not to enable auto\_delete\_branch for the deploy request. When enabled, will delete the branch once the DR successfully completes. | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `deployRequest` | json | DeployRequest details | | ↳ `id` | string | The ID of the deploy request | | ↳ `number` | number | The number of the deploy request | | ↳ `branch` | string | The name of the branch the deploy request was created from | | ↳ `intoBranch` | string | The name of the branch the deploy request will be merged into | | ↳ `state` | string | Whether the deploy request is open or closed | | ↳ `deploymentState` | string | The deployment state of the deploy request | | ↳ `approved` | boolean | Whether or not the deploy request is approved | | ↳ `numComments` | number | The number of comments on the deploy request | | ↳ `notes` | string | Notes on the deploy request | | ↳ `createdAt` | string | When the deploy request was created | | ↳ `updatedAt` | string | When the deploy request was last updated | | ↳ `closedAt` | string | When the deploy request was closed | | ↳ `deployedAt` | string | When the deploy request was deployed | | ↳ `htmlUrl` | string | The PlanetScale app address for the deploy request | ### PlanetScale Review Deploy Request [#planetscale-review-deploy-request] Review a deploy request (Vitess only) #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the database the deploy request belongs to | | `deployRequestNumber` | number | Yes | The number of the deploy request | | `state` | string | No | Whether the review is a comment or approval. Service tokens must have corresponding access (either `approve_deploy_request` or `review_deploy_request`) | | `body` | string | No | Deploy request review comments | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------- | | `review` | json | Review details | | ↳ `id` | string | The ID of the review | | ↳ `state` | string | Whether the review is a comment or approval | | ↳ `body` | string | The text body of the review | | ↳ `createdAt` | string | When the review was created | | ↳ `updatedAt` | string | When the review was last updated | ### PlanetScale Queue Deploy Request [#planetscale-queue-deploy-request] Queue a deploy request (Vitess only) #### Input [#input-13] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the deploy request's database | | `deployRequestNumber` | number | Yes | The number of the deploy request | | `instantDdl` | boolean | No | Whether or not to deploy the request with instant DDL. Defaults to false. | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `deployRequest` | json | DeployRequest details | | ↳ `id` | string | The ID of the deploy request | | ↳ `number` | number | The number of the deploy request | | ↳ `branch` | string | The name of the branch the deploy request was created from | | ↳ `intoBranch` | string | The name of the branch the deploy request will be merged into | | ↳ `state` | string | Whether the deploy request is open or closed | | ↳ `deploymentState` | string | The deployment state of the deploy request | | ↳ `approved` | boolean | Whether or not the deploy request is approved | | ↳ `numComments` | number | The number of comments on the deploy request | | ↳ `notes` | string | Notes on the deploy request | | ↳ `createdAt` | string | When the deploy request was created | | ↳ `updatedAt` | string | When the deploy request was last updated | | ↳ `closedAt` | string | When the deploy request was closed | | ↳ `deployedAt` | string | When the deploy request was deployed | | ↳ `htmlUrl` | string | The PlanetScale app address for the deploy request | ### PlanetScale Close Deploy Request [#planetscale-close-deploy-request] Close a deploy request (Vitess only) #### Input [#input-14] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------- | | `serviceTokenId` | string | Yes | PlanetScale service token ID | | `serviceToken` | string | Yes | PlanetScale service token secret | | `organization` | string | Yes | PlanetScale organization slug | | `database` | string | Yes | The name of the deploy request's database | | `deployRequestNumber` | number | Yes | The number of the deploy request | #### Output [#output-14] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------- | | `deployRequest` | json | DeployRequest details | | ↳ `id` | string | The ID of the deploy request | | ↳ `number` | number | The number of the deploy request | | ↳ `branch` | string | The name of the branch the deploy request was created from | | ↳ `intoBranch` | string | The name of the branch the deploy request will be merged into | | ↳ `state` | string | Whether the deploy request is open or closed | | ↳ `deploymentState` | string | The deployment state of the deploy request | | ↳ `approved` | boolean | Whether or not the deploy request is approved | | ↳ `numComments` | number | The number of comments on the deploy request | | ↳ `notes` | string | Notes on the deploy request | | ↳ `createdAt` | string | When the deploy request was created | | ↳ `updatedAt` | string | When the deploy request was last updated | | ↳ `closedAt` | string | When the deploy request was closed | | ↳ `deployedAt` | string | When the deploy request was deployed | | ↳ `htmlUrl` | string | The PlanetScale app address for the deploy request | --- # Plivo (/integrations/plivo) ## Usage Instructions [#usage-instructions] Integrate Plivo voice and messaging into the workflow. Call a lead and hand the call to your own Plivo XML app or an AI voice agent such as Bolna or Vapi, hang up live calls, send SMS, MMS, and WhatsApp template messages, check call and message records, search for and buy phone numbers, and look up a number’s carrier and line type. Can also run workflows when a call ends, a message status changes, or a Plivo number receives a message. Requires a Plivo Auth ID and Auth Token. ## Actions [#actions] ### Plivo Make Call [#plivo-make-call] Place an outbound phone call from a Plivo number. When the call is answered, Plivo fetches the answer URL, which must return Plivo XML telling it what to do. The answer URL can point to your own Plivo XML app, or to an AI voice platform such as Bolna or Vapi that returns the XML that connects the call to its voice agent. Returns a request UUID; the call UUID arrives in the hangup callback. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `from` | string | Yes | Caller ID: a Plivo number on your account, in E.164 format (e.g. 14157654321) | | `to` | string | Yes | Number or SIP URI to call, in E.164 format. Separate several destinations with "\<" (max 1000). | | `answerUrl` | string | Yes | URL Plivo requests when the call is answered. It must return valid Plivo XML, either from your own Plivo XML app or from an AI voice platform such as Bolna or Vapi. | | `answerMethod` | string | No | HTTP method for the answer URL: GET or POST (default POST) | | `ringUrl` | string | No | URL Plivo notifies when the call starts ringing | | `ringMethod` | string | No | HTTP method for the ring URL: GET or POST (default POST) | | `hangupUrl` | string | No | URL Plivo notifies when the call ends, such as a Plivo Call Status trigger URL | | `hangupMethod` | string | No | HTTP method for the hangup URL: GET or POST (default POST) | | `fallbackUrl` | string | No | URL Plivo uses if the answer URL fails after 3 retries or a 60s timeout | | `fallbackMethod` | string | No | HTTP method for the fallback URL: GET or POST (default POST) | | `callerName` | string | No | Caller name to display, up to 50 characters | | `sendDigits` | string | No | DTMF digits to send once connected. Use w for a 0.5s wait and W for 1s. | | `timeLimit` | number | No | Maximum call length in seconds (default 14400) | | `hangupOnRing` | number | No | Seconds after ringing starts to hang up | | `ringTimeout` | number | No | Seconds to ring the destination before giving up | | `machineDetection` | string | No | Answering machine detection: "true" to detect and report, or "hangup" to hang up on a machine | | `machineDetectionTime` | number | No | Milliseconds to spend detecting a machine (2000 to 10000, default 5000) | | `machineDetectionUrl` | string | No | URL notified with the asynchronous machine detection result | | `machineDetectionMethod` | string | No | HTTP method for the machine detection URL: GET or POST (default POST) | | `sipHeaders` | string | No | Custom SIP headers as comma-separated key=value pairs, e.g. leadId=42. Sent with an X-PH- prefix. | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------------------------------------- | | `message` | string | Plivo status text, "call fired" on success | | `requestUuid` | string | Request identifier. The hangup callback carries it as RequestUUID next to the CallUUID. | | `apiId` | string | Plivo API request ID | ### Plivo Get Call [#plivo-get-call] Get the call detail record of a completed Plivo call: numbers, times, duration, cost, and why it ended. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `callUuid` | string | Yes | UUID of the call (CallUUID from a callback, or call\_uuid from List Calls) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------------------- | | `callUuid` | string | Unique call identifier (call\_uuid) | | `fromNumber` | string | Caller ID used for the call | | `toNumber` | string | Number or SIP URI that was called | | `callDirection` | string | inbound or outbound | | `answerTime` | string | When the call was answered | | `endTime` | string | When the call ended | | `initiationTime` | string | When the call was started | | `callDuration` | number | Call duration in seconds | | `billDuration` | number | Actual call duration in seconds | | `billedDuration` | number | Duration rounded to the billing increment, in seconds | | `totalAmount` | string | Amount charged for the call | | `totalRate` | string | Per-minute rate | | `parentCallUuid` | string | UUID of the A-leg | | `hangupCauseName` | string | Why the call ended, e.g. "Normal Hangup" or "Busy Line". Use it for the outcome. | | `hangupCauseCode` | number | Numeric hangup cause | | `hangupSource` | string | Who hung up: Caller, Callee, Plivo, API Request, Answer XML, Error, or Unknown | | `stirVerification` | string | STIR/SHAKEN status: Verified, Not Verified, or Not Applicable | | `resourceUri` | string | API path of the call record | ### Plivo List Calls [#plivo-list-calls] List completed Plivo calls with optional filters. Without an end time filter Plivo searches the last 7 days; the range can be at most 30 days within the last 90 days. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `fromNumber` | string | No | Only calls made from this number | | `toNumber` | string | No | Only calls made to this number | | `callDirection` | string | No | inbound or outbound | | `billDurationGte` | number | No | Only calls with a billed duration of at least this many seconds | | `billDurationLte` | number | No | Only calls with a billed duration of at most this many seconds | | `endTimeGte` | string | No | Only calls that ended at or after this time (YYYY-MM-DD HH:MM\[:ss]) | | `endTimeLte` | string | No | Only calls that ended at or before this time (YYYY-MM-DD HH:MM\[:ss]) | | `hangupCauseCode` | number | No | Only calls with this hangup cause code | | `hangupSource` | string | No | Only calls hung up by this source, e.g. customer or carrier | | `stirVerification` | string | No | STIR/SHAKEN status: Verified, Not Verified, or Not Applicable | | `limit` | number | No | Results per page, 1 to 20 (default 20) | | `offset` | number | No | Number of results to skip, for paging | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------------- | | `meta` | json | Pagination: limit, offset, totalCount, next, and previous | | ↳ `limit` | number | Results per page | | ↳ `offset` | number | Results skipped | | ↳ `totalCount` | number | Total matching records | | ↳ `next` | string | API path of the next page | | ↳ `previous` | string | API path of the previous page | | `calls` | array | Call detail records | | ↳ `callUuid` | string | Unique call identifier (call\_uuid) | | ↳ `fromNumber` | string | Caller ID used for the call | | ↳ `toNumber` | string | Number or SIP URI that was called | | ↳ `callDirection` | string | inbound or outbound | | ↳ `answerTime` | string | When the call was answered | | ↳ `endTime` | string | When the call ended | | ↳ `initiationTime` | string | When the call was started | | ↳ `callDuration` | number | Call duration in seconds | | ↳ `billDuration` | number | Actual call duration in seconds | | ↳ `billedDuration` | number | Duration rounded to the billing increment, in seconds | | ↳ `totalAmount` | string | Amount charged for the call | | ↳ `totalRate` | string | Per-minute rate | | ↳ `parentCallUuid` | string | UUID of the A-leg | | ↳ `hangupCauseName` | string | Why the call ended, e.g. "Normal Hangup" or "Busy Line". Use it for the outcome. | | ↳ `hangupCauseCode` | number | Numeric hangup cause | | ↳ `hangupSource` | string | Who hung up: Caller, Callee, Plivo, API Request, Answer XML, Error, or Unknown | | ↳ `stirVerification` | string | STIR/SHAKEN status: Verified, Not Verified, or Not Applicable | | ↳ `resourceUri` | string | API path of the call record | ### Plivo Hang Up Call [#plivo-hang-up-call] Hang up one ongoing Plivo call by its call UUID. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `callUuid` | string | Yes | UUID of the ongoing call to hang up | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------------- | | `callUuid` | string | UUID of the call that was hung up | | `hungUp` | boolean | True when Plivo accepted the hangup (HTTP 204) | ### Plivo Send Message [#plivo-send-message] Send an SMS or MMS (or a free-form WhatsApp message in an open conversation) through Plivo. Returns one message UUID per recipient; delivery is reported later to the status URL. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `src` | string | No | Sender: a Plivo number, short code, or alphanumeric sender ID. Required unless a Powerpack UUID is set. | | `dst` | string | Yes | Recipient in E.164 format, e.g. 14156667777. Separate several recipients with "\<". | | `text` | string | No | Message text. SMS allows up to 1600 GSM or 737 Unicode characters; WhatsApp up to 4096. | | `type` | string | No | sms (default), mms, or whatsapp | | `mediaUrls` | string | No | Comma-separated media URLs: up to 10 for MMS (under 5 MB total), or one for WhatsApp | | `url` | string | No | URL Plivo sends delivery status updates to, such as a Plivo Message Status trigger URL | | `method` | string | No | HTTP method for the status URL: GET or POST (default POST) | | `messageExpiry` | number | No | Seconds the message may wait in the queue before it expires (5 to 10799) | | `log` | string | No | What Plivo logs: "true" (default), "false", "content\_only", or "number\_only" (for GDPR redaction) | | `trackable` | boolean | No | Mark the message as trackable, e.g. a 2FA code, for conversion feedback | | `powerpackUuid` | string | No | Powerpack UUID to send from a number pool instead of a single sender | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------- | | `message` | string | Plivo status text, e.g. "message(s) queued" | | `messageUuids` | array | One message UUID per recipient. Use it with Get Message. | | `apiId` | string | Plivo API request ID | ### Plivo Send WhatsApp Template [#plivo-send-whatsapp-template] Send a Meta-approved WhatsApp template message through Plivo, the only way a business can start a WhatsApp conversation. The sender must be a WhatsApp Business number connected in Plivo. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `src` | string | Yes | Your WhatsApp Business number registered with Plivo, in E.164 format | | `dst` | string | Yes | Recipient WhatsApp number in E.164 format | | `templateName` | string | Yes | Name of the approved template, e.g. order\_update | | `language` | string | Yes | Template language code, e.g. en\_US or hi | | `components` | json | No | JSON array of template components with their dynamic values, e.g. \[\{"type":"body","parameters":\[\{"type":"text","text":"Asha"}]}]. Header parameters can be text or media; buttons take sub\_type, index, and a payload or text parameter. | | `url` | string | No | URL Plivo sends delivery status updates to, such as a Plivo Message Status trigger URL | | `method` | string | No | HTTP method for the status URL: GET or POST (default POST) | | `messageExpiry` | number | No | Seconds the message may wait in the queue before it expires (5 to 10799) | | `log` | string | No | What Plivo logs: "true" (default), "false", "content\_only", or "number\_only" (for GDPR redaction) | | `trackable` | boolean | No | Mark the message as trackable, e.g. a 2FA code, for conversion feedback | | `powerpackUuid` | string | No | Powerpack UUID to send from a number pool instead of a single sender | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------------------- | | `message` | string | Plivo status text, e.g. "message(s) queued" | | `messageUuids` | array | One message UUID per recipient. Use it with Get Message. | | `apiId` | string | Plivo API request ID | ### Plivo Get Message [#plivo-get-message] Get the delivery state, cost, and error code of one Plivo SMS, MMS, or WhatsApp message. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `messageUuid` | string | Yes | UUID of the message, as returned by Send Message | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `messageUuid` | string | Unique message identifier (message\_uuid) | | `messageTime` | string | When the message was sent or received | | `messageDirection` | string | inbound or outbound | | `messageState` | string | Outbound: queued, sent, failed, delivered, undelivered, or read (WhatsApp). Inbound: received, delivered, or undelivered. | | `messageType` | string | sms, mms, or whatsapp | | `fromNumber` | string | Sender | | `toNumber` | string | Recipient | | `units` | number | Number of units the message used | | `totalRate` | string | Charge per unit | | `totalAmount` | string | Total charge | | `errorCode` | string | Plivo error code; "000" means delivered | | `conversationId` | string | WhatsApp conversation ID | | `conversationOrigin` | string | WhatsApp conversation category: utility, authentication, marketing, or service | ### Plivo List Messages [#plivo-list-messages] List Plivo SMS, MMS, and WhatsApp message records with optional filters for direction, state, type, and time. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `messageDirection` | string | No | inbound or outbound | | `messageState` | string | No | queued, sent, delivered, undelivered, failed, or received | | `messageType` | string | No | sms, mms, or whatsapp | | `messageTimeGt` | string | No | Only messages after this time (yyyy-MM-dd HH:mm:ss) | | `messageTimeLt` | string | No | Only messages before this time (yyyy-MM-dd HH:mm:ss) | | `errorCode` | number | No | Only messages with this Plivo error code | | `subaccount` | string | No | Only messages of this subaccount Auth ID | | `powerpackId` | string | No | Only messages sent through this Powerpack | | `limit` | number | No | Results per page, 1 to 20 (default 20) | | `offset` | number | No | Number of results to skip, for paging | #### Output [#output-7] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `meta` | json | Pagination: limit, offset, totalCount, next, and previous | | ↳ `limit` | number | Results per page | | ↳ `offset` | number | Results skipped | | ↳ `totalCount` | number | Total matching records | | ↳ `next` | string | API path of the next page | | ↳ `previous` | string | API path of the previous page | | `messages` | array | Message detail records | | ↳ `messageUuid` | string | Unique message identifier (message\_uuid) | | ↳ `messageTime` | string | When the message was sent or received | | ↳ `messageDirection` | string | inbound or outbound | | ↳ `messageState` | string | Outbound: queued, sent, failed, delivered, undelivered, or read (WhatsApp). Inbound: received, delivered, or undelivered. | | ↳ `messageType` | string | sms, mms, or whatsapp | | ↳ `fromNumber` | string | Sender | | ↳ `toNumber` | string | Recipient | | ↳ `units` | number | Number of units the message used | | ↳ `totalRate` | string | Charge per unit | | ↳ `totalAmount` | string | Total charge | | ↳ `errorCode` | string | Plivo error code; "000" means delivered | | ↳ `conversationId` | string | WhatsApp conversation ID | | ↳ `conversationOrigin` | string | WhatsApp conversation category: utility, authentication, marketing, or service | ### Plivo List Numbers [#plivo-list-numbers] List the phone numbers rented on your Plivo account, with their type, capabilities, monthly rate, and renewal date. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `type` | string | No | local, mobile, fixed, national, or tollfree | | `numberStartswith` | string | No | Only numbers starting with this prefix, e.g. 91 or 1415 | | `services` | string | No | Only numbers with these services: voice, sms, mms, or a combination like voice,sms | | `alias` | string | No | Only the number with this exact alias | | `subaccount` | string | No | Only numbers of this subaccount Auth ID | | `limit` | number | No | Results per page, 1 to 20 (default 20) | | `offset` | number | No | Number of results to skip, for paging | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `meta` | json | Pagination: limit, offset, totalCount, next, and previous | | ↳ `limit` | number | Results per page | | ↳ `offset` | number | Results skipped | | ↳ `totalCount` | number | Total matching records | | ↳ `next` | string | API path of the next page | | ↳ `previous` | string | API path of the previous page | | `numbers` | array | Rented phone numbers | | ↳ `number` | string | The phone number | | ↳ `alias` | string | Alias | | ↳ `addedOn` | string | Date rented (YYYY-MM-DD) | | ↳ `application` | string | Linked application path | | ↳ `carrier` | string | Plivo or the incoming carrier | | ↳ `region` | string | City and country | | ↳ `numberType` | string | local, fixed, tollfree, mobile, or national | | ↳ `monthlyRentalRate` | string | Monthly fee in USD | | ↳ `renewalDate` | string | Next billing date | | ↳ `smsEnabled` | boolean | Can receive SMS | | ↳ `mmsEnabled` | boolean | Can receive MMS | | ↳ `voiceEnabled` | boolean | Can receive calls | | ↳ `resourceUri` | string | API path of the number | ### Plivo Search Numbers [#plivo-search-numbers] Search Plivo's inventory for phone numbers available to buy in a country, with their setup fee, monthly rental, capabilities, and any verification needed. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `countryIso` | string | Yes | Two-letter ISO country code, e.g. US or IN | | `type` | string | No | tollfree, local, mobile, national, or fixed | | `pattern` | string | No | Digits the number should contain after the country code, e.g. 415 | | `services` | string | No | Required capabilities: voice, sms, mms, voice,sms, or voice,sms,mms | | `city` | string | No | City name, for local numbers only | | `region` | string | No | Region name, e.g. Frankfurt, for fixed numbers only | | `npanxx` | number | No | Six-digit NPA-NXX prefix (US and Canada only) | | `localCallingArea` | boolean | No | Expand an NPA-NXX search to its local calling area | | `lata` | number | No | LATA code (US and Canada only) | | `rateCenter` | string | No | Rate center (US and Canada only) | | `limit` | number | No | Results per page, 1 to 20 (default 20) | | `offset` | number | No | Number of results to skip, for paging | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------------- | | `meta` | json | Pagination: limit, offset, totalCount, next, and previous | | ↳ `limit` | number | Results per page | | ↳ `offset` | number | Results skipped | | ↳ `totalCount` | number | Total matching records | | ↳ `next` | string | API path of the next page | | ↳ `previous` | string | API path of the previous page | | `numbers` | array | Numbers available to buy | | ↳ `number` | string | Number available to buy | | ↳ `prefix` | string | Area code | | ↳ `city` | string | City (null for national numbers) | | ↳ `country` | string | Country | | ↳ `region` | string | City and country | | ↳ `type` | string | fixed, mobile, or tollfree | | ↳ `subType` | string | fixed, mobile, tollfree, national, or local | | ↳ `setupRate` | string | One-time setup fee in USD | | ↳ `monthlyRentalRate` | string | Monthly rental in USD | | ↳ `smsEnabled` | boolean | Can receive SMS | | ↳ `mmsEnabled` | boolean | Can receive MMS | | ↳ `voiceEnabled` | boolean | Can receive calls | | ↳ `restriction` | string | Verification needed: city-address, country-address, or terms-and-conditions | | ↳ `restrictionText` | string | What verification is needed | | ↳ `resourceUri` | string | API path of the number | ### Plivo Buy Number [#plivo-buy-number] Buy (rent) a phone number found with Search Numbers and add it to your Plivo account. This charges any setup fee now and a recurring monthly rental fee until the number is released. Numbers that need verification, such as Indian numbers, stay pending until a compliance application is accepted. Must be called with main-account credentials. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `number` | string | Yes | The number to buy, exactly as returned by Search Numbers, e.g. 14155559186 | | `appId` | string | No | Plivo application to attach for incoming calls and messages | | `cnamLookup` | string | No | Caller name lookup on inbound calls: enabled or disabled (US numbers only) | | `complianceApplicationId` | string | No | Accepted compliance application to attach, needed for numbers such as Indian numbers. If empty, Plivo picks the latest matching accepted application. | | `subaccount` | string | No | Subaccount Auth ID to assign the number to | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------------------------- | | `message` | string | Plivo status text, "created" on success | | `status` | string | Order status, e.g. fulfilled, or pending while verification is reviewed | | `numbers` | array | Each number in the order with its status | | ↳ `number` | string | Phone number | | ↳ `status` | string | Purchase status, e.g. Success | | `apiId` | string | Plivo API request ID | ### Plivo Number Lookup [#plivo-number-lookup] Look up a phone number with the Plivo Lookup API: validity and formats, country, carrier name, line type (mobile, fixed, voip, toll-free), and whether it was ported (US and Canada). Plivo bills each lookup. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `authId` | string | Yes | Plivo Auth ID (the Basic auth username), from the Plivo console overview page | | `authToken` | string | Yes | Plivo Auth Token (the Basic auth password), from the Plivo console overview page | | `phoneNumber` | string | Yes | Phone number in E.164 format, e.g. +14155551234 | #### Output [#output-11] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------ | | `phoneNumber` | string | The number in E.164 format | | `country` | json | Country of the number | | ↳ `name` | string | Country name | | ↳ `iso2` | string | Two-letter ISO code | | ↳ `iso3` | string | Three-letter ISO code | | `format` | json | The number in each standard format | | ↳ `e164` | string | E.164 format | | ↳ `national` | string | National format | | ↳ `international` | string | International format | | ↳ `rfc3966` | string | RFC 3966 tel: URI | | `carrier` | json | Carrier details | | ↳ `mobileCountryCode` | string | MCC (empty for fixed numbers) | | ↳ `mobileNetworkCode` | string | MNC (empty for fixed numbers) | | ↳ `name` | string | Carrier name | | ↳ `type` | string | fixed, mobile, voip, toll-free, or unknown | | ↳ `ported` | string | yes, no, or unknown (US and Canada only) | | `apiId` | string | Plivo API request ID | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Plivo Call Status [#plivo-call-status] Trigger workflow when a Plivo call ends, from the hangup URL callback #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `signingAuthToken` | string | Yes | The Auth Token of the Plivo account or subaccount that owns the number or call. Used only to verify that each request was signed by Plivo. | #### Output [#output-12] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------------------------- | | `callUuid` | string | Unique call identifier (CallUUID) | | `requestUuid` | string | Request UUID returned when the call was placed (RequestUUID) | | `from` | string | Caller ID of the call | | `to` | string | Number that was called | | `direction` | string | inbound or outbound | | `event` | string | Callback event, e.g. Hangup (or Ring on a ring URL) | | `callStatus` | string | completed, busy, failed, timeout, no-answer, ringing, or in-progress | | `hangupCause` | string | Why the call ended, e.g. NORMAL\_CLEARING | | `startTime` | string | When the call was started | | `answerTime` | string | When the call was answered | | `endTime` | string | When the call ended | | `duration` | number | Call duration in seconds | | `billDuration` | number | Billed duration in seconds | | `totalCost` | string | Total cost of the call | | `aLegUuid` | string | UUID of the first call leg (ALegUUID) | | `carrierFailoverTriggered` | boolean | True only when Plivo attempted an automatic carrier failover | | `raw` | json | Every field Plivo sent | *** ### Plivo Inbound Message [#plivo-inbound-message] Trigger workflow when a Plivo number receives an SMS, MMS, or WhatsApp message #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `signingAuthToken` | string | Yes | The Auth Token of the Plivo account or subaccount that owns the number or call. Used only to verify that each request was signed by Plivo. | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------- | | `messageUuid` | string | Unique message identifier (MessageUUID) | | `from` | string | Sender's phone number | | `to` | string | Your Plivo number that received the message | | `text` | string | Message text | | `type` | string | sms, mms, or whatsapp | | `mediaUrls` | array | Media URLs of an MMS, from Media0 to MediaN | | `raw` | json | Every field Plivo sent | *** ### Plivo Message Status [#plivo-message-status] Trigger workflow when Plivo reports a delivery status for an SMS, MMS, or WhatsApp message #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `signingAuthToken` | string | Yes | The Auth Token of the Plivo account or subaccount that owns the number or call. Used only to verify that each request was signed by Plivo. | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------------------- | | `messageUuid` | string | Unique message identifier (MessageUUID) | | `status` | string | queued, sent, delivered, undelivered, failed, or read (WhatsApp) | | `from` | string | Sender ID of the message | | `to` | string | Recipient number | | `errorCode` | string | Plivo error code when delivery failed | | `units` | number | Number of message units | | `totalRate` | string | Charge per unit | | `totalAmount` | string | Total charge | | `mcc` | string | Mobile Country Code of the recipient | | `mnc` | string | Mobile Network Code of the recipient | | `raw` | json | Every field Plivo sent | --- # Polymarket (/integrations/polymarket) {/* MANUAL-CONTENT-START:intro */} Use [Polymarket](https://polymarket.com) in Agent Serve to retrieve prediction-market data: markets, events, orderbooks, prices, price history, positions, trades, and related statistics. These read operations support research, reporting, and monitoring workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Polymarket prediction markets into the workflow. Can get markets, market, events, event, tags, series, orderbook, price, midpoint, price history, last trade price, spread, tick size, positions, trades, activity, leaderboard, holders, and search. ## Actions [#actions] ### Get Markets from Polymarket [#get-markets-from-polymarket] Retrieve a list of prediction markets from Polymarket with optional filtering #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------- | | `closed` | string | No | Filter by closed status (true/false). Use false for open markets only. | | `order` | string | No | Sort field (e.g., volumeNum, liquidityNum, startDate, endDate, createdAt) | | `ascending` | string | No | Sort direction (true for ascending, false for descending) | | `tagId` | string | No | Filter by tag ID | | `limit` | string | No | Number of results per page (e.g., "25"). Max: 50. | | `offset` | string | No | Number of results to skip for pagination (e.g., "50"). | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | -------------------------- | | `markets` | array | Array of market objects | | ↳ `id` | string | Market ID | | ↳ `question` | string | Market question | | ↳ `conditionId` | string | Condition ID | | ↳ `slug` | string | Market slug | | ↳ `endDate` | string | End date | | ↳ `image` | string | Market image URL | | ↳ `outcomes` | string | Outcomes JSON string | | ↳ `outcomePrices` | string | Outcome prices JSON string | | ↳ `volume` | string | Total volume | | ↳ `liquidity` | string | Total liquidity | | ↳ `active` | boolean | Whether market is active | | ↳ `closed` | boolean | Whether market is closed | | ↳ `volumeNum` | number | Volume as number | | ↳ `liquidityNum` | number | Liquidity as number | | ↳ `clobTokenIds` | array | CLOB token IDs | ### Get Market from Polymarket [#get-market-from-polymarket] Retrieve details of a specific prediction market by ID or slug #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `marketId` | string | No | The numeric market ID (e.g., "253591"). Required if slug is not provided. Not the condition ID. | | `slug` | string | No | The market slug (e.g., "will-trump-win"). URL-friendly identifier. Required if marketId is not provided. | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | -------------------------- | | `market` | object | Market object with details | | ↳ `id` | string | Market ID | | ↳ `question` | string | Market question | | ↳ `conditionId` | string | Condition ID | | ↳ `slug` | string | Market slug | | ↳ `resolutionSource` | string | Resolution source | | ↳ `endDate` | string | End date | | ↳ `startDate` | string | Start date | | ↳ `image` | string | Market image URL | | ↳ `icon` | string | Market icon URL | | ↳ `description` | string | Market description | | ↳ `outcomes` | string | Outcomes JSON string | | ↳ `outcomePrices` | string | Outcome prices JSON string | | ↳ `volume` | string | Total volume | | ↳ `liquidity` | string | Total liquidity | | ↳ `active` | boolean | Whether market is active | | ↳ `closed` | boolean | Whether market is closed | | ↳ `archived` | boolean | Whether market is archived | | ↳ `volumeNum` | number | Volume as number | | ↳ `liquidityNum` | number | Liquidity as number | | ↳ `clobTokenIds` | array | CLOB token IDs | | ↳ `acceptingOrders` | boolean | Whether accepting orders | | ↳ `negRisk` | boolean | Whether negative risk | ### Get Events from Polymarket [#get-events-from-polymarket] Retrieve a list of events from Polymarket with optional filtering #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------- | | `closed` | string | No | Filter by closed status (true/false). Use false for open events only. | | `order` | string | No | Sort field (e.g., volume, liquidity, startDate, endDate, createdAt) | | `ascending` | string | No | Sort direction (true for ascending, false for descending) | | `tagId` | string | No | Filter by tag ID | | `limit` | string | No | Number of results per page (e.g., "25"). Max: 50. | | `offset` | string | No | Number of results to skip for pagination (e.g., "50"). | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------- | ------------------------------ | | `events` | array | Array of event objects | | ↳ `id` | string | Event ID | | ↳ `ticker` | string | Event ticker | | ↳ `slug` | string | Event slug | | ↳ `title` | string | Event title | | ↳ `description` | string | Event description | | ↳ `startDate` | string | Start date | | ↳ `endDate` | string | End date | | ↳ `image` | string | Event image URL | | ↳ `icon` | string | Event icon URL | | ↳ `active` | boolean | Whether event is active | | ↳ `closed` | boolean | Whether event is closed | | ↳ `archived` | boolean | Whether event is archived | | ↳ `liquidity` | number | Total liquidity | | ↳ `volume` | number | Total volume | | ↳ `markets` | array | Array of markets in this event | ### Get Event from Polymarket [#get-event-from-polymarket] Retrieve details of a specific event by ID or slug #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `eventId` | string | No | The numeric event ID (e.g., "12345"). Required if slug is not provided. | | `slug` | string | No | The event slug (e.g., "2024-presidential-election"). URL-friendly identifier. Required if eventId is not provided. | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------ | | `event` | object | Event object with details | | ↳ `id` | string | Event ID | | ↳ `ticker` | string | Event ticker | | ↳ `slug` | string | Event slug | | ↳ `title` | string | Event title | | ↳ `description` | string | Event description | | ↳ `startDate` | string | Start date | | ↳ `creationDate` | string | Creation date | | ↳ `endDate` | string | End date | | ↳ `image` | string | Event image URL | | ↳ `icon` | string | Event icon URL | | ↳ `active` | boolean | Whether event is active | | ↳ `closed` | boolean | Whether event is closed | | ↳ `archived` | boolean | Whether event is archived | | ↳ `liquidity` | number | Total liquidity | | ↳ `volume` | number | Total volume | | ↳ `openInterest` | number | Open interest | | ↳ `commentCount` | number | Comment count | | ↳ `markets` | array | Array of markets in this event | ### Get Tags from Polymarket [#get-tags-from-polymarket] Retrieve available tags for filtering markets from Polymarket #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `limit` | string | No | Number of results per page (e.g., "25"). Max: 50. | | `offset` | string | No | Number of results to skip for pagination (e.g., "50"). | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------ | --------------------- | | `tags` | array | Array of tag objects | | ↳ `id` | string | Tag ID | | ↳ `label` | string | Tag label | | ↳ `slug` | string | Tag slug | | ↳ `createdAt` | string | Creation timestamp | | ↳ `updatedAt` | string | Last update timestamp | ### Search Polymarket [#search-polymarket] Search for markets, events, and profiles on Polymarket #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------- | | `query` | string | Yes | Search query term (e.g., "presidential election", "bitcoin price"). | | `limit` | string | No | Maximum number of results per type (events, tags, profiles). Default: 50. | | `page` | string | No | Page number for pagination (e.g., "2"). 1-indexed. | | `cache` | string | No | Enable caching (true/false) | | `eventsStatus` | string | No | Filter events by status | | `eventsTag` | string | No | Filter by event tags (comma-separated) | | `sort` | string | No | Sort field | | `ascending` | string | No | Sort direction (true for ascending, false for descending) | | `searchTags` | string | No | Include tags in search results (true/false) | | `searchProfiles` | string | No | Include profiles in search results (true/false) | | `recurrence` | string | No | Filter by recurrence type | | `excludeTagId` | string | No | Exclude events with these tag IDs (comma-separated) | | `keepClosedMarkets` | string | No | Include closed markets in results (0 or 1) | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------------------------------- | | `results` | object | Search results containing events, tags, and profiles arrays | | ↳ `events` | array | Array of matching event objects (markets nested) | | ↳ `tags` | array | Array of matching tag objects | | ↳ `profiles` | array | Array of matching profile objects | ### Get Series from Polymarket [#get-series-from-polymarket] Retrieve series (related market groups) from Polymarket #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `limit` | string | No | Number of results per page (e.g., "25"). Max: 50. | | `offset` | string | No | Number of results to skip for pagination (e.g., "50"). | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------- | -------------------------- | | `series` | array | Array of series objects | | ↳ `id` | string | Series ID | | ↳ `ticker` | string | Series ticker | | ↳ `slug` | string | Series slug | | ↳ `title` | string | Series title | | ↳ `seriesType` | string | Series type | | ↳ `recurrence` | string | Recurrence pattern | | ↳ `image` | string | Series image URL | | ↳ `icon` | string | Series icon URL | | ↳ `active` | boolean | Whether series is active | | ↳ `closed` | boolean | Whether series is closed | | ↳ `archived` | boolean | Whether series is archived | | ↳ `featured` | boolean | Whether series is featured | | ↳ `volume` | number | Total volume | | ↳ `liquidity` | number | Total liquidity | | ↳ `eventCount` | number | Number of events in series | ### Get Series by ID from Polymarket [#get-series-by-id-from-polymarket] Retrieve a specific series (related market group) by ID from Polymarket #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------- | | `seriesId` | string | Yes | The numeric series ID (e.g., "12345"). | #### Output [#output-7] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------ | | `series` | object | Series object with details | | ↳ `id` | string | Series ID | | ↳ `ticker` | string | Series ticker | | ↳ `slug` | string | Series slug | | ↳ `title` | string | Series title | | ↳ `seriesType` | string | Series type | | ↳ `recurrence` | string | Recurrence pattern | | ↳ `image` | string | Series image URL | | ↳ `icon` | string | Series icon URL | | ↳ `active` | boolean | Whether series is active | | ↳ `closed` | boolean | Whether series is closed | | ↳ `archived` | boolean | Whether series is archived | | ↳ `featured` | boolean | Whether series is featured | | ↳ `volume` | number | Total volume | | ↳ `liquidity` | number | Total liquidity | | ↳ `commentCount` | number | Comment count | | ↳ `eventCount` | number | Number of events in series | | ↳ `events` | array | Array of events in this series | ### Get Orderbook from Polymarket [#get-orderbook-from-polymarket] Retrieve the order book summary for a specific token #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------ | | `orderbook` | object | Order book with bids and asks arrays | | ↳ `market` | string | Market identifier | | ↳ `asset_id` | string | Asset token ID | | ↳ `hash` | string | Order book hash | | ↳ `timestamp` | string | Timestamp | | ↳ `bids` | array | Bid orders | | ↳ `price` | string | Bid price | | ↳ `size` | string | Bid size | | ↳ `asks` | array | Ask orders | | ↳ `price` | string | Ask price | | ↳ `size` | string | Ask size | | ↳ `min_order_size` | string | Minimum order size | | ↳ `tick_size` | string | Tick size | | ↳ `neg_risk` | boolean | Whether negative risk | | ↳ `last_trade_price` | string | Last trade price | ### Get Price from Polymarket [#get-price-from-polymarket] Retrieve the market price for a specific token and side #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | | `side` | string | Yes | Order side: "buy" or "sell". | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ------------ | | `price` | string | Market price | ### Get Midpoint Price from Polymarket [#get-midpoint-price-from-polymarket] Retrieve the midpoint price for a specific token #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------ | -------------- | | `midpoint` | string | Midpoint price | ### Get Price History from Polymarket [#get-price-history-from-polymarket] Retrieve historical price data for a specific market token #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | | `interval` | string | No | Duration ending at current time (1m, 1h, 6h, 1d, 1w, max). Mutually exclusive with startTs/endTs. | | `fidelity` | number | No | Data resolution in minutes (e.g., 60 for hourly) | | `startTs` | number | No | Start timestamp (Unix seconds UTC) | | `endTs` | number | No | End timestamp (Unix seconds UTC) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `history` | array | Array of price history entries | | ↳ `t` | number | Unix timestamp | | ↳ `p` | number | Price at timestamp | ### Get Last Trade Price from Polymarket [#get-last-trade-price-from-polymarket] Retrieve the last trade price for a specific token #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `price` | string | Last trade price | | `side` | string | Side of the last trade (BUY or SELL) | ### Get Spread from Polymarket [#get-spread-from-polymarket] Retrieve the bid-ask spread for a specific token #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | #### Output [#output-13] | Parameter | Type | Description | | ---------- | ------ | -------------------------------- | | `spread` | object | Spread value between bid and ask | | ↳ `spread` | string | The spread value | ### Get Tick Size from Polymarket [#get-tick-size-from-polymarket] Retrieve the minimum tick size for a specific token #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `tokenId` | string | Yes | The CLOB token ID from market clobTokenIds array (e.g., "71321045679252212594626385532706912750332728571942532289631379312455583992563"). | #### Output [#output-14] | Parameter | Type | Description | | ---------- | ------ | ----------------- | | `tickSize` | string | Minimum tick size | ### Get Positions from Polymarket [#get-positions-from-polymarket] Retrieve user positions from Polymarket #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `user` | string | Yes | User wallet address | | `market` | string | No | Condition IDs to filter positions (e.g., "0x1234...abcd,0x5678...efgh"). Mutually exclusive with eventId. | | `eventId` | string | No | Event ID to filter positions (e.g., "12345"). Mutually exclusive with market. | | `sizeThreshold` | string | No | Minimum position size threshold (default: 1) | | `redeemable` | string | No | Filter for redeemable positions only (true/false) | | `mergeable` | string | No | Filter for mergeable positions only (true/false) | | `sortBy` | string | No | Sort field (TOKENS, CURRENT, INITIAL, CASHPNL, PERCENTPNL, TITLE, RESOLVING, PRICE, AVGPRICE) | | `sortDirection` | string | No | Sort direction (ASC or DESC) | | `title` | string | No | Search filter by title | | `limit` | string | No | Number of results per page (e.g., "25"). | | `offset` | string | No | Number of results to skip for pagination (e.g., "50"). | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------ | | `positions` | array | Array of position objects | | ↳ `proxyWallet` | string | Proxy wallet address | | ↳ `asset` | string | Asset token ID | | ↳ `conditionId` | string | Condition ID | | ↳ `size` | number | Position size | | ↳ `avgPrice` | number | Average price | | ↳ `initialValue` | number | Initial value | | ↳ `currentValue` | number | Current value | | ↳ `cashPnl` | number | Cash profit/loss | | ↳ `percentPnl` | number | Percent profit/loss | | ↳ `totalBought` | number | Total bought | | ↳ `realizedPnl` | number | Realized profit/loss | | ↳ `percentRealizedPnl` | number | Percent realized profit/loss | | ↳ `curPrice` | number | Current price | | ↳ `redeemable` | boolean | Whether position is redeemable | | ↳ `mergeable` | boolean | Whether position is mergeable | | ↳ `title` | string | Market title | | ↳ `slug` | string | Market slug | | ↳ `icon` | string | Market icon URL | | ↳ `eventSlug` | string | Event slug | | ↳ `outcome` | string | Outcome name | | ↳ `outcomeIndex` | number | Outcome index | | ↳ `oppositeOutcome` | string | Opposite outcome name | | ↳ `oppositeAsset` | string | Opposite asset token ID | | ↳ `endDate` | string | End date | | ↳ `negativeRisk` | boolean | Whether negative risk | ### Get Trades from Polymarket [#get-trades-from-polymarket] Retrieve trade history from Polymarket #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `user` | string | No | User wallet address to filter trades | | `market` | string | No | Market/condition ID to filter trades (e.g., "0x1234...abcd"). Mutually exclusive with eventId. | | `eventId` | string | No | Event ID to filter trades (e.g., "12345"). Mutually exclusive with market. | | `side` | string | No | Trade direction filter (BUY or SELL) | | `takerOnly` | string | No | Filter for taker trades only (true/false, default: true) | | `filterType` | string | No | Filter type (CASH or TOKENS) - requires filterAmount | | `filterAmount` | string | No | Filter amount threshold - requires filterType | | `limit` | string | No | Number of results per page (e.g., "50"). Default: 100, max: 10000. | | `offset` | string | No | Number of results to skip for pagination (e.g., "100"). | #### Output [#output-16] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------- | | `trades` | array | Array of trade objects | | ↳ `proxyWallet` | string | Proxy wallet address | | ↳ `side` | string | Trade side (BUY or SELL) | | ↳ `asset` | string | Asset token ID | | ↳ `conditionId` | string | Condition ID | | ↳ `size` | number | Trade size | | ↳ `price` | number | Trade price | | ↳ `timestamp` | number | Unix timestamp | | ↳ `title` | string | Market title | | ↳ `slug` | string | Market slug | | ↳ `icon` | string | Market icon URL | | ↳ `eventSlug` | string | Event slug | | ↳ `outcome` | string | Outcome name | | ↳ `outcomeIndex` | number | Outcome index | | ↳ `name` | string | Trader name | | ↳ `pseudonym` | string | Trader pseudonym | | ↳ `bio` | string | Trader bio | | ↳ `profileImage` | string | Profile image URL | | ↳ `profileImageOptimized` | string | Optimized profile image URL | | ↳ `transactionHash` | string | Transaction hash | ### Get Activity from Polymarket [#get-activity-from-polymarket] Retrieve on-chain activity for a user including trades, splits, merges, redemptions, rewards, and conversions #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `user` | string | Yes | User wallet address (0x-prefixed) | | `limit` | string | No | Maximum results to return (e.g., "50"). Default: 100, max: 500. | | `offset` | string | No | Number of results to skip for pagination (e.g., "100"). Default: 0, max: 10000. | | `market` | string | No | Comma-separated condition IDs (e.g., "0x1234...abcd,0x5678...efgh"). Mutually exclusive with eventId. | | `eventId` | string | No | Comma-separated event IDs (e.g., "12345,67890"). Mutually exclusive with market. | | `type` | string | No | Activity type filter: TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION, MAKER\_REBATE, REFERRAL\_REWARD | | `start` | number | No | Start timestamp (Unix seconds) | | `end` | number | No | End timestamp (Unix seconds) | | `sortBy` | string | No | Sort field: TIMESTAMP, TOKENS, or CASH (default: TIMESTAMP) | | `sortDirection` | string | No | Sort direction: ASC or DESC (default: DESC) | | `side` | string | No | Trade side filter: BUY or SELL (only applies to trades) | #### Output [#output-17] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------------------------------- | | `activity` | array | Array of activity entries | | ↳ `proxyWallet` | string | User proxy wallet address | | ↳ `timestamp` | number | Unix timestamp of activity | | ↳ `conditionId` | string | Market condition ID | | ↳ `type` | string | Activity type (TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION) | | ↳ `size` | number | Size in tokens | | ↳ `usdcSize` | number | Size in USDC | | ↳ `transactionHash` | string | Blockchain transaction hash | | ↳ `price` | number | Price (for trades) | | ↳ `asset` | string | Asset/token ID | | ↳ `side` | string | Trade side (BUY/SELL) | | ↳ `outcomeIndex` | number | Outcome index | | ↳ `title` | string | Market title | | ↳ `slug` | string | Market slug | | ↳ `icon` | string | Market icon URL | | ↳ `eventSlug` | string | Event slug | | ↳ `outcome` | string | Outcome name | | ↳ `name` | string | User display name | | ↳ `pseudonym` | string | User pseudonym | | ↳ `bio` | string | User bio | | ↳ `profileImage` | string | User profile image URL | | ↳ `profileImageOptimized` | string | Optimized profile image URL | ### Get Leaderboard from Polymarket [#get-leaderboard-from-polymarket] Retrieve trader leaderboard rankings by profit/loss or volume #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `category` | string | No | Category filter: OVERALL, POLITICS, SPORTS, CRYPTO, CULTURE, MENTIONS, WEATHER, ECONOMICS, TECH, FINANCE (default: OVERALL) | | `timePeriod` | string | No | Time period: DAY, WEEK, MONTH, ALL (default: DAY) | | `orderBy` | string | No | Order by: PNL or VOL (default: PNL) | | `limit` | string | No | Number of results to return (e.g., "10"). Range: 1-50, default: 25. | | `offset` | string | No | Number of results to skip for pagination (e.g., "25"). Range: 0-1000, default: 0. | | `user` | string | No | Filter by specific user wallet address | | `userName` | string | No | Filter by username | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------- | | `leaderboard` | array | Array of leaderboard entries | | ↳ `rank` | string | Leaderboard rank position | | ↳ `proxyWallet` | string | User proxy wallet address | | ↳ `userName` | string | User display name | | ↳ `vol` | number | Trading volume | | ↳ `pnl` | number | Profit and loss | | ↳ `profileImage` | string | User profile image URL | | ↳ `xUsername` | string | Twitter/X username | | ↳ `verifiedBadge` | boolean | Whether user has verified badge | ### Get Market Holders from Polymarket [#get-market-holders-from-polymarket] Retrieve top holders of a specific market token #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `market` | string | Yes | Comma-separated list of condition IDs (e.g., "0x1234...abcd" or "0x1234...abcd,0x5678...efgh"). | | `limit` | string | No | Number of holders to return (e.g., "10"). Range: 0-20, default: 20. | | `minBalance` | string | No | Minimum balance threshold (default: 1) | #### Output [#output-19] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------- | | `holders` | array | Array of market holder groups by token | | ↳ `token` | string | Token/asset ID | | ↳ `holders` | array | Array of holders for this token | | ↳ `proxyWallet` | string | Holder wallet address | | ↳ `bio` | string | Holder bio | | ↳ `asset` | string | Asset ID | | ↳ `pseudonym` | string | Holder pseudonym | | ↳ `amount` | number | Amount held | | ↳ `displayUsernamePublic` | boolean | Whether username is publicly displayed | | ↳ `outcomeIndex` | number | Outcome index | | ↳ `name` | string | Holder display name | | ↳ `profileImage` | string | Profile image URL | | ↳ `profileImageOptimized` | string | Optimized profile image URL | | ↳ `verified` | boolean | Whether the holder is verified | --- # PostgreSQL (/integrations/postgresql) {/* MANUAL-CONTENT-START:intro */} Use [PostgreSQL](https://www.postgresql.org/) to query and modify rows, execute SQL, and inspect tables, columns, keys, and indexes. Schema inspection lets a workflow discover the database structure before generating a query. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate PostgreSQL into the workflow. Can query, insert, update, delete, and execute raw SQL. ## Actions [#actions] ### PostgreSQL Query [#postgresql-query] Execute a SELECT query on PostgreSQL database #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `query` | string | Yes | SQL SELECT query to execute | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### PostgreSQL Insert [#postgresql-insert] Insert data into PostgreSQL database #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to insert data into | | `data` | object | Yes | Data object to insert (key-value pairs) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Inserted data (if RETURNING clause used) | | `rowCount` | number | Number of rows inserted | ### PostgreSQL Update [#postgresql-update] Update data in PostgreSQL database #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to update data in | | `data` | object | Yes | Data object with fields to update (key-value pairs) | | `where` | string | Yes | WHERE clause condition (without WHERE keyword) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Updated data (if RETURNING clause used) | | `rowCount` | number | Number of rows updated | ### PostgreSQL Delete [#postgresql-delete] Delete data from PostgreSQL database #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `table` | string | Yes | Table name to delete data from | | `where` | string | Yes | WHERE clause condition (without WHERE keyword) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Deleted data (if RETURNING clause used) | | `rowCount` | number | Number of rows deleted | ### PostgreSQL Execute [#postgresql-execute] Execute raw SQL query on PostgreSQL database #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `query` | string | Yes | Raw SQL query to execute | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows affected | ### PostgreSQL Introspect [#postgresql-introspect] Introspect PostgreSQL database schema to retrieve table structures, columns, and relationships #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `host` | string | Yes | PostgreSQL server hostname or IP address | | `port` | number | Yes | PostgreSQL server port (default: 5432) | | `database` | string | Yes | Database name to connect to | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode (disabled, required, preferred) | | `schema` | string | No | Schema to introspect (default: public) | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------ | | `message` | string | Operation status message | | `tables` | array | Array of table schemas with columns, keys, and indexes | | ↳ `name` | string | Table name | | ↳ `schema` | string | Schema name (e.g., public) | | ↳ `columns` | array | Table columns | | ↳ `name` | string | Column name | | ↳ `type` | string | Data type (e.g., integer, varchar, timestamp) | | ↳ `nullable` | boolean | Whether the column allows NULL values | | ↳ `default` | string | Default value expression | | ↳ `isPrimaryKey` | boolean | Whether the column is part of the primary key | | ↳ `isForeignKey` | boolean | Whether the column is a foreign key | | ↳ `references` | object | Foreign key reference information | | ↳ `table` | string | Referenced table name | | ↳ `column` | string | Referenced column name | | ↳ `primaryKey` | array | Primary key column names | | ↳ `foreignKeys` | array | Foreign key constraints | | ↳ `column` | string | Local column name | | ↳ `referencesTable` | string | Referenced table name | | ↳ `referencesColumn` | string | Referenced column name | | ↳ `indexes` | array | Table indexes | | ↳ `name` | string | Index name | | ↳ `columns` | array | Columns included in the index | | ↳ `unique` | boolean | Whether the index enforces uniqueness | | `schemas` | array | List of available schemas in the database | --- # PostHog (/integrations/posthog) {/* MANUAL-CONTENT-START:intro */} The [PostHog](https://posthog.com/) tool integrates powerful product analytics, feature flag management, experimentation, and user behavior insights directly into your agentic workflows. Designed for modern teams, it enables you to capture, analyze, and act on user data in real time — helping you build better products, understand engagement, and boost conversions. With the PostHog tool, you can: * **Track and analyze events**: Use the `posthog_capture_event` and `posthog_batch_events` operations to record individual or multiple user actions, page views, or custom events for deep analytics. * **Explore event data**: Retrieve and list historical or real-time events using the `posthog_list_events` operation for advanced event analysis. * **Understand users**: Leverage the `posthog_list_persons`, `posthog_get_person`, and `posthog_delete_person` operations to manage user profiles, get detailed user insights, or remove them as needed. * **Gain actionable product insights**: Visualize user journeys, feature usage, and engagement via `posthog_list_insights`, `posthog_get_insight`, and `posthog_create_insight` operations. * **Manage and roll out features safely**: Toggle features and run A/B or multivariate tests at scale using operations like `posthog_list_feature_flags`, `posthog_get_feature_flag`, `posthog_create_feature_flag`, `posthog_update_feature_flag`, and `posthog_delete_feature_flag`. * **Segment and target audiences**: Build, list, or manage cohorts with `posthog_list_cohorts`, `posthog_get_cohort`, and `posthog_create_cohort`. * **Gather direct feedback**: Design, deploy, and analyze surveys through `posthog_list_surveys`, `posthog_get_survey`, `posthog_create_survey`, and `posthog_update_survey`. * **Monitor user experience**: Access and analyze session recordings via the `posthog_list_session_recordings` and `posthog_get_session_recording` operations. * **Collaborate with your team**: Organize dashboards (`posthog_list_dashboards`, `posthog_get_dashboard`), create and annotate insights and events, and manage projects and organizations within PostHog. Whether you want to implement full-scale product analytics, enhance user onboarding, refine your product roadmap, or automate decisions based on real usage data, the PostHog tool empowers your agents and workflows with advanced analytics and in-product experimentation — all in one unified platform. Looking for true product analytics with privacy, scalability, and an open-source option? PostHog is trusted by fast-moving teams and enterprises worldwide. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate PostHog into your workflow. Track events, manage feature flags, analyze user behavior, run experiments, create surveys, and access session recordings. ## Actions [#actions] ### PostHog Capture Event [#posthog-capture-event] Capture a single event in PostHog. Use this to track user actions, page views, or custom events. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectApiKey` | string | Yes | PostHog Project API Key (public token for event ingestion) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `event` | string | Yes | The name of the event to capture (e.g., "page\_view", "button\_clicked") | | `distinctId` | string | Yes | Unique identifier for the user or device (e.g., "user123", email, or device UUID) | | `properties` | string | No | JSON string of event properties (e.g., \{"button\_name": "signup", "page": "homepage"}) | | `timestamp` | string | No | ISO 8601 timestamp for when the event occurred. If not provided, uses current time | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------- | | `status` | string | Status message indicating whether the event was captured successfully | ### PostHog Batch Events [#posthog-batch-events] Capture multiple events at once in PostHog. Use this for bulk event ingestion to improve performance. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `projectApiKey` | string | Yes | PostHog Project API Key (public token for event ingestion) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `batch` | string | Yes | JSON array of events to capture. Each event should have: event, distinct\_id, and optional properties, timestamp. Example: \[\{"event": "page\_view", "distinct\_id": "user123", "properties": \{"page": "/"}}] | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------------------------- | | `status` | string | Status message indicating whether the batch was captured successfully | | `events_processed` | number | Number of events processed in the batch | ### PostHog List Persons [#posthog-list-persons] List persons (users) in PostHog. Returns user profiles with their properties and distinct IDs. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key (for authenticated API access) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `limit` | number | No | Number of persons to return (default: 100, max: 100) | | `offset` | number | No | Number of persons to skip for pagination (e.g., 0, 100, 200) | | `search` | string | No | Search persons by email, name, or distinct ID | | `distinctId` | string | No | Filter by specific distinct\_id | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------- | | `persons` | array | List of persons with their properties and identifiers | | ↳ `id` | string | Person ID | | ↳ `name` | string | Person name | | ↳ `distinct_ids` | array | All distinct IDs associated with this person | | ↳ `created_at` | string | When the person was first seen | | ↳ `uuid` | string | Person UUID | | `next` | string | URL for the next page of results (if available) | ### PostHog Get Person [#posthog-get-person] Get detailed information about a specific person in PostHog by their ID or UUID. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key (for authenticated API access) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `personId` | string | Yes | Person ID or UUID to retrieve (e.g., "01234567-89ab-cdef-0123-456789abcdef") | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------------------- | | `person` | object | Person details including properties and identifiers | | ↳ `id` | string | Person ID | | ↳ `name` | string | Person name | | ↳ `distinct_ids` | array | All distinct IDs associated with this person | | ↳ `created_at` | string | When the person was first seen | | ↳ `uuid` | string | Person UUID | ### PostHog Delete Person [#posthog-delete-person] Delete a person from PostHog. This will remove all associated events and data. Use with caution. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key (for authenticated API access) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `personId` | string | Yes | Person ID or UUID to delete (e.g., "01234567-89ab-cdef-0123-456789abcdef") | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------- | | `status` | string | Status message indicating whether the person was deleted successfully | ### PostHog Query [#posthog-query] Execute a HogQL query in PostHog. HogQL is PostHog's SQL-like query language for analytics. Use this for advanced data retrieval and analysis. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key (for authenticated API access) | | `region` | string | No | PostHog region: us (default) or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `query` | string | Yes | HogQL query to execute. Example: \{"kind": "HogQLQuery", "query": "SELECT event, count() FROM events WHERE timestamp > now() - INTERVAL 1 DAY GROUP BY event"} | | `values` | string | No | Optional JSON string of parameter values for parameterized queries. Example: \{"user\_id": "123"} | #### Output [#output-5] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `results` | array | Query results as an array of rows | | `columns` | array | Column names in the result set | | `types` | array | Data types of columns in the result set | | `hogql` | string | The actual HogQL query that was executed | | `has_more` | boolean | Whether there are more results available | ### PostHog List Insights [#posthog-list-insights] List all insights in a PostHog project. Returns insight configurations and metadata. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------------- | | `count` | number | Total number of insights in the project | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of insights with their configurations and metadata | | ↳ `id` | number | Unique identifier for the insight | | ↳ `name` | string | Name of the insight | | ↳ `description` | string | Description of the insight | | ↳ `query` | object | Query configuration for the insight | | ↳ `created_at` | string | ISO timestamp when insight was created | | ↳ `created_by` | object | User who created the insight | | ↳ `last_modified_at` | string | ISO timestamp when insight was last modified | | ↳ `last_modified_by` | object | User who last modified the insight | | ↳ `dashboards` | array | IDs of dashboards this insight appears on | ### PostHog Get Insight [#posthog-get-insight] Get a specific insight by ID from PostHog. Returns detailed insight configuration and metadata. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `insightId` | string | Yes | The insight ID to retrieve (e.g., "42" or short ID like "abc123") | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------- | | `id` | number | Unique identifier for the insight | | `name` | string | Name of the insight | | `description` | string | Description of the insight | | `query` | object | Query configuration for the insight | | `created_at` | string | ISO timestamp when insight was created | | `created_by` | object | User who created the insight | | `last_modified_at` | string | ISO timestamp when insight was last modified | | `last_modified_by` | object | User who last modified the insight | | `dashboards` | array | IDs of dashboards this insight appears on | | `tags` | array | Tags associated with the insight | | `favorited` | boolean | Whether the insight is favorited | ### PostHog Create Insight [#posthog-create-insight] Create a new insight in PostHog. Requires insight name and a query configuration. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | No | Name for the insight (optional - PostHog will generate a derived name if not provided) | | `description` | string | No | Description of the insight | | `query` | string | No | JSON string of query configuration for the insight | | `dashboards` | string | No | Comma-separated list of dashboard IDs to add this insight to | | `tags` | string | No | Comma-separated list of tags for the insight | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------- | | `id` | number | Unique identifier for the created insight | | `name` | string | Name of the insight | | `description` | string | Description of the insight | | `query` | object | Query configuration for the insight | | `created_at` | string | ISO timestamp when insight was created | | `created_by` | object | User who created the insight | | `last_modified_at` | string | ISO timestamp when insight was last modified | | `dashboards` | array | IDs of dashboards this insight appears on | | `tags` | array | Tags associated with the insight | ### PostHog Update Insight [#posthog-update-insight] Update an existing insight in PostHog. Can modify name, description, query, dashboards, tags, and favorited status. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `insightId` | string | Yes | The insight ID to update (e.g., "42" or short ID like "abc123") | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | No | Updated name for the insight | | `description` | string | No | Updated description for the insight | | `query` | string | No | JSON string of updated query configuration for the insight | | `dashboards` | string | No | Comma-separated list of dashboard IDs to attach this insight to | | `tags` | string | No | Comma-separated list of tags for the insight | | `favorited` | boolean | No | Whether to mark the insight as favorited | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------- | | `id` | number | Unique identifier for the insight | | `name` | string | Name of the insight | | `description` | string | Description of the insight | | `query` | object | Query configuration for the insight | | `created_at` | string | ISO timestamp when insight was created | | `last_modified_at` | string | ISO timestamp when insight was last modified | | `dashboards` | array | IDs of dashboards this insight appears on | | `tags` | array | Tags associated with the insight | | `favorited` | boolean | Whether the insight is favorited | ### PostHog List Dashboards [#posthog-list-dashboards] List all dashboards in a PostHog project. Returns dashboard configurations, tiles, and metadata. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-10] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------- | | `count` | number | Total number of dashboards in the project | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of dashboards with their configurations and metadata | | ↳ `id` | number | Unique identifier for the dashboard | | ↳ `name` | string | Name of the dashboard | | ↳ `description` | string | Description of the dashboard | | ↳ `pinned` | boolean | Whether the dashboard is pinned | | ↳ `created_at` | string | ISO timestamp when dashboard was created | | ↳ `created_by` | object | User who created the dashboard | | ↳ `last_modified_at` | string | ISO timestamp when dashboard was last modified | | ↳ `last_modified_by` | object | User who last modified the dashboard | | ↳ `tiles` | array | Tiles/widgets on the dashboard | | ↳ `filters` | object | Global filters for the dashboard | | ↳ `tags` | array | Tags associated with the dashboard | ### PostHog Get Dashboard [#posthog-get-dashboard] Get a specific dashboard by ID from PostHog. Returns detailed dashboard configuration, tiles, and metadata. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `dashboardId` | string | Yes | The dashboard ID to retrieve (e.g., "42") | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------- | | `id` | number | Unique identifier for the dashboard | | `name` | string | Name of the dashboard | | `description` | string | Description of the dashboard | | `pinned` | boolean | Whether the dashboard is pinned | | `created_at` | string | ISO timestamp when dashboard was created | | `created_by` | object | User who created the dashboard | | `last_modified_at` | string | ISO timestamp when dashboard was last modified | | `last_modified_by` | object | User who last modified the dashboard | | `tiles` | array | Tiles/widgets on the dashboard with their configurations | | `filters` | object | Global filters applied to the dashboard | | `tags` | array | Tags associated with the dashboard | | `restriction_level` | number | Access restriction level for the dashboard | ### PostHog Create Dashboard [#posthog-create-dashboard] Create a new dashboard in PostHog. Optionally seed it from a built-in template, then attach insights to it afterward. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | Yes | Name for the new dashboard | | `description` | string | No | Description of the dashboard | | `pinned` | boolean | No | Whether to pin the dashboard to the sidebar | | `tags` | string | No | Comma-separated list of tags for the dashboard | | `useTemplate` | string | No | Name of a built-in PostHog dashboard template to seed this dashboard from (e.g., "Product analytics") | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------- | | `id` | number | Unique identifier for the created dashboard | | `name` | string | Name of the dashboard | | `description` | string | Description of the dashboard | | `pinned` | boolean | Whether the dashboard is pinned | | `created_at` | string | ISO timestamp when dashboard was created | | `tiles` | array | Tiles/widgets on the dashboard | | `filters` | object | Global filters applied to the dashboard | | `tags` | array | Tags associated with the dashboard | ### PostHog List Actions [#posthog-list-actions] List all actions in a PostHog project. Returns action definitions, steps, and metadata. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | | `search` | string | No | Search term to filter actions by name | #### Output [#output-13] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------- | | `count` | number | Total number of actions in the project | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of actions with their definitions and metadata | | ↳ `id` | number | Unique identifier for the action | | ↳ `name` | string | Name of the action | | ↳ `description` | string | Description of the action | | ↳ `tags` | array | Tags associated with the action | | ↳ `post_to_slack` | boolean | Whether to post this action to Slack | | ↳ `slack_message_format` | string | Format string for Slack messages | | ↳ `steps` | array | Steps that define the action | | ↳ `created_at` | string | ISO timestamp when action was created | | ↳ `created_by` | object | User who created the action | | ↳ `deleted` | boolean | Whether the action is deleted | | ↳ `is_calculating` | boolean | Whether the action is being calculated | | ↳ `last_calculated_at` | string | ISO timestamp of last calculation | ### PostHog List Cohorts [#posthog-list-cohorts] List all cohorts in a PostHog project. Returns cohort definitions, filters, and user counts. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-14] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------- | | `count` | number | Total number of cohorts in the project | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of cohorts with their definitions and metadata | | ↳ `id` | number | Unique identifier for the cohort | | ↳ `name` | string | Name of the cohort | | ↳ `description` | string | Description of the cohort | | ↳ `groups` | array | Groups that define the cohort | | ↳ `deleted` | boolean | Whether the cohort is deleted | | ↳ `filters` | object | Filter configuration for the cohort | | ↳ `query` | object | Query configuration for the cohort | | ↳ `created_at` | string | ISO timestamp when cohort was created | | ↳ `created_by` | object | User who created the cohort | | ↳ `is_calculating` | boolean | Whether the cohort is being calculated | | ↳ `last_calculation` | string | ISO timestamp of last calculation | | ↳ `errors_calculating` | number | Number of errors during calculation | | ↳ `count` | number | Number of users in the cohort | | ↳ `is_static` | boolean | Whether the cohort is static | ### PostHog Get Cohort [#posthog-get-cohort] Get a specific cohort by ID from PostHog. Returns detailed cohort definition, filters, and user count. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `cohortId` | string | Yes | The cohort ID to retrieve (e.g., "42") | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------- | | `id` | number | Unique identifier for the cohort | | `name` | string | Name of the cohort | | `description` | string | Description of the cohort | | `groups` | array | Groups that define the cohort | | `deleted` | boolean | Whether the cohort is deleted | | `filters` | object | Filter configuration for the cohort | | `query` | object | Query configuration for the cohort | | `created_at` | string | ISO timestamp when cohort was created | | `created_by` | object | User who created the cohort | | `is_calculating` | boolean | Whether the cohort is being calculated | | `last_calculation` | string | ISO timestamp of last calculation | | `errors_calculating` | number | Number of errors during calculation | | `count` | number | Number of users in the cohort | | `is_static` | boolean | Whether the cohort is static | | `version` | number | Version number of the cohort | ### PostHog Create Cohort [#posthog-create-cohort] Create a new cohort in PostHog. Requires cohort name and filter or query configuration. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | No | Name for the cohort (optional - PostHog will use "Untitled cohort" if not provided) | | `description` | string | No | Description of the cohort | | `filters` | string | No | JSON string of filter configuration for the cohort | | `query` | string | No | JSON string of query configuration for the cohort | | `is_static` | boolean | No | Whether the cohort is static (default: false) | | `groups` | string | No | JSON string of groups that define the cohort | #### Output [#output-16] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------- | | `id` | number | Unique identifier for the created cohort | | `name` | string | Name of the cohort | | `description` | string | Description of the cohort | | `groups` | array | Groups that define the cohort | | `deleted` | boolean | Whether the cohort is deleted | | `filters` | object | Filter configuration for the cohort | | `query` | object | Query configuration for the cohort | | `created_at` | string | ISO timestamp when cohort was created | | `created_by` | object | User who created the cohort | | `is_calculating` | boolean | Whether the cohort is being calculated | | `count` | number | Number of users in the cohort | | `is_static` | boolean | Whether the cohort is static | | `version` | number | Version number of the cohort | ### PostHog Update Cohort [#posthog-update-cohort] Update an existing cohort in PostHog. Can modify name, description, filters, query, static membership, and deleted status. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `cohortId` | string | Yes | The cohort ID to update (e.g., "42") | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | No | Updated name for the cohort | | `description` | string | No | Updated description of the cohort | | `filters` | string | No | JSON string of updated filter configuration for the cohort | | `query` | string | No | JSON string of updated query configuration for the cohort | | `isStatic` | boolean | No | Whether the cohort is static | | `groups` | string | No | JSON string of updated groups that define the cohort | | `deleted` | boolean | No | Set to true to archive (soft-delete) the cohort | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------- | | `id` | number | Unique identifier for the cohort | | `name` | string | Name of the cohort | | `description` | string | Description of the cohort | | `groups` | array | Groups that define the cohort | | `deleted` | boolean | Whether the cohort is deleted | | `filters` | object | Filter configuration for the cohort | | `query` | object | Query configuration for the cohort | | `created_at` | string | ISO timestamp when cohort was created | | `is_calculating` | boolean | Whether the cohort is being calculated | | `count` | number | Number of users in the cohort | | `is_static` | boolean | Whether the cohort is static | | `version` | number | Version number of the cohort | ### PostHog List Annotations [#posthog-list-annotations] List all annotations in a PostHog project. Returns annotation content, timestamps, and associated insights. #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------ | | `count` | number | Total number of annotations in the project | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of annotations with their content and metadata | | ↳ `id` | number | Unique identifier for the annotation | | ↳ `content` | string | Content/text of the annotation | | ↳ `date_marker` | string | ISO timestamp marking when the annotation applies | | ↳ `created_at` | string | ISO timestamp when annotation was created | | ↳ `updated_at` | string | ISO timestamp when annotation was last updated | | ↳ `created_by` | object | User who created the annotation | | ↳ `dashboard_item` | number | ID of dashboard item this annotation is attached to | | ↳ `dashboard_id` | number | ID of the dashboard this annotation is attached to | | ↳ `insight_short_id` | string | Short ID of the insight this annotation is attached to | | ↳ `insight_name` | string | Name of the insight this annotation is attached to | | ↳ `scope` | string | Scope of the annotation (project or dashboard) | | ↳ `deleted` | boolean | Whether the annotation is deleted | ### PostHog Create Annotation [#posthog-create-annotation] Create a new annotation in PostHog. Mark important events on your graphs with date and description. #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: "us" or "eu" (default: "us") | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `content` | string | Yes | Content/text of the annotation | | `date_marker` | string | Yes | ISO timestamp marking when the annotation applies (e.g., "2024-01-15T10:00:00Z") | | `scope` | string | No | Scope of the annotation: "project", "organization", "dashboard", or "dashboard\_item" (default: "project") | | `dashboard_item` | string | No | ID of the dashboard tile (insight) to attach this annotation to (used when scope is "dashboard\_item") | | `dashboard_id` | string | No | ID of the dashboard to attach this annotation to (used when scope is "dashboard") | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------ | | `id` | number | Unique identifier for the created annotation | | `content` | string | Content/text of the annotation | | `date_marker` | string | ISO timestamp marking when the annotation applies | | `created_at` | string | ISO timestamp when annotation was created | | `updated_at` | string | ISO timestamp when annotation was last updated | | `created_by` | object | User who created the annotation | | `dashboard_item` | number | ID of dashboard item this annotation is attached to | | `dashboard_id` | number | ID of the dashboard this annotation is attached to | | `insight_short_id` | string | Short ID of the insight this annotation is attached to | | `insight_name` | string | Name of the insight this annotation is attached to | | `scope` | string | Scope of the annotation (project, organization, dashboard, or dashboard\_item) | | `deleted` | boolean | Whether the annotation is deleted | ### PostHog List Feature Flags [#posthog-list-feature-flags] List all feature flags in a PostHog project #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `limit` | number | No | Number of results to return (e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-20] | Parameter | Type | Description | | -------------------------------- | ------- | --------------------------------------- | | `results` | array | List of feature flags | | ↳ `id` | number | Feature flag ID | | ↳ `name` | string | Feature flag name | | ↳ `key` | string | Feature flag key | | ↳ `filters` | object | Feature flag filters | | ↳ `deleted` | boolean | Whether the flag is deleted | | ↳ `active` | boolean | Whether the flag is active | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `is_simple_flag` | boolean | Whether this is a simple flag | | ↳ `rollout_percentage` | number | Rollout percentage (if applicable) | | ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | | `count` | number | Total number of feature flags | | `next` | string | URL to next page of results | | `previous` | string | URL to previous page of results | ### PostHog Get Feature Flag [#posthog-get-feature-flag] Get details of a specific feature flag #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `flagId` | string | Yes | The feature flag ID (e.g., "42") | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | #### Output [#output-21] | Parameter | Type | Description | | -------------------------------- | ------- | --------------------------------------- | | `flag` | object | Feature flag details | | ↳ `id` | number | Feature flag ID | | ↳ `name` | string | Feature flag name | | ↳ `key` | string | Feature flag key | | ↳ `filters` | object | Feature flag filters | | ↳ `deleted` | boolean | Whether the flag is deleted | | ↳ `active` | boolean | Whether the flag is active | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `is_simple_flag` | boolean | Whether this is a simple flag | | ↳ `rollout_percentage` | number | Rollout percentage (if applicable) | | ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | | ↳ `usage_dashboard` | number | Usage dashboard ID | | ↳ `has_enriched_analytics` | boolean | Whether enriched analytics are enabled | ### PostHog Create Feature Flag [#posthog-create-feature-flag] Create a new feature flag in PostHog #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `name` | string | No | Feature flag name (optional - can be empty) | | `key` | string | Yes | Feature flag key (unique identifier) | | `filters` | string | No | Feature flag filters as JSON string | | `active` | boolean | No | Whether the flag is active (default: true) | | `ensureExperienceContinuity` | boolean | No | Whether to ensure experience continuity (default: false) | | `rolloutPercentage` | number | No | Rollout percentage (0-100) | #### Output [#output-22] | Parameter | Type | Description | | -------------------------------- | ------- | --------------------------------------- | | `flag` | object | Created feature flag | | ↳ `id` | number | Feature flag ID | | ↳ `name` | string | Feature flag name | | ↳ `key` | string | Feature flag key | | ↳ `filters` | object | Feature flag filters | | ↳ `deleted` | boolean | Whether the flag is deleted | | ↳ `active` | boolean | Whether the flag is active | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `is_simple_flag` | boolean | Whether this is a simple flag | | ↳ `rollout_percentage` | number | Rollout percentage (if applicable) | | ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | ### PostHog Update Feature Flag [#posthog-update-feature-flag] Update an existing feature flag in PostHog #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `flagId` | string | Yes | The feature flag ID (e.g., "42") | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `name` | string | No | Feature flag name | | `key` | string | No | Feature flag key (unique identifier) | | `filters` | string | No | Feature flag filters as JSON string | | `active` | boolean | No | Whether the flag is active | | `ensureExperienceContinuity` | boolean | No | Whether to ensure experience continuity | | `rolloutPercentage` | number | No | Rollout percentage (0-100) | #### Output [#output-23] | Parameter | Type | Description | | -------------------------------- | ------- | --------------------------------------- | | `flag` | object | Updated feature flag | | ↳ `id` | number | Feature flag ID | | ↳ `name` | string | Feature flag name | | ↳ `key` | string | Feature flag key | | ↳ `filters` | object | Feature flag filters | | ↳ `deleted` | boolean | Whether the flag is deleted | | ↳ `active` | boolean | Whether the flag is active | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `is_simple_flag` | boolean | Whether this is a simple flag | | ↳ `rollout_percentage` | number | Rollout percentage (if applicable) | | ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | ### PostHog Delete Feature Flag [#posthog-delete-feature-flag] Delete a feature flag from PostHog #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `flagId` | string | Yes | The feature flag ID to delete (e.g., "42") | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `message` | string | Confirmation message | ### PostHog Evaluate Feature Flags [#posthog-evaluate-feature-flags] Evaluate feature flags for a specific user or group. This is a public endpoint that uses the project API key. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `projectApiKey` | string | Yes | PostHog Project API Key (not personal API key) | | `distinctId` | string | Yes | The distinct ID of the user to evaluate flags for (e.g., "user123" or email) | | `groups` | string | No | Groups as JSON string (e.g., \{"company": "company\_id\_in\_your\_db"}) | | `personProperties` | string | No | Person properties as JSON string | | `groupProperties` | string | No | Group properties as JSON string | #### Output [#output-25] | Parameter | Type | Description | | ------------------------------ | ------- | -------------------------------------------------------------------------------------- | | `feature_flags` | object | Feature flag evaluations (key-value pairs where values are boolean or string variants) | | `feature_flag_payloads` | object | Additional payloads attached to feature flags | | `errors_while_computing_flags` | boolean | Whether there were errors while computing flags | ### PostHog List Experiments [#posthog-list-experiments] List all experiments in a PostHog project #### Input [#input-26] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `limit` | number | No | Number of results to return (e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-26] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------- | | `results` | array | List of experiments | | ↳ `id` | number | Experiment ID | | ↳ `name` | string | Experiment name | | ↳ `description` | string | Experiment description | | ↳ `feature_flag_key` | string | Associated feature flag key | | ↳ `feature_flag` | object | Feature flag details | | ↳ `parameters` | object | Experiment parameters | | ↳ `filters` | object | Experiment filters | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `archived` | boolean | Whether the experiment is archived | | `count` | number | Total number of experiments | | `next` | string | URL to next page of results | | `previous` | string | URL to previous page of results | ### PostHog Get Experiment [#posthog-get-experiment] Get details of a specific experiment #### Input [#input-27] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `experimentId` | string | Yes | The experiment ID (e.g., "42") | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | #### Output [#output-27] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------- | | `experiment` | object | Experiment details | | ↳ `id` | number | Experiment ID | | ↳ `name` | string | Experiment name | | ↳ `description` | string | Experiment description | | ↳ `feature_flag_key` | string | Associated feature flag key | | ↳ `feature_flag` | object | Feature flag details | | ↳ `parameters` | object | Experiment parameters | | ↳ `filters` | object | Experiment filters | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `archived` | boolean | Whether the experiment is archived | | ↳ `metrics` | array | Primary metrics | | ↳ `metrics_secondary` | array | Secondary metrics | ### PostHog Create Experiment [#posthog-create-experiment] Create a new experiment in PostHog #### Input [#input-28] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `name` | string | Yes | Experiment name | | `description` | string | No | Experiment description | | `featureFlagKey` | string | Yes | Feature flag key to use for the experiment | | `parameters` | string | No | Experiment parameters as JSON string | | `filters` | string | No | Experiment filters as JSON string | | `startDate` | string | No | Experiment start date (ISO format) | | `endDate` | string | No | Experiment end date (ISO format) | #### Output [#output-28] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------- | | `experiment` | object | Created experiment | | ↳ `id` | number | Experiment ID | | ↳ `name` | string | Experiment name | | ↳ `description` | string | Experiment description | | ↳ `feature_flag_key` | string | Associated feature flag key | | ↳ `feature_flag` | object | Feature flag details | | ↳ `parameters` | object | Experiment parameters | | ↳ `filters` | object | Experiment filters | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `archived` | boolean | Whether the experiment is archived | ### PostHog Update Experiment [#posthog-update-experiment] Update an existing experiment in PostHog. Use this to change dates, archive an experiment, or adjust its parameters and filters. #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | The PostHog project ID (e.g., "12345" or project UUID) | | `experimentId` | string | Yes | The experiment ID to update (e.g., "42") | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `name` | string | No | Updated experiment name | | `description` | string | No | Updated experiment description | | `parameters` | string | No | Updated experiment parameters as JSON string | | `filters` | string | No | Updated experiment filters as JSON string | | `startDate` | string | No | Updated start date (ISO 8601). Set this to launch a draft experiment. | | `endDate` | string | No | Updated end date (ISO 8601). Set this to conclude a running experiment. | | `archived` | boolean | No | Whether to archive the experiment | #### Output [#output-29] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------- | | `experiment` | object | Updated experiment | | ↳ `id` | number | Experiment ID | | ↳ `name` | string | Experiment name | | ↳ `description` | string | Experiment description | | ↳ `feature_flag_key` | string | Associated feature flag key | | ↳ `feature_flag` | object | Feature flag details | | ↳ `parameters` | object | Experiment parameters | | ↳ `filters` | object | Experiment filters | | ↳ `start_date` | string | Start date | | ↳ `end_date` | string | End date | | ↳ `created_at` | string | Creation timestamp | | ↳ `archived` | boolean | Whether the experiment is archived | ### PostHog List Surveys [#posthog-list-surveys] List all surveys in a PostHog project. Surveys allow you to collect feedback from users. #### Input [#input-30] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `surveys` | array | List of surveys in the project | | ↳ `id` | string | Survey ID | | ↳ `name` | string | Survey name | | ↳ `description` | string | Survey description | | ↳ `type` | string | Survey type (popover or api) | | ↳ `questions` | array | Survey questions | | ↳ `created_at` | string | Creation timestamp | | ↳ `start_date` | string | Survey start date | | ↳ `end_date` | string | Survey end date | | ↳ `archived` | boolean | Whether survey is archived | | `count` | number | Total number of surveys | | `next` | string | URL for next page of results | | `previous` | string | URL for previous page of results | ### PostHog Get Survey [#posthog-get-survey] Get details of a specific survey in PostHog by ID. #### Input [#input-31] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `surveyId` | string | Yes | Survey ID to retrieve (e.g., "01234567-89ab-cdef-0123-456789abcdef") | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-31] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------- | | `survey` | object | Survey details | | ↳ `id` | string | Survey ID | | ↳ `name` | string | Survey name | | ↳ `description` | string | Survey description | | ↳ `type` | string | Survey type (popover or api) | | ↳ `questions` | array | Survey questions | | ↳ `appearance` | object | Survey appearance configuration | | ↳ `conditions` | object | Survey display conditions | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `start_date` | string | Survey start date | | ↳ `end_date` | string | Survey end date | | ↳ `archived` | boolean | Whether survey is archived | | ↳ `responses_limit` | number | Maximum number of responses | ### PostHog Create Survey [#posthog-create-survey] Create a new survey in PostHog. Supports question types: Basic (open), Link, Rating, and Multiple Choice. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | Yes | Survey name | | `description` | string | No | Survey description | | `type` | string | No | Survey type: popover (in-app) or api (custom implementation) (default: popover) | | `questions` | string | Yes | JSON string of survey questions array. Each question must have type (open/link/rating/multiple\_choice) and question text. Rating questions can have scale (1-10), lowerBoundLabel, upperBoundLabel. Multiple choice questions need choices array. Link questions can have buttonText. | | `startDate` | string | No | Survey start date in ISO 8601 format | | `endDate` | string | No | Survey end date in ISO 8601 format | | `appearance` | string | No | JSON string of appearance configuration (colors, position, etc.) | | `conditions` | string | No | JSON string of display conditions (URL matching, etc.) | | `targetingFlagFilters` | string | No | JSON string of feature flag filters for targeting | | `linkedFlagId` | string | No | Feature flag ID to link to this survey | | `responsesLimit` | number | No | Maximum number of responses to collect | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------ | ---------------------------- | | `survey` | object | Created survey details | | ↳ `id` | string | Survey ID | | ↳ `name` | string | Survey name | | ↳ `description` | string | Survey description | | ↳ `type` | string | Survey type (popover or api) | | ↳ `questions` | array | Survey questions | | ↳ `created_at` | string | Creation timestamp | | ↳ `start_date` | string | Survey start date | | ↳ `end_date` | string | Survey end date | ### PostHog Update Survey [#posthog-update-survey] Update an existing survey in PostHog. Can modify questions, appearance, conditions, and other settings. #### Input [#input-33] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `surveyId` | string | Yes | Survey ID to update (e.g., "01234567-89ab-cdef-0123-456789abcdef") | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `name` | string | No | Survey name | | `description` | string | No | Survey description | | `type` | string | No | Survey type: popover or api | | `questions` | string | No | JSON string of survey questions array. Each question must have type (open/link/rating/multiple\_choice) and question text. | | `startDate` | string | No | Survey start date in ISO 8601 format | | `endDate` | string | No | Survey end date in ISO 8601 format | | `appearance` | string | No | JSON string of appearance configuration (colors, position, etc.) | | `conditions` | string | No | JSON string of display conditions (URL matching, etc.) | | `targetingFlagFilters` | string | No | JSON string of feature flag filters for targeting | | `linkedFlagId` | string | No | Feature flag ID to link to this survey | | `responsesLimit` | number | No | Maximum number of responses to collect | | `archived` | boolean | No | Archive or unarchive the survey | #### Output [#output-33] | Parameter | Type | Description | | --------------- | ------- | ---------------------------- | | `survey` | object | Updated survey details | | ↳ `id` | string | Survey ID | | ↳ `name` | string | Survey name | | ↳ `description` | string | Survey description | | ↳ `type` | string | Survey type (popover or api) | | ↳ `questions` | array | Survey questions | | ↳ `created_at` | string | Creation timestamp | | ↳ `start_date` | string | Survey start date | | ↳ `end_date` | string | Survey end date | | ↳ `archived` | boolean | Whether survey is archived | ### PostHog Delete Survey [#posthog-delete-survey] Delete a survey from PostHog. Use this to remove expired or unused surveys. #### Input [#input-34] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `surveyId` | string | Yes | Survey ID to delete (e.g., "01234567-89ab-cdef-0123-456789abcdef") | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-34] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------- | | `status` | string | Status message indicating whether the survey was deleted successfully | ### PostHog List Session Recordings [#posthog-list-session-recordings] List session recordings in a PostHog project. Session recordings capture user interactions with your application. #### Input [#input-35] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return (default: 50, e.g., 10, 25, 50) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 50, 100) | #### Output [#output-35] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------- | | `recordings` | array | List of session recordings | | ↳ `id` | string | Recording ID | | ↳ `distinct_id` | string | User distinct ID | | ↳ `viewed` | boolean | Whether recording has been viewed | | ↳ `recording_duration` | number | Recording duration in seconds | | ↳ `active_seconds` | number | Active time in seconds | | ↳ `inactive_seconds` | number | Inactive time in seconds | | ↳ `start_time` | string | Recording start timestamp | | ↳ `end_time` | string | Recording end timestamp | | ↳ `click_count` | number | Number of clicks | | ↳ `keypress_count` | number | Number of keypresses | | ↳ `console_log_count` | number | Number of console logs | | ↳ `console_warn_count` | number | Number of console warnings | | ↳ `console_error_count` | number | Number of console errors | | ↳ `person` | object | Person information | | `count` | number | Total number of recordings | | `next` | string | URL for next page of results | | `previous` | string | URL for previous page of results | ### PostHog Get Session Recording [#posthog-get-session-recording] Get details of a specific session recording in PostHog by ID. #### Input [#input-36] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `recordingId` | string | Yes | Session recording ID to retrieve (e.g., "01234567-89ab-cdef-0123-456789abcdef") | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-36] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------- | | `recording` | object | Session recording details | | ↳ `id` | string | Recording ID | | ↳ `distinct_id` | string | User distinct ID | | ↳ `viewed` | boolean | Whether recording has been viewed | | ↳ `recording_duration` | number | Recording duration in seconds | | ↳ `active_seconds` | number | Active time in seconds | | ↳ `inactive_seconds` | number | Inactive time in seconds | | ↳ `start_time` | string | Recording start timestamp | | ↳ `end_time` | string | Recording end timestamp | | ↳ `click_count` | number | Number of clicks | | ↳ `keypress_count` | number | Number of keypresses | | ↳ `console_log_count` | number | Number of console logs | | ↳ `console_warn_count` | number | Number of console warnings | | ↳ `console_error_count` | number | Number of console errors | | ↳ `start_url` | string | Starting URL of the recording | | ↳ `person` | object | Person information | ### PostHog List Recording Playlists [#posthog-list-recording-playlists] List session recording playlists in a PostHog project. Playlists allow you to organize and curate session recordings. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | No | PostHog cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `limit` | number | No | Number of results to return (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | Number of results to skip for pagination (e.g., 0, 100, 200) | #### Output [#output-37] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------- | | `playlists` | array | List of session recording playlists | | ↳ `id` | string | Playlist ID | | ↳ `short_id` | string | Playlist short ID | | ↳ `name` | string | Playlist name | | ↳ `description` | string | Playlist description | | ↳ `created_at` | string | Creation timestamp | | ↳ `created_by` | object | Creator information | | ↳ `deleted` | boolean | Whether playlist is deleted | | ↳ `filters` | object | Playlist filters | | ↳ `last_modified_at` | string | Last modification timestamp | | ↳ `last_modified_by` | object | Last modifier information | | ↳ `derived_name` | string | Auto-generated name from filters | | `count` | number | Total number of playlists | | `next` | string | URL for next page of results | | `previous` | string | URL for previous page of results | ### PostHog List Event Definitions [#posthog-list-event-definitions] List all event definitions in a PostHog project. Event definitions represent tracked events with metadata like descriptions, tags, and usage statistics. #### Input [#input-38] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | The initial index from which to return results (e.g., 0, 100, 200) | | `search` | string | No | Search term to filter event definitions by name | #### Output [#output-38] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `count` | number | Total number of event definitions | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of event definitions | | ↳ `id` | string | Unique identifier for the event definition | | ↳ `name` | string | Event name | | ↳ `description` | string | Event description | | ↳ `tags` | array | Tags associated with the event | | ↳ `created_at` | string | ISO timestamp when the event was created | | ↳ `last_seen_at` | string | ISO timestamp when the event was last seen | | ↳ `updated_at` | string | ISO timestamp when the event was updated | | ↳ `updated_by` | object | User who last updated the event | ### PostHog Get Event Definition [#posthog-get-event-definition] Get details of a specific event definition in PostHog. Returns comprehensive information about the event including metadata, usage statistics, and verification status. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `eventDefinitionId` | string | Yes | Event Definition ID to retrieve | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `id` | string | Unique identifier for the event definition | | `name` | string | Event name | | `description` | string | Event description | | `tags` | array | Tags associated with the event | | `created_at` | string | ISO timestamp when the event was created | | `last_seen_at` | string | ISO timestamp when the event was last seen | | `updated_at` | string | ISO timestamp when the event was updated | | `updated_by` | object | User who last updated the event | | `verified` | boolean | Whether the event has been verified | | `verified_at` | string | ISO timestamp when the event was verified | | `verified_by` | string | User who verified the event | ### PostHog Update Event Definition [#posthog-update-event-definition] Update an event definition in PostHog. Can modify description, tags, and verification status to maintain clean event schemas. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `eventDefinitionId` | string | Yes | Event Definition ID to update | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `description` | string | No | Updated description for the event | | `tags` | string | No | Comma-separated list of tags to associate with the event | | `verified` | boolean | No | Whether to mark the event as verified | #### Output [#output-40] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `id` | string | Unique identifier for the event definition | | `name` | string | Event name | | `description` | string | Updated event description | | `tags` | array | Updated tags associated with the event | | `created_at` | string | ISO timestamp when the event was created | | `last_seen_at` | string | ISO timestamp when the event was last seen | | `updated_at` | string | ISO timestamp when the event was updated | | `updated_by` | object | User who last updated the event | | `verified` | boolean | Whether the event has been verified | | `verified_at` | string | ISO timestamp when the event was verified | | `verified_by` | string | User who verified the event | ### PostHog List Property Definitions [#posthog-list-property-definitions] List all property definitions in a PostHog project. Property definitions represent tracked properties with metadata like descriptions, tags, types, and usage statistics. #### Input [#input-41] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `limit` | number | No | Number of results to return per page (default: 100, e.g., 10, 50, 100) | | `offset` | number | No | The initial index from which to return results (e.g., 0, 100, 200) | | `search` | string | No | Search term to filter property definitions by name | | `type` | string | No | Filter by property type: event, person, or group | #### Output [#output-41] | Parameter | Type | Description | | ------------------------------ | ------- | ----------------------------------------------- | | `count` | number | Total number of property definitions | | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of property definitions | | ↳ `id` | string | Unique identifier for the property definition | | ↳ `name` | string | Property name | | ↳ `description` | string | Property description | | ↳ `tags` | array | Tags associated with the property | | ↳ `is_numerical` | boolean | Whether the property is numerical | | ↳ `is_seen_on_filtered_events` | boolean | Whether the property is seen on filtered events | | ↳ `property_type` | string | The data type of the property | | ↳ `type` | string | Property type: event, person, group, or session | | ↳ `created_at` | string | ISO timestamp when the property was created | | ↳ `updated_at` | string | ISO timestamp when the property was updated | | ↳ `updated_by` | object | User who last updated the property | ### PostHog Get Property Definition [#posthog-get-property-definition] Get details of a specific property definition in PostHog. Returns comprehensive information about the property including metadata, type, usage statistics, and verification status. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `propertyDefinitionId` | string | Yes | Property Definition ID to retrieve | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | #### Output [#output-42] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------- | | `id` | string | Unique identifier for the property definition | | `name` | string | Property name | | `description` | string | Property description | | `tags` | array | Tags associated with the property | | `is_numerical` | boolean | Whether the property is numerical | | `is_seen_on_filtered_events` | boolean | Whether the property is seen on filtered events | | `property_type` | string | The data type of the property | | `type` | string | Property type: event, person, group, or session | | `created_at` | string | ISO timestamp when the property was created | | `updated_at` | string | ISO timestamp when the property was updated | | `updated_by` | object | User who last updated the property | | `verified` | boolean | Whether the property has been verified | | `verified_at` | string | ISO timestamp when the property was verified | | `verified_by` | string | User who verified the property | ### PostHog Update Property Definition [#posthog-update-property-definition] Update a property definition in PostHog. Can modify description, tags, property type, and verification status to maintain clean property schemas. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | PostHog Project ID (e.g., "12345" or project UUID) | | `propertyDefinitionId` | string | Yes | Property Definition ID to update | | `region` | string | Yes | PostHog cloud region: us or eu | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | | `apiKey` | string | Yes | PostHog Personal API Key | | `description` | string | No | Updated description for the property | | `tags` | string | No | Comma-separated list of tags to associate with the property | | `verified` | boolean | No | Whether to mark the property as verified | | `property_type` | string | No | The data type of the property (e.g., String, Numeric, Boolean, DateTime, etc.) | #### Output [#output-43] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------------------------------- | | `id` | string | Unique identifier for the property definition | | `name` | string | Property name | | `description` | string | Updated property description | | `tags` | array | Updated tags associated with the property | | `is_numerical` | boolean | Whether the property is numerical | | `is_seen_on_filtered_events` | boolean | Whether the property is seen on filtered events | | `property_type` | string | The data type of the property | | `type` | string | Property type: event, person, group, or session | | `created_at` | string | ISO timestamp when the property was created | | `updated_at` | string | ISO timestamp when the property was updated | | `updated_by` | object | User who last updated the property | | `verified` | boolean | Whether the property has been verified | | `verified_at` | string | ISO timestamp when the property was verified | | `verified_by` | string | User who verified the property | ### PostHog List Projects [#posthog-list-projects] List all projects in the organization. Returns project details including IDs, names, API tokens, and settings. Useful for getting project IDs needed by other endpoints. #### Input [#input-44] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `region` | string | No | Cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-44] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------ | | `projects` | array | List of projects with their configuration and settings | | ↳ `id` | number | Project ID | | ↳ `uuid` | string | Project UUID | | ↳ `organization` | string | Organization UUID | | ↳ `api_token` | string | Project API token for ingestion | | ↳ `app_urls` | array | Allowed app URLs | | ↳ `name` | string | Project name | | ↳ `slack_incoming_webhook` | string | Slack webhook URL for notifications | | ↳ `created_at` | string | Project creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `anonymize_ips` | boolean | Whether IP anonymization is enabled | | ↳ `completed_snippet_onboarding` | boolean | Whether snippet onboarding is completed | | ↳ `ingested_event` | boolean | Whether any event has been ingested | | ↳ `test_account_filters` | array | Filters for test accounts | | ↳ `is_demo` | boolean | Whether this is a demo project | | ↳ `timezone` | string | Project timezone | | ↳ `data_attributes` | array | Custom data attributes | ### PostHog Get Project [#posthog-get-project] Get detailed information about a specific project by ID. Returns comprehensive project configuration, settings, and feature flags. #### Input [#input-45] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Project ID (e.g., "12345" or project UUID) | | `apiKey` | string | Yes | PostHog Personal API Key | | `region` | string | No | Cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-45] | Parameter | Type | Description | | ---------------------------------- | ------- | ------------------------------------------------------------ | | `project` | object | Detailed project information with all configuration settings | | ↳ `id` | number | Project ID | | ↳ `uuid` | string | Project UUID | | ↳ `organization` | string | Organization UUID | | ↳ `api_token` | string | Project API token for ingestion | | ↳ `app_urls` | array | Allowed app URLs | | ↳ `name` | string | Project name | | ↳ `slack_incoming_webhook` | string | Slack webhook URL for notifications | | ↳ `created_at` | string | Project creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `anonymize_ips` | boolean | Whether IP anonymization is enabled | | ↳ `completed_snippet_onboarding` | boolean | Whether snippet onboarding is completed | | ↳ `ingested_event` | boolean | Whether any event has been ingested | | ↳ `test_account_filters` | array | Filters for test accounts | | ↳ `is_demo` | boolean | Whether this is a demo project | | ↳ `timezone` | string | Project timezone | | ↳ `data_attributes` | array | Custom data attributes | | ↳ `person_display_name_properties` | array | Properties used for person display names | | ↳ `correlation_config` | object | Configuration for correlation analysis | | ↳ `autocapture_opt_out` | boolean | Whether autocapture is disabled | | ↳ `autocapture_exceptions_opt_in` | boolean | Whether exception autocapture is enabled | | ↳ `session_recording_opt_in` | boolean | Whether session recording is enabled | | ↳ `capture_console_log_opt_in` | boolean | Whether console log capture is enabled | | ↳ `capture_performance_opt_in` | boolean | Whether performance capture is enabled | ### PostHog List Organizations [#posthog-list-organizations] List all organizations the user has access to. Returns organization details including name, slug, membership level, and available product features. #### Input [#input-46] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | PostHog Personal API Key | | `region` | string | No | Cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-46] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------------------ | | `organizations` | array | List of organizations with their settings and features | | ↳ `id` | string | Organization ID (UUID) | | ↳ `name` | string | Organization name | | ↳ `slug` | string | Organization slug | | ↳ `created_at` | string | Organization creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `membership_level` | number | User membership level in organization | | ↳ `plugins_access_level` | number | Access level for plugins/apps | | ↳ `teams` | array | List of team IDs in this organization | | ↳ `available_product_features` | array | Available product features and their limits | ### PostHog Get Organization [#posthog-get-organization] Get detailed information about a specific organization by ID. Returns comprehensive organization settings, features, usage, and team information. #### Input [#input-47] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | `organizationId` | string | Yes | Organization ID (e.g., "01234567-89ab-cdef-0123-456789abcdef") | | `apiKey` | string | Yes | PostHog Personal API Key | | `region` | string | No | Cloud region: us or eu (default: us) | | `host` | string | No | Self-hosted PostHog instance host (e.g., "posthog.mycompany.com"). Overrides the region setting when provided. | #### Output [#output-47] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------------- | | `organization` | object | Detailed organization information with settings and features | | ↳ `id` | string | Organization ID (UUID) | | ↳ `name` | string | Organization name | | ↳ `slug` | string | Organization slug | | ↳ `created_at` | string | Organization creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `membership_level` | number | User membership level in organization | | ↳ `plugins_access_level` | number | Access level for plugins/apps | | ↳ `teams` | array | List of team IDs in this organization | | ↳ `available_product_features` | array | Available product features with their limits and descriptions | | ↳ `domain_whitelist` | array | Whitelisted domains for organization | | ↳ `is_member_join_email_enabled` | boolean | Whether member join emails are enabled | | ↳ `metadata` | object | Organization metadata | | ↳ `customer_id` | string | Customer ID for billing | | ↳ `available_features` | array | List of available feature flags for organization | | ↳ `usage` | object | Organization usage statistics | --- # Power BI (/integrations/powerbi) ## Usage Instructions [#usage-instructions] Connect a home-tenant organizational account through the Power BI Microsoft connection to list named workspaces, inspect reports and semantic models, execute DAX queries, request standard refreshes, and read refresh history. Microsoft Graph connections cannot substitute for this delegated OAuth connection. Self-hosted installations use the shared Microsoft app registration and register /api/auth/oauth2/callback/microsoft-powerbi as a Web redirect URI. Workspace listing supports a result limit, offset, and OData filter; reports and semantic models return flat lists. Read-only models may contain only their ID and name, and paginated reports may omit their semantic-model ID. Missing optional fields are null and do not establish permission or feature availability. Keep results small with summaries or TOPN: provider JSON reads are limited to 20 MiB, and workflow tool responses have a stricter 10 MiB inline budget. My Workspace, cross-tenant guest configuration, Credential Groups, service principals, impersonation, enhanced refresh, report exports, dashboards, and triggers are outside this version. ## Actions [#actions] ### Power BI List Workspaces [#power-bi-list-workspaces] List accessible Power BI workspaces with optional OData filtering and pagination. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `top` | number | No | Maximum number of workspaces to return | | `skip` | number | No | Number of workspaces to skip | | `filter` | string | No | OData filter, for example contains(name,'Sales') | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------- | | `workspaces` | array | Accessible workspaces returned by this request | | ↳ `id` | string | Workspace ID | | ↳ `name` | string | Workspace name | | `workspaceCount` | number | Number of workspaces returned by this request | ### Power BI List Reports [#power-bi-list-reports] List reports in a Power BI workspace, including paginated reports. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `groupId` | string | Yes | Power BI workspace ID | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | -------------------------- | | `reports` | array | Reports in the workspace | | ↳ `id` | string | Report ID | | ↳ `name` | string | Report name | | `reportCount` | number | Number of reports returned | ### Power BI Get Report [#power-bi-get-report] Get report metadata from a Power BI workspace. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------- | | `groupId` | string | Yes | Power BI workspace ID | | `reportId` | string | Yes | Power BI report ID | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `report` | object | Report metadata; unavailable fields are null | | ↳ `id` | string | Report ID | | ↳ `name` | string | Report name | ### Power BI List Semantic Models [#power-bi-list-semantic-models] List semantic models in a Power BI workspace; available metadata depends on permissions. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `groupId` | string | Yes | Power BI workspace ID | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------- | | `datasets` | array | Semantic models in the workspace | | ↳ `id` | string | Semantic model ID | | ↳ `name` | string | Semantic model name | | `datasetCount` | number | Number of semantic models returned | ### Power BI Get Semantic Model [#power-bi-get-semantic-model] Get semantic model metadata from a Power BI workspace. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------- | | `groupId` | string | Yes | Power BI workspace ID | | `datasetId` | string | Yes | Power BI semantic model ID (dataset ID in the REST API) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------- | | `dataset` | object | Semantic model metadata; unavailable fields are null | | ↳ `id` | string | Semantic model ID | | ↳ `name` | string | Semantic model name | ### Power BI Execute DAX Query [#power-bi-execute-dax-query] Execute one DAX query returning one table. Requires workspace access, Read/Build permissions, and the tenant Execute Queries setting. Reported errors fail the action even with HTTP 200. Direct tool responses retain partial rows and typed errors; failed workflows expose only the standard error output. Agent Serve limits workflow tool responses to 10 MiB; use summaries or TOPN for larger results. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `groupId` | string | Yes | Power BI workspace ID | | `datasetId` | string | Yes | Power BI semantic model ID (dataset ID in the REST API) | | `query` | string | Yes | One DAX query returning one table, for example EVALUATE TOPN(10, Sales). Power BI caps each query at 100,000 rows or 1,000,000 values, 15 MB of data, and 120 requests per minute per user. Agent Serve applies a stricter 10 MiB workflow tool-response budget. Dynamic column names are preserved; successful queries expose the declared outputs. Connect the error port to handle the standard error when a query fails; failed workflow outputs omit partial rows, errors, and incomplete. | | `includeNulls` | boolean | No | Include blank values in returned rows; defaults to true | #### Output [#output-5] | Parameter | Type | Description | | ---------------------------- | ------- | --------------------------------------------------------------------------------------------- | | `rows` | array | Returned query rows, preserving provider column keys | | `rowCount` | number | Number of rows returned | | `errors` | array | Errors reported at response, query, or table scope | | ↳ `scope` | string | Error scope: response, query, or table | | ↳ `details` | json | Dynamic nested provider error details, when supplied | | `incomplete` | boolean | Whether the provider reported an embedded error; false does not guarantee an unlimited result | | `informationProtectionLabel` | object | Information protection label, when supplied | ### Power BI Refresh Semantic Model [#power-bi-refresh-semantic-model] Request a standard asynchronous semantic model refresh and return acceptance immediately. Acceptance does not mean completion; use Get Refresh History separately to inspect status. Shared capacity allows eight refresh requests per day, including scheduled refreshes. #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `groupId` | string | Yes | Power BI workspace ID | | `datasetId` | string | Yes | Power BI semantic model ID (dataset ID in the REST API) | | `notifyOption` | string | No | NoNotification, MailOnFailure, or MailOnCompletion; defaults to NoNotification | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------------------------------------- | | `accepted` | boolean | Whether Power BI accepted the refresh request; does not indicate completion | | `requestId` | string | Provider x-ms-request-id header, when supplied | | `location` | string | Provider Location header, when supplied | ### Power BI Get Refresh History [#power-bi-get-refresh-history] Get recent semantic model refresh history; requires Write permission on the model. Unknown can mean a refresh is in progress or its completion state is unknown. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------- | | `groupId` | string | Yes | Power BI workspace ID | | `datasetId` | string | Yes | Power BI semantic model ID (dataset ID in the REST API) | | `top` | number | No | Requested number of entries; defaults to the last available 60 | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `refreshes` | array | Recent refresh entries returned by Power BI | | ↳ `refreshAttempts` | array | Refresh attempts supplied by the provider | | ↳ `attemptId` | number | Refresh attempt index | | `refreshCount` | number | Number of refresh entries returned | --- # Profound (/integrations/profound) {/* MANUAL-CONTENT-START:intro */} [Profound](https://tryprofound.com/) is an AI visibility and analytics platform that helps brands understand how they appear across AI-powered search engines, chatbots, and assistants. It tracks mentions, citations, sentiment, bot traffic, and referral patterns across platforms like ChatGPT, Perplexity, Google AI Overviews, and more. With the Profound integration in Agent Serve, you can: * **Monitor AI Visibility**: Track share of voice, visibility scores, and mention counts across AI platforms for your brand and competitors. * **Analyze Sentiment**: Measure how positively or negatively your brand is discussed in AI-generated responses. * **Track Citations**: See which URLs are being cited by AI models and your citation share relative to competitors. * **Monitor Bot Traffic**: Analyze AI crawler activity on your domain, including GPTBot, ClaudeBot, and other AI agents, with hourly granularity. * **Track Referral Traffic**: Monitor human visits arriving from AI platforms to your website. * **Explore Prompt Data**: Access raw prompt-answer pairs, query fanouts, and prompt volume trends across AI platforms. * **Optimize Content**: Get AEO (Answer Engine Optimization) scores and actionable recommendations to improve how AI models reference your content. * **Manage Categories & Assets**: List and explore your tracked categories, assets (brands), topics, tags, personas, and regions. These tools let your agents automate AI visibility monitoring, competitive intelligence, and content optimization workflows. To use the Profound integration, you'll need a Profound account with API access. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Track how your brand appears across AI platforms. Monitor visibility scores, sentiment, citations, bot traffic, referrals, content optimization, and prompt volumes with Profound. ## Actions [#actions] ### Profound List Categories [#profound-list-categories] List all organization categories in Profound #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | ------------------------------- | | `categories` | json | List of organization categories | | ↳ `id` | string | Category ID | | ↳ `name` | string | Category name | ### Profound List Regions [#profound-list-regions] List all organization regions in Profound #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `regions` | json | List of organization regions | | ↳ `id` | string | Region ID (UUID) | | ↳ `name` | string | Region name | ### Profound List Models [#profound-list-models] List all AI models/platforms tracked in Profound #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `models` | json | List of AI models/platforms | | ↳ `id` | string | Model ID (UUID) | | ↳ `name` | string | Model/platform name | ### Profound List Domains [#profound-list-domains] List all organization domains in Profound #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | ---------------------------- | | `domains` | json | List of organization domains | | ↳ `id` | string | Domain ID (UUID) | | ↳ `name` | string | Domain name | | ↳ `createdAt` | string | When the domain was added | ### Profound List Assets [#profound-list-assets] List all organization assets (companies/brands) across all categories in Profound #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `assets` | json | List of organization assets with category info | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset/company name | | ↳ `website` | string | Asset website URL | | ↳ `alternateDomains` | json | Alternate domain names | | ↳ `isOwned` | boolean | Whether this asset is owned by the organization | | ↳ `createdAt` | string | When the asset was created | | ↳ `logoUrl` | string | URL of the asset logo | | ↳ `categoryId` | string | Category ID the asset belongs to | | ↳ `categoryName` | string | Category name | ### Profound List Personas [#profound-list-personas] List all organization personas across all categories in Profound #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Profound API Key | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------------------- | | `personas` | json | List of organization personas with profile details | | ↳ `id` | string | Persona ID | | ↳ `name` | string | Persona name | | ↳ `categoryId` | string | Category ID | | ↳ `categoryName` | string | Category name | | ↳ `persona` | json | Persona profile with behavior, employment, and demographics | ### Profound Category Topics [#profound-category-topics] List topics for a specific category in Profound #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------------ | | `topics` | json | List of topics in the category | | ↳ `id` | string | Topic ID (UUID) | | ↳ `name` | string | Topic name | ### Profound Category Tags [#profound-category-tags] List tags for a specific category in Profound #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `tags` | json | List of tags in the category | | ↳ `id` | string | Tag ID (UUID) | | ↳ `name` | string | Tag name | ### Profound Category Prompts [#profound-category-prompts] List prompts for a specific category in Profound #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `limit` | number | No | Maximum number of results (default 10000, max 10000) | | `cursor` | string | No | Pagination cursor from previous response | | `orderDir` | string | No | Sort direction: asc or desc (default desc) | | `promptType` | string | No | Comma-separated prompt types to filter: visibility, sentiment | | `topicId` | string | No | Comma-separated topic IDs (UUIDs) to filter by | | `tagId` | string | No | Comma-separated tag IDs (UUIDs) to filter by | | `regionId` | string | No | Comma-separated region IDs (UUIDs) to filter by | | `platformId` | string | No | Comma-separated platform IDs (UUIDs) to filter by | #### Output [#output-8] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------- | | `totalRows` | number | Total number of prompts | | `nextCursor` | string | Cursor for next page of results | | `prompts` | json | List of prompts | | ↳ `id` | string | Prompt ID | | ↳ `prompt` | string | Prompt text | | ↳ `promptType` | string | Prompt type (visibility or sentiment) | | ↳ `topicId` | string | Topic ID | | ↳ `topicName` | string | Topic name | | ↳ `tags` | json | Associated tags | | ↳ `regions` | json | Associated regions | | ↳ `platforms` | json | Associated platforms | | ↳ `createdAt` | string | When the prompt was created | ### Profound Category Assets [#profound-category-assets] List assets (companies/brands) for a specific category in Profound #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------- | | `assets` | json | List of assets in the category | | ↳ `id` | string | Asset ID | | ↳ `name` | string | Asset/company name | | ↳ `website` | string | Website URL | | ↳ `alternateDomains` | json | Alternate domain names | | ↳ `isOwned` | boolean | Whether the asset is owned by the organization | | ↳ `createdAt` | string | When the asset was created | | ↳ `logoUrl` | string | URL of the asset logo | ### Profound Category Personas [#profound-category-personas] List personas for a specific category in Profound #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `personas` | json | List of personas in the category | | ↳ `id` | string | Persona ID | | ↳ `name` | string | Persona name | | ↳ `persona` | json | Persona profile with behavior, employment, and demographics | ### Profound Visibility Report [#profound-visibility-report] Query AI visibility report for a category in Profound #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `metrics` | string | Yes | Comma-separated metrics: share\_of\_voice, mentions\_count, visibility\_score, executions, average\_position | | `dimensions` | string | No | Comma-separated dimensions: date, region, topic, model, asset\_name, prompt, tag, persona | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"asset\_name","operator":"is","value":"Company"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Sentiment Report [#profound-sentiment-report] Query sentiment report for a category in Profound #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `metrics` | string | Yes | Comma-separated metrics: positive, negative, occurrences | | `dimensions` | string | No | Comma-separated dimensions: theme, date, region, topic, model, asset\_name, tag, prompt, sentiment\_type, persona | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"asset\_name","operator":"is","value":"Company"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Citations Report [#profound-citations-report] Query citations report for a category in Profound #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `metrics` | string | Yes | Comma-separated metrics: count, citation\_share | | `dimensions` | string | No | Comma-separated dimensions: hostname, path, date, region, topic, model, tag, prompt, url, root\_domain, persona, citation\_category | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"hostname","operator":"is","value":"example.com"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Query Fanouts [#profound-query-fanouts] Query fanout report showing how AI models expand prompts into sub-queries in Profound #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `metrics` | string | Yes | Comma-separated metrics: fanouts\_per\_execution, total\_fanouts, share | | `dimensions` | string | No | Comma-separated dimensions: prompt, query, model, region, date | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Prompt Answers [#profound-prompt-answers] Get raw prompt answers data for a category in Profound #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `categoryId` | string | Yes | Category ID (UUID) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"prompt\_type","operator":"is","value":"visibility"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-15] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------ | | `totalRows` | number | Total number of answer rows | | `data` | json | Raw prompt answer data | | ↳ `prompt` | string | The prompt text | | ↳ `promptType` | string | Prompt type (visibility or sentiment) | | ↳ `response` | string | AI model response text | | ↳ `mentions` | json | Companies/assets mentioned in the response | | ↳ `citations` | json | URLs cited in the response | | ↳ `topic` | string | Topic name | | ↳ `region` | string | Region name | | ↳ `model` | string | AI model/platform name | | ↳ `asset` | string | Asset name | | ↳ `createdAt` | string | Timestamp when the answer was collected | ### Profound Bots Report [#profound-bots-report] Query bot traffic report with hourly granularity for a domain in Profound #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `domain` | string | Yes | Domain to query bot traffic for (e.g. example.com) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | No | End date (YYYY-MM-DD or ISO 8601). Defaults to now | | `metrics` | string | Yes | Comma-separated metrics: count, citations, indexing, training, last\_visit | | `dimensions` | string | No | Comma-separated dimensions: date, hour, path, bot\_name, bot\_provider, bot\_type | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"bot\_name","operator":"is","value":"GPTBot"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-16] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Referrals Report [#profound-referrals-report] Query human referral traffic report with hourly granularity for a domain in Profound #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `domain` | string | Yes | Domain to query referral traffic for (e.g. example.com) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | No | End date (YYYY-MM-DD or ISO 8601). Defaults to now | | `metrics` | string | Yes | Comma-separated metrics: visits, last\_visit | | `dimensions` | string | No | Comma-separated dimensions: date, hour, path, referral\_source, referral\_type | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"referral\_source","operator":"is","value":"openai"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-17] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Report data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Raw Logs [#profound-raw-logs] Get raw traffic logs with filters for a domain in Profound #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `domain` | string | Yes | Domain to query logs for (e.g. example.com) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | No | End date (YYYY-MM-DD or ISO 8601). Defaults to now | | `dimensions` | string | No | Comma-separated dimensions: timestamp, method, host, path, status\_code, ip, user\_agent, referer, bytes\_sent, duration\_ms, query\_params | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"path","operator":"contains","value":"/blog"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-18] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of log entries | | `data` | json | Log data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values (count) | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Bot Logs [#profound-bot-logs] Get identified bot visit logs with filters for a domain in Profound #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `domain` | string | Yes | Domain to query bot logs for (e.g. example.com) | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | No | End date (YYYY-MM-DD or ISO 8601). Defaults to now | | `dimensions` | string | No | Comma-separated dimensions: timestamp, method, host, path, status\_code, ip, user\_agent, referer, bytes\_sent, duration\_ms, query\_params, bot\_name, bot\_provider, bot\_types | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"bot\_name","operator":"is","value":"GPTBot"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-19] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of bot log entries | | `data` | json | Bot log data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values (count) | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound List Optimizations [#profound-list-optimizations] List content optimization entries for an asset in Profound #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `assetId` | string | Yes | Asset ID (UUID) | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | | `offset` | number | No | Offset for pagination (default 0) | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------ | | `totalRows` | number | Total number of optimization entries | | `optimizations` | json | List of content optimization entries | | ↳ `id` | string | Optimization ID (UUID) | | ↳ `title` | string | Content title | | ↳ `createdAt` | string | When the optimization was created | | ↳ `extractedInput` | string | Extracted input text | | ↳ `type` | string | Content type: file, text, or url | | ↳ `status` | string | Optimization status | ### Profound Optimization Analysis [#profound-optimization-analysis] Get detailed content optimization analysis for a specific content item in Profound #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Profound API Key | | `assetId` | string | Yes | Asset ID (UUID) | | `contentId` | string | Yes | Content/optimization ID (UUID) | #### Output [#output-21] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------- | | `content` | json | The analyzed content | | ↳ `format` | string | Content format: markdown or html | | ↳ `value` | string | Content text | | `aeoContentScore` | json | AEO content score with target zone | | ↳ `value` | number | AEO score value | | ↳ `targetZone` | json | Target zone range | | ↳ `low` | number | Low end of target range | | ↳ `high` | number | High end of target range | | `analysis` | json | Analysis breakdown by category | | ↳ `breakdown` | json | Array of scoring breakdowns | | ↳ `title` | string | Category title | | ↳ `weight` | number | Category weight | | ↳ `score` | number | Category score | | `recommendations` | json | Content optimization recommendations | | ↳ `title` | string | Recommendation title | | ↳ `status` | string | Status: done or pending | | ↳ `impact` | json | Impact details with section and score | | ↳ `suggestion` | json | Suggestion text and rationale | | ↳ `text` | string | Suggestion text | | ↳ `rationale` | string | Why this recommendation matters | ### Profound Prompt Volume [#profound-prompt-volume] Query prompt volume data to understand search demand across AI platforms in Profound #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `startDate` | string | Yes | Start date (YYYY-MM-DD or ISO 8601) | | `endDate` | string | Yes | End date (YYYY-MM-DD or ISO 8601) | | `metrics` | string | Yes | Comma-separated metrics: volume, change | | `dimensions` | string | No | Comma-separated dimensions: keyword, date, platform, country\_code, matching\_type, frequency | | `dateInterval` | string | No | Date interval: hour, day, week, month, year | | `filters` | string | No | JSON array of filter objects, e.g. \[\{"field":"keyword","operator":"contains","value":"best"}] | | `limit` | number | No | Maximum number of results (default 10000, max 50000) | #### Output [#output-22] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `totalRows` | number | Total number of rows in the report | | `data` | json | Volume data rows with metrics and dimension values | | ↳ `metrics` | json | Array of metric values matching requested metrics order | | ↳ `dimensions` | json | Array of dimension values matching requested dimensions order | ### Profound Citation Prompts [#profound-citation-prompts] Get prompts that cite a specific domain across AI platforms in Profound #### Input [#input-23] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | Profound API Key | | `inputDomain` | string | Yes | Domain to look up citations for (e.g. ramp.com) | #### Output [#output-23] | Parameter | Type | Description | | --------- | ---- | ------------------------------------------- | | `data` | json | Citation prompt data for the queried domain | --- # Prospeo (/integrations/prospeo) {/* MANUAL-CONTENT-START:intro */} Use [Prospeo](https://prospeo.io/) to search and enrich people and companies, including bulk enrichment. Search Suggestions supplies filter values such as locations and job titles; Account Information reports credit usage and plan status. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Find verified work emails and mobile numbers, enrich person and company profiles, and search a B2B database of leads and companies using 20+ filters. ## Actions [#actions] ### Prospeo Account Information [#prospeo-account-information] Retrieve the current plan, remaining credits, and renewal date of your Prospeo account. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------- | | `apiKey` | string | Yes | Prospeo API key | #### Output [#output] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------------- | | `current_plan` | string | Current Prospeo plan name | | `current_team_members` | number | Number of team members in your team | | `remaining_credits` | number | Number of credits remaining | | `used_credits` | number | Number of credits already used | | `next_quota_renewal_days` | number | Days until the next quota renewal | | `next_quota_renewal_date` | string | Date and time of the next quota renewal | ### Prospeo Enrich Person [#prospeo-enrich-person] Enrich a person with complete B2B profile data, email address and mobile. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `first_name` | string | No | First name of the person | | `last_name` | string | No | Last name of the person | | `full_name` | string | No | Full name of the person (alternative to first\_name + last\_name) | | `linkedin_url` | string | No | Person's public LinkedIn URL | | `email` | string | No | Work email of the person | | `company_name` | string | No | Company name | | `company_website` | string | No | Company website | | `company_linkedin_url` | string | No | Company's public LinkedIn URL | | `person_id` | string | No | Prospeo person\_id from a previous Search Person response | | `only_verified_email` | boolean | No | Only return records with a verified email | | `enrich_mobile` | boolean | No | Reveal mobile number (10 credits per match; email included) | | `only_verified_mobile` | boolean | No | Only return records that have a mobile (implies enrich\_mobile) | #### Output [#output-1] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `free_enrichment` | boolean | True if this enrichment was free (already enriched in the past) | | `person` | json | The matched person object including person\_id, name, linkedin\_url, current\_job\_title, job\_history, mobile, email, location, and skills | | `company` | json | The current company of the matched person including name, website, domain, industry, employee\_count, location, social URLs, funding, and technology | ### Prospeo Enrich Company [#prospeo-enrich-company] Enrich a company with complete B2B data. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `company_website` | string | No | Company website (e.g., "intercom.com") | | `company_linkedin_url` | string | No | Company's public LinkedIn URL | | `company_name` | string | No | Company name (use combined with website for best accuracy) | | `company_id` | string | No | Prospeo company\_id from a previously enriched company | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `free_enrichment` | boolean | True if this enrichment was free (already enriched in the past) | | `company` | json | The matched company object including name, website, domain, industry, employee\_count, location, social URLs, funding, and technology | ### Prospeo Bulk Enrich Person [#prospeo-bulk-enrich-person] Enrich up to 50 person records at once. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `data` | json | Yes | Array of up to 50 person records to enrich. Each must include an "identifier" plus one of: linkedin\_url, email, person\_id, or (first\_name + last\_name + company\_*), or (full\_name + company\_*). | | `only_verified_email` | boolean | No | Only return records with a verified email | | `enrich_mobile` | boolean | No | Reveal mobile numbers (10 credits per match; email included) | | `only_verified_mobile` | boolean | No | Only return records that have a mobile (implies enrich\_mobile) | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------- | | `total_cost` | number | Total credits spent by the request | | `matched` | array | Matched records (identifier, person, company) | | ↳ `identifier` | string | The identifier you submitted for this record | | ↳ `person` | json | The matched person object | | ↳ `company` | json | The current company of the matched person | | `not_matched` | array | Identifiers of records we could not match given the filters | | `invalid_datapoints` | array | Identifiers of records that did not meet the minimum matching requirements | ### Prospeo Bulk Enrich Company [#prospeo-bulk-enrich-company] Enrich up to 50 company records at once. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `data` | json | Yes | Array of up to 50 company records to enrich. Each must include an "identifier" plus one of: company\_website, company\_linkedin\_url, company\_name, or company\_id. | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------------------------- | | `total_cost` | number | Total credits spent by the request | | `matched` | array | Matched company records (identifier, company) | | ↳ `identifier` | string | The identifier you submitted for this record | | ↳ `company` | json | The matched company object | | `not_matched` | array | Identifiers of records we could not match | | `invalid_datapoints` | array | Identifiers of records that did not meet the minimum matching requirements | ### Prospeo Search Person [#prospeo-search-person] Search for leads using 20+ filters to build targeted contact lists. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `filters` | json | Yes | Filter configuration object. See [https://prospeo.io/api-docs/filters-documentation](https://prospeo.io/api-docs/filters-documentation) for all supported filters (e.g., person\_seniority, company\_industry, person\_location). | | `page` | number | No | Page number (defaults to 1). Up to 1000 pages of 25 results. | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------------- | | `pagination` | object | Pagination details | | ↳ `current_page` | number | Current page number | | ↳ `per_page` | number | Results per page | | ↳ `total_page` | number | Total number of pages | | ↳ `total_count` | number | Total number of matching records | | `free` | boolean | True if the request was free due to 30-day result-set deduplication | | `results` | array | Up to 25 search results (person + company, no email/mobile) | | ↳ `person` | json | Matched person (no email/mobile in search response) | | ↳ `company` | json | Current company of the person | ### Prospeo Search Company [#prospeo-search-company] Search for companies using 20+ filters to build account lists. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `filters` | json | Yes | Filter configuration object. See [https://prospeo.io/api-docs/filters-documentation](https://prospeo.io/api-docs/filters-documentation) for all supported filters (e.g., company\_industry, company\_headcount\_range, company\_funding). | | `page` | number | No | Page number (defaults to 1). Up to 1000 pages of 25 results. | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------------------------- | | `pagination` | object | Pagination details | | ↳ `current_page` | number | Current page number | | ↳ `per_page` | number | Results per page | | ↳ `total_page` | number | Total number of pages | | ↳ `total_count` | number | Total number of matching records | | `free` | boolean | True if the request was free due to 30-day result-set deduplication | | `results` | array | Up to 25 matching companies | | ↳ `company` | json | Matched company object | ### Prospeo Search Suggestions [#prospeo-search-suggestions] Free endpoint to retrieve valid location or job title values for use in Search filters. Provide exactly one of location\_search or job\_title\_search. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Prospeo API key | | `location_search` | string | No | Search query for location suggestions (minimum 2 characters). Mutually exclusive with job\_title\_search. | | `job_title_search` | string | No | Search query for job title suggestions (minimum 2 characters). Mutually exclusive with location\_search. | #### Output [#output-7] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------- | | `location_suggestions` | array | Location suggestions when using location\_search (empty when searching job titles) | | ↳ `name` | string | Formatted location name to use in filters | | ↳ `type` | string | Location type (COUNTRY, STATE, CITY, or ZONE) | | `job_title_suggestions` | array | Up to 25 job title suggestions ordered by popularity when using job\_title\_search (empty when searching locations) | --- # Pulse (/integrations/pulse) {/* MANUAL-CONTENT-START:intro */} The [Pulse](https://www.runpulse.com) tool enables seamless extraction of text and structured content from a wide variety of documents—including PDFs, images, and Office files—using state-of-the-art OCR (Optical Character Recognition) powered by Pulse. Designed for automated agentic workflows, Pulse Parser makes it easy to unlock valuable information trapped in unstructured documents and integrate the extracted content directly into your workflow. With Pulse, you can: * **Extract text from documents**: Quickly convert scanned PDFs, images, and Office documents to usable text, markdown, or JSON. * **Process documents by URL or upload**: Simply provide a file URL or use upload to extract text from local documents or remote resources. * **Flexible output formats**: Choose between markdown, plain text, or JSON representations of the extracted content for downstream processing. * **Selective page processing**: Specify a range of pages to process, reducing processing time and cost when you only need part of a document. * **Figure and table extraction**: Optionally extract figures and tables, with automatic caption and description generation for populated context. * **Get processing insights**: Receive detailed metadata on each job, including file type, page count, processing time, and more. * **Integration-ready responses**: Incorporate extracted content into research, workflow automation, or data analysis pipelines. Ideal for automating tedious document review, enabling content summarization, research, and more, Pulse Parser brings real-world documents into the digital workflow era. If you need accurate, scalable, and developer-friendly document parsing capabilities—across formats, languages, and layouts—Pulse empowers your agents to read the world. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Pulse into the workflow. Extract text from PDF documents, images, and Office files via upload or file references. ## Actions [#actions] ### Pulse Document Parser [#pulse-document-parser] Parse documents (PDF, images, Office docs) using Pulse OCR API #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------ | | `file` | file | Yes | Document to be processed | | `pages` | string | No | Page range to process (1-indexed, e.g., "1-2,5") | | `chunking` | string | No | Chunking strategies (comma-separated: semantic, header, page, recursive) | | `chunkSize` | number | No | Maximum characters per chunk when chunking is enabled | | `apiKey` | string | Yes | Pulse API key | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------------------------------- | | `markdown` | string | Extracted content in markdown format | | `page_count` | number | Number of pages in the document | | `job_id` | string | Unique job identifier | | `bounding_boxes` | json | Bounding box layout information | | `extraction_url` | string | URL for extraction results (for large documents) | | `html` | string | HTML content; returned only when the hidden returnHtml input is enabled | | `structured_output` | json | Structured output; Agent Serve exposes no input for supplying a schema, so this is always null | | `chunks` | json | Chunked content if chunking was enabled | | `figures` | json | Extracted figures; returned only when the hidden extractFigure input is enabled | --- # Qdrant (/integrations/qdrant) {/* MANUAL-CONTENT-START:intro */} Use [Qdrant](https://qdrant.tech) in Agent Serve to upsert points, search for similar vectors with optional payload filters, and fetch points by ID. Points contain vectors and associated payload data; fetch and search options control which fields are returned. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Qdrant into the workflow. Can upsert, search, and fetch points. ## Actions [#actions] ### Qdrant Upsert Points [#qdrant-upsert-points] Insert or update points in a Qdrant collection #### Input [#input] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `url` | string | Yes | Qdrant instance URL (e.g., [https://your-cluster.qdrant.io](https://your-cluster.qdrant.io)) | | `apiKey` | string | No | Qdrant API key for authentication | | `collection` | string | Yes | Collection name for upsert (e.g., "my\_collection") | | `points` | array | Yes | Array of points to upsert | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `status` | string | Operation status (ok, error) | | `data` | object | Result data from the upsert operation | | ↳ `operation_id` | number | Operation ID for async tracking | | ↳ `status` | string | Operation status (acknowledged, completed) | ### Qdrant Search Vector [#qdrant-search-vector] Search for similar vectors in a Qdrant collection #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------------------------- | | `url` | string | Yes | Qdrant instance URL (e.g., [https://your-cluster.qdrant.io](https://your-cluster.qdrant.io)) | | `apiKey` | string | No | Qdrant API key for authentication | | `collection` | string | Yes | Collection name to search (e.g., "my\_collection") | | `vector` | array | Yes | Query vector for similarity search (e.g., \[0.1, 0.2, 0.3, ...]) | | `limit` | number | No | Maximum number of results to return (e.g., 10) | | `filter` | object | No | Qdrant filter object (e.g., \{"must": \[\{"key": "field", "match": \{"value": "val"}}]}) | | `search_return_data` | string | No | Data to return from search | | `with_payload` | boolean | No | Include payload in response | | `with_vector` | boolean | No | Include vector in response | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------- | | `status` | string | Operation status (ok, error) | | `data` | array | Vector search results with ID, score, payload, and optional vector data | | ↳ `id` | string | Point ID (integer or UUID string) | | ↳ `version` | number | Point version number | | ↳ `score` | number | Similarity score | | ↳ `payload` | json | Point payload data (key-value pairs) | | ↳ `vector` | json | Point vector(s) - single array or named vectors object | | ↳ `shard_key` | string | Shard key for routing | | ↳ `order_value` | number | Order value for sorting | ### Qdrant Fetch Points [#qdrant-fetch-points] Fetch points by ID from a Qdrant collection #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------- | | `url` | string | Yes | Qdrant instance URL (e.g., [https://your-cluster.qdrant.io](https://your-cluster.qdrant.io)) | | `apiKey` | string | No | Qdrant API key for authentication | | `collection` | string | Yes | Collection name to fetch from (e.g., "my\_collection") | | `ids` | array | Yes | Array of point IDs to fetch (e.g., \["id1", "id2"] or \[1, 2]) | | `fetch_return_data` | string | No | Data to return from fetch | | `with_payload` | boolean | No | Include payload in response | | `with_vector` | boolean | No | Include vector in response | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------- | | `status` | string | Operation status (ok, error) | | `data` | array | Fetched points with ID, payload, and optional vector data | | ↳ `id` | string | Point ID (integer or UUID string) | | ↳ `payload` | json | Point payload data (key-value pairs) | | ↳ `vector` | json | Point vector(s) - single array or named vectors object | | ↳ `shard_key` | string | Shard key for routing | | ↳ `order_value` | number | Order value for sorting | --- # Quartr (/integrations/quartr) {/* MANUAL-CONTENT-START:intro */} Use [Quartr](https://quartr.com/) to look up companies and corporate events, retrieve event summaries, and access reports, slide decks, transcripts, and audio. Downloaded reports, slide decks, and transcripts are stored as execution files, so they can be passed straight into agents, knowledge bases, or other blocks in your workflow. To use the integration, generate an API key from the Quartr API portal and paste it into the block. Your key inherits the datasets enabled on your Quartr subscription. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Quartr into the workflow. Look up public companies, corporate events, and event types; fetch AI-generated event summaries; list and download filings, reports, slide decks, and transcripts; and access archived audio and live event streams. Requires API Key. ## Actions [#actions] ### Quartr List Companies [#quartr-list-companies] List companies covered by Quartr, filterable by ticker, ISIN, CIK, OpenFIGI, country, and exchange. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `openfigis` | string | No | Comma-separated list of OpenFIGI codes (figi, compositeFigi, or shareClassFigi) | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------------------- | | `companies` | array | Companies matching the filters | | ↳ `id` | number | Quartr company ID | | ↳ `name` | string | Legal company name | | ↳ `displayName` | string | Display name | | ↳ `country` | string | ISO 3166-1 alpha-2 country code | | ↳ `tickers` | array | Ticker listings for the company | | ↳ `ticker` | string | Ticker symbol | | ↳ `exchange` | string | Exchange symbol | | ↳ `isins` | array | ISINs for the company | | ↳ `cik` | string | SEC Central Index Key | | ↳ `openfigi` | array | OpenFIGI share class identifiers | | ↳ `backlinkUrl` | string | Quartr backlink URL for the company | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Company [#quartr-get-company] Retrieve a single company from Quartr by its company ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Quartr API key | | `companyId` | number | Yes | Quartr company ID (e.g., 4742) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `company` | object | The requested company | | ↳ `id` | number | Quartr company ID | | ↳ `name` | string | Legal company name | | ↳ `displayName` | string | Display name | | ↳ `country` | string | ISO 3166-1 alpha-2 country code | | ↳ `tickers` | array | Ticker listings for the company | | ↳ `ticker` | string | Ticker symbol | | ↳ `exchange` | string | Exchange symbol | | ↳ `isins` | array | ISINs for the company | | ↳ `cik` | string | SEC Central Index Key | | ↳ `openfigi` | array | OpenFIGI share class identifiers | | ↳ `backlinkUrl` | string | Quartr backlink URL for the company | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | ### Quartr List Events [#quartr-list-events] List corporate events (earnings calls, capital markets days, etc.) from Quartr, filterable by company, event type, and date range. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `eventTypeIds` | string | No | Comma-separated list of event type IDs (e.g., "26,27") | | `startDate` | string | No | Only return events on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return events on or before this ISO 8601 date (e.g., "2024-12-31") | | `sortBy` | string | No | Field to sort by: "id" or "date" (default: id) | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction applied to the sortBy field: "asc" or "desc" (default: asc) | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `events` | array | Events matching the filters | | ↳ `id` | number | Quartr event ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `title` | string | Event title (e.g., "Q1 2024") | | ↳ `date` | string | Event date (ISO 8601) | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `backlinkUrl` | string | Quartr backlink URL for the event | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Event [#quartr-get-event] Retrieve a single corporate event from Quartr by its event ID. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Quartr API key | | `eventId` | number | Yes | Quartr event ID (e.g., 128301) | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------- | | `event` | object | The requested event | | ↳ `id` | number | Quartr event ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `title` | string | Event title (e.g., "Q1 2024") | | ↳ `date` | string | Event date (ISO 8601) | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `backlinkUrl` | string | Quartr backlink URL for the event | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | ### Quartr Get Event Summary [#quartr-get-event-summary] Retrieve the AI-generated summary of a corporate event from Quartr, with selectable length and optional plain-text formatting. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `eventId` | number | Yes | Quartr event ID (e.g., 128301) | | `summaryLength` | string | No | Length preset for the summary: "line", "short", or "long" (default: short) | | `plainSummary` | boolean | No | Return a plain-text summary without embedded document source tags | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------ | | `summary` | string | AI-generated event summary in Markdown (includes embedded document source tags unless a plain-text summary is requested) | | `sources` | array | Source documents referenced by the summary | | ↳ `sourceId` | string | ID linking the source document to tags embedded in the summary | | ↳ `documentId` | number | Quartr document ID of the source | | ↳ `page` | number | Page number or timestamp in seconds depending on the document type | | ↳ `timestamp` | number | Timestamp in seconds | | ↳ `typeId` | number | Document type ID of the source | | `summaryId` | number | Quartr summary ID | | `summaryCreatedAt` | string | Summary creation timestamp (ISO 8601) | | `summaryUpdatedAt` | string | Summary last update timestamp (ISO 8601) | ### Quartr List Event Types [#quartr-list-event-types] List the event types available in Quartr (e.g., earnings calls), useful for filtering events by type ID. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------------------------- | | `eventTypes` | array | Available event types | | ↳ `id` | number | Event type ID | | ↳ `name` | string | Event type name (e.g., "Q1") | | ↳ `parent` | string | Parent event type name (e.g., "Earnings call") | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr List Documents [#quartr-list-documents] List documents of all kinds (reports, slide decks, and transcripts) from Quartr, filterable by company, event, document type, document group, and date range. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `documentTypeIds` | string | No | Comma-separated list of document type IDs (e.g., "7,10") | | `documentGroupIds` | string | No | Comma-separated list of document group IDs: 1 = Earnings Release, 2 = Press Release, 3 = Interim Report, 4 = Annual Report, 5 = Proxy Statement, 6 = Registration Statement | | `startDate` | string | No | Only return documents dated on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return documents dated on or before this ISO 8601 date (e.g., "2024-12-31") | | `expandEvent` | boolean | No | Include expanded event details on each document | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `documents` | array | Documents matching the filters | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr List Document Types [#quartr-list-document-types] List the document types available in Quartr (e.g., 10-Q quarterly reports), useful for filtering documents by type ID. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------------------------------- | | `documentTypes` | array | Available document types | | ↳ `id` | number | Document type ID | | ↳ `name` | string | Document type name (e.g., "Quarterly Report") | | ↳ `description` | string | Document type description | | ↳ `form` | string | Filing form (e.g., "10-Q") | | ↳ `category` | string | Document category (e.g., "Report") | | ↳ `documentGroupId` | number | Document group ID | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr List Reports [#quartr-list-reports] List filings and reports (10-K, 10-Q, earnings releases, etc.) from Quartr, filterable by company, event, document type, document group, and date range. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `documentTypeIds` | string | No | Comma-separated list of document type IDs (e.g., "7,10") | | `documentGroupIds` | string | No | Comma-separated list of document group IDs: 1 = Earnings Release, 2 = Press Release, 3 = Interim Report, 4 = Annual Report, 5 = Proxy Statement, 6 = Registration Statement | | `startDate` | string | No | Only return documents dated on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return documents dated on or before this ISO 8601 date (e.g., "2024-12-31") | | `expandEvent` | boolean | No | Include expanded event details on each document | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-8] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `reports` | array | Reports matching the filters | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Report [#quartr-get-report] Retrieve a filing or report (10-K, 10-Q, earnings release, etc.) from Quartr by its document ID and download the PDF file. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `reportId` | number | Yes | Quartr document ID of the report (e.g., 432907) | #### Output [#output-9] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------ | | `document` | object | Report metadata | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `fileUrl` | string | URL of the report PDF | | `file` | file | Downloaded report PDF stored in execution files | ### Quartr List Slide Decks [#quartr-list-slide-decks] List slide presentations from Quartr, filterable by company, event, document type, document group, and date range. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `documentTypeIds` | string | No | Comma-separated list of document type IDs (e.g., "7,10") | | `documentGroupIds` | string | No | Comma-separated list of document group IDs: 1 = Earnings Release, 2 = Press Release, 3 = Interim Report, 4 = Annual Report, 5 = Proxy Statement, 6 = Registration Statement | | `startDate` | string | No | Only return documents dated on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return documents dated on or before this ISO 8601 date (e.g., "2024-12-31") | | `expandEvent` | boolean | No | Include expanded event details on each document | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `slideDecks` | array | Slide decks matching the filters | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Slide Deck [#quartr-get-slide-deck] Retrieve a slide presentation from Quartr by its document ID and download the PDF file. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `slideDeckId` | number | Yes | Quartr document ID of the slide deck (e.g., 432907) | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------ | | `document` | object | Slide deck metadata | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `fileUrl` | string | URL of the slide deck PDF | | `file` | file | Downloaded slide deck PDF stored in execution files | ### Quartr List Transcripts [#quartr-list-transcripts] List event transcripts from Quartr, filterable by company, event, document type, document group, and date range. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `documentTypeIds` | string | No | Comma-separated list of document type IDs (e.g., "7,10") | | `documentGroupIds` | string | No | Comma-separated list of document group IDs: 1 = Earnings Release, 2 = Press Release, 3 = Interim Report, 4 = Annual Report, 5 = Proxy Statement, 6 = Registration Statement | | `startDate` | string | No | Only return documents dated on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return documents dated on or before this ISO 8601 date (e.g., "2024-12-31") | | `expandEvent` | boolean | No | Include expanded event details on each document | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------- | | `transcripts` | array | Transcripts matching the filters | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Transcript [#quartr-get-transcript] Retrieve an event transcript from Quartr by its document ID and download the transcript JSON file (paragraphs, sentences, timestamps, and speaker identification). #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `transcriptId` | number | Yes | Quartr document ID of the transcript (e.g., 432907) | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------------------ | | `document` | object | Transcript metadata | | ↳ `id` | number | Quartr document ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `typeId` | number | Document type ID | | ↳ `fileUrl` | string | URL of the document file | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `fileUrl` | string | URL of the transcript JSON file | | `file` | file | Downloaded transcript JSON file stored in execution files | ### Quartr List Audio [#quartr-list-audio] List archived event audio recordings from Quartr, filterable by company, event, and date range. Returns download (MPEG) and streaming (M3U8) URLs. #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `startDate` | string | No | Only return audio dated on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return audio dated on or before this ISO 8601 date (e.g., "2024-12-31") | | `expandEvent` | boolean | No | Include expanded event details on each audio recording | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-14] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------- | | `audioRecordings` | array | Audio recordings matching the filters | | ↳ `id` | number | Quartr audio ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `fileUrl` | string | Download URL of the audio file (MPEG) | | ↳ `streamUrl` | string | Streaming URL of the audio (M3U8) | | ↳ `qna` | number | Timestamp in seconds where the Q\&A section starts | | ↳ `audioMetadata` | object | Audio file metadata | | ↳ `size` | string | File size (e.g., "200.00 MB") | | ↳ `duration` | number | Duration in seconds | | ↳ `encoding` | string | Audio encoding | | ↳ `mimetype` | string | Audio MIME type | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | ### Quartr Get Audio [#quartr-get-audio] Retrieve an archived event audio recording from Quartr by its audio ID. Returns download (MPEG) and streaming (M3U8) URLs. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Quartr API key | | `audioId` | number | Yes | Quartr audio ID (e.g., 123964) | #### Output [#output-15] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------------ | | `audio` | object | The requested audio recording | | ↳ `id` | number | Quartr audio ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `fileUrl` | string | Download URL of the audio file (MPEG) | | ↳ `streamUrl` | string | Streaming URL of the audio (M3U8) | | ↳ `qna` | number | Timestamp in seconds where the Q\&A section starts | | ↳ `audioMetadata` | object | Audio file metadata | | ↳ `size` | string | File size (e.g., "200.00 MB") | | ↳ `duration` | number | Duration in seconds | | ↳ `encoding` | string | Audio encoding | | ↳ `mimetype` | string | Audio MIME type | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `event` | object | Expanded event details (present when event expansion is requested) | | ↳ `title` | string | Event title | | ↳ `typeId` | number | Event type ID | | ↳ `fiscalYear` | number | Fiscal year | | ↳ `fiscalPeriod` | string | Fiscal period (e.g., "Q1") | | ↳ `language` | string | Event language code | | ↳ `date` | string | Event date (ISO 8601) | ### Quartr List Live Events [#quartr-list-live-events] List live and upcoming events from Quartr with live audio and transcript stream URLs, filterable by company, live state, and date range. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Quartr API key | | `companyIds` | string | No | Comma-separated list of Quartr company IDs (e.g., "4742,128") | | `eventIds` | string | No | Comma-separated list of Quartr event IDs (e.g., "128301") | | `tickers` | string | No | Comma-separated list of company tickers (e.g., "AAPL,MSFT") | | `isins` | string | No | Comma-separated list of ISINs (e.g., "US0378331005") | | `ciks` | string | No | Comma-separated list of SEC CIKs (e.g., "0000320193") | | `countries` | string | No | Comma-separated list of ISO 3166-1 alpha-2 country codes (e.g., "US,SE") | | `exchanges` | string | No | Comma-separated list of exchange symbols, without whitespace (e.g., "NasdaqGS") | | `states` | string | No | Comma-separated list of live states to filter by: notLive, willBeLive, live, liveFailedInterrupted, liveFailedNoAccess, liveFailedNotStarted, processingRecording, processingRecordingFailed, recordingAvailable | | `startDate` | string | No | Only return events on or after this ISO 8601 date (e.g., "2024-01-01") | | `endDate` | string | No | Only return events on or before this ISO 8601 date (e.g., "2024-12-31") | | `transcriptVersion` | string | No | Version of the live transcript stream: "1.6" or "1.7" (default: 1.6) | | `updatedAfter` | string | No | Only return data updated after this ISO 8601 date (e.g., "2024-01-01") | | `updatedBefore` | string | No | Only return data updated before this ISO 8601 date (e.g., "2024-12-31") | | `limit` | number | No | Maximum number of items to return in a single request (default: 10, max: 500) | | `cursor` | number | No | Pagination cursor from the previous response (nextCursor) for the next page | | `direction` | string | No | Sort direction by id: "asc" or "desc" (default: asc) | #### Output [#output-16] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `liveEvents` | array | Live events matching the filters | | ↳ `id` | number | Quartr live event ID | | ↳ `eventId` | number | Quartr event ID | | ↳ `companyId` | number | Quartr company ID | | ↳ `date` | string | Scheduled event date (ISO 8601) | | ↳ `wentLiveAt` | string | Timestamp when the event went live (ISO 8601) | | ↳ `state` | string | Live state (notLive, willBeLive, live, liveFailedInterrupted, liveFailedNoAccess, liveFailedNotStarted, processingRecording, processingRecordingFailed, recordingAvailable) | | ↳ `audio` | string | URL of the live audio stream or recording | | ↳ `transcript` | string | URL of the live transcript stream (JSON Lines) | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | `nextCursor` | number | Cursor for fetching the next page of results (null when no more pages) | --- # QuickBooks (/integrations/quickbooks) {/* MANUAL-CONTENT-START:intro */} Connect one QuickBooks Online company per credential. Create an app in the Intuit Developer Portal, register `https:///api/auth/oauth2/callback/quickbooks` as its redirect URI, then enter that app's client ID, client secret, and webhook verifier token in Agent Serve and select its Sandbox or Production environment. Agent Serve encrypts this app configuration on the credential and uses it for authorization, refresh, revocation, and webhook signature verification. During OAuth, choose the company that the workflow should access. Intuit returns the realm ID in the callback, and Agent Serve verifies that the issued token can read CompanyInfo through that company-scoped API path before binding it to the credential, so you do not enter a realm ID or API host. The `CompanyInfo.Id` field is a separate entity ID and is not used as the realm ID. Master Data, Sales, and Purchasing transaction reads support **List** and **By ID** modes. List actions return at most one page. Use `nextStartPosition` in another workflow step when `hasMore` is true. Agent Serve does not paginate, retry, or fetch related records automatically. QuickBooks update actions require the record ID and its current `SyncToken`; provide only the fields you want to change. Agent Serve uses Intuit's documented sparse-update mode where the entity supports it, and otherwise reads the current entity, merges the requested fields, and submits a full update. Use the latest `SyncToken` returned by a read or mutation. Voiding keeps the transaction in QuickBooks with a zeroed financial effect; it is not deletion and requires explicit confirmation. Create actions accept an optional `requestId` that QuickBooks uses for idempotency when the same request may be submitted again. Sandbox credentials call only Intuit's sandbox API and are suitable for disposable test data. Production credentials call the production API and affect the selected live company. QuickBooks triggers use Intuit's app-level webhook model. After adding a trigger and deploying the workflow once, copy the generated Webhook URL from the block into the matching Development or Production Webhooks settings for the same Intuit app. Enable the CloudEvents payload format and select every entity and operation needed by your deployed workflows. One Intuit endpoint can serve multiple connected companies; Agent Serve verifies the raw-body `intuit-signature` with that app's encrypted verifier token and routes each event by both Intuit app and OAuth-derived realm ID. Run Financial Report exposes verified financial statements, aging, balance, sales, and expense reports while preserving QuickBooks' native columns and nested rows. Advanced controls appear only where QuickBooks supports them. Use Read Master Data to discover customer, vendor, account, item, class, and department IDs for report filters. Intuit recommends report periods of six months or less for performance, though Agent Serve does not forbid longer accounting periods. Document actions can read attachment metadata, add one File or Note attachment, download an attachment file, and download supported transactions as PDFs. Downloaded files are stored as Agent Serve files for downstream blocks. Attachment deletion, bulk upload/download, and bulk email remain outside this version of the block. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect one QuickBooks Online company to manage bounded master-data, sales, purchasing, receivables, payables, accounting, reports, transaction delivery, and document workflows. ## Actions [#actions] ### QuickBooks Get Company Info [#quickbooks-get-company-info] Get information about the connected QuickBooks Online company #### Input [#input] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------------------ | | `company` | json | Verified QuickBooks CompanyInfo object with tax identifiers removed | | ↳ `Id` | string | QuickBooks CompanyInfo entity ID (commonly "1"); this is not the OAuth realmId | | ↳ `SyncToken` | string | CompanyInfo sync token | | ↳ `CompanyName` | string | Company display name | | ↳ `LegalName` | string | Company legal name | | ↳ `CompanyAddr` | json | Company address | | ↳ `CustomerCommunicationAddr` | json | Customer communication address | | ↳ `LegalAddr` | json | Company legal address | | ↳ `PrimaryPhone` | json | Primary phone details | | ↳ `Email` | json | Company email details | | ↳ `WebAddr` | json | Company website details | | ↳ `CompanyStartDate` | string | Company start date | | ↳ `Country` | string | Company country code | | ↳ `FiscalYearStartMonth` | string | Fiscal year starting month | | ↳ `SupportedLanguages` | string | Comma-separated list of languages supported by the company | | ↳ `domain` | string | Originating Intuit domain | | ↳ `sparse` | boolean | Whether QuickBooks returned a partial representation | | ↳ `NameValue` | array | QuickBooks company settings represented as name/value entries | | ↳ `MetaData` | json | CompanyInfo creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `time` | string | QuickBooks response timestamp | ### QuickBooks Read Master Data [#quickbooks-read-master-data] List or read one account, class, customer, department, employee, item, or vendor #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `recordType` | string | Yes | Master-data entity to read: account, class, customer, department, employee, item, or vendor | | `readMode` | string | Yes | Whether to list records or read one record by ID | | `recordId` | string | No | QuickBooks record ID, required for by-ID reads | | `startPosition` | number | No | One-based position of the first list record to return | | `maxResults` | number | No | Number of list records to request (1–1000) | | `activeStatus` | string | No | List records using the QuickBooks default, active, or inactive status | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------- | --------------------------------------------------------------- | | `recordType` | string | Master-data record type returned by this action | | `item` | json | Single QuickBooks master-data record returned by a by-ID read | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `Name` | string | Account, item, class, or department name | | ↳ `SubAccount` | boolean | Whether this is a subaccount | | ↳ `ParentRef` | json | Parent account, item, class, or department reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FullyQualifiedName` | string | Hierarchical qualified account, item, class, or department name | | ↳ `Classification` | string | Account classification | | ↳ `AccountType` | string | Account type | | ↳ `AccountSubType` | string | Account subtype | | ↳ `CurrentBalance` | number | Account current balance | | ↳ `CurrencyRef` | json | Account, customer, or vendor currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `DisplayName` | string | Customer, vendor, or employee display name | | ↳ `CompanyName` | string | Customer or vendor company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `Taxable` | boolean | Taxable status for the customer or item | | ↳ `PrimaryEmailAddr` | json | Customer, vendor, or employee primary email address | | ↳ `PrimaryPhone` | json | Customer, vendor, or employee primary phone number | | ↳ `BillAddr` | json | Customer or vendor billing address | | ↳ `ShipAddr` | json | Customer shipping address | | ↳ `Balance` | number | Customer or vendor balance | | ↳ `PrintOnCheckName` | string | Vendor or employee name printed on checks | | ↳ `Vendor1099` | boolean | Whether the vendor is tracked for 1099 reporting | | ↳ `AcctNum` | string | Vendor account number | | ↳ `Description` | string | Item sales description | | ↳ `UnitPrice` | number | Item sale price | | ↳ `Type` | string | Item type | | ↳ `IncomeAccountRef` | json | Item income account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ExpenseAccountRef` | json | Item expense account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PurchaseDesc` | string | Item purchase description | | ↳ `PurchaseCost` | number | Item purchase cost | | ↳ `AssetAccountRef` | json | Inventory asset account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `TrackQtyOnHand` | boolean | Whether QuickBooks tracks quantity on hand | | ↳ `QtyOnHand` | number | Current quantity on hand | | ↳ `InvStartDate` | string | Inventory tracking start date | | ↳ `PrimaryAddr` | json | Employee primary address | | ↳ `BillableTime` | boolean | Whether employee time is billable | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | | ↳ `SubClass` | boolean | Whether the Class is nested under another Class | | ↳ `SubDepartment` | boolean | Whether the Department is nested under another Department | | `items` | array | QuickBooks master-data records returned by a list read | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `Name` | string | Account, item, class, or department name | | ↳ `SubAccount` | boolean | Whether this is a subaccount | | ↳ `ParentRef` | json | Parent account, item, class, or department reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FullyQualifiedName` | string | Hierarchical qualified account, item, class, or department name | | ↳ `Classification` | string | Account classification | | ↳ `AccountType` | string | Account type | | ↳ `AccountSubType` | string | Account subtype | | ↳ `CurrentBalance` | number | Account current balance | | ↳ `CurrencyRef` | json | Account, customer, or vendor currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `DisplayName` | string | Customer, vendor, or employee display name | | ↳ `CompanyName` | string | Customer or vendor company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `Taxable` | boolean | Taxable status for the customer or item | | ↳ `PrimaryEmailAddr` | json | Customer, vendor, or employee primary email address | | ↳ `PrimaryPhone` | json | Customer, vendor, or employee primary phone number | | ↳ `BillAddr` | json | Customer or vendor billing address | | ↳ `ShipAddr` | json | Customer shipping address | | ↳ `Balance` | number | Customer or vendor balance | | ↳ `PrintOnCheckName` | string | Vendor or employee name printed on checks | | ↳ `Vendor1099` | boolean | Whether the vendor is tracked for 1099 reporting | | ↳ `AcctNum` | string | Vendor account number | | ↳ `Description` | string | Item sales description | | ↳ `UnitPrice` | number | Item sale price | | ↳ `Type` | string | Item type | | ↳ `IncomeAccountRef` | json | Item income account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ExpenseAccountRef` | json | Item expense account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PurchaseDesc` | string | Item purchase description | | ↳ `PurchaseCost` | number | Item purchase cost | | ↳ `AssetAccountRef` | json | Inventory asset account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `TrackQtyOnHand` | boolean | Whether QuickBooks tracks quantity on hand | | ↳ `QtyOnHand` | number | Current quantity on hand | | ↳ `InvStartDate` | string | Inventory tracking start date | | ↳ `PrimaryAddr` | json | Employee primary address | | ↳ `BillableTime` | boolean | Whether employee time is billable | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | | ↳ `SubClass` | boolean | Whether the Class is nested under another Class | | ↳ `SubDepartment` | boolean | Whether the Department is nested under another Department | | `recordVersion` | string | Display-safe alias for the native SyncToken on a by-ID record | | `startPosition` | number | One-based position of the first record in this page | | `maxResults` | number | Actual number of records returned in this page | | `nextStartPosition` | number | Position to use when explicitly requesting the next page | | `hasMore` | boolean | Conservative indication that another page may exist | | `time` | string | QuickBooks response timestamp | ### QuickBooks Create Customer [#quickbooks-create-customer] Create a customer in the connected QuickBooks Online company #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------------------- | | `displayName` | string | No | Unique customer display name. Required unless givenName or familyName is supplied | | `companyName` | string | No | Customer company name | | `givenName` | string | No | Customer given name | | `familyName` | string | No | Customer family name | | `primaryEmail` | string | No | Customer primary email address | | `primaryPhone` | string | No | Customer primary phone number | | `billingAddress` | json | No | Customer billing address | | `shippingAddress` | json | No | Customer shipping address | | `taxable` | boolean | No | Whether sales to this customer are taxable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created QuickBooks Customer record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Customer display name | | ↳ `CompanyName` | string | Customer company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `Taxable` | boolean | Whether the customer is taxable | | ↳ `PrimaryEmailAddr` | json | Customer primary email address | | ↳ `PrimaryPhone` | json | Customer primary phone number | | ↳ `BillAddr` | json | Customer billing address | | ↳ `ShipAddr` | json | Customer shipping address | | ↳ `Balance` | number | Customer balance | | ↳ `CurrencyRef` | json | Customer currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Update Customer [#quickbooks-update-customer] Sparse-update a customer in the connected QuickBooks Online company #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------ | | `customerId` | string | Yes | ID of the customer to update | | `syncToken` | string | Yes | Current customer sync token | | `displayName` | string | No | Replacement customer display name | | `companyName` | string | No | Replacement customer company name | | `givenName` | string | No | Replacement customer given name | | `familyName` | string | No | Replacement customer family name | | `primaryEmail` | string | No | Replacement primary email address | | `primaryPhone` | string | No | Replacement primary phone number | | `billingAddress` | json | No | Replacement billing address | | `shippingAddress` | json | No | Replacement shipping address | | `taxable` | boolean | No | Whether sales to this customer are taxable | | `activeStatus` | string | No | Customer status change: unchanged, active, or inactive | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated QuickBooks Customer record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Customer display name | | ↳ `CompanyName` | string | Customer company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `Taxable` | boolean | Whether the customer is taxable | | ↳ `PrimaryEmailAddr` | json | Customer primary email address | | ↳ `PrimaryPhone` | json | Customer primary phone number | | ↳ `BillAddr` | json | Customer billing address | | ↳ `ShipAddr` | json | Customer shipping address | | ↳ `Balance` | number | Customer balance | | ↳ `CurrencyRef` | json | Customer currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Create Employee [#quickbooks-create-employee] Create a non-payroll employee profile in the connected QuickBooks Online company #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `displayName` | string | No | Unique employee display name. When omitted QuickBooks derives it from the supplied name components, and it is read-only when QuickBooks Payroll is enabled | | `givenName` | string | No | Employee given name. At least one of givenName or familyName is required | | `familyName` | string | No | Employee family name. At least one of givenName or familyName is required | | `primaryEmail` | string | No | Employee primary email address | | `primaryPhone` | string | No | Employee primary phone number | | `primaryAddress` | json | No | Employee primary address | | `printOnCheckName` | string | No | Employee name printed on checks | | `billableTime` | boolean | No | Whether employee time is billable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created QuickBooks Employee record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Employee display name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `PrintOnCheckName` | string | Employee name printed on checks | | ↳ `PrimaryEmailAddr` | json | Employee primary email address | | ↳ `PrimaryPhone` | json | Employee primary phone number | | ↳ `PrimaryAddr` | json | Employee primary address | | ↳ `BillableTime` | boolean | Whether employee time is billable | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | ### QuickBooks Update Employee [#quickbooks-update-employee] Read, merge, and full-update a non-payroll employee profile #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `employeeId` | string | Yes | ID of the employee to update | | `syncToken` | string | Yes | Current employee sync token | | `displayName` | string | No | Replacement employee display name. Read-only when QuickBooks Payroll is enabled, where QuickBooks derives it from the name components | | `givenName` | string | No | Replacement employee given name | | `familyName` | string | No | Replacement employee family name | | `primaryEmail` | string | No | Replacement employee primary email address | | `primaryPhone` | string | No | Replacement employee primary phone number | | `primaryAddress` | json | No | Replacement employee primary address | | `printOnCheckName` | string | No | Replacement employee name printed on checks | | `billableTime` | boolean | No | Whether employee time is billable | | `activeStatus` | string | No | Employee status change: unchanged, active, or inactive | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated QuickBooks Employee record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Employee display name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `PrintOnCheckName` | string | Employee name printed on checks | | ↳ `PrimaryEmailAddr` | json | Employee primary email address | | ↳ `PrimaryPhone` | json | Employee primary phone number | | ↳ `PrimaryAddr` | json | Employee primary address | | ↳ `BillableTime` | boolean | Whether employee time is billable | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | ### QuickBooks Create Vendor [#quickbooks-create-vendor] Create a vendor in the connected QuickBooks Online company #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------- | | `displayName` | string | No | Unique vendor display name. Required unless givenName or familyName is supplied | | `companyName` | string | No | Vendor company name | | `givenName` | string | No | Vendor given name | | `familyName` | string | No | Vendor family name | | `primaryEmail` | string | No | Vendor primary email address | | `primaryPhone` | string | No | Vendor primary phone number | | `billingAddress` | json | No | Vendor billing address | | `printOnCheckName` | string | No | Name to print on checks | | `accountNumber` | string | No | Vendor account number | | `vendor1099` | boolean | No | Whether the vendor is tracked for 1099 reporting | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created QuickBooks Vendor record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Vendor display name | | ↳ `CompanyName` | string | Vendor company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `PrintOnCheckName` | string | Name printed on checks | | ↳ `Vendor1099` | boolean | Whether the vendor is tracked for 1099 reporting | | ↳ `PrimaryEmailAddr` | json | Vendor primary email address | | ↳ `PrimaryPhone` | json | Vendor primary phone number | | ↳ `BillAddr` | json | Vendor billing address | | ↳ `AcctNum` | string | Vendor account number | | ↳ `Balance` | number | Vendor balance | | ↳ `CurrencyRef` | json | Vendor currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Update Vendor [#quickbooks-update-vendor] Read, merge, and full-update a vendor in QuickBooks Online #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------- | | `vendorId` | string | Yes | ID of the vendor to update | | `syncToken` | string | Yes | Current vendor sync token | | `displayName` | string | No | Replacement vendor display name | | `companyName` | string | No | Replacement vendor company name | | `givenName` | string | No | Replacement vendor given name | | `familyName` | string | No | Replacement vendor family name | | `primaryEmail` | string | No | Replacement primary email address | | `primaryPhone` | string | No | Replacement primary phone number | | `billingAddress` | json | No | Replacement billing address | | `printOnCheckName` | string | No | Replacement name to print on checks | | `accountNumber` | string | No | Replacement vendor account number | | `vendor1099` | boolean | No | Whether the vendor is tracked for 1099 reporting | | `activeStatus` | string | No | Vendor status change: unchanged, active, or inactive | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated QuickBooks Vendor record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `DisplayName` | string | Vendor display name | | ↳ `CompanyName` | string | Vendor company name | | ↳ `GivenName` | string | Given name | | ↳ `FamilyName` | string | Family name | | ↳ `PrintOnCheckName` | string | Name printed on checks | | ↳ `Vendor1099` | boolean | Whether the vendor is tracked for 1099 reporting | | ↳ `PrimaryEmailAddr` | json | Vendor primary email address | | ↳ `PrimaryPhone` | json | Vendor primary phone number | | ↳ `BillAddr` | json | Vendor billing address | | ↳ `AcctNum` | string | Vendor account number | | ↳ `Balance` | number | Vendor balance | | ↳ `CurrencyRef` | json | Vendor currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Create Item [#quickbooks-create-item] Create a Service or Non-inventory item in QuickBooks Online #### Input [#input-8] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | string | Yes | Unique item name, up to 100 characters, without tabs, new lines, or colons | | `itemType` | string | Yes | Writable item type: service or non\_inventory | | `incomeAccountId` | string | No | Sales of Product Income account ID recording proceeds from the sale. Intuit requires it for Service items except in France locales | | `description` | string | No | Sales description | | `unitPrice` | number | No | Sales price per unit | | `purchaseDescription` | string | No | Purchase description | | `purchaseCost` | number | No | Purchase cost per unit | | `expenseAccountId` | string | No | Cost of Goods Sold account ID used to pay the vendor for this item. Intuit requires it for Service and Non-inventory items except in France locales | | `taxable` | boolean | No | Whether the item is taxable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created QuickBooks Item record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `Name` | string | Item name | | ↳ `Description` | string | Item sales description | | ↳ `FullyQualifiedName` | string | Hierarchical qualified item name | | ↳ `Taxable` | boolean | Whether the item is taxable | | ↳ `UnitPrice` | number | Item sale price | | ↳ `Type` | string | Item type | | ↳ `IncomeAccountRef` | json | Item income account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ExpenseAccountRef` | json | Item expense account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PurchaseDesc` | string | Item purchase description | | ↳ `PurchaseCost` | number | Item purchase cost | | ↳ `AssetAccountRef` | json | Inventory asset account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `TrackQtyOnHand` | boolean | Whether QuickBooks tracks quantity on hand | | ↳ `QtyOnHand` | number | Current quantity on hand | | ↳ `InvStartDate` | string | Inventory tracking start date | | ↳ `ParentRef` | json | Parent item or category reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Update Item [#quickbooks-update-item] Read, merge, and full-update a Service or Non-inventory item without changing its type #### Input [#input-9] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------- | | `itemId` | string | Yes | ID of the item to update | | `syncToken` | string | Yes | Current item sync token | | `name` | string | No | Replacement item name, up to 100 characters, without tabs, new lines, or colons | | `incomeAccountId` | string | No | Replacement income account ID | | `description` | string | No | Replacement sales description | | `unitPrice` | number | No | Replacement sales price per unit | | `purchaseDescription` | string | No | Replacement purchase description | | `purchaseCost` | number | No | Replacement purchase cost per unit | | `expenseAccountId` | string | No | Replacement expense account ID | | `taxable` | boolean | No | Whether the item is taxable | | `activeStatus` | string | No | Item status change: unchanged, active, or inactive. Not valid for Category item types | #### Output [#output-9] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated QuickBooks Item record | | ↳ `Id` | string | QuickBooks entity ID | | ↳ `SyncToken` | string | Entity sync token | | ↳ `Active` | boolean | Whether the entity is active | | ↳ `MetaData` | json | Entity creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `Name` | string | Item name | | ↳ `Description` | string | Item sales description | | ↳ `FullyQualifiedName` | string | Hierarchical qualified item name | | ↳ `Taxable` | boolean | Whether the item is taxable | | ↳ `UnitPrice` | number | Item sale price | | ↳ `Type` | string | Item type | | ↳ `IncomeAccountRef` | json | Item income account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ExpenseAccountRef` | json | Item expense account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PurchaseDesc` | string | Item purchase description | | ↳ `PurchaseCost` | number | Item purchase cost | | ↳ `AssetAccountRef` | json | Inventory asset account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `TrackQtyOnHand` | boolean | Whether QuickBooks tracks quantity on hand | | ↳ `QtyOnHand` | number | Current quantity on hand | | ↳ `InvStartDate` | string | Inventory tracking start date | | ↳ `ParentRef` | json | Parent item or category reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | ### QuickBooks Read Sales Transactions [#quickbooks-read-sales-transactions] List or read one estimate, invoice, sales receipt, payment, credit memo, or refund receipt #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `transactionType` | string | Yes | Sales transaction type to read | | `readMode` | string | Yes | Whether to list transactions or read one transaction by ID | | `transactionId` | string | No | QuickBooks transaction ID, required for by-ID reads | | `startPosition` | number | No | One-based position of the first list record to return | | `maxResults` | number | No | Number of list records to request (1–1000) | | `startDate` | string | No | List transactions on or after this date in YYYY-MM-DD format | | `endDate` | string | No | List transactions on or before this date in YYYY-MM-DD format | | `customerId` | string | No | List transactions for one QuickBooks customer ID | #### Output [#output-10] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------ | | `transactionType` | string | Sales transaction type returned | | `item` | json | Single native QuickBooks sales transaction | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `items` | array | Native QuickBooks sales transactions | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `recordVersion` | string | Display-safe alias for the native SyncToken on a by-ID transaction | | `startPosition` | number | One-based position of the first item in this response | | `maxResults` | number | Actual number of items reported for this response | | `nextStartPosition` | number | Position to use when explicitly requesting the next page | | `hasMore` | boolean | Conservative indication that another page may exist | | `time` | string | QuickBooks response timestamp | ### QuickBooks Create Estimate [#quickbooks-create-estimate] Create an estimate with bounded item and description lines #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------- | | `customerId` | string | Yes | Customer receiving the estimate | | `lines` | json | Yes | Bounded item and description lines | | `transactionDate` | string | No | Estimate date in YYYY-MM-DD format | | `expirationDate` | string | No | Estimate expiration date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional estimate number | | `privateNote` | string | No | Internal estimate note | | `customerMemo` | string | No | Customer-facing estimate memo | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks Estimate | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Estimate [#quickbooks-update-estimate] Sparse-update an estimate using its current sync token #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `transactionId` | string | Yes | Estimate ID to update | | `syncToken` | string | Yes | Current estimate sync token | | `customerId` | string | No | Replacement customer ID | | `lines` | json | No | Complete replacement set of estimate lines: any existing line omitted here is deleted from the estimate | | `transactionDate` | string | No | Replacement estimate date in YYYY-MM-DD format | | `expirationDate` | string | No | Replacement expiration date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement estimate number | | `privateNote` | string | No | Replacement internal note | | `customerMemo` | string | No | Replacement customer-facing memo | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Estimate | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Invoice [#quickbooks-create-invoice] Create an invoice without emailing or collecting payment #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------- | | `customerId` | string | Yes | Customer receiving the invoice | | `lines` | json | Yes | Bounded item and description lines | | `transactionDate` | string | No | Invoice date in YYYY-MM-DD format | | `dueDate` | string | No | Invoice due date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional invoice number | | `privateNote` | string | No | Internal invoice note | | `customerMemo` | string | No | Customer-facing invoice memo | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks Invoice | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Invoice [#quickbooks-update-invoice] Sparse-update an invoice using its current sync token #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `transactionId` | string | Yes | Invoice ID to update | | `syncToken` | string | Yes | Current invoice sync token | | `customerId` | string | No | Replacement customer ID | | `lines` | json | No | Complete replacement set of invoice lines: any existing line omitted here is deleted from the invoice | | `transactionDate` | string | No | Replacement invoice date in YYYY-MM-DD format | | `dueDate` | string | No | Replacement due date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement invoice number | | `privateNote` | string | No | Replacement internal note | | `customerMemo` | string | No | Replacement customer-facing memo | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Invoice | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Void Invoice [#quickbooks-void-invoice] Void an invoice after explicit confirmation #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------- | | `transactionId` | string | Yes | Invoice ID to void | | `syncToken` | string | Yes | Current invoice sync token | | `confirmVoid` | boolean | Yes | Explicit confirmation that the invoice should be voided | #### Output [#output-15] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `voided` | boolean | Whether QuickBooks voided the transaction | | `record` | json | Voided native QuickBooks Invoice | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Sales Receipt [#quickbooks-create-sales-receipt] Create a sales receipt for a completed customer sale #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------- | | `customerId` | string | No | Customer for the sales receipt, omitted for an anonymous sale | | `lines` | json | Yes | Bounded item and description lines | | `transactionDate` | string | No | Sales receipt date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional sales receipt number | | `privateNote` | string | No | Internal sales receipt note | | `customerMemo` | string | No | Customer-facing sales receipt memo | | `paymentMethodId` | string | No | QuickBooks payment method ID | | `paymentReferenceNumber` | string | No | Payment reference number | | `depositAccountId` | string | No | QuickBooks deposit account ID | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-16] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks SalesReceipt | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Sales Receipt [#quickbooks-update-sales-receipt] Sparse-update a sales receipt using its current sync token #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | `transactionId` | string | Yes | Sales receipt ID to update | | `syncToken` | string | Yes | Current sales receipt sync token | | `customerId` | string | No | Replacement customer ID | | `lines` | json | No | Complete replacement set of sales receipt lines: any existing line omitted here is deleted from the sales receipt | | `transactionDate` | string | No | Replacement receipt date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement sales receipt number | | `privateNote` | string | No | Replacement internal note | | `customerMemo` | string | No | Replacement customer-facing memo | | `paymentMethodId` | string | No | Replacement payment method ID | | `paymentReferenceNumber` | string | No | Replacement payment reference number | | `depositAccountId` | string | No | Replacement deposit account ID | #### Output [#output-17] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks SalesReceipt | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Void Sales Receipt [#quickbooks-void-sales-receipt] Void a sales receipt after explicit confirmation #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------- | | `transactionId` | string | Yes | Sales receipt ID to void | | `syncToken` | string | Yes | Current sales receipt sync token | | `confirmVoid` | boolean | Yes | Explicit confirmation that the sales receipt should be voided | #### Output [#output-18] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `voided` | boolean | Whether QuickBooks voided the transaction | | `record` | json | Voided native QuickBooks SalesReceipt | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Customer Payment [#quickbooks-create-customer-payment] Record a customer payment with optional bounded invoice allocations #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------------- | | `customerId` | string | Yes | Customer making the payment | | `totalAmount` | number | Yes | Positive total payment amount | | `transactionDate` | string | No | Payment date in YYYY-MM-DD format | | `privateNote` | string | No | Internal payment note | | `paymentReferenceNumber` | string | No | Payment reference number such as a check number | | `paymentMethodId` | string | No | QuickBooks payment method ID | | `depositAccountId` | string | No | QuickBooks deposit account ID | | `invoiceAllocations` | json | No | Up to 100 invoice allocations with invoiceId and positive amount | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-19] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks Payment | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Customer Payment [#quickbooks-update-customer-payment] Read, merge, and full-update a customer payment using its current sync token #### Input [#input-20] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `paymentId` | string | Yes | Payment ID to update | | `syncToken` | string | Yes | Current payment sync token | | `customerId` | string | No | Replacement customer ID | | `totalAmount` | number | No | Replacement positive payment total | | `transactionDate` | string | No | Replacement payment date in YYYY-MM-DD format | | `privateNote` | string | No | Replacement internal note | | `paymentReferenceNumber` | string | No | Replacement payment reference number | | `paymentMethodId` | string | No | Replacement payment method ID | | `depositAccountId` | string | No | Replacement deposit account ID | | `invoiceAllocations` | json | No | Bounded invoice allocations to apply. Each entry sets the amount applied to that invoice; invoices already applied on the payment and not listed here keep their current amounts | | `unapplyOmittedInvoices` | boolean | No | Replace the payment allocations outright. Requires a non-empty invoiceAllocations list; every invoice not listed is UNAPPLIED and returns to open | #### Output [#output-20] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Payment | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Void Customer Payment [#quickbooks-void-customer-payment] Void a customer payment after explicit confirmation #### Input [#input-21] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------- | | `transactionId` | string | Yes | Payment ID to void | | `syncToken` | string | Yes | Current payment sync token | | `confirmVoid` | boolean | Yes | Explicit confirmation that the payment should be voided | #### Output [#output-21] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `voided` | boolean | Whether QuickBooks voided the transaction | | `record` | json | Voided native QuickBooks Payment | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Credit Memo [#quickbooks-create-credit-memo] Create a customer credit memo with bounded sales lines #### Input [#input-22] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------- | | `customerId` | string | Yes | Customer receiving the credit memo | | `lines` | json | Yes | Bounded item and description lines | | `transactionDate` | string | No | Credit memo date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional credit memo number | | `privateNote` | string | No | Internal credit memo note | | `customerMemo` | string | No | Customer-facing credit memo memo | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks CreditMemo | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Credit Memo [#quickbooks-update-credit-memo] Read, merge, and full-update a credit memo using its current sync token #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `transactionId` | string | Yes | Credit memo ID to update | | `syncToken` | string | Yes | Current credit memo sync token | | `customerId` | string | No | Replacement customer ID | | `lines` | json | No | Complete replacement set of credit memo lines: any existing line omitted here is deleted from the credit memo | | `transactionDate` | string | No | Replacement credit memo date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement credit memo number | | `privateNote` | string | No | Replacement internal note | | `customerMemo` | string | No | Replacement customer-facing memo | #### Output [#output-23] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks CreditMemo | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Refund Receipt [#quickbooks-create-refund-receipt] Create a customer refund receipt against a required deposit account #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------------------------------------- | | `customerId` | string | No | Customer receiving the refund, omitted for an anonymous refund | | `lines` | json | Yes | Bounded item and description lines | | `depositAccountId` | string | Yes | QuickBooks bank account funding the refund | | `transactionDate` | string | No | Refund receipt date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional refund receipt number | | `privateNote` | string | No | Internal refund receipt note | | `customerMemo` | string | No | Customer-facing refund memo | | `paymentMethodId` | string | No | QuickBooks payment method ID | | `paymentReferenceNumber` | string | No | Refund payment reference number | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-24] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks RefundReceipt | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Refund Receipt [#quickbooks-update-refund-receipt] Sparse-update a refund receipt using its current sync token #### Input [#input-25] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `transactionId` | string | Yes | Refund receipt ID to update | | `syncToken` | string | Yes | Current refund receipt sync token | | `customerId` | string | No | Replacement customer ID | | `lines` | json | No | Complete replacement set of refund receipt lines: any existing line omitted here is deleted from the refund receipt | | `transactionDate` | string | No | Replacement refund date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement refund receipt number | | `privateNote` | string | No | Replacement internal note | | `customerMemo` | string | No | Replacement customer-facing memo | | `paymentMethodId` | string | No | Replacement payment method ID | | `paymentReferenceNumber` | string | No | Replacement payment reference number | | `depositAccountId` | string | No | Replacement deposit account ID | #### Output [#output-25] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks RefundReceipt | | ↳ `Id` | string | QuickBooks sales transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Invoice due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Customer payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks transaction lines | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Read Purchasing Transactions [#quickbooks-read-purchasing-transactions] List or read one purchase order, bill, bill payment, vendor credit, or purchase #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `transactionType` | string | Yes | Purchasing transaction type to read | | `readMode` | string | Yes | Whether to list transactions or read one transaction by ID | | `transactionId` | string | No | QuickBooks transaction ID, required for by-ID reads | | `startPosition` | number | No | One-based position of the first list record to return | | `maxResults` | number | No | Number of list records to request (1–1000) | | `startDate` | string | No | List transactions on or after this date in YYYY-MM-DD format | | `endDate` | string | No | List transactions on or before this date in YYYY-MM-DD format | | `vendorId` | string | No | List transactions for one supported QuickBooks vendor ID | #### Output [#output-26] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------------------ | | `transactionType` | string | Purchasing transaction type returned | | `item` | json | Single native QuickBooks purchasing transaction | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `items` | array | Native QuickBooks purchasing transactions | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `recordVersion` | string | Display-safe alias for the native SyncToken on a by-ID transaction | | `startPosition` | number | One-based position of the first item in this response | | `maxResults` | number | Actual number of items reported for this response | | `nextStartPosition` | number | Position to use when explicitly requesting the next page | | `hasMore` | boolean | Conservative indication that another page may exist | | `time` | string | QuickBooks response timestamp | ### QuickBooks Create Purchase Order [#quickbooks-create-purchase-order] Create a purchase order with bounded expense lines #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `vendorId` | string | Yes | Purchase-order vendor ID | | `apAccountId` | string | Yes | Accounts-payable account ID | | `lines` | json | Yes | Bounded account-based or item-based expense lines | | `transactionDate` | string | No | Purchase-order date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional purchase-order number | | `privateNote` | string | No | Internal purchase-order note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded, TaxInclusive, or NotApplicable | | `dueDate` | string | No | Date the payment is due in YYYY-MM-DD format | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-27] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks PurchaseOrder | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Purchase Order [#quickbooks-update-purchase-order] Read, merge, and full-update purchase-order header fields #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------- | | `purchaseOrderId` | string | Yes | Purchase Order ID to update | | `syncToken` | string | Yes | Current purchase-order sync token | | `vendorId` | string | No | Replacement vendor ID | | `apAccountId` | string | No | Replacement accounts-payable account ID | | `transactionDate` | string | No | Replacement date in YYYY-MM-DD format | | `dueDate` | string | No | Replacement due date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement purchase-order number | | `privateNote` | string | No | Replacement internal note | #### Output [#output-28] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks PurchaseOrder | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Bill [#quickbooks-create-bill] Create a vendor bill with optional Purchase Order line links without paying it #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `vendorId` | string | Yes | Bill vendor ID | | `lines` | json | Yes | Bounded account-based or item-based expense lines with optional paired Purchase Order and line IDs | | `apAccountId` | string | No | Optional accounts-payable account ID | | `transactionDate` | string | No | Bill date in YYYY-MM-DD format | | `dueDate` | string | No | Bill due date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional bill number | | `privateNote` | string | No | Internal bill note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded, TaxInclusive, or NotApplicable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-29] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `linkingRequested` | boolean | Whether any Purchase Order line links were requested | | `linkingSucceeded` | boolean | Whether QuickBooks returned every requested Purchase Order line link | | `linkedLines` | array | Requested Purchase Order line links confirmed by QuickBooks | | ↳ `purchaseOrderId` | string | Requested Purchase Order ID | | ↳ `purchaseOrderLineId` | string | Requested Purchase Order line ID | | ↳ `billLineId` | string | Created Bill line ID carrying the confirmed link | | `missingLinks` | array | Requested Purchase Order line links omitted by QuickBooks | | ↳ `purchaseOrderId` | string | Requested Purchase Order ID | | ↳ `purchaseOrderLineId` | string | Requested Purchase Order line ID | | `linkingWarning` | string | Warning that the Bill was created without every requested Purchase Order link | | `record` | json | Created native QuickBooks Bill | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Bill [#quickbooks-update-bill] Read, merge, and full-update bill header fields using its current sync token #### Input [#input-30] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `billId` | string | Yes | Bill ID to update | | `syncToken` | string | Yes | Current bill sync token | | `vendorId` | string | No | Replacement vendor ID; omit to preserve the current vendor | | `apAccountId` | string | No | Replacement accounts-payable account ID | | `transactionDate` | string | No | Replacement bill date in YYYY-MM-DD format | | `dueDate` | string | No | Replacement due date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement bill number | | `privateNote` | string | No | Replacement internal note | #### Output [#output-30] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Bill | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Bill Payment [#quickbooks-create-bill-payment] Record a check or credit-card payment allocated to one or more bills #### Input [#input-31] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `vendorId` | string | Yes | Vendor whose bills are being paid | | `totalAmount` | number | Yes | Positive total payment amount | | `paymentType` | string | Yes | Check or credit-card payment type | | `paymentAccountId` | string | Yes | Bank or credit-card account ID matching the payment type | | `billAllocations` | json | No | Optional bounded Bill-only allocations; any unallocated amount becomes vendor credit | | `transactionDate` | string | No | Payment date in YYYY-MM-DD format | | `privateNote` | string | No | Internal payment note | | `apAccountId` | string | No | Optional accounts-payable account the payment is credited to | | `documentNumber` | string | No | Optional reference number for the payment | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-31] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks BillPayment | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Bill Payment [#quickbooks-update-bill-payment] Read, merge, and full-update a BillPayment without changing allocations #### Input [#input-32] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `billPaymentId` | string | Yes | BillPayment ID to update | | `syncToken` | string | Yes | Current BillPayment sync token | | `vendorId` | string | No | Replacement vendor ID; omit to preserve the current vendor | | `transactionDate` | string | No | Replacement payment date in YYYY-MM-DD format | | `privateNote` | string | No | Replacement internal note | #### Output [#output-32] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks BillPayment | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Void Bill Payment [#quickbooks-void-bill-payment] Void a bill payment after explicit confirmation #### Input [#input-33] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------ | | `transactionId` | string | Yes | BillPayment ID to void | | `syncToken` | string | Yes | Current BillPayment sync token | | `confirmVoid` | boolean | Yes | Explicit confirmation that the bill payment should be voided | #### Output [#output-33] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `voided` | boolean | Whether QuickBooks voided the transaction | | `record` | json | Voided native QuickBooks BillPayment | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Vendor Credit [#quickbooks-create-vendor-credit] Create a vendor credit without applying it to a bill #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `vendorId` | string | Yes | Vendor issuing the credit | | `lines` | json | Yes | Bounded account-based or item-based expense lines | | `apAccountId` | string | No | Optional accounts-payable account ID | | `transactionDate` | string | No | Credit date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional vendor-credit number | | `privateNote` | string | No | Internal vendor-credit note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded, TaxInclusive, or NotApplicable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-34] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks VendorCredit | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Vendor Credit [#quickbooks-update-vendor-credit] Read, merge, and full-update vendor-credit header fields #### Input [#input-35] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `vendorCreditId` | string | Yes | VendorCredit ID to update | | `syncToken` | string | Yes | Current vendor-credit sync token | | `vendorId` | string | No | Replacement vendor ID; omit to preserve the current vendor | | `apAccountId` | string | No | Replacement accounts-payable account ID | | `transactionDate` | string | No | Replacement date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement vendor-credit number | | `privateNote` | string | No | Replacement internal note | #### Output [#output-35] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks VendorCredit | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Purchase [#quickbooks-create-purchase] Record a cash, check, or credit-card purchase with bounded expense lines #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `paymentType` | string | Yes | Cash, check, or credit-card purchase type | | `paymentAccountId` | string | Yes | Bank or credit-card account ID matching the purchase type | | `lines` | json | Yes | Bounded account-based or item-based expense lines | | `vendorId` | string | No | Optional vendor payee ID | | `transactionDate` | string | No | Purchase date in YYYY-MM-DD format | | `paymentReference` | string | No | Optional transaction reference number, such as a check number, sent as the purchase DocNumber | | `privateNote` | string | No | Internal purchase note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded, TaxInclusive, or NotApplicable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-36] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks Purchase | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Purchase [#quickbooks-update-purchase] Read, merge, and full-update purchase header fields without changing lines #### Input [#input-37] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `purchaseId` | string | Yes | Purchase ID to update | | `syncToken` | string | Yes | Current purchase sync token | | `vendorId` | string | No | Replacement vendor payee ID | | `transactionDate` | string | No | Replacement purchase date in YYYY-MM-DD format | | `paymentReference` | string | No | Replacement transaction reference number, such as a check number, sent as the purchase DocNumber | | `privateNote` | string | No | Replacement internal note | #### Output [#output-37] | Parameter | Type | Description | | --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Purchase | | ↳ `Id` | string | QuickBooks purchasing transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Bill or purchase-order due date | | ↳ `POStatus` | string | Purchase order status: Open or Closed | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks expense or allocation lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Read Accounting Transactions [#quickbooks-read-accounting-transactions] List or read one journal entry, deposit, or transfer #### Input [#input-38] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `transactionType` | string | Yes | Accounting transaction type to read | | `readMode` | string | Yes | Whether to list transactions or read one transaction by ID | | `transactionId` | string | No | QuickBooks transaction ID, required for by-ID reads | | `startPosition` | number | No | One-based position of the first list record to return | | `maxResults` | number | No | Number of list records to request (1–1000) | | `startDate` | string | No | List transactions on or after this date in YYYY-MM-DD format | | `endDate` | string | No | List transactions on or before this date in YYYY-MM-DD format | #### Output [#output-38] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------ | | `transactionType` | string | Accounting transaction type returned | | `item` | json | Single native QuickBooks accounting transaction | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `items` | array | Native QuickBooks accounting transactions | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | `recordVersion` | string | Display-safe alias for the native SyncToken on a by-ID transaction | | `startPosition` | number | One-based position of the first item in this response | | `maxResults` | number | Actual number of items reported for this response | | `nextStartPosition` | number | Position to use when explicitly requesting the next page | | `hasMore` | boolean | Conservative indication that another page may exist | | `time` | string | QuickBooks response timestamp | ### QuickBooks Create Journal Entry [#quickbooks-create-journal-entry] Post a balanced journal entry after explicit confirmation #### Input [#input-39] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------- | | `lines` | json | Yes | Two to 100 balanced debit and credit lines | | `confirmPosting` | boolean | Yes | Explicit confirmation that this journal entry should be posted | | `transactionDate` | string | No | Journal-entry date in YYYY-MM-DD format | | `documentNumber` | string | No | Optional journal-entry number | | `privateNote` | string | No | Internal journal-entry note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded or TaxInclusive | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-39] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks JournalEntry | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Journal Entry [#quickbooks-update-journal-entry] Sparse-update journal-entry header fields after explicit confirmation #### Input [#input-40] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | --------------------------------------------------------------------- | | `journalEntryId` | string | Yes | Journal Entry ID to update | | `syncToken` | string | Yes | Current journal-entry sync token | | `confirmPosting` | boolean | Yes | Explicit confirmation that this journal-entry update should be posted | | `transactionDate` | string | No | Replacement date in YYYY-MM-DD format | | `documentNumber` | string | No | Replacement journal-entry number | | `privateNote` | string | No | Replacement internal note | #### Output [#output-40] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks JournalEntry | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Create Deposit [#quickbooks-create-deposit] Create a deposit with bounded account lines #### Input [#input-41] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `depositAccountId` | string | Yes | Bank or asset account receiving the deposit | | `lines` | json | Yes | One to 100 account-based deposit lines | | `transactionDate` | string | No | Deposit date in YYYY-MM-DD format | | `privateNote` | string | No | Internal deposit note | | `currencyCode` | string | No | Three-letter ISO 4217 currency code, required when multicurrency is enabled for the company | | `globalTaxCalculation` | string | No | Tax treatment required for non-US companies: TaxExcluded, TaxInclusive, or NotApplicable | | `requestId` | string | No | Optional Intuit idempotency request ID, up to 50 characters | #### Output [#output-41] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Created native QuickBooks Deposit | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Update Deposit [#quickbooks-update-deposit] Sparse-update deposit header fields using the current sync token and destination account #### Input [#input-42] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------- | | `depositId` | string | Yes | Deposit ID to update | | `syncToken` | string | Yes | Current deposit sync token | | `depositAccountId` | string | No | Replacement QuickBooks account receiving the deposit | | `transactionDate` | string | No | Replacement date in YYYY-MM-DD format | | `privateNote` | string | No | Replacement internal note | #### Output [#output-42] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | | `recordId` | string | ID of the created or updated QuickBooks entity | | `syncToken` | string | Native QuickBooks SyncToken returned by the mutation | | `recordVersion` | string | Latest QuickBooks record version required for a subsequent update; this is the native SyncToken under a display-safe name | | `time` | string | QuickBooks response timestamp | | `record` | json | Updated native QuickBooks Deposit | | ↳ `Id` | string | QuickBooks accounting transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `Adjustment` | boolean | Whether the journal entry is an adjusting entry | | ↳ `DepositToAccountRef` | json | Account receiving a deposit | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `FromAccountRef` | json | Transfer source account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `ToAccountRef` | json | Transfer destination account | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks journal or deposit lines | | ↳ `Amount` | number | Transfer amount | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | ### QuickBooks Run Financial Report [#quickbooks-run-financial-report] Run a fixed QuickBooks financial report with verified accountant-focused filters #### Input [#input-43] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `reportType` | string | Yes | Fixed QuickBooks financial report to run | | `startDate` | string | No | Report start date in YYYY-MM-DD format; Intuit recommends periods of six months or less for performance | | `endDate` | string | No | Report end or as-of date in YYYY-MM-DD format | | `dateMacro` | string | No | Predefined QuickBooks report date range, such as this\_fiscal\_year\_to\_date; cannot be combined with startDate or endDate | | `accountingMethod` | string | No | Use the QuickBooks default, cash basis, or accrual basis | | `summarizeBy` | string | No | Time period or business dimension used to summarize report columns | | `quickZoomUrl` | boolean | No | Ask QuickBooks to generate quick-zoom drill-down links, returned as the href on report row values | | `customerId` | string | No | Single QuickBooks customer ID filter | | `vendorId` | string | No | Single QuickBooks vendor ID filter | | `accountId` | string | No | Single QuickBooks account ID filter | | `employeeId` | string | No | Single QuickBooks employee ID filter, supported by Profit and Loss Detail | | `itemId` | string | No | Single QuickBooks item ID filter | | `classId` | string | No | Single QuickBooks class ID filter | | `departmentId` | string | No | Single QuickBooks department ID filter | | `agingMethod` | string | No | Age open balances from the report date or current date | | `agingDays` | number | No | Positive number of days in each aging period | | `transactionType` | string | No | Transaction type filter for Transaction List | | `groupBy` | string | No | Grouping dimension for Transaction List | | `accountsPayablePaid` | string | No | Accounts-payable paid status for Transaction List | | `accountsReceivablePaid` | string | No | Accounts-receivable paid status for Transaction List | | `clearedStatus` | string | No | Cleared status filter for Transaction List | | `documentNumber` | string | No | Document number filter for Transaction List | | `sourceAccountType` | string | No | Source account type filter for Transaction List | #### Output [#output-43] | Parameter | Type | Description | | ---------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `reportType` | string | Financial report type that was run | | `header` | json | Native QuickBooks report header with name, periods, basis, currency, summarization, filters, and options | | ↳ `Time` | string | QuickBooks report generation timestamp | | ↳ `ReportName` | string | Native QuickBooks report name | | ↳ `DateMacro` | string | QuickBooks date macro, when returned | | ↳ `ReportBasis` | string | Cash or accrual basis | | ↳ `StartPeriod` | string | Report start date | | ↳ `EndPeriod` | string | Report end or as-of date | | ↳ `SummarizeColumnsBy` | string | Dimension or time period used for report columns | | ↳ `Currency` | string | Report currency | | ↳ `Customer` | string | Applied customer filter | | ↳ `Vendor` | string | Applied vendor filter | | ↳ `Account` | string | Applied account filter | | ↳ `Employee` | string | Applied employee filter | | ↳ `Item` | string | Applied item filter | | ↳ `Class` | string | Applied class filter | | ↳ `Department` | string | Applied department filter | | ↳ `Option` | array | Native QuickBooks report options, including no-data indicators when present | | `columns` | json | Native QuickBooks report column definitions | | ↳ `Column` | array | Native report column definitions with titles, types, and metadata | | ↳ `ColTitle` | string | Column title | | ↳ `ColType` | string | QuickBooks column data type | | ↳ `MetaData` | array | Native column metadata name/value entries | | `rows` | json | Native hierarchical QuickBooks report rows and section summaries | | ↳ `Row` | array | Native hierarchical report rows; section rows may contain Header, nested Rows, and Summary, while data rows contain ColData values, IDs, and links | | ↳ `type` | string | QuickBooks row type | | ↳ `group` | string | QuickBooks section group | | ↳ `Header` | json | Section header column data | | ↳ `ColData` | array | Row values with optional operational IDs and links | | ↳ `Rows` | json | Nested native QuickBooks report rows | | ↳ `Summary` | json | Section summary column data | | `time` | string | QuickBooks response timestamp | ### QuickBooks Email Transaction [#quickbooks-email-transaction] Send a supported QuickBooks transaction by email. This causes an external email and Intuit limits sandbox email delivery. #### Input [#input-44] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `transactionType` | string | Yes | Supported transaction type to email | | `transactionId` | string | Yes | QuickBooks transaction ID | | `recipient` | string | No | Required for Customer Payments; otherwise an optional single recipient override | | `confirmSend` | boolean | Yes | Explicit confirmation that an external email should be sent | #### Output [#output-44] | Parameter | Type | Description | | --------------------------------- | ------- | ------------------------------------------------------- | | `transactionType` | string | Emailed QuickBooks transaction type | | `transactionId` | string | Emailed QuickBooks transaction ID | | `sent` | boolean | Whether QuickBooks accepted the email send request | | `record` | json | Native QuickBooks transaction returned after sending | | ↳ `Id` | string | QuickBooks transaction ID | | ↳ `SyncToken` | string | Current transaction sync token | | ↳ `DocNumber` | string | Transaction document number | | ↳ `TxnDate` | string | Transaction date | | ↳ `DueDate` | string | Transaction due date | | ↳ `ExpirationDate` | string | Estimate expiration date | | ↳ `CustomerRef` | json | Customer reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `CustomerMemo` | json | Customer-facing memo | | ↳ `DepositToAccountRef` | json | Deposit account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentMethodRef` | json | Payment method reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `PaymentRefNum` | string | Payment reference number | | ↳ `CurrencyRef` | json | Transaction currency reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `Line` | array | Native QuickBooks sales or purchasing transaction lines | | ↳ `Id` | string | QuickBooks transaction line ID | | ↳ `LineNum` | number | QuickBooks transaction line number | | ↳ `Description` | string | Transaction line description | | ↳ `Amount` | number | Transaction line amount | | ↳ `DetailType` | string | QuickBooks line detail type | | ↳ `LinkedTxn` | array | Transactions linked to this QuickBooks line | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `AccountBasedExpenseLineDetail` | json | Native QuickBooks account-based expense details | | ↳ `ItemBasedExpenseLineDetail` | json | Native QuickBooks item-based expense details | | ↳ `SalesItemLineDetail` | json | Native QuickBooks sales item line details | | ↳ `DescriptionLineDetail` | json | Native QuickBooks description line details | | ↳ `LinkedTxn` | array | Transactions linked by QuickBooks | | ↳ `TxnId` | string | Linked QuickBooks transaction ID | | ↳ `TxnType` | string | Linked QuickBooks transaction type | | ↳ `TxnLineId` | string | Linked QuickBooks transaction line ID | | ↳ `TotalAmt` | number | Transaction total amount | | ↳ `Balance` | number | Remaining transaction balance | | ↳ `UnappliedAmt` | number | Unapplied payment amount | | ↳ `PrivateNote` | string | Internal transaction note | | ↳ `TxnStatus` | string | Transaction status | | ↳ `TxnTaxDetail` | json | Calculated tax details | | ↳ `MetaData` | json | Transaction creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `POStatus` | string | Purchase order status | | ↳ `VendorRef` | json | Vendor reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `APAccountRef` | json | Accounts-payable account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `AccountRef` | json | Payment account reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `EntityRef` | json | Purchase payee reference | | ↳ `value` | string | QuickBooks entity ID | | ↳ `name` | string | QuickBooks entity display name | | ↳ `type` | string | Referenced entity type | | ↳ `PaymentType` | string | Purchase payment type | | ↳ `PayType` | string | Bill-payment type | | ↳ `CheckPayment` | json | Check payment account details | | ↳ `CreditCardPayment` | json | Credit-card payment account details | | `time` | string | QuickBooks response timestamp | ### QuickBooks Download Transaction PDF [#quickbooks-download-transaction-pdf] Download a supported QuickBooks transaction as a bounded PDF file #### Input [#input-45] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------- | | `transactionType` | string | Yes | Supported transaction type to download | | `transactionId` | string | Yes | QuickBooks transaction ID | | `fileName` | string | No | Optional safe PDF filename override | #### Output [#output-45] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | | `fileName` | string | Safe downloaded filename | | `mimeType` | string | Downloaded file MIME type | | `size` | number | Downloaded file size in bytes | | `transactionType` | string | Downloaded QuickBooks transaction type | | `transactionId` | string | Downloaded QuickBooks transaction ID | ### QuickBooks Read Attachments [#quickbooks-read-attachments] List attachment metadata for a fixed QuickBooks entity or read one attachment by ID #### Input [#input-46] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------- | | `readMode` | string | Yes | Read mode: list or by\_id | | `targetType` | string | No | Fixed QuickBooks entity type for List mode | | `targetId` | string | No | QuickBooks entity ID for List mode | | `attachmentId` | string | No | QuickBooks attachment ID for By ID mode | | `startPosition` | number | No | One-based list start position; defaults to 1 | | `maxResults` | number | No | List page size from 1 through 100; defaults to 25 | #### Output [#output-46] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------- | | `startPosition` | number | One-based position of the first item in this response | | `maxResults` | number | Actual number of items reported for this response | | `nextStartPosition` | number | Position to use when explicitly requesting the next page | | `hasMore` | boolean | Conservative indication that another page may exist | | `time` | string | QuickBooks response timestamp | | `item` | json | Native QuickBooks attachment metadata | | ↳ `Id` | string | QuickBooks attachment ID | | ↳ `SyncToken` | string | Attachment sync token | | ↳ `FileName` | string | Attached file name | | ↳ `ContentType` | string | Attached file MIME type | | ↳ `Size` | number | Attached file size in bytes | | ↳ `Note` | string | Attachment note or description | | ↳ `Category` | string | Native QuickBooks attachment category | | ↳ `AttachableRef` | array | QuickBooks entities referenced by this attachment | | ↳ `EntityRef` | json | Attached entity type and operational ID | | ↳ `IncludeOnSend` | boolean | Whether QuickBooks includes the attachment when sending | | ↳ `MetaData` | json | Attachment creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | | `items` | array | Native QuickBooks attachment metadata page | | ↳ `Id` | string | QuickBooks attachment ID | | ↳ `SyncToken` | string | Attachment sync token | | ↳ `FileName` | string | Attached file name | | ↳ `ContentType` | string | Attached file MIME type | | ↳ `Size` | number | Attached file size in bytes | | ↳ `Note` | string | Attachment note or description | | ↳ `Category` | string | Native QuickBooks attachment category | | ↳ `AttachableRef` | array | QuickBooks entities referenced by this attachment | | ↳ `EntityRef` | json | Attached entity type and operational ID | | ↳ `IncludeOnSend` | boolean | Whether QuickBooks includes the attachment when sending | | ↳ `MetaData` | json | Attachment creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | ### QuickBooks Add Attachment [#quickbooks-add-attachment] Attach one supported file or one note to a fixed QuickBooks entity #### Input [#input-47] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `attachmentKind` | string | Yes | Attachment kind: file or note | | `targetType` | string | Yes | Fixed QuickBooks entity type to attach to | | `targetId` | string | Yes | QuickBooks target entity ID | | `file` | file | No | Single Agent Serve file to upload | | `fileName` | string | No | Optional safe filename override | | `contentType` | string | No | Optional compatible QuickBooks MIME type override | | `description` | string | No | Optional file attachment description | | `note` | string | No | Required nonempty note text in Note mode | #### Output [#output-47] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------- | | `attachment` | json | Created native QuickBooks attachment metadata | | ↳ `Id` | string | QuickBooks attachment ID | | ↳ `SyncToken` | string | Attachment sync token | | ↳ `FileName` | string | Attached file name | | ↳ `ContentType` | string | Attached file MIME type | | ↳ `Size` | number | Attached file size in bytes | | ↳ `Note` | string | Attachment note or description | | ↳ `Category` | string | Native QuickBooks attachment category | | ↳ `AttachableRef` | array | QuickBooks entities referenced by this attachment | | ↳ `EntityRef` | json | Attached entity type and operational ID | | ↳ `IncludeOnSend` | boolean | Whether QuickBooks includes the attachment when sending | | ↳ `MetaData` | json | Attachment creation and update timestamps | | ↳ `CreateTime` | string | Entity creation timestamp | | ↳ `LastUpdatedTime` | string | Entity last-updated timestamp | | ↳ `domain` | string | QuickBooks domain | | ↳ `sparse` | boolean | Whether this is a sparse entity | | `attachmentId` | string | Created QuickBooks attachment ID | | `attachmentKind` | string | Created attachment kind | | `targetType` | string | QuickBooks target entity type | | `targetId` | string | QuickBooks target entity ID | | `time` | string | QuickBooks response timestamp | ### QuickBooks Download Attachment [#quickbooks-download-attachment] Download a QuickBooks file attachment as a stored Agent Serve file #### Input [#input-48] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------- | | `attachmentId` | string | Yes | QuickBooks attachment ID | | `fileName` | string | No | Optional safe filename override | #### Output [#output-48] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | | `fileName` | string | Safe downloaded filename | | `mimeType` | string | Downloaded file MIME type | | `size` | number | Downloaded file size in bytes | | `attachmentId` | string | Downloaded QuickBooks attachment ID | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### QuickBooks Account Events [#quickbooks-account-events] Trigger when selected Account events occur in QuickBooks #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_account_events` | string | Yes | Event Types | #### Output [#output-49] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Bill Events [#quickbooks-bill-events] Trigger when selected Bill events occur in QuickBooks #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ----------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_bill_events` | string | Yes | Event Types | #### Output [#output-50] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Bill Payment Events [#quickbooks-bill-payment-events] Trigger when selected Bill Payment events occur in QuickBooks #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_bill_payment_events` | string | Yes | Event Types | #### Output [#output-51] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Budget Events [#quickbooks-budget-events] Trigger when selected Budget events occur in QuickBooks #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_budget_events` | string | Yes | Event Types | #### Output [#output-52] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Class Events [#quickbooks-class-events] Trigger when selected Class events occur in QuickBooks #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------------------------------ | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_class_events` | string | Yes | Event Types | #### Output [#output-53] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Credit Memo Events [#quickbooks-credit-memo-events] Trigger when selected Credit Memo events occur in QuickBooks #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------------------------------------ | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_credit_memo_events` | string | Yes | Event Types | #### Output [#output-54] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Currency Events [#quickbooks-currency-events] Trigger when selected Currency events occur in QuickBooks #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_currency_events` | string | Yes | Event Types | #### Output [#output-55] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Customer Events [#quickbooks-customer-events] Trigger when selected Customer events occur in QuickBooks #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_customer_events` | string | Yes | Event Types | #### Output [#output-56] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Department Events [#quickbooks-department-events] Trigger when selected Department events occur in QuickBooks #### Configuration [#configuration-8] | Parameter | Type | Required | Description | | ----------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_department_events` | string | Yes | Event Types | #### Output [#output-57] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Deposit Events [#quickbooks-deposit-events] Trigger when selected Deposit events occur in QuickBooks #### Configuration [#configuration-9] | Parameter | Type | Required | Description | | -------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_deposit_events` | string | Yes | Event Types | #### Output [#output-58] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Employee Events [#quickbooks-employee-events] Trigger when selected Employee events occur in QuickBooks #### Configuration [#configuration-10] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_employee_events` | string | Yes | Event Types | #### Output [#output-59] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Estimate Events [#quickbooks-estimate-events] Trigger when selected Estimate events occur in QuickBooks #### Configuration [#configuration-11] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_estimate_events` | string | Yes | Event Types | #### Output [#output-60] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Invoice Events [#quickbooks-invoice-events] Trigger when selected Invoice events occur in QuickBooks #### Configuration [#configuration-12] | Parameter | Type | Required | Description | | -------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_invoice_events` | string | Yes | Event Types | #### Output [#output-61] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Item Events [#quickbooks-item-events] Trigger when selected Item events occur in QuickBooks #### Configuration [#configuration-13] | Parameter | Type | Required | Description | | ----------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_item_events` | string | Yes | Event Types | #### Output [#output-62] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Journal Code Events [#quickbooks-journal-code-events] Trigger when selected Journal Code events occur in QuickBooks #### Configuration [#configuration-14] | Parameter | Type | Required | Description | | ------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_journal_code_events` | string | Yes | Event Types | #### Output [#output-63] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Journal Entry Events [#quickbooks-journal-entry-events] Trigger when selected Journal Entry events occur in QuickBooks #### Configuration [#configuration-15] | Parameter | Type | Required | Description | | -------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_journal_entry_events` | string | Yes | Event Types | #### Output [#output-64] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Payment Events [#quickbooks-payment-events] Trigger when selected Payment events occur in QuickBooks #### Configuration [#configuration-16] | Parameter | Type | Required | Description | | -------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_payment_events` | string | Yes | Event Types | #### Output [#output-65] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Payment Method Events [#quickbooks-payment-method-events] Trigger when selected Payment Method events occur in QuickBooks #### Configuration [#configuration-17] | Parameter | Type | Required | Description | | --------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_payment_method_events` | string | Yes | Event Types | #### Output [#output-66] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Preferences Updated [#quickbooks-preferences-updated] Trigger when QuickBooks Preferences are updated #### Configuration [#configuration-18] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | #### Output [#output-67] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Purchase Events [#quickbooks-purchase-events] Trigger when selected Purchase events occur in QuickBooks #### Configuration [#configuration-19] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_purchase_events` | string | Yes | Event Types | #### Output [#output-68] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Purchase Order Events [#quickbooks-purchase-order-events] Trigger when selected Purchase Order events occur in QuickBooks #### Configuration [#configuration-20] | Parameter | Type | Required | Description | | --------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_purchase_order_events` | string | Yes | Event Types | #### Output [#output-69] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Refund Receipt Events [#quickbooks-refund-receipt-events] Trigger when selected Refund Receipt events occur in QuickBooks #### Configuration [#configuration-21] | Parameter | Type | Required | Description | | --------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_refund_receipt_events` | string | Yes | Event Types | #### Output [#output-70] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Sales Receipt Events [#quickbooks-sales-receipt-events] Trigger when selected Sales Receipt events occur in QuickBooks #### Configuration [#configuration-22] | Parameter | Type | Required | Description | | -------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_sales_receipt_events` | string | Yes | Event Types | #### Output [#output-71] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Tax Agency Events [#quickbooks-tax-agency-events] Trigger when selected Tax Agency events occur in QuickBooks #### Configuration [#configuration-23] | Parameter | Type | Required | Description | | ----------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_tax_agency_events` | string | Yes | Event Types | #### Output [#output-72] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Term Events [#quickbooks-term-events] Trigger when selected Term events occur in QuickBooks #### Configuration [#configuration-24] | Parameter | Type | Required | Description | | ----------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_term_events` | string | Yes | Event Types | #### Output [#output-73] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Time Activity Events [#quickbooks-time-activity-events] Trigger when selected Time Activity events occur in QuickBooks #### Configuration [#configuration-25] | Parameter | Type | Required | Description | | -------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_time_activity_events` | string | Yes | Event Types | #### Output [#output-74] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Transfer Events [#quickbooks-transfer-events] Trigger when selected Transfer events occur in QuickBooks #### Configuration [#configuration-26] | Parameter | Type | Required | Description | | --------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_transfer_events` | string | Yes | Event Types | #### Output [#output-75] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Vendor Credit Events [#quickbooks-vendor-credit-events] Trigger when selected Vendor Credit events occur in QuickBooks #### Configuration [#configuration-27] | Parameter | Type | Required | Description | | -------------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_vendor_credit_events` | string | Yes | Event Types | #### Output [#output-76] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | *** ### QuickBooks Vendor Events [#quickbooks-vendor-events] Trigger when selected Vendor events occur in QuickBooks #### Configuration [#configuration-28] | Parameter | Type | Required | Description | | ------------------------------------- | ------ | -------- | ------------------ | | `triggerCredentials` | string | Yes | QuickBooks Account | | `eventTypes_quickbooks_vendor_events` | string | Yes | Event Types | #### Output [#output-77] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------- | | `eventId` | string | Intuit webhook event ID | | `eventType` | string | Full Intuit CloudEvent type | | `entityType` | string | QuickBooks entity type | | `action` | string | QuickBooks webhook action | | `entityId` | string | QuickBooks entity ID | | `realmId` | string | QuickBooks company realm ID | | `eventTime` | string | Event timestamp | | `specVersion` | string | CloudEvents specification version | | `source` | string | Intuit event source | | `contentType` | string | Event content type, when provided | | `data` | json | Optional event data supplied by Intuit | --- # Quiver (/integrations/quiver) {/* MANUAL-CONTENT-START:intro */} [QuiverAI](https://quiver.ai/) is an AI-powered SVG generation platform that creates high-quality, scalable vector graphics from text descriptions or by vectorizing raster images. It produces clean, resolution-independent SVGs that are ideal for icons, illustrations, logos, and UI elements. With Quiver, you can: * **Generate SVGs from text prompts**: Describe the vector graphic you need and get production-ready SVG output * **Vectorize raster images**: Convert PNG, JPG, and other raster images into clean SVG vector format * **Provide reference images**: Upload up to 4 reference images to guide the style and composition of generated SVGs * **Control generation parameters**: Adjust temperature, number of outputs, and token limits to fine-tune results * **List available models**: Query available QuiverAI models to discover supported operations and capabilities * **Get clean SVG markup**: Receive raw SVG content alongside downloadable files for easy embedding In Agent Serve, the Quiver integration enables your workflows to generate and vectorize graphics on demand. This is useful for creating dynamic illustrations, converting raster assets to scalable vectors, generating icons for applications, producing visual assets for content pipelines, or building design automation workflows. The generated SVGs are returned as files that can be passed to downstream blocks for further processing, storage, or delivery. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Generate SVG images from text prompts or vectorize raster images into SVGs using QuiverAI. Supports reference images, style instructions, and multiple output generation. ## Actions [#actions] ### Quiver Text to SVG [#quiver-text-to-svg] Generate SVG images from text prompts using QuiverAI #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | QuiverAI API key | | `prompt` | string | Yes | A text description of the desired SVG | | `model` | string | Yes | The model to use for SVG generation (e.g., "arrow-preview") | | `instructions` | string | No | Style or formatting guidance for the SVG output | | `references` | file | No | Reference images to guide SVG generation (up to 4) | | `n` | number | No | Number of SVGs to generate (1-16, default 1) | | `temperature` | number | No | Sampling temperature (0-2, default 1) | | `top_p` | number | No | Nucleus sampling probability (0-1, default 1) | | `max_output_tokens` | number | No | Maximum output tokens (1-131072) | | `presence_penalty` | number | No | Token penalty for prior output (-2 to 2, default 0) | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | ----------------------- | | `files` | file\[] | All generated SVG files | | `id` | string | Request ID | | `usage` | json | Token usage statistics | | ↳ `totalTokens` | number | Total tokens used | | ↳ `inputTokens` | number | Input tokens used | | ↳ `outputTokens` | number | Output tokens used | ### Quiver Image to SVG [#quiver-image-to-svg] Convert raster images into vector SVG format using QuiverAI #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | QuiverAI API key | | `model` | string | Yes | The model to use for vectorization (e.g., "arrow-preview") | | `image` | file | Yes | The raster image to vectorize into SVG | | `temperature` | number | No | Sampling temperature (0-2, default 1) | | `top_p` | number | No | Nucleus sampling probability (0-1, default 1) | | `max_output_tokens` | number | No | Maximum output tokens (1-131072) | | `presence_penalty` | number | No | Token penalty for prior output (-2 to 2, default 0) | | `auto_crop` | boolean | No | Automatically crop the image before vectorizing | | `target_size` | number | No | Square resize target in pixels (128-4096) | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------- | ----------------------- | | `files` | file\[] | All generated SVG files | | `id` | string | Request ID | | `usage` | json | Token usage statistics | | ↳ `totalTokens` | number | Total tokens used | | ↳ `inputTokens` | number | Input tokens used | | ↳ `outputTokens` | number | Output tokens used | ### Quiver List Models [#quiver-list-models] List all available QuiverAI models #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | QuiverAI API key | #### Output [#output-2] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | | `success` | boolean | Whether the request succeeded | | `output` | object | Available models | | ↳ `models` | json | List of available QuiverAI models | | ↳ `id` | string | Model identifier | | ↳ `name` | string | Human-readable model name | | ↳ `description` | string | Model capabilities summary | | ↳ `created` | number | Unix timestamp of creation | | ↳ `ownedBy` | string | Organization that owns the model | | ↳ `inputModalities` | json | Supported input types (text, image, svg) | | ↳ `outputModalities` | json | Supported output types (text, image, svg) | | ↳ `contextLength` | number | Maximum context window | | ↳ `maxOutputLength` | number | Maximum generation length | | ↳ `supportedOperations` | json | Available operations (svg\_generate, svg\_edit, svg\_animate, svg\_vectorize, chat\_completions) | | ↳ `supportedSamplingParameters` | json | Supported sampling parameters (temperature, top\_p, top\_k, repetition\_penalty, presence\_penalty, stop) | --- # RabbitMQ (/integrations/rabbitmq) {/* MANUAL-CONTENT-START:intro */} Use [RabbitMQ](https://www.rabbitmq.com/)'s Management HTTP API to publish and inspect messages, manage queue topology, and check broker health. Messages are published to exchanges and routed through bindings into queues. The default acknowledgement mode requeues messages after reading them, so an inspection workflow can leave messages available to other consumers. **Before you start** * The **management plugin must be enabled and reachable** from Agent Serve. It listens on port `15672` by default and is separate from the AMQP port (`5672`). Self-hosted brokers enable it with `rabbitmq-plugins enable rabbitmq_management`; managed providers expose it as a management or console URL. * The management URL **must use `https`** unless the broker is on a loopback host. Credentials travel on every request as HTTP basic auth, so plain `http` to a remote broker would put them on the wire in the clear — Agent Serve rejects it rather than sending them. * The user you authenticate as needs the **`management` tag** at minimum, plus read and write permissions on the virtual host you target. Administrative operations require broader permissions. * Publishing and reading messages over the HTTP API is **convenient but not a high-throughput transport** — RabbitMQ opens a new connection per request. It is well suited to workflow-rate traffic, inspection, and operational automation; a service consuming thousands of messages per second should use an AMQP client instead. * Queue statistics such as message and consumer counts are **collected on an interval**, so a queue declared moments ago may report them as empty until the broker's next sample. * Reading messages is **bounded per call** so one retrieval cannot exceed Agent Serve's response limit. A batch is capped at 50 messages, payloads are truncated (each message reports whether it was), and a large batch shortens payloads further. AMQP properties and headers are returned in full — the broker offers no way to truncate them — so retrieving several messages carrying very large headers may still hit the limit; lower the count if that happens. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect agents to a RabbitMQ broker through its Management HTTP API. Publish messages to exchanges, read messages off queues, declare queues, exchanges, bindings, and policies, and inspect broker health, queue depth, consumers, connections, and cluster nodes. Works with self-hosted brokers and managed offerings such as CloudAMQP as long as the management plugin is reachable. ## Actions [#actions] ### RabbitMQ Publish Message [#rabbitmq-publish-message] Publish a message to a RabbitMQ exchange with a routing key. Reports whether the message was routed to at least one queue. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | No | Exchange to publish to. Leave empty to publish to the default exchange, which routes by queue name. Empty is a valid value, so this is not required. | | `routingKey` | string | Yes | Routing key. When publishing to the default exchange this is the target queue name. | | `payload` | string | Yes | Message body to publish | | `payloadEncoding` | string | No | How the payload is encoded: string (default) or base64 | | `properties` | string | No | AMQP basic properties as a JSON object, e.g. \{"delivery\_mode":2,"content\_type":"application/json"} | | `headers` | string | No | Message headers as a JSON object, e.g. \{"source":"agentserve"} | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------- | | `routed` | boolean | Whether the message was routed to at least one queue. False means no binding matched and the message was dropped. | | `exchange` | string | Exchange the message was published to | | `routingKey` | string | Routing key the message was published with | ### RabbitMQ Get Messages [#rabbitmq-get-messages] Retrieve messages from a RabbitMQ queue. Defaults to requeueing the messages so they stay available to real consumers. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Queue to read messages from | | `count` | number | No | Maximum number of messages to retrieve, from 1 to 50. Defaults to 1 | | `ackmode` | string | No | How retrieved messages are handled: ack\_requeue\_true (default, leaves messages in the queue), ack\_requeue\_false (removes them), reject\_requeue\_true, or reject\_requeue\_false | | `encoding` | string | No | auto (default) returns readable text where possible, base64 always returns base64 | | `truncate` | number | No | Truncate payloads longer than this many bytes. Defaults to 50000, capped at 1000000, and lowered further at high counts so the whole batch stays inside the response limit. Each message reports whether it was truncated | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------------ | | `queueName` | string | Queue the messages were read from | | `count` | number | Number of messages retrieved | | `messages` | array | Retrieved messages, empty when the queue holds nothing | ### RabbitMQ List Queues [#rabbitmq-list-queues] List queues in a RabbitMQ virtual host with their depth, consumer count, and configuration. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `page` | number | No | Page of results to return, starting at 1 | | `pageSize` | number | No | Queues per page, from 1 to 500. Defaults to 50 | | `name` | string | No | Filter queues whose name contains this value | | `useRegex` | boolean | No | Treat the name filter as a regular expression | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------- | | `queues` | array | Queues in the virtual host | | `count` | number | Number of queues returned on this page | | `totalCount` | number | Total queues in the virtual host before filtering | | `page` | number | Page number returned | | `pageCount` | number | Total number of pages | ### RabbitMQ Get Queue [#rabbitmq-get-queue] Read a single RabbitMQ queue, including its depth, consumer count, and declaration settings. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Queue name to read | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `queue` | object | The requested queue | ### RabbitMQ Create Queue [#rabbitmq-create-queue] Declare a RabbitMQ queue. Declaring a queue that already exists with the same settings succeeds without changing it. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Name of the queue to declare | | `durable` | boolean | No | Whether the queue survives a broker restart. Defaults to true | | `autoDelete` | boolean | No | Delete the queue when its last consumer disconnects. Defaults to false | | `arguments` | string | No | Queue arguments as a JSON object, e.g. \{"x-queue-type":"quorum","x-message-ttl":60000} | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------- | -------------------------------------- | | `queueName` | string | Name of the declared queue | | `vhost` | string | Virtual host the queue was declared in | | `created` | boolean | Whether the declaration succeeded | ### RabbitMQ Delete Queue [#rabbitmq-delete-queue] Delete a RabbitMQ queue and every message still in it. Can be guarded so the delete only happens when the queue is unused or empty. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Name of the queue to delete | | `ifUnused` | boolean | No | Only delete the queue when it has no consumers | | `ifEmpty` | boolean | No | Only delete the queue when it holds no messages | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------- | | `queueName` | string | Name of the deleted queue | | `vhost` | string | Virtual host the queue was deleted from | | `deleted` | boolean | Whether the queue was deleted | ### RabbitMQ Purge Queue [#rabbitmq-purge-queue] Discard every ready message in a RabbitMQ queue while leaving the queue itself in place. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Name of the queue to purge | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | --------------------------------- | | `queueName` | string | Name of the purged queue | | `vhost` | string | Virtual host the queue belongs to | | `purged` | boolean | Whether the queue was purged | ### RabbitMQ List Exchanges [#rabbitmq-list-exchanges] List exchanges in a RabbitMQ virtual host with their type and declaration settings. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `page` | number | No | Page of results to return, starting at 1 | | `pageSize` | number | No | Exchanges per page, from 1 to 500. Defaults to 50 | | `name` | string | No | Filter exchanges whose name contains this value | | `useRegex` | boolean | No | Treat the name filter as a regular expression | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------------------- | | `exchanges` | array | Exchanges in the virtual host | | `count` | number | Number of exchanges returned on this page | | `totalCount` | number | Total exchanges in the virtual host before filtering | | `page` | number | Page number returned | | `pageCount` | number | Total number of pages | ### RabbitMQ Get Exchange [#rabbitmq-get-exchange] Read a single RabbitMQ exchange and the settings it was declared with. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | No | Exchange name to read. Leave empty for the default exchange, which is a valid value, so this is not required | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------ | ---------------------- | | `exchange` | object | The requested exchange | ### RabbitMQ Create Exchange [#rabbitmq-create-exchange] Declare a RabbitMQ exchange. Declaring an exchange that already exists with the same settings succeeds without changing it. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | Yes | Name of the exchange to declare | | `exchangeType` | string | No | Routing behaviour: direct (exact routing key, default), topic (wildcard patterns), fanout (every bound queue), or headers (match on binding arguments) | | `durable` | boolean | No | Whether the exchange survives a broker restart. Defaults to true | | `autoDelete` | boolean | No | Delete the exchange once its last binding is removed. Defaults to false | | `internal` | boolean | No | Internal exchanges cannot be published to directly, only bound from another exchange. Defaults to false | | `arguments` | string | No | Exchange arguments as a JSON object, e.g. \{"alternate-exchange":"unrouted"} to capture messages that match no binding | #### Output [#output-9] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------- | | `exchangeName` | string | Name of the declared exchange | | `vhost` | string | Virtual host the exchange was declared in | | `created` | boolean | Whether the declaration succeeded | ### RabbitMQ Delete Exchange [#rabbitmq-delete-exchange] Delete a RabbitMQ exchange and every binding attached to it. Publishers targeting it will fail afterwards. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | Yes | Name of the exchange to delete | | `ifUnused` | boolean | No | Only delete the exchange when nothing is bound to it | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | ------------------------------------------ | | `exchangeName` | string | Name of the deleted exchange | | `vhost` | string | Virtual host the exchange was deleted from | | `deleted` | boolean | Whether the exchange was deleted | ### RabbitMQ List Bindings [#rabbitmq-list-bindings] List the bindings that route messages into a RabbitMQ queue, including the implicit default-exchange binding. #### Input [#input-11] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `queue` | string | Yes | Queue whose bindings should be listed | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------------------------------------------------- | | `queueName` | string | Queue the bindings route into | | `bindings` | array | Bindings targeting the queue. The entry with an empty source is the implicit default-exchange binding | | `count` | number | Number of bindings returned | ### RabbitMQ List Exchange Bindings [#rabbitmq-list-exchange-bindings] List everything an exchange routes to, so you can see which routing keys reach which queues. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | No | Exchange whose outgoing bindings should be listed. Leave empty for the default exchange, which is a valid value, so this is not required | #### Output [#output-12] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------------------- | | `exchangeName` | string | Exchange the bindings originate from | | `bindings` | array | Bindings routing out of the exchange. An empty list means nothing it publishes can be delivered | | `count` | number | Number of bindings returned | ### RabbitMQ Create Binding [#rabbitmq-create-binding] Bind a queue or another exchange to a RabbitMQ exchange so messages matching a routing key are routed to it. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | Yes | Source exchange to bind from | | `queue` | string | Yes | Destination queue, or destination exchange when binding exchange to exchange | | `destinationType` | string | No | Whether the destination is a queue (default) or an exchange. Exchange-to-exchange bindings chain routing between exchanges | | `routingKey` | string | No | Routing key the binding matches. Topic exchanges accept wildcards such as orders.\* | | `arguments` | string | No | Binding arguments as a JSON object. Headers exchanges match on these, e.g. \{"x-match":"all","type":"invoice"} | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------- | | `exchange` | string | Source exchange the binding reads from | | `queueName` | string | Destination queue the binding routes into | | `routingKey` | string | Routing key the binding matches | | `propertiesKey` | string | Broker identifier addressing the new binding | | `created` | boolean | Whether the binding was created | ### RabbitMQ Delete Binding [#rabbitmq-delete-binding] Remove a binding so an exchange stops routing its matching messages to that destination. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `exchange` | string | Yes | Source exchange the binding reads from | | `destination` | string | Yes | Destination queue or exchange the binding routes to | | `destinationType` | string | No | Whether the destination is a queue (default) or an exchange | | `propertiesKey` | string | Yes | Broker identifier for the binding, taken from List Bindings or Create Binding. It is the routing key for a simple binding, \~ for an empty routing key, and a hashed value when the binding has arguments | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------- | | `exchange` | string | Source exchange the binding read from | | `destination` | string | Destination the binding routed to | | `propertiesKey` | string | Broker identifier of the deleted binding | | `deleted` | boolean | Whether the binding was deleted | ### RabbitMQ Get Overview [#rabbitmq-get-overview] Read broker-wide RabbitMQ status: version, cluster name, object totals, queue depth totals, and message rates. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | #### Output [#output-15] | Parameter | Type | Description | | --------------------------- | ------ | ----------------------------------------------------------------------- | | `rabbitmqVersion` | string | RabbitMQ version running on the node | | `productName` | string | Broker product name | | `productVersion` | string | Broker product version | | `erlangVersion` | string | Erlang runtime version | | `clusterName` | string | Name of the cluster | | `node` | string | Node that served the request | | `objectTotals` | object | Counts of brokers objects | | ↳ `connections` | number | Open connections | | ↳ `channels` | number | Open channels | | ↳ `exchanges` | number | Declared exchanges | | ↳ `queues` | number | Declared queues | | ↳ `consumers` | number | Registered consumers | | `queueTotals` | object | Aggregate queue depth across the broker | | ↳ `messages` | number | Total messages across all queues | | ↳ `messages_ready` | number | Messages ready for delivery | | ↳ `messages_unacknowledged` | number | Delivered but unacknowledged messages | | `messageStats` | json | Broker-wide message counters and rates, e.g. publish and confirm totals | ### RabbitMQ Health Check [#rabbitmq-health-check] Run one of the broker health checks and report whether it passed. A failing check is a normal result, not a tool error. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `check` | string | No | Which check to run: alarms (cluster-wide resource alarms, default), local-alarms, virtual-hosts, node-is-quorum-critical, port-listener, protocol-listener, or certificate-expiration | | `port` | number | No | Port to verify a listener on. Required for the port-listener check | | `protocol` | string | No | Protocol to verify a listener for, e.g. amqp, amqp/ssl, mqtt, stomp, or http. Required for the protocol-listener check | | `within` | number | No | How far ahead to look for expiring certificates. Required for the certificate-expiration check | | `unit` | string | No | Unit for the certificate-expiration window: days, weeks, months (default), or years | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------------------------------------- | | `check` | string | The health check that was run | | `healthy` | boolean | True when the check reported status ok | | `status` | string | Raw status reported by the broker: ok or failed | | `reason` | string | Explanation the broker gave, present on failures and on some passes | | `details` | json | Full check body, including check-specific fields such as the ports or protocols found | ### RabbitMQ List Nodes [#rabbitmq-list-nodes] List the cluster nodes with memory, disk, file-descriptor, and alarm state. A fired alarm blocks publishers broker-wide. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------- | | `nodes` | array | Cluster nodes and their resource headroom | | `count` | number | Number of nodes in the cluster | ### RabbitMQ List Virtual Hosts [#rabbitmq-list-virtual-hosts] List the virtual hosts on the broker with their message totals, so you can discover which scopes exist. #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `vhosts` | array | Virtual hosts the authenticated user can see | | `count` | number | Number of virtual hosts returned | ### RabbitMQ List Connections [#rabbitmq-list-connections] List client connections to the broker with their user, state, and channel count. Connections are cluster-wide, not scoped to one virtual host. #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `page` | number | No | Page of results to return, starting at 1 | | `pageSize` | number | No | Connections per page, from 1 to 500. Defaults to 50 | | `name` | string | No | Filter connections whose name contains this value | | `useRegex` | boolean | No | Treat the name filter as a regular expression | #### Output [#output-19] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------- | | `connections` | array | Open client connections | | `count` | number | Number of connections returned on this page | | `totalCount` | number | Total connections before filtering | | `page` | number | Page number returned | | `pageCount` | number | Total number of pages | ### RabbitMQ List Channels [#rabbitmq-list-channels] List open channels with their prefetch limit and unacknowledged message count, which is where stalled consumers show up. Channels are cluster-wide, not scoped to one virtual host. #### Input [#input-20] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `page` | number | No | Page of results to return, starting at 1 | | `pageSize` | number | No | Channels per page, from 1 to 500. Defaults to 50 | | `name` | string | No | Filter channels whose name contains this value | | `useRegex` | boolean | No | Treat the name filter as a regular expression | #### Output [#output-20] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `channels` | array | Open channels | | `count` | number | Number of channels returned on this page | | `totalCount` | number | Total channels before filtering | | `page` | number | Page number returned | | `pageCount` | number | Total number of pages | ### RabbitMQ List Consumers [#rabbitmq-list-consumers] List the consumers subscribed in a virtual host. An empty result for a queue with a backlog means nothing is processing it. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------- | | `consumers` | array | Consumers currently subscribed in the virtual host | | `count` | number | Number of consumers returned | ### RabbitMQ List Policies [#rabbitmq-list-policies] List the policies in a virtual host. Policies are how dead-lettering, TTLs, and length limits get applied to matching queues and exchanges. #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | #### Output [#output-22] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------ | | `policies` | array | Policies defined in the virtual host | | `count` | number | Number of policies returned | ### RabbitMQ Create Policy [#rabbitmq-create-policy] Create or replace a RabbitMQ policy, applying settings such as dead-lettering, TTLs, or length limits to every queue or exchange whose name matches a pattern. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `policyName` | string | Yes | Name of the policy. Reusing an existing name replaces that policy | | `pattern` | string | Yes | Regular expression matched against queue or exchange names, e.g. ^orders. to match every name starting with orders. | | `definition` | string | Yes | Settings to apply, as a JSON object, e.g. \{"dead-letter-exchange":"dlx","message-ttl":86400000,"max-length":10000} | | `priority` | number | No | Priority, defaulting to 0. When several policies match a resource only the highest-priority one applies — they do not merge | | `applyTo` | string | No | What the policy applies to: queues (default), classic\_queues, quorum\_queues, streams, exchanges, or all | #### Output [#output-23] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------ | | `policyName` | string | Name of the created policy | | `vhost` | string | Virtual host the policy applies in | | `created` | boolean | Whether the policy was created or replaced | ### RabbitMQ Delete Policy [#rabbitmq-delete-policy] Delete a RabbitMQ policy. Every queue and exchange it matched immediately loses the settings it applied. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `host` | string | Yes | RabbitMQ Management API base URL, e.g. [https://rabbit.example.com:15672](https://rabbit.example.com:15672). Must use https unless the broker is on a loopback host. | | `username` | string | Yes | RabbitMQ username | | `password` | string | Yes | RabbitMQ password | | `vhost` | string | No | Virtual host to operate on. Defaults to / | | `policyName` | string | Yes | Name of the policy to delete | #### Output [#output-24] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------- | | `policyName` | string | Name of the deleted policy | | `vhost` | string | Virtual host the policy applied in | | `deleted` | boolean | Whether the policy was deleted | --- # Railway (/integrations/railway) {/* MANUAL-CONTENT-START:intro */} [Railway](https://railway.com/) is a cloud application platform for deploying, operating, and scaling services, databases, jobs, and production environments from a single project workspace. Teams use Railway to connect source repositories, manage environments, configure variables, trigger deployments, and monitor delivery across staging and production. With Railway, you can: * **Manage projects and environments**: Organize deployed services and inspect the environments attached to each project * **Automate deployments**: Trigger new service deployments and inspect recent deployment status from workflows * **Control runtime configuration**: Read and update environment variables for services or shared project environments * **Connect infrastructure workflows**: Use project, service, and environment IDs from one step to drive release automation in later steps In Agent Serve, the Railway integration lets your agents work with Railway's public GraphQL API directly from workflows. You can list projects, fetch project services and environments, inspect deployments, deploy a service, and manage environment variables as part of CI/CD, operations, and release processes. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Railway into workflows to list projects, manage services and environments, monitor deployments, trigger and roll back service deployments, and manage environment variables. ## Actions [#actions] ### Railway List Projects [#railway-list-projects] List Railway projects visible to the provided token #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `workspaceId` | string | No | Workspace ID to list projects from | | `first` | number | No | Maximum number of projects to return | | `after` | string | No | Cursor for pagination | #### Output [#output] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------- | | `projects` | array | Railway projects | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `createdAt` | string | Project creation timestamp | | ↳ `updatedAt` | string | Project update timestamp | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether more projects are available | | ↳ `endCursor` | string | Cursor for the next page | | `count` | number | Number of projects returned | ### Railway Get Project [#railway-get-project] Get a Railway project with its services and environments #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------- | | `project` | object | Project with services and environments | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | | ↳ `createdAt` | string | Project creation timestamp | | ↳ `updatedAt` | string | Project update timestamp | | ↳ `services` | array | Project services | | ↳ `id` | string | Service ID | | ↳ `name` | string | Service name | | ↳ `icon` | string | Service icon | | ↳ `environments` | array | Project environments | | ↳ `id` | string | Environment ID | | ↳ `name` | string | Environment name | ### Railway Create Project [#railway-create-project] Create a Railway project #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `name` | string | Yes | Project name | | `description` | string | No | Project description | | `workspaceId` | string | No | Workspace ID to create the project in | | `isPublic` | boolean | No | Whether the project should be publicly visible | | `defaultEnvironmentName` | string | No | Name for the default environment | | `prDeploys` | boolean | No | Whether to enable pull request deploys | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | --------------- | | `project` | object | Created project | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | ### Railway Update Project [#railway-update-project] Update a Railway project name or description #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `name` | string | No | Updated project name | | `description` | string | No | Updated project description | | `isPublic` | boolean | No | Whether the project should be publicly visible | | `prDeploys` | boolean | No | Whether to enable pull request deploy environments | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------- | | `project` | object | Updated project | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `description` | string | Project description | ### Railway Delete Project [#railway-delete-project] Delete a Railway project #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the project was deleted | ### Railway Transfer Project [#railway-transfer-project] Transfer a Railway project to another workspace #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `workspaceId` | string | Yes | Destination workspace ID | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the project was transferred | ### Railway List Project Members [#railway-list-project-members] List members for a Railway project #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------ | -------------------------- | | `members` | array | Project members | | ↳ `id` | string | Member user ID | | ↳ `role` | string | Project role | | ↳ `name` | string | Member name | | ↳ `email` | string | Member email | | ↳ `avatar` | string | Member avatar URL | | `count` | number | Number of members returned | ### Railway Create Environment [#railway-create-environment] Create a Railway project environment #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `name` | string | Yes | Environment name | | `sourceEnvironmentId` | string | No | Environment ID to clone from | | `ephemeral` | boolean | No | Whether the environment is ephemeral | | `skipInitialDeploys` | boolean | No | Whether to skip initial deploys for the environment | | `stageInitialChanges` | boolean | No | Whether to stage initial changes instead of applying them immediately | #### Output [#output-7] | Parameter | Type | Description | | ------------- | ------ | ------------------- | | `environment` | object | Created environment | | ↳ `id` | string | Environment ID | | ↳ `name` | string | Environment name | ### Railway Delete Environment [#railway-delete-environment] Delete a Railway project environment #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `environmentId` | string | Yes | Railway environment ID | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the environment was deleted | ### Railway Create Service [#railway-create-service] Create a Railway service from a GitHub repo or Docker image #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `name` | string | Yes | Service name | | `repo` | string | No | GitHub repository in owner/name format to deploy from | | `image` | string | No | Docker image to deploy, for example redis:7-alpine | | `branch` | string | No | Git branch to deploy when using a repository source | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | --------------- | | `service` | object | Created service | | ↳ `id` | string | Service ID | | ↳ `name` | string | Service name | ### Railway Delete Service [#railway-delete-service] Delete a Railway service and all of its deployments #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `serviceId` | string | Yes | Railway service ID | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the service was deleted | ### Railway List Deployments [#railway-list-deployments] List deployments for a Railway service in an environment #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `serviceId` | string | Yes | Railway service ID | | `environmentId` | string | Yes | Railway environment ID | | `first` | number | No | Maximum number of deployments to return | | `after` | string | No | Cursor for pagination | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------- | | `deployments` | array | Service deployments | | ↳ `id` | string | Deployment ID | | ↳ `status` | string | Deployment status | | ↳ `createdAt` | string | Deployment creation timestamp | | ↳ `url` | string | Deployment URL | | ↳ `staticUrl` | string | Static deployment URL | | ↳ `canRollback` | boolean | Whether this deployment can be rolled back to | | ↳ `canRedeploy` | boolean | Whether this deployment can be redeployed | | `count` | number | Number of deployments returned | | `pageInfo` | object | Pagination information | | ↳ `hasNextPage` | boolean | Whether more deployments are available | | ↳ `endCursor` | string | Cursor for the next page | ### Railway Get Deployment [#railway-get-deployment] Get details for a single Railway deployment #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `deploymentId` | string | Yes | Railway deployment ID | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------- | | `deployment` | object | Deployment details | | ↳ `id` | string | Deployment ID | | ↳ `status` | string | Deployment status | | ↳ `createdAt` | string | Deployment creation timestamp | | ↳ `url` | string | Deployment URL | | ↳ `staticUrl` | string | Static deployment URL | | ↳ `canRollback` | boolean | Whether the deployment can be rolled back to | | ↳ `canRedeploy` | boolean | Whether the deployment can be redeployed | ### Railway Deploy Service [#railway-deploy-service] Trigger a deployment for a Railway service in an environment #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `serviceId` | string | Yes | Railway service ID | | `environmentId` | string | Yes | Railway environment ID | | `commitSha` | string | No | Specific Git commit SHA to deploy | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | --------------------- | | `deploymentId` | string | Created deployment ID | ### Railway Restart Deployment [#railway-restart-deployment] Restart a running Railway deployment without rebuilding #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `deploymentId` | string | Yes | Railway deployment ID | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the deployment was restarted | ### Railway Rollback Deployment [#railway-rollback-deployment] Roll a Railway service back to a previous deployment #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `deploymentId` | string | Yes | Railway deployment ID to roll back to (must have canRollback) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the rollback was triggered | ### Railway Get Deployment Logs [#railway-get-deployment-logs] Retrieve runtime logs for a Railway deployment #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `deploymentId` | string | Yes | Railway deployment ID | | `limit` | number | No | Maximum number of log lines to return | #### Output [#output-16] | Parameter | Type | Description | | ------------- | ------ | ------------------------------ | | `logs` | array | Deployment log entries | | ↳ `timestamp` | string | Log timestamp | | ↳ `message` | string | Log message | | ↳ `severity` | string | Log severity | | `count` | number | Number of log entries returned | ### Railway List Variables [#railway-list-variables] List Railway environment variables for a service or shared environment #### Input [#input-17] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `environmentId` | string | Yes | Railway environment ID | | `serviceId` | string | No | Railway service ID. Omit for shared environment variables. | #### Output [#output-17] | Parameter | Type | Description | | ----------- | ------ | ---------------------------- | | `variables` | object | Variable names and values | | `count` | number | Number of variables returned | ### Railway Upsert Variable [#railway-upsert-variable] Create or update a Railway environment variable #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `environmentId` | string | Yes | Railway environment ID | | `serviceId` | string | No | Railway service ID. Omit to create or update a shared variable. | | `name` | string | Yes | Variable name | | `value` | string | Yes | Variable value | | `skipDeploys` | boolean | No | Whether to skip automatic redeploys after changing the variable | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the variable was created or updated | ### Railway Delete Variable [#railway-delete-variable] Delete a Railway environment variable #### Input [#input-19] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Railway API token | | `tokenType` | string | No | Railway token type. Use "account" for account, workspace, or OAuth tokens, or "project" for project tokens. | | `projectId` | string | Yes | Railway project ID | | `environmentId` | string | Yes | Railway environment ID | | `name` | string | Yes | Variable name to delete | | `serviceId` | string | No | Railway service ID. Omit to delete a shared variable. | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `success` | boolean | Whether the variable was deleted | --- # Ramp (/integrations/ramp) ## Usage Instructions [#usage-instructions] Connect Ramp to your agents to review company balances, employees, card transactions, physical and virtual cards, vendors, bills, and reimbursements. Add transaction memos and paginate through records with up to 100 results per request. ## Actions [#actions] ### Ramp Get Business [#ramp-get-business] Fetch the company information in Ramp #### Input [#input] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------------------------- | | `business` | json | Business details | | ↳ `id` | string | Id | | ↳ `business_name_legal` | string | Business name legal | | ↳ `business_name_on_card` | string | Business name on card | | ↳ `active` | boolean | Active | | ↳ `created_time` | string | Created time | | ↳ `website` | string | Website | | ↳ `is_reimbursements_enabled` | boolean | Is reimbursements enabled | | ↳ `initial_approved_limit_amount` | json | Initial approved limit amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Amount in the smallest currency denomination; signed for transactions | ### Ramp Get Balance [#ramp-get-balance] Fetch the company balance information in Ramp #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------------------- | ------ | ---------------------------------------------------------------- | | `balance` | json | Balance details | | ↳ `card_limit_amount` | json | Card limit amount | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `available_card_limit_amount` | json | Available card limit amount | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `card_balance_including_pending_amount` | json | Card balance including pending amount | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `card_balance_excluding_pending_amount` | json | Card balance excluding pending amount | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `statement_balance_amount` | json | Statement balance amount | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `next_billing_date` | string | Next billing date | | ↳ `prev_billing_date` | string | Prev billing date | ### Ramp List Users [#ramp-list-users] List users in one page in Ramp #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `email` | string | No | filter by email | | `status` | string | No | Filter only for users with the given status. Defaults to returning all active and inactive users, but not suspended users | | `department_id` | string | No | filter by department | | `entity_id` | string | No | filter by business entity | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------- | | `users` | array | One page of users | | ↳ `id` | string | Id | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email | | ↳ `role` | string | Role | | ↳ `status` | string | Status | | ↳ `employee_id` | string | Employee id | | ↳ `department_id` | string | Department id | | ↳ `location_id` | string | Location id | | ↳ `manager_id` | string | Manager id | | ↳ `entity_id` | string | Entity id | | ↳ `is_manager` | boolean | Is manager | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get User [#ramp-get-user] Fetch a user in Ramp #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `user_id` | string | Yes | User id | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------- | | `user` | json | User details | | ↳ `id` | string | Id | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email | | ↳ `role` | string | Role | | ↳ `status` | string | Status | | ↳ `employee_id` | string | Employee id | | ↳ `department_id` | string | Department id | | ↳ `location_id` | string | Location id | | ↳ `manager_id` | string | Manager id | | ↳ `entity_id` | string | Entity id | | ↳ `is_manager` | boolean | Is manager | ### Ramp List Transactions [#ramp-list-transactions] List transactions in one page in Ramp #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `user_id` | string | No | Filter by user. | | `department_id` | string | No | Filter by department. | | `from_date` | string | No | Filter for transactions with a `user_transaction_time` after the given date, in ISO8601 format. | | `to_date` | string | No | Filter for transactions with a `user_transaction_time` before the given date, in ISO8601 format. | | `transaction_state` | string | No | Filter by transaction state. If set to 'ALL', all transactions including 'DECLINED' will be listed. | | `sync_status` | string | No | Filter for transactions by sync status. If set, it supersedes sync\_ready and has\_no\_sync\_commits | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-4] | Parameter | Type | Description | | ------------------------------------- | ------- | --------------------------------------------------------------------- | | `transactions` | array | One page of transactions | | ↳ `id` | string | Id | | ↳ `entity_amount` | json | Entity amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Amount in the smallest currency denomination; signed for transactions | | ↳ `merchant_amount` | json | Merchant amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Amount in the smallest currency denomination; signed for transactions | | ↳ `merchant_name` | string | Merchant name | | ↳ `merchant_descriptor` | string | Merchant descriptor | | ↳ `merchant_category_code` | string | Merchant category code | | ↳ `memo` | string | Memo | | ↳ `state` | string | State | | ↳ `card_id` | string | Card id | | ↳ `card_holder` | json | Card holder | | ↳ `user_id` | string | User id | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `department_id` | string | Department id | | ↳ `department_name` | string | Department name | | ↳ `user_transaction_time` | string | User transaction time | | ↳ `settlement_date` | string | Settlement date | | ↳ `all_requirements_met_and_approved` | boolean | All requirements met and approved | | ↳ `sync_status` | string | Sync status | | ↳ `entity_id` | string | Entity id | | ↳ `updated_at` | string | Updated at | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Transaction [#ramp-get-transaction] Fetch a transaction in Ramp #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------- | | `transaction_id` | string | Yes | Transaction id | #### Output [#output-5] | Parameter | Type | Description | | ------------------------------------- | ------- | --------------------------------------------------------------------- | | `transaction` | json | Transaction details | | ↳ `id` | string | Id | | ↳ `entity_amount` | json | Entity amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Amount in the smallest currency denomination; signed for transactions | | ↳ `merchant_amount` | json | Merchant amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Amount in the smallest currency denomination; signed for transactions | | ↳ `merchant_name` | string | Merchant name | | ↳ `merchant_descriptor` | string | Merchant descriptor | | ↳ `merchant_category_code` | string | Merchant category code | | ↳ `memo` | string | Memo | | ↳ `state` | string | State | | ↳ `card_id` | string | Card id | | ↳ `card_holder` | json | Card holder | | ↳ `user_id` | string | User id | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `department_id` | string | Department id | | ↳ `department_name` | string | Department name | | ↳ `user_transaction_time` | string | User transaction time | | ↳ `settlement_date` | string | Settlement date | | ↳ `all_requirements_met_and_approved` | boolean | All requirements met and approved | | ↳ `sync_status` | string | Sync status | | ↳ `entity_id` | string | Entity id | | ↳ `updated_at` | string | Updated at | ### Ramp List Physical Cards [#ramp-list-physical-cards] List physical cards in one page in Ramp #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------- | | `user_id` | string | No | Filter by card owner. | | `display_name` | string | No | Filter by display name. | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------- | | `physicalCards` | array | One page of physical cards | | ↳ `id` | string | Id | | ↳ `cardholder_id` | string | Cardholder id | | ↳ `cardholder_name` | string | Cardholder name | | ↳ `display_name` | string | Display name | | ↳ `last_four` | string | Last four | | ↳ `state` | string | State | | ↳ `is_suspended` | boolean | Is suspended | | ↳ `fund_id` | string | Fund id | | ↳ `created_at` | string | Created at | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Physical Card [#ramp-get-physical-card] Fetch a physical card in Ramp #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `card_id` | string | Yes | Card id | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | -------------------- | | `physicalCard` | json | PhysicalCard details | | ↳ `id` | string | Id | | ↳ `cardholder_id` | string | Cardholder id | | ↳ `cardholder_name` | string | Cardholder name | | ↳ `display_name` | string | Display name | | ↳ `last_four` | string | Last four | | ↳ `state` | string | State | | ↳ `is_suspended` | boolean | Is suspended | | ↳ `fund_id` | string | Fund id | | ↳ `created_at` | string | Created at | ### Ramp List Virtual Cards [#ramp-list-virtual-cards] List virtual cards in one page in Ramp #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------- | | `user_id` | string | No | Filter by card owner. | | `entity_id` | string | No | Filter by business entity. | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-8] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------- | | `virtualCards` | array | One page of virtual cards | | ↳ `id` | string | Id | | ↳ `user_id` | string | User id | | ↳ `fund_id` | string | Fund id | | ↳ `is_card_suspended` | boolean | Is card suspended | | ↳ `created_at` | string | Created at | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Virtual Card [#ramp-get-virtual-card] Fetch a virtual card in Ramp #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `card_id` | string | Yes | Card id | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------- | ------------------- | | `virtualCard` | json | VirtualCard details | | ↳ `id` | string | Id | | ↳ `user_id` | string | User id | | ↳ `fund_id` | string | Fund id | | ↳ `is_card_suspended` | boolean | Is card suspended | | ↳ `created_at` | string | Created at | ### Ramp List Vendors [#ramp-list-vendors] List vendors in one page in Ramp #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `name` | string | No | Filter by name | | `external_vendor_id` | string | No | Filter by customer-defined external vendor ID. This is independent of accounting system remote IDs. | | `vendor_owner_id` | string | No | Unique identifier of the user which owns this vendor. | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-10] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------- | | `vendors` | array | One page of vendors | | ↳ `id` | string | Id | | ↳ `name` | string | Name | | ↳ `name_legal` | string | Name legal | | ↳ `description` | string | Description | | ↳ `is_active` | boolean | Is active | | ↳ `external_vendor_id` | string | External vendor id | | ↳ `accounting_vendor_remote_id` | string | Accounting vendor remote id | | ↳ `vendor_owner_id` | string | Vendor owner id | | ↳ `country` | string | Country | | ↳ `created_at` | string | Created at | | ↳ `total_spend_all_time` | json | Total spend all time | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `total_spend_last_30_days` | json | Total spend last 30 days | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `total_spend_ytd` | json | Total spend ytd | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Vendor [#ramp-get-vendor] Fetch a vendor in Ramp #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------- | | `vendor_id` | string | Yes | Vendor id | #### Output [#output-11] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------- | | `vendor` | json | Vendor details | | ↳ `id` | string | Id | | ↳ `name` | string | Name | | ↳ `name_legal` | string | Name legal | | ↳ `description` | string | Description | | ↳ `is_active` | boolean | Is active | | ↳ `external_vendor_id` | string | External vendor id | | ↳ `accounting_vendor_remote_id` | string | Accounting vendor remote id | | ↳ `vendor_owner_id` | string | Vendor owner id | | ↳ `country` | string | Country | | ↳ `created_at` | string | Created at | | ↳ `total_spend_all_time` | json | Total spend all time | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `total_spend_last_30_days` | json | Total spend last 30 days | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `total_spend_ytd` | json | Total spend ytd | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | ### Ramp List Bills [#ramp-list-bills] List bills in one page in Ramp #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `vendor_id` | string | No | Filter bills by vendor. | | `payment_status` | string | No | List bills of the provided payment status. | | `approval_status` | string | No | List bills of the provided bill approval status. Note that this is separate from the approval status for payment release. | | `from_due_date` | string | No | Shows only bills with a due\_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601 | | `to_due_date` | string | No | Shows only bills with a due\_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601 | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------------------------------------- | | `bills` | array | One page of bills | | ↳ `id` | string | Id | | ↳ `invoice_number` | string | Invoice number | | ↳ `amount` | json | Amount in the smallest currency denomination | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Id | | ↳ `name` | string | Name | | ↳ `remote_id` | string | Remote id | | ↳ `remote_name` | string | Remote name | | ↳ `type` | string | Type | | ↳ `memo` | string | Memo | | ↳ `status` | string | Status | | ↳ `status_summary` | string | Status summary | | ↳ `approval_status` | string | Approval status | | ↳ `sync_status` | string | Sync status | | ↳ `due_at` | string | Due at | | ↳ `issued_at` | string | Issued at | | ↳ `paid_at` | string | Paid at | | ↳ `created_at` | string | Created at | | ↳ `entity_id` | string | Entity id | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Bill [#ramp-get-bill] Fetch a bill in Ramp #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `bill_id` | string | Yes | Bill id | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------------------------------------- | | `bill` | json | Bill details | | ↳ `id` | string | Id | | ↳ `invoice_number` | string | Invoice number | | ↳ `amount` | json | Amount in the smallest currency denomination | | ↳ `amount` | number | Amount in the smallest currency denomination | | ↳ `currency_code` | string | Currency code | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `vendor` | json | Vendor | | ↳ `id` | string | Id | | ↳ `name` | string | Name | | ↳ `remote_id` | string | Remote id | | ↳ `remote_name` | string | Remote name | | ↳ `type` | string | Type | | ↳ `memo` | string | Memo | | ↳ `status` | string | Status | | ↳ `status_summary` | string | Status summary | | ↳ `approval_status` | string | Approval status | | ↳ `sync_status` | string | Sync status | | ↳ `due_at` | string | Due at | | ↳ `issued_at` | string | Issued at | | ↳ `paid_at` | string | Paid at | | ↳ `created_at` | string | Created at | | ↳ `entity_id` | string | Entity id | ### Ramp List Reimbursements [#ramp-list-reimbursements] List reimbursements in one page in Ramp #### Input [#input-14] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------- | | `user_id` | string | No | Filter by user id | | `reimbursement_state` | string | No | Filter by reimbursement state. | | `from_date` | string | No | Filter reimbursements created after this date. | | `to_date` | string | No | Filter reimbursements created before this date. | | `sync_status` | string | No | Filter by sync status. Supersedes has\_no\_sync\_commits and sync\_ready. | | `start` | string | No | Next cursor from the previous response | | `page_size` | number | No | Results per page, from 2 to 100 (default 20) | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------------------------------------- | | `reimbursements` | array | One page of reimbursements | | ↳ `id` | string | Id | | ↳ `user_id` | string | User id | | ↳ `user_email` | string | User email | | ↳ `user_full_name` | string | User full name | | ↳ `entity_amount` | json | Entity amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Non-negative amount in the smallest currency denomination | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `merchant_amount` | json | Merchant amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Non-negative amount in the smallest currency denomination | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `merchant` | string | Merchant | | ↳ `memo` | string | Memo | | ↳ `state` | string | State | | ↳ `direction` | string | Direction | | ↳ `type` | string | Type | | ↳ `transaction_date` | string | Transaction date | | ↳ `created_at` | string | Created at | | ↳ `submitted_at` | string | Submitted at | | ↳ `approved_at` | string | Approved at | | ↳ `payment_processed_at` | string | Payment processed at | | ↳ `sync_status` | string | Sync status | | ↳ `entity_id` | string | Entity id | | `nextCursor` | string | Pass this cursor as start to fetch the next page | | `nextPageUrl` | string | Ramp URL for the next page, or null on the last page | ### Ramp Get Reimbursement [#ramp-get-reimbursement] Fetch a reimbursement in Ramp #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------- | | `reimbursement_id` | string | Yes | Reimbursement id | #### Output [#output-15] | Parameter | Type | Description | | ------------------------------ | ------ | ---------------------------------------------------------------- | | `reimbursement` | json | Reimbursement details | | ↳ `id` | string | Id | | ↳ `user_id` | string | User id | | ↳ `user_email` | string | User email | | ↳ `user_full_name` | string | User full name | | ↳ `entity_amount` | json | Entity amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Non-negative amount in the smallest currency denomination | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `merchant_amount` | json | Merchant amount | | ↳ `currency` | string | Currency | | ↳ `value` | number | Non-negative amount in the smallest currency denomination | | ↳ `minor_unit_conversion_rate` | number | Divide the amount by this factor to get the major currency value | | ↳ `merchant` | string | Merchant | | ↳ `memo` | string | Memo | | ↳ `state` | string | State | | ↳ `direction` | string | Direction | | ↳ `type` | string | Type | | ↳ `transaction_date` | string | Transaction date | | ↳ `created_at` | string | Created at | | ↳ `submitted_at` | string | Submitted at | | ↳ `approved_at` | string | Approved at | | ↳ `payment_processed_at` | string | Payment processed at | | ↳ `sync_status` | string | Sync status | | ↳ `entity_id` | string | Entity id | ### Ramp Get Memo [#ramp-get-memo] Fetch a transaction memo in Ramp #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------- | | `transaction_id` | string | Yes | Transaction id | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------ | | `memo` | json | Memo details | | ↳ `id` | string | Id | | ↳ `memo` | string | Memo | ### Ramp Create Memo [#ramp-create-memo] Upload a new memo for a transaction in Ramp #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------------------ | | `transaction_id` | string | Yes | Transaction id | | `memo` | string | Yes | Transaction memo text (maximum 255 characters) | | `is_memo_recurring` | boolean | No | Apply the memo to similar future transactions (deprecated by Ramp) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------ | | `memo` | json | Memo details | | ↳ `id` | string | Id | | ↳ `memo` | string | Memo | --- # Razorpay (/integrations/razorpay) ## Usage Instructions [#usage-instructions] Use Razorpay to send Payment Links that customers pay by UPI, card, netbanking, or wallet, with SMS and email notifications and reminders, then check, cancel, or list them. Create orders for Checkout, fetch and capture payments, issue full or partial refunds, create customers, and generate UPI QR codes. Enter amounts in rupees (the major unit); they are converted to paise for Razorpay. The Razorpay webhook trigger runs workflows when a link is paid or expires, a payment is captured or fails, an order is paid, or a refund is processed. ## Actions [#actions] ### Razorpay Cancel Payment Link [#razorpay-cancel-payment-link] Cancel an unpaid Razorpay Payment Link so the customer can no longer pay it. Paid, partially paid, and expired links cannot be cancelled. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentLinkId` | string | Yes | Payment Link ID to cancel, e.g. plink\_ExjpAUN3gVHrPJ | #### Output [#output] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------- | | `id` | string | Payment Link ID (plink\_...) | | `shortUrl` | string | Short URL to send to the customer | | `status` | string | created, partially\_paid, paid, expired, or cancelled | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `amountPaid` | number | Amount paid so far in the major unit | | `amountPaidPaise` | number | Amount paid so far in the smallest unit | | `currency` | string | Currency code, e.g. INR | | `description` | string | Description shown to the customer | | `referenceId` | string | Your reference ID for the link | | `customerName` | string | Customer name | | `customerEmail` | string | Customer email | | `customerContact` | string | Customer phone number | | `notifySms` | boolean | Whether Razorpay sends the link by SMS | | `notifyEmail` | boolean | Whether Razorpay sends the link by email | | `reminderEnable` | boolean | Whether Razorpay sends payment reminders | | `acceptPartial` | boolean | Whether partial payments are allowed | | `upiLink` | boolean | Whether this is a UPI Payment Link | | `callbackUrl` | string | Where the customer is redirected after paying | | `orderId` | string | Order ID created for the link | | `expireBy` | number | When the link expires (Unix seconds, 0 if not set) | | `expiredAt` | number | When the link expired (Unix seconds, 0 if not expired) | | `cancelledAt` | number | When the link was cancelled (Unix seconds, 0 if not cancelled) | | `createdAt` | number | When it was created (Unix seconds) | | `updatedAt` | number | When it was last updated (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | | `payments` | array | Captured payments against the link | | ↳ `paymentId` | string | Payment ID (pay\_...) | | ↳ `amount` | number | Amount in the major unit | | ↳ `amountPaise` | number | Amount in the smallest unit | | ↳ `method` | string | Payment method, e.g. upi or card | | ↳ `status` | string | Payment status | | ↳ `createdAt` | number | When it was created (Unix seconds) | ### Razorpay Capture Payment [#razorpay-capture-payment] Capture an authorized Razorpay Payment so the money is settled to you. Only payments in the authorized state can be captured, and the amount must equal the authorized amount. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentId` | string | Yes | Authorized payment ID, e.g. pay\_G8VQzjPLoAvm6D | | `amount` | number | Yes | Authorized amount in the major unit, e.g. 499.50. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. | | `currency` | string | No | Currency of the payment. Defaults to INR | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------- | | `id` | string | Payment ID (pay\_...) | | `status` | string | created, authorized, captured, refunded, or failed | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `currency` | string | Currency code, e.g. INR | | `method` | string | card, netbanking, wallet, emi, upi, or paylater | | `orderId` | string | Order ID the payment belongs to | | `invoiceId` | string | Invoice ID, if any | | `customerId` | string | Customer ID, if any | | `description` | string | Payment description | | `captured` | boolean | Whether the payment is captured | | `international` | boolean | Whether the payment used an international card | | `amountRefunded` | number | Amount refunded in the major unit | | `amountRefundedPaise` | number | Amount refunded in the smallest unit | | `refundStatus` | string | null, partial, or full | | `email` | string | Customer email | | `contact` | string | Customer phone number | | `bank` | string | Bank code for netbanking payments | | `wallet` | string | Wallet name for wallet payments | | `vpa` | string | Customer UPI ID for UPI payments | | `fee` | number | Razorpay fee including GST, in the major unit | | `feePaise` | number | Razorpay fee including GST, in the smallest unit | | `tax` | number | GST on the fee, in the major unit | | `taxPaise` | number | GST on the fee, in the smallest unit | | `errorCode` | string | Error code for failed payments | | `errorDescription` | string | Error description for failed payments | | `errorReason` | string | Error reason for failed payments | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Create Customer [#razorpay-create-customer] Create a Razorpay Customer with name, email, and phone number. Turn off failExisting to get the existing customer back instead of an error when one with the same details exists. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------ | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `name` | string | No | Customer name, 3 to 50 characters | | `email` | string | No | Customer email (max 64 characters) | | `contact` | string | No | Customer phone number with country code, e.g. +919876543210 (max 15 characters) | | `failExisting` | boolean | No | true (default) fails when the customer already exists; false returns the existing customer | | `gstin` | string | No | Customer GST number, e.g. 29XAbbA4369J1PA | | `notes` | json | No | Up to 15 key-value notes, e.g. \{"lead\_id": "L-1042"} | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------ | | `id` | string | Customer ID (cust\_...) | | `name` | string | Customer name | | `email` | string | Customer email | | `contact` | string | Customer phone number | | `gstin` | string | Customer GSTIN | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Create Order [#razorpay-create-order] Create a Razorpay Order to pass to Razorpay Checkout. Create a new order for every payment attempt. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `amount` | number | Yes | Order amount in the major unit, e.g. 499.50 for ₹499.50; at least ₹1. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. | | `currency` | string | No | 3-letter currency code. Defaults to INR | | `receipt` | string | No | Your unique receipt number (max 40 characters). A repeated receipt is rejected as a duplicate | | `notes` | json | No | Up to 15 key-value notes, e.g. \{"lead\_id": "L-1042"} | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `id` | string | Order ID (order\_...) | | `status` | string | created, attempted, or paid | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `amountPaid` | number | Amount paid in the major unit | | `amountPaidPaise` | number | Amount paid in the smallest unit | | `amountDue` | number | Amount still due in the major unit | | `amountDuePaise` | number | Amount still due in the smallest unit | | `currency` | string | Currency code, e.g. INR | | `receipt` | string | Your receipt number | | `attempts` | number | Number of payment attempts | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Create Payment Link [#razorpay-create-payment-link] Create a Razorpay Payment Link and get a short URL the customer can pay by UPI, card, netbanking, or wallet. Razorpay can send it by SMS and email and remind the customer. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `amount` | number | Yes | Amount to collect in the major unit, e.g. 499.50 for ₹499.50. Converted to paise; at least ₹1. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. | | `currency` | string | No | 3-letter currency code. Defaults to INR | | `description` | string | No | What the payment is for, shown to the customer (max 2048 characters) | | `customerName` | string | No | Customer name | | `customerEmail` | string | No | Customer email; needed to notify by email | | `customerContact` | string | No | Customer phone number with country code, e.g. +919876543210; needed for SMS | | `notifySms` | boolean | No | Let Razorpay send the link to the customer by SMS | | `notifyEmail` | boolean | No | Let Razorpay send the link to the customer by email | | `reminderEnable` | boolean | No | Let Razorpay send payment reminders until the link is paid | | `expireBy` | string | No | When the link expires, as Unix seconds or an ISO 8601 date. At least 15 minutes and at most 6 months from now | | `callbackUrl` | string | No | URL the customer is redirected to after paying | | `referenceId` | string | No | Your own unique reference, e.g. the lead or invoice ID (max 40 characters). A repeated reference ID is rejected | | `acceptPartial` | boolean | No | Allow the customer to pay in parts | | `firstMinPartialAmount` | number | No | Minimum first partial payment in the major unit (e.g. 100 for ₹100). Needs acceptPartial | | `upiLink` | boolean | No | Create a UPI Payment Link (INR only, no partial payments). Not available with test keys | | `notes` | json | No | Up to 15 key-value notes stored on the link and returned in webhooks, e.g. \{"lead\_id": "L-1042"} | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------- | | `id` | string | Payment Link ID (plink\_...) | | `shortUrl` | string | Short URL to send to the customer | | `status` | string | created, partially\_paid, paid, expired, or cancelled | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `amountPaid` | number | Amount paid so far in the major unit | | `amountPaidPaise` | number | Amount paid so far in the smallest unit | | `currency` | string | Currency code, e.g. INR | | `description` | string | Description shown to the customer | | `referenceId` | string | Your reference ID for the link | | `customerName` | string | Customer name | | `customerEmail` | string | Customer email | | `customerContact` | string | Customer phone number | | `notifySms` | boolean | Whether Razorpay sends the link by SMS | | `notifyEmail` | boolean | Whether Razorpay sends the link by email | | `reminderEnable` | boolean | Whether Razorpay sends payment reminders | | `acceptPartial` | boolean | Whether partial payments are allowed | | `upiLink` | boolean | Whether this is a UPI Payment Link | | `callbackUrl` | string | Where the customer is redirected after paying | | `orderId` | string | Order ID created for the link | | `expireBy` | number | When the link expires (Unix seconds, 0 if not set) | | `expiredAt` | number | When the link expired (Unix seconds, 0 if not expired) | | `cancelledAt` | number | When the link was cancelled (Unix seconds, 0 if not cancelled) | | `createdAt` | number | When it was created (Unix seconds) | | `updatedAt` | number | When it was last updated (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | | `payments` | array | Captured payments against the link | | ↳ `paymentId` | string | Payment ID (pay\_...) | | ↳ `amount` | number | Amount in the major unit | | ↳ `amountPaise` | number | Amount in the smallest unit | | ↳ `method` | string | Payment method, e.g. upi or card | | ↳ `status` | string | Payment status | | ↳ `createdAt` | number | When it was created (Unix seconds) | ### Razorpay Create UPI QR Code [#razorpay-create-upi-qr-code] Create a Razorpay UPI QR code and get its image URL to show or send. Single-use codes collect one fixed amount; multiple-use codes can take many payments. Amounts are in rupees and converted to paise. QR Codes must be enabled on the Razorpay account. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `usage` | string | Yes | single\_use (one payment, then closes) or multiple\_use | | `name` | string | No | Label for the QR code, e.g. Store Front Display | | `fixedAmount` | boolean | No | Accept only paymentAmount. Required (true) for single-use codes; defaults to true when paymentAmount is set | | `paymentAmount` | number | No | Fixed amount in rupees, e.g. 300 for ₹300; converted to paise. Required for fixed-amount codes | | `description` | string | No | Description of the QR code | | `customerId` | string | No | Razorpay Customer ID to link, e.g. cust\_HKsR5se84c5LTO | | `closeBy` | string | No | Single-use codes only: when the code closes, as Unix seconds or an ISO 8601 date, 2 minutes to 2 hours from now | | `notes` | json | No | Up to 15 key-value notes, e.g. \{"lead\_id": "L-1042"} | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------- | | `id` | string | QR Code ID (qr\_...) | | `imageUrl` | string | URL of the QR code image to show or send | | `status` | string | active or closed | | `name` | string | Label of the QR code | | `usage` | string | single\_use or multiple\_use | | `type` | string | upi\_qr | | `fixedAmount` | boolean | Whether the QR code accepts only a fixed amount | | `paymentAmount` | number | Fixed amount in rupees | | `paymentAmountPaise` | number | Fixed amount in paise | | `paymentsAmountReceived` | number | Total received in rupees | | `paymentsCountReceived` | number | Number of payments received | | `description` | string | QR code description | | `customerId` | string | Customer ID, if linked | | `closeBy` | number | When the QR code closes (Unix seconds) | | `closedAt` | number | When the QR code closed (Unix seconds) | | `closeReason` | string | on\_demand or paid | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Create Refund [#razorpay-create-refund] Refund a captured Razorpay Payment, fully or in part. Leave the amount empty for a full refund. Normal refunds take 5-7 working days; optimum tries an instant refund first. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentId` | string | Yes | Captured payment ID to refund, e.g. pay\_29QQoUBi66xm2f | | `amount` | number | No | Amount to refund in the major unit, e.g. 250 for ₹250. Leave empty for a full refund. Give the amount in the major currency unit (rupees for INR, e.g. 499.50); it is converted to the smallest unit (paise) that Razorpay expects. | | `currency` | string | No | Currency of the payment, used only to convert the amount to the smallest unit. Defaults to INR | | `speed` | string | No | normal (default, 5-7 working days) or optimum (instant when possible) | | `receipt` | string | No | Your unique receipt number for the refund; a repeated receipt is rejected | | `notes` | json | No | Up to 15 key-value notes, e.g. \{"reason": "Duplicate order"} | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------- | | `id` | string | Refund ID (rfnd\_...) | | `paymentId` | string | Payment ID that was refunded | | `status` | string | pending, processed, or failed | | `amount` | number | Refund amount in the major unit (rupees for INR) | | `amountPaise` | number | Refund amount in the smallest unit (paise for INR) | | `currency` | string | Currency code, e.g. INR | | `receipt` | string | Your receipt number for the refund | | `speedRequested` | string | normal or optimum | | `speedProcessed` | string | instant or normal | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Get Customer [#razorpay-get-customer] Get a Razorpay Customer by ID with their name, email, phone number, and GSTIN. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `customerId` | string | Yes | Customer ID, e.g. cust\_1Aa00000000004 | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------ | | `id` | string | Customer ID (cust\_...) | | `name` | string | Customer name | | `email` | string | Customer email | | `contact` | string | Customer phone number | | `gstin` | string | Customer GSTIN | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Get Order [#razorpay-get-order] Get a Razorpay Order by ID with its status (created, attempted, paid), amount paid, and amount due. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `orderId` | string | Yes | Order ID, e.g. order\_DBJOWzybf0sJbb | #### Output [#output-8] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------- | | `id` | string | Order ID (order\_...) | | `status` | string | created, attempted, or paid | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `amountPaid` | number | Amount paid in the major unit | | `amountPaidPaise` | number | Amount paid in the smallest unit | | `amountDue` | number | Amount still due in the major unit | | `amountDuePaise` | number | Amount still due in the smallest unit | | `currency` | string | Currency code, e.g. INR | | `receipt` | string | Your receipt number | | `attempts` | number | Number of payment attempts | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Get Payment [#razorpay-get-payment] Get a Razorpay Payment by ID with its status (authorized, captured, refunded, failed), method, amount, refunds, fee, and failure reason. Card details are not returned. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentId` | string | Yes | Payment ID, e.g. pay\_DG4ZdRK8ZnXC3k | #### Output [#output-9] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------- | | `id` | string | Payment ID (pay\_...) | | `status` | string | created, authorized, captured, refunded, or failed | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `currency` | string | Currency code, e.g. INR | | `method` | string | card, netbanking, wallet, emi, upi, or paylater | | `orderId` | string | Order ID the payment belongs to | | `invoiceId` | string | Invoice ID, if any | | `customerId` | string | Customer ID, if any | | `description` | string | Payment description | | `captured` | boolean | Whether the payment is captured | | `international` | boolean | Whether the payment used an international card | | `amountRefunded` | number | Amount refunded in the major unit | | `amountRefundedPaise` | number | Amount refunded in the smallest unit | | `refundStatus` | string | null, partial, or full | | `email` | string | Customer email | | `contact` | string | Customer phone number | | `bank` | string | Bank code for netbanking payments | | `wallet` | string | Wallet name for wallet payments | | `vpa` | string | Customer UPI ID for UPI payments | | `fee` | number | Razorpay fee including GST, in the major unit | | `feePaise` | number | Razorpay fee including GST, in the smallest unit | | `tax` | number | GST on the fee, in the major unit | | `taxPaise` | number | GST on the fee, in the smallest unit | | `errorCode` | string | Error code for failed payments | | `errorDescription` | string | Error description for failed payments | | `errorReason` | string | Error reason for failed payments | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay Get Payment Link [#razorpay-get-payment-link] Get a Razorpay Payment Link by ID, with its status (created, partially\_paid, paid, expired, cancelled), amount paid, and captured payments. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentLinkId` | string | Yes | Payment Link ID, e.g. plink\_ExjpAUN3gVHrPJ | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------- | | `id` | string | Payment Link ID (plink\_...) | | `shortUrl` | string | Short URL to send to the customer | | `status` | string | created, partially\_paid, paid, expired, or cancelled | | `amount` | number | Amount in the major unit (rupees for INR) | | `amountPaise` | number | Amount in the smallest unit (paise for INR) | | `amountPaid` | number | Amount paid so far in the major unit | | `amountPaidPaise` | number | Amount paid so far in the smallest unit | | `currency` | string | Currency code, e.g. INR | | `description` | string | Description shown to the customer | | `referenceId` | string | Your reference ID for the link | | `customerName` | string | Customer name | | `customerEmail` | string | Customer email | | `customerContact` | string | Customer phone number | | `notifySms` | boolean | Whether Razorpay sends the link by SMS | | `notifyEmail` | boolean | Whether Razorpay sends the link by email | | `reminderEnable` | boolean | Whether Razorpay sends payment reminders | | `acceptPartial` | boolean | Whether partial payments are allowed | | `upiLink` | boolean | Whether this is a UPI Payment Link | | `callbackUrl` | string | Where the customer is redirected after paying | | `orderId` | string | Order ID created for the link | | `expireBy` | number | When the link expires (Unix seconds, 0 if not set) | | `expiredAt` | number | When the link expired (Unix seconds, 0 if not expired) | | `cancelledAt` | number | When the link was cancelled (Unix seconds, 0 if not cancelled) | | `createdAt` | number | When it was created (Unix seconds) | | `updatedAt` | number | When it was last updated (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | | `payments` | array | Captured payments against the link | | ↳ `paymentId` | string | Payment ID (pay\_...) | | ↳ `amount` | number | Amount in the major unit | | ↳ `amountPaise` | number | Amount in the smallest unit | | ↳ `method` | string | Payment method, e.g. upi or card | | ↳ `status` | string | Payment status | | ↳ `createdAt` | number | When it was created (Unix seconds) | ### Razorpay Get Refund [#razorpay-get-refund] Get a Razorpay Refund by ID with its status (pending, processed, failed), amount, and whether it was processed instantly. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `refundId` | string | Yes | Refund ID, e.g. rfnd\_FP8QHiV938haTz | #### Output [#output-11] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------- | | `id` | string | Refund ID (rfnd\_...) | | `paymentId` | string | Payment ID that was refunded | | `status` | string | pending, processed, or failed | | `amount` | number | Refund amount in the major unit (rupees for INR) | | `amountPaise` | number | Refund amount in the smallest unit (paise for INR) | | `currency` | string | Currency code, e.g. INR | | `receipt` | string | Your receipt number for the refund | | `speedRequested` | string | normal or optimum | | `speedProcessed` | string | instant or normal | | `createdAt` | number | When it was created (Unix seconds) | | `notes` | json | Key-value notes stored on the entity | ### Razorpay List Payment Links [#razorpay-list-payment-links] List Razorpay Payment Links, optionally only the link with a given reference ID or the link a payment was made on. Use the reference ID to find the link you created for a lead or invoice. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `paymentId` | string | No | Only the link this payment was made on, e.g. pay\_FHfAzEJ51k8NLj | | `referenceId` | string | No | Only the link with this reference ID | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------------- | | `paymentLinks` | array | Payment Links | | ↳ `id` | string | Payment Link ID (plink\_...) | | ↳ `shortUrl` | string | Short URL to send to the customer | | ↳ `status` | string | created, partially\_paid, paid, expired, or cancelled | | ↳ `amount` | number | Amount in the major unit (rupees for INR) | | ↳ `amountPaise` | number | Amount in the smallest unit (paise for INR) | | ↳ `amountPaid` | number | Amount paid so far in the major unit | | ↳ `amountPaidPaise` | number | Amount paid so far in the smallest unit | | ↳ `currency` | string | Currency code, e.g. INR | | ↳ `description` | string | Description shown to the customer | | ↳ `referenceId` | string | Your reference ID for the link | | ↳ `customerName` | string | Customer name | | ↳ `customerEmail` | string | Customer email | | ↳ `customerContact` | string | Customer phone number | | ↳ `notifySms` | boolean | Whether Razorpay sends the link by SMS | | ↳ `notifyEmail` | boolean | Whether Razorpay sends the link by email | | ↳ `reminderEnable` | boolean | Whether Razorpay sends payment reminders | | ↳ `acceptPartial` | boolean | Whether partial payments are allowed | | ↳ `upiLink` | boolean | Whether this is a UPI Payment Link | | ↳ `callbackUrl` | string | Where the customer is redirected after paying | | ↳ `orderId` | string | Order ID created for the link | | ↳ `expireBy` | number | When the link expires (Unix seconds, 0 if not set) | | ↳ `expiredAt` | number | When the link expired (Unix seconds, 0 if not expired) | | ↳ `cancelledAt` | number | When the link was cancelled (Unix seconds, 0 if not cancelled) | | ↳ `createdAt` | number | When it was created (Unix seconds) | | ↳ `updatedAt` | number | When it was last updated (Unix seconds) | | ↳ `notes` | json | Key-value notes stored on the entity | | ↳ `payments` | array | Captured payments against the link | | ↳ `paymentId` | string | Payment ID (pay\_...) | | ↳ `amount` | number | Amount in the major unit | | ↳ `amountPaise` | number | Amount in the smallest unit | | ↳ `method` | string | Payment method, e.g. upi or card | | ↳ `status` | string | Payment status | | ↳ `createdAt` | number | When it was created (Unix seconds) | | `count` | number | Number of Payment Links returned | ### Razorpay List Payments [#razorpay-list-payments] List Razorpay Payments, optionally between two times. Returns up to 100 per call; use skip to page. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `keyId` | string | Yes | Razorpay Key ID (Dashboard → Account & Settings → API Keys), e.g. rzp\_test\_... | | `keySecret` | string | Yes | Razorpay Key Secret shown once when the key is generated | | `from` | string | No | Only payments created at or after this time (Unix seconds or ISO 8601 date) | | `to` | string | No | Only payments created at or before this time (Unix seconds or ISO 8601 date) | | `count` | number | No | Number of payments to return, 1 to 100. Defaults to 10 | | `skip` | number | No | Number of payments to skip, for paging | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------- | | `payments` | array | Payments | | ↳ `id` | string | Payment ID (pay\_...) | | ↳ `status` | string | created, authorized, captured, refunded, or failed | | ↳ `amount` | number | Amount in the major unit (rupees for INR) | | ↳ `amountPaise` | number | Amount in the smallest unit (paise for INR) | | ↳ `currency` | string | Currency code, e.g. INR | | ↳ `method` | string | card, netbanking, wallet, emi, upi, or paylater | | ↳ `orderId` | string | Order ID the payment belongs to | | ↳ `invoiceId` | string | Invoice ID, if any | | ↳ `customerId` | string | Customer ID, if any | | ↳ `description` | string | Payment description | | ↳ `captured` | boolean | Whether the payment is captured | | ↳ `international` | boolean | Whether the payment used an international card | | ↳ `amountRefunded` | number | Amount refunded in the major unit | | ↳ `amountRefundedPaise` | number | Amount refunded in the smallest unit | | ↳ `refundStatus` | string | null, partial, or full | | ↳ `email` | string | Customer email | | ↳ `contact` | string | Customer phone number | | ↳ `bank` | string | Bank code for netbanking payments | | ↳ `wallet` | string | Wallet name for wallet payments | | ↳ `vpa` | string | Customer UPI ID for UPI payments | | ↳ `fee` | number | Razorpay fee including GST, in the major unit | | ↳ `feePaise` | number | Razorpay fee including GST, in the smallest unit | | ↳ `tax` | number | GST on the fee, in the major unit | | ↳ `taxPaise` | number | GST on the fee, in the smallest unit | | ↳ `errorCode` | string | Error code for failed payments | | ↳ `errorDescription` | string | Error description for failed payments | | ↳ `errorReason` | string | Error reason for failed payments | | ↳ `createdAt` | number | When it was created (Unix seconds) | | ↳ `notes` | json | Key-value notes stored on the entity | | `count` | number | Number of payments returned | --- # RB2B (/integrations/rb2b) {/* MANUAL-CONTENT-START:intro */} [RB2B](https://rb2b.com/) is a website visitor identification and B2B enrichment platform that resolves anonymous website traffic into person-level identity data. It matches IP addresses, hashed emails, and LinkedIn profiles against its data graph to surface who is visiting a site and how to reach them. With RB2B, you can: * **Resolve IPs into identity signals**: Convert an IP address into hashed emails, mobile advertising IDs, or company domains * **Enrich emails and LinkedIn profiles**: Turn a hashed email or LinkedIn slug into a full business profile with name, title, company, and contact details * **Look up contact and activity data**: Retrieve mobile phone numbers, personal emails, and last-active dates for a known contact * **Search for people**: Find a LinkedIn profile from a first name, last name, and company domain In Agent Serve, the RB2B integration allows your agents to identify anonymous website visitors and enrich them into actionable contact records — resolving an IP address to a company or hashed email, expanding a hashed email or LinkedIn profile into a full business profile, and retrieving mobile phone numbers or personal emails for outreach. Agents can also check remaining API credits and confirm when a contact was last active, making the integration useful for lead identification, sales prospecting, and B2B enrichment workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Resolve IP addresses, hashed emails, and LinkedIn profiles into person-level identity and B2B enrichment data using the RB2B API. Convert IPs to hashed emails, MAIDs, and company domains; enrich emails into LinkedIn profiles, business profiles, and mobile IDs; and look up emails or phone numbers from LinkedIn. Requires an RB2B API key. ## Actions [#actions] ### RB2B Credit Check [#rb2b-credit-check] Check the number of API credits remaining on your RB2B account. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------ | | `apiKey` | string | Yes | RB2B API key | #### Output [#output] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------------------- | | `credits_remaining` | number | Number of API credits remaining on the account | ### RB2B IP to HEM [#rb2b-ip-to-hem] Convert an IP address (and optional user agent) into hashed email addresses (HEM) with accuracy scores. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `ip_address` | string | Yes | The IP address to resolve (IPv4 or IPv6) | | `user_agent` | string | No | Optional user agent string to improve match accuracy | | `include_sha256` | boolean | No | Whether to include SHA-256 hashes in addition to MD5 hashes | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------- | | `results` | array | Up to 3 hashed email matches for the IP address | | ↳ `md5` | string | MD5 hash of the matched email | | ↳ `sha256` | string | SHA-256 hash of the matched email (only when include\_sha256 is true) | | ↳ `score` | number | Match accuracy score (0 = probabilistic, 1 = deterministic) | ### RB2B IP to MAID [#rb2b-ip-to-maid] Resolve an IP address (and optional user agent) into mobile advertising identifiers (MAIDs) observed over the last 60 days. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `ip_address` | string | Yes | The IP address to resolve (IPv4 or IPv6) | | `user_agent` | string | No | Optional user agent string to improve match accuracy | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------- | | `results` | array | Mobile advertising identifiers observed for the IP address | | ↳ `device_id` | string | The mobile advertising identifier | | ↳ `device_type` | string | The identifier type (e.g. AAID, IDFA) | ### RB2B IP to Company [#rb2b-ip-to-company] Identify the company domains associated with an IP address, ranked by confidence. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `ip_address` | string | Yes | The IP address to resolve (IPv4 or IPv6) | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------- | | `results` | array | Company domain matches for the IP address | | ↳ `domain` | string | Company domain associated with the IP | | ↳ `percentage` | string | Confidence percentage for the match | ### RB2B Email/HEM to Business Profile [#rb2b-emailhem-to-business-profile] Return a full business profile (name, title, company, industry, seniority and more) for an email address or MD5-hashed email. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `email` | string | Yes | A plaintext email address or an MD5 hash of the email | #### Output [#output-4] | Parameter | Type | Description | | ----------------------------- | ------ | ------------------------------------------------------------------- | | `first_name` | string | First name | | `last_name` | string | Last name | | `title` | string | Job title | | `seniority` | string | Seniority level | | `linkedinurl` | string | Personal LinkedIn profile URL | | `link_email` | string | Linked business email address | | `work_email_confirmed` | string | Whether the work email is confirmed | | `personal_emails` | array | Associated personal emails (hashed or plaintext depending on input) | | `current_company` | string | Current company name | | `current_company_url` | string | Current company website | | `current_company_linkedinurl` | string | Current company LinkedIn URL | | `current_industry` | string | Current industry | | `functional_area` | string | Functional area | | `country` | string | Country | | `company_employee_count` | string | Company employee count | | `company_employee_range` | string | Company employee range band | | `company_revenue_range` | string | Company revenue range band | | `md5` | string | MD5 hash of the resolved email | ### RB2B Email/HEM to Best LinkedIn URL [#rb2b-emailhem-to-best-linkedin-url] Return the most recently active LinkedIn profile URL for an email address or MD5-hashed email. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `email` | string | Yes | A plaintext email address or an MD5 hash of the email | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `linkedin_url` | string | Best LinkedIn profile URL for the email | ### RB2B Email/HEM to LinkedIn Slug [#rb2b-emailhem-to-linkedin-slug] Return the LinkedIn slug (the profile identifier portion of the URL) for an email address or MD5-hashed email. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `email` | string | Yes | A plaintext email address or an MD5 hash of the email | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | --------------------------- | | `linkedin_slug` | string | LinkedIn slug for the email | ### RB2B Email/HEM to MAID [#rb2b-emailhem-to-maid] Return up to five mobile advertising identifiers (MAIDs) associated with an email address or MD5-hashed email. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `email` | string | Yes | A plaintext email address or an MD5 hash of the email | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `results` | array | Mobile advertising identifiers associated with the email | | ↳ `device_id` | string | The mobile advertising identifier | | ↳ `device_type` | string | The identifier type (e.g. AAID, IDFA) | ### RB2B Email to Last Active Date [#rb2b-email-to-last-active-date] Return the last known active date for an email address. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | RB2B API key | | `email` | string | Yes | The email address to look up | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------ | | `results` | array | Activity records for the email | | ↳ `email` | string | The email address | | ↳ `last_active` | string | Date the email was last seen active (YYYY-MM-DD) | | `match_count` | number | Number of matches found | | `credits_charged` | number | Credits charged for this request | | `credits_exhausted` | boolean | Whether the account is out of credits | ### RB2B LinkedIn to Business Profile [#rb2b-linkedin-to-business-profile] Return a full business profile (name, title, company, emails and more) for a LinkedIn profile. #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `linkedin_slug` | string | Yes | The LinkedIn profile slug or URL | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------- | | `first_name` | string | First name | | `last_name` | string | Last name | | `full_name` | string | Full name | | `headline` | string | LinkedIn headline | | `title` | string | Job title | | `seniority` | string | Seniority level | | `country` | string | Country | | `current_industry` | string | Current industry | | `functional_area` | array | Functional areas | | `linkedin_url` | string | Personal LinkedIn profile URL | | `business_email` | string | Business email address | | `personal_email` | string | Personal email address | | `company` | object | Current company details | | ↳ `name` | string | Company name | | ↳ `industry` | string | Company industry | | ↳ `website_url` | string | Company website URL | | ↳ `linkedin_url` | string | Company LinkedIn URL | ### RB2B LinkedIn to Best Personal Email [#rb2b-linkedin-to-best-personal-email] Return the personal email with the most recent known network activity for a LinkedIn profile. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `linkedin_slug` | string | Yes | The LinkedIn profile slug or URL | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `email` | string | Best personal email for the LinkedIn profile | ### RB2B LinkedIn to Personal Email [#rb2b-linkedin-to-personal-email] Return the personal email addresses associated with a LinkedIn profile. #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `linkedin_slug` | string | Yes | The LinkedIn profile slug or URL | #### Output [#output-11] | Parameter | Type | Description | | --------- | ----- | ------------------------------------------------- | | `emails` | array | Personal email addresses for the LinkedIn profile | ### RB2B LinkedIn to Hashed Emails [#rb2b-linkedin-to-hashed-emails] Return the business and personal hashed emails (MD5 and SHA-256) associated with a LinkedIn profile. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `linkedin_slug` | string | Yes | The LinkedIn profile slug or URL | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------ | --------------------------------- | | `linkedin_slug` | string | The LinkedIn slug | | `business_md5_array` | array | MD5 hashes of business emails | | `business_sha256_array` | array | SHA-256 hashes of business emails | | `personal_md5_array` | array | MD5 hashes of personal emails | | `personal_sha256_array` | array | SHA-256 hashes of personal emails | ### RB2B LinkedIn to Mobile Phone [#rb2b-linkedin-to-mobile-phone] Return the mobile phone number with the most recent known network activity for a LinkedIn profile. #### Input [#input-13] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `linkedin_slug` | string | Yes | The LinkedIn profile slug or URL | #### Output [#output-13] | Parameter | Type | Description | | -------------- | ------ | -------------------------------------------- | | `mobile_phone` | string | Mobile phone number for the LinkedIn profile | ### RB2B LinkedIn Slug Search [#rb2b-linkedin-slug-search] Find a LinkedIn profile URL from a first name, last name, and company domain. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | RB2B API key | | `first_name` | string | Yes | The person’s first name | | `last_name` | string | Yes | The person’s last name | | `company_domain` | string | Yes | The company domain (e.g. example.com) | #### Output [#output-14] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `linkedin_url` | string | LinkedIn profile URL for the person | --- # Amazon RDS (/integrations/rds) {/* MANUAL-CONTENT-START:intro */} Use [Amazon RDS Aurora Serverless](https://aws.amazon.com/rds/aurora/serverless/) through the Data API to query or modify rows, execute SQL, and inspect the database schema from a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Amazon RDS Aurora Serverless into the workflow using the Data API. Can query, insert, update, delete, and execute raw SQL without managing database connections. ## Actions [#actions] ### RDS Query [#rds-query] Execute a SELECT query on Amazon RDS using the Data API #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `query` | string | Yes | SQL SELECT query to execute (e.g., SELECT \* FROM users WHERE status = :status) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned from the query | | `rowCount` | number | Number of rows returned | ### RDS Insert [#rds-insert] Insert data into an Amazon RDS table using the Data API #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `table` | string | Yes | Table name to insert into | | `data` | object | Yes | Data to insert as key-value pairs | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of inserted rows | | `rowCount` | number | Number of rows inserted | ### RDS Update [#rds-update] Update data in an Amazon RDS table using the Data API #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `table` | string | Yes | Table name to update | | `data` | object | Yes | Data to update as key-value pairs | | `conditions` | object | Yes | Conditions for the update (e.g., \{"id": 1}) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of updated rows | | `rowCount` | number | Number of rows updated | ### RDS Delete [#rds-delete] Delete data from an Amazon RDS table using the Data API #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `table` | string | Yes | Table name to delete from | | `conditions` | object | Yes | Conditions for the delete (e.g., \{"id": 1}) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Array of deleted rows | | `rowCount` | number | Number of rows deleted | ### RDS Execute [#rds-execute] Execute raw SQL on Amazon RDS using the Data API #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `query` | string | Yes | Raw SQL query to execute (e.g., CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(255))) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of rows returned or affected | | `rowCount` | number | Number of rows affected | ### RDS Introspect [#rds-introspect] Introspect Amazon RDS Aurora database schema to retrieve table structures, columns, and relationships #### Input [#input-5] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `accessKeyId` | string | Yes | AWS access key ID | | `secretAccessKey` | string | Yes | AWS secret access key | | `resourceArn` | string | Yes | ARN of the Aurora DB cluster (e.g., arn:aws:rds:us-east-1:123456789012:cluster:my-cluster) | | `secretArn` | string | Yes | ARN of the Secrets Manager secret containing DB credentials | | `database` | string | No | Database name to connect to (e.g., mydb, production\_db) | | `schema` | string | No | Schema to introspect (default: public for PostgreSQL, database name for MySQL) | | `engine` | string | No | Database engine (aurora-postgresql or aurora-mysql). Auto-detected if not provided. | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------ | | `message` | string | Operation status message | | `engine` | string | Detected database engine type | | `tables` | array | Array of table schemas with columns, keys, and indexes | | `schemas` | array | List of available schemas in the database | --- # Reddit (/integrations/reddit) {/* MANUAL-CONTENT-START:intro */} [Reddit](https://www.reddit.com/) organizes discussions into subreddits. Use this integration to read or search posts and comments, submit posts and replies, manage messages, and inspect users and communities. Moderator actions are listed separately in the reference below. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Reddit into workflows. Read posts, comments, and search content. Submit posts, vote, reply, edit, manage messages, and access user and subreddit info. ## Actions [#actions] ### Get Reddit Posts [#get-reddit-posts] Fetch posts from a subreddit with different sorting options #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | --------------------------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to fetch posts from (e.g., "technology", "news") | | `sort` | string | No | Sort method for posts (e.g., "hot", "new", "top", "rising", "controversial"). Default: "hot" | | `limit` | number | No | Maximum number of posts to return (e.g., 25). Default: 10, max: 100 | | `time` | string | No | Time filter for "top" sorted posts: "day", "week", "month", "year", or "all" (default: "all") | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | | `g` | string | No | Geo filter for posts (e.g., "GLOBAL", "US", "AR", etc.) | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------------------------- | | `subreddit` | string | Name of the subreddit where posts were fetched from | | `posts` | array | Array of posts with title, author, URL, score, comments count, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Get Reddit Comments [#get-reddit-comments] Fetch comments from a specific Reddit post #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `postId` | string | Yes | The ID of the Reddit post to fetch comments from (e.g., "abc123") | | `subreddit` | string | Yes | The subreddit where the post is located (e.g., "technology", "programming") | | `sort` | string | No | Sort method for comments: "confidence", "top", "new", "controversial", "old", "random", "qa" (default: "confidence") | | `limit` | number | No | Maximum number of comments to return (e.g., 25). Default: 50, max: 100 | | `depth` | number | No | Maximum depth of subtrees in the thread (controls nested comment levels) | | `context` | number | No | Number of parent comments to include | | `showedits` | boolean | No | Show edit information for comments | | `showmore` | boolean | No | Include "load more comments" elements in the response | | `threaded` | boolean | No | Return comments in threaded/nested format | | `truncate` | number | No | Integer to truncate comment depth | | `comment` | string | No | ID36 of a comment to focus on (returns that comment thread) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------- | | `post` | object | Post information including ID, title, author, content, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Post author | | ↳ `selftext` | string | Post text content | | ↳ `score` | number | Post score | | ↳ `created_utc` | number | Creation timestamp | | ↳ `permalink` | string | Reddit permalink | | `comments` | array | Nested comments with author, body, score, timestamps, and replies | | ↳ `id` | string | Comment ID | | ↳ `name` | string | Thing fullname (t1\_xxxxx) | | ↳ `author` | string | Comment author | | ↳ `body` | string | Comment text | | ↳ `score` | number | Comment score | | ↳ `created_utc` | number | Creation timestamp | | ↳ `permalink` | string | Comment permalink | | ↳ `replies` | array | Nested reply comments | ### Get Reddit Controversial Posts [#get-reddit-controversial-posts] Fetch controversial posts from a subreddit #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ | | `subreddit` | string | Yes | The subreddit to fetch posts from (e.g., "technology", "news") | | `time` | string | No | Time filter for controversial posts: "hour", "day", "week", "month", "year", or "all" (default: "all") | | `limit` | number | No | Maximum number of posts to return (e.g., 25). Default: 10, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------------------------- | | `subreddit` | string | Name of the subreddit where posts were fetched from | | `posts` | array | Array of controversial posts with title, author, URL, score, comments count, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Search Reddit [#search-reddit] Search for posts within a subreddit #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to search in (e.g., "technology", "programming") | | `query` | string | Yes | Search query text (e.g., "artificial intelligence", "machine learning tutorial") | | `sort` | string | No | Sort method for search results (e.g., "relevance", "hot", "top", "new", "comments"). Default: "relevance" | | `time` | string | No | Time filter for search results: "hour", "day", "week", "month", "year", or "all" (default: "all") | | `limit` | number | No | Maximum number of posts to return (e.g., 25). Default: 10, max: 100 | | `restrict_sr` | boolean | No | Restrict search to the specified subreddit only (default: true) | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `type` | string | No | Type of search results: "link" (posts), "sr" (subreddits), or "user" (users). Default: "link" | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------------------------------------------------- | | `subreddit` | string | Name of the subreddit where search was performed | | `posts` | array | Array of search result posts with title, author, URL, score, comments count, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Submit Reddit Post [#submit-reddit-post] Submit a new post to a subreddit (text or link) #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to post to (e.g., "technology", "programming") | | `title` | string | Yes | Title of the submission (e.g., "Check out this new AI tool"). Max 300 characters | | `text` | string | No | Text content for a self post in markdown format (e.g., "This is the **body** of my post") | | `url` | string | No | URL for a link post (cannot be used with text) | | `nsfw` | boolean | No | Mark post as NSFW | | `spoiler` | boolean | No | Mark post as spoiler | | `send_replies` | boolean | No | Send reply notifications to inbox (default: true) | | `flair_id` | string | No | Flair template UUID for the post (max 36 characters) | | `flair_text` | string | No | Flair text to display on the post (max 64 characters) | | `collection_id` | string | No | Collection UUID to add the post to | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------ | | `success` | boolean | Whether the post was submitted successfully | | `message` | string | Success or error message | | `data` | object | Post data including ID, name, URL, and permalink | | ↳ `id` | string | New post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `url` | string | Post URL from API response | | ↳ `permalink` | string | Full Reddit permalink | ### Vote on Reddit Post/Comment [#vote-on-reddit-postcomment] Upvote, downvote, or unvote a Reddit post or comment #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to vote on (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `dir` | number | Yes | Vote direction: 1 (upvote), 0 (unvote), or -1 (downvote) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the vote was successful | | `message` | string | Success or error message | ### Save Reddit Post/Comment [#save-reddit-postcomment] Save a Reddit post or comment to your saved items #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------ | | `id` | string | Yes | Thing fullname to save (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `category` | string | No | Category to save under (Reddit Gold feature) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the save was successful | | `message` | string | Success or error message | ### Unsave Reddit Post/Comment [#unsave-reddit-postcomment] Remove a Reddit post or comment from your saved items #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to unsave (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the unsave was successful | | `message` | string | Success or error message | ### Reply to Reddit Post/Comment [#reply-to-reddit-postcomment] Add a comment reply to a Reddit post or comment #### Input [#input-8] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `parent_id` | string | Yes | Thing fullname to reply to (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `text` | string | Yes | Comment text in markdown format (e.g., "Great post! Here is my **reply**") | | `return_rtjson` | boolean | No | Return response in Rich Text JSON format | #### Output [#output-8] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------------- | | `success` | boolean | Whether the reply was posted successfully | | `message` | string | Success or error message | | `data` | object | Comment data including ID, name, permalink, and body | | ↳ `id` | string | New comment ID | | ↳ `name` | string | Thing fullname (t1\_xxxxx) | | ↳ `permalink` | string | Comment permalink | | ↳ `body` | string | Comment body text | ### Edit Reddit Post/Comment [#edit-reddit-postcomment] Edit the text of your own Reddit post or comment #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------ | | `thing_id` | string | Yes | Thing fullname to edit (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `text` | string | Yes | New text content in markdown format (e.g., "Updated **content** here") | #### Output [#output-9] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------- | | `success` | boolean | Whether the edit was successful | | `message` | string | Success or error message | | `data` | object | Updated content data | | ↳ `id` | string | Edited thing ID | | ↳ `body` | string | Updated comment body (for comments) | | ↳ `selftext` | string | Updated post text (for self posts) | ### Delete Reddit Post/Comment [#delete-reddit-postcomment] Delete your own Reddit post or comment #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to delete (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `message` | string | Success or error message | ### Subscribe/Unsubscribe from Subreddit [#subscribeunsubscribe-from-subreddit] Subscribe or unsubscribe from a subreddit #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to subscribe to or unsubscribe from (e.g., "technology", "programming") | | `action` | string | Yes | Action to perform: "sub" to subscribe or "unsub" to unsubscribe | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the subscription action was successful | | `message` | string | Success or error message | ### Get Reddit User Identity [#get-reddit-user-identity] Get information about the authenticated Reddit user #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-12] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `id` | string | User ID | | `name` | string | Username | | `created_utc` | number | Account creation time in UTC epoch seconds | | `link_karma` | number | Total link karma | | `comment_karma` | number | Total comment karma | | `total_karma` | number | Combined total karma | | `is_gold` | boolean | Whether user has Reddit Premium | | `is_mod` | boolean | Whether user is a moderator | | `has_verified_email` | boolean | Whether email is verified | | `icon_img` | string | User avatar/icon URL | ### Get Reddit User Profile [#get-reddit-user-profile] Get public profile information about any Reddit user by username #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `username` | string | Yes | Reddit username to look up (e.g., "spez", "example\_user") | #### Output [#output-13] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `id` | string | User ID | | `name` | string | Username | | `created_utc` | number | Account creation time in UTC epoch seconds | | `link_karma` | number | Total link karma | | `comment_karma` | number | Total comment karma | | `total_karma` | number | Combined total karma | | `is_gold` | boolean | Whether user has Reddit Premium | | `is_mod` | boolean | Whether user is a moderator | | `has_verified_email` | boolean | Whether email is verified | | `icon_img` | string | User avatar/icon URL | ### Send Reddit Message [#send-reddit-message] Send a private message to a Reddit user #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `to` | string | Yes | Recipient username (e.g., "example\_user") or subreddit (e.g., "/r/subreddit") | | `subject` | string | Yes | Message subject (max 100 characters) | | `text` | string | Yes | Message body in markdown format | | `from_sr` | string | No | Subreddit name to send the message from (requires moderator mail permission) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the message was sent successfully | | `message` | string | Success or error message | ### Get Reddit Messages [#get-reddit-messages] Retrieve private messages from your Reddit inbox #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `where` | string | No | Message folder to retrieve: "inbox" (all), "unread", "sent", "messages" (direct messages only), "comments" (comment replies), "selfreply" (self-post replies), or "mentions" (username mentions). Default: "inbox" | | `limit` | number | No | Maximum number of messages to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `mark` | boolean | No | Whether to mark fetched messages as read | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | #### Output [#output-15] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------------------- | | `messages` | array | Array of messages with sender, recipient, subject, body, and metadata | | ↳ `id` | string | Message ID | | ↳ `name` | string | Thing fullname (t4\_xxxxx) | | ↳ `author` | string | Sender username | | ↳ `dest` | string | Recipient username | | ↳ `subject` | string | Message subject | | ↳ `body` | string | Message body text | | ↳ `created_utc` | number | Creation time in UTC epoch seconds | | ↳ `new` | boolean | Whether the message is unread | | ↳ `was_comment` | boolean | Whether the message is a comment reply | | ↳ `context` | string | Context URL for comment replies | | ↳ `distinguished` | string | Distinction: null/"moderator"/"admin" | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Get Subreddit Info [#get-subreddit-info] Get metadata and information about a subreddit #### Input [#input-16] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to get info about (e.g., "technology", "programming", "news") | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------- | | `id` | string | Subreddit ID | | `name` | string | Subreddit fullname (t5\_xxxxx) | | `display_name` | string | Subreddit name without prefix | | `title` | string | Subreddit title | | `description` | string | Full subreddit description (markdown) | | `public_description` | string | Short public description | | `subscribers` | number | Number of subscribers | | `accounts_active` | number | Number of currently active users | | `created_utc` | number | Creation time in UTC epoch seconds | | `over18` | boolean | Whether the subreddit is NSFW | | `lang` | string | Primary language of the subreddit | | `subreddit_type` | string | Subreddit type: public, private, restricted, etc. | | `url` | string | Subreddit URL path (e.g., /r/technology/) | | `icon_img` | string | Subreddit icon URL | | `banner_img` | string | Subreddit banner URL | ### Get Subreddit Rules [#get-subreddit-rules] Get the rules and site-wide rules that apply to a subreddit #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `subreddit` | string | Yes | The subreddit to get rules for (e.g., "technology", "programming", "news") | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------------------------------------- | | `rules` | array | Array of subreddit-specific rules | | ↳ `short_name` | string | Short name/title of the rule | | ↳ `description` | string | Full description of the rule (markdown) | | ↳ `description_html` | string | HTML-rendered rule description | | ↳ `violation_reason` | string | Reason shown on the report menu when this rule is selected | | ↳ `kind` | string | What the rule applies to: "link", "comment", or "all" | | ↳ `created_utc` | number | Creation time in UTC epoch seconds | | ↳ `priority` | number | Display/order priority of the rule | | `site_rules` | array | Reddit site-wide rules that apply to the subreddit | | `site_rules_flow` | array | Structured site-wide rules flow used by the report menu | ### Get Reddit User Posts [#get-reddit-user-posts] Fetch submitted posts (t3) from a Reddit user profile #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `username` | string | Yes | Reddit username whose posts to fetch (e.g., "spez", "example\_user") | | `sort` | string | No | Sort method for posts: "hot", "new", "top", "controversial" (default: "new") | | `time` | string | No | Time filter for "top"/"controversial" sorts: "hour", "day", "week", "month", "year", or "all" (default: "all") | | `limit` | number | No | Maximum number of posts to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-18] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------------------------------------- | | `posts` | array | Array of submitted posts with title, author, URL, score, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Get Reddit User Comments [#get-reddit-user-comments] Fetch comments (t1) made by a Reddit user #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `username` | string | Yes | Reddit username whose comments to fetch (e.g., "spez", "example\_user") | | `sort` | string | No | Sort method for comments: "hot", "new", "top", "controversial" (default: "new") | | `time` | string | No | Time filter for "top"/"controversial" sorts: "hour", "day", "week", "month", "year", or "all" (default: "all") | | `limit` | number | No | Maximum number of comments to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------------------- | | `comments` | array | Array of comments with author, body, score, timestamp, and permalink | | ↳ `id` | string | Comment ID | | ↳ `name` | string | Thing fullname (t1\_xxxxx) | | ↳ `author` | string | Comment author | | ↳ `body` | string | Comment text | | ↳ `score` | number | Comment score | | ↳ `created_utc` | number | Creation timestamp | | ↳ `permalink` | string | Comment permalink | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Get Reddit Saved Items [#get-reddit-saved-items] Fetch your own saved posts (t3) and comments (t1). You can only read your own saved items #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `username` | string | Yes | Your own Reddit username (saved items can only be read for the authenticated user) | | `limit` | number | No | Maximum number of items to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-20] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------- | | `posts` | array | Array of saved posts (t3) with title, author, URL, score, and metadata | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `comments` | array | Array of saved comments (t1) with author, body, score, and permalink | | ↳ `id` | string | Comment ID | | ↳ `name` | string | Thing fullname (t1\_xxxxx) | | ↳ `author` | string | Comment author | | ↳ `body` | string | Comment text | | ↳ `score` | number | Comment score | | ↳ `created_utc` | number | Creation timestamp | | ↳ `permalink` | string | Comment permalink | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Get Reddit Info [#get-reddit-info] Fetch information about one or more Reddit things (posts, comments, or subreddits) by their fullnames #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Yes | Comma-separated list of thing fullnames to look up (e.g., "t3\_abc123,t1\_xyz789,t5\_2qh33"). Prefixes: t1\_ = comment, t3\_ = post, t5\_ = subreddit | #### Output [#output-21] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------- | | `posts` | array | Posts (t3) matched by the requested fullnames | | ↳ `id` | string | Post ID | | ↳ `name` | string | Thing fullname (t3\_xxxxx) | | ↳ `title` | string | Post title | | ↳ `author` | string | Author username | | ↳ `url` | string | Post URL | | ↳ `permalink` | string | Reddit permalink | | ↳ `score` | number | Post score (upvotes - downvotes) | | ↳ `num_comments` | number | Number of comments | | ↳ `created_utc` | number | Creation timestamp (UTC) | | ↳ `is_self` | boolean | Whether this is a text post | | ↳ `selftext` | string | Text content for self posts | | ↳ `thumbnail` | string | Thumbnail URL | | ↳ `subreddit` | string | Subreddit name | | `comments` | array | Comments (t1) matched by the requested fullnames | | ↳ `id` | string | Comment ID | | ↳ `name` | string | Thing fullname (t1\_xxxxx) | | ↳ `author` | string | Comment author | | ↳ `body` | string | Comment text | | ↳ `score` | number | Comment score | | ↳ `created_utc` | number | Creation timestamp | | ↳ `permalink` | string | Comment permalink | | `subreddits` | array | Subreddits (t5) matched by the requested fullnames | | ↳ `id` | string | Subreddit ID | | ↳ `name` | string | Subreddit fullname (t5\_xxxxx) | | ↳ `display_name` | string | Subreddit name without prefix | | ↳ `title` | string | Subreddit title | | ↳ `public_description` | string | Short public description | | ↳ `subscribers` | number | Number of subscribers | | ↳ `over18` | boolean | Whether the subreddit is NSFW | | ↳ `url` | string | Subreddit URL path (e.g., /r/technology/) | | ↳ `subreddit_type` | string | Subreddit type: public, private, restricted, etc. | | ↳ `icon_img` | string | Subreddit icon URL | | ↳ `created_utc` | number | Creation time in UTC epoch seconds | | ↳ `accounts_active` | number | Number of currently active users | ### Search Subreddits [#search-subreddits] Search for subreddits by name and description #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------ | | `q` | string | Yes | Search query to match against subreddit names and descriptions | | `sort` | string | No | Sort order for results: "relevance" or "activity". Default: "relevance" | | `limit` | number | No | Maximum number of subreddits to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `show_users` | boolean | No | Whether to include matching user profiles in the results | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-22] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------------------------------------- | | `subreddits` | array | Array of matching subreddits with name, description, and subscriber metadata | | ↳ `id` | string | Subreddit ID | | ↳ `name` | string | Subreddit fullname (t5\_xxxxx) | | ↳ `display_name` | string | Subreddit name without prefix | | ↳ `title` | string | Subreddit title | | ↳ `public_description` | string | Short public description | | ↳ `subscribers` | number | Number of subscribers | | ↳ `over18` | boolean | Whether the subreddit is NSFW | | ↳ `url` | string | Subreddit URL path (e.g., /r/technology/) | | ↳ `subreddit_type` | string | Subreddit type: public, private, restricted, etc. | | ↳ `icon_img` | string | Subreddit icon URL | | ↳ `created_utc` | number | Creation time in UTC epoch seconds | | ↳ `accounts_active` | number | Number of currently active users | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### List My Subreddits [#list-my-subreddits] List the subreddits the authenticated user is subscribed to #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------ | | `limit` | number | No | Maximum number of subreddits to return (e.g., 25). Default: 25, max: 100 | | `after` | string | No | Fullname of a thing to fetch items after (for pagination) | | `before` | string | No | Fullname of a thing to fetch items before (for pagination) | | `count` | number | No | A count of items already seen in the listing (used for numbering) | | `show` | string | No | Show items that would normally be filtered (e.g., "all") | | `sr_detail` | boolean | No | Expand subreddit details in the response | #### Output [#output-23] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------------------------ | | `subreddits` | array | Array of subscribed subreddits with name, description, and subscriber metadata | | ↳ `id` | string | Subreddit ID | | ↳ `name` | string | Subreddit fullname (t5\_xxxxx) | | ↳ `display_name` | string | Subreddit name without prefix | | ↳ `title` | string | Subreddit title | | ↳ `public_description` | string | Short public description | | ↳ `subscribers` | number | Number of subscribers | | ↳ `over18` | boolean | Whether the subreddit is NSFW | | ↳ `url` | string | Subreddit URL path (e.g., /r/technology/) | | ↳ `subreddit_type` | string | Subreddit type: public, private, restricted, etc. | | ↳ `icon_img` | string | Subreddit icon URL | | ↳ `created_utc` | number | Creation time in UTC epoch seconds | | ↳ `accounts_active` | number | Number of currently active users | | `after` | string | Fullname of the last item for forward pagination | | `before` | string | Fullname of the first item for backward pagination | ### Report Reddit Post/Comment [#report-reddit-postcomment] Report a Reddit post or comment to subreddit moderators for a rules violation #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `thing_id` | string | Yes | Thing fullname to report (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `reason` | string | No | Reason for reporting (max 100 characters) | | `other_reason` | string | No | Free-form custom reason for reporting (max 100 characters) | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the report was successful | | `message` | string | Success or error message | ### Hide Reddit Post [#hide-reddit-post] Hide one or more Reddit posts from your listings #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `id` | string | Yes | Comma-separated list of post fullnames to hide (e.g., "t3\_abc123,t3\_def456") | #### Output [#output-25] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the hide was successful | | `message` | string | Success or error message | ### Unhide Reddit Post [#unhide-reddit-post] Unhide one or more previously hidden Reddit posts #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | `id` | string | Yes | Comma-separated list of post fullnames to unhide (e.g., "t3\_abc123,t3\_def456") | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the unhide was successful | | `message` | string | Success or error message | ### Mark Reddit Post NSFW [#mark-reddit-post-nsfw] Mark a Reddit post as NSFW (not safe for work) #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `id` | string | Yes | Post fullname to mark as NSFW (e.g., "t3\_abc123") | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the operation was successful | | `message` | string | Success or error message | ### Unmark Reddit Post NSFW [#unmark-reddit-post-nsfw] Remove the NSFW (not safe for work) mark from a Reddit post #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `id` | string | Yes | Post fullname to unmark as NSFW (e.g., "t3\_abc123") | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the operation was successful | | `message` | string | Success or error message | ### Mark Reddit Messages Read [#mark-reddit-messages-read] Mark one or more private messages as read #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `id` | string | Yes | Comma-separated list of message fullnames to mark read (e.g., "t4\_abc123,t4\_def456") | #### Output [#output-29] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the operation was successful | | `message` | string | Success or error message | ### Mark All Reddit Messages Read [#mark-all-reddit-messages-read] Mark all private messages in the inbox as read #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------- | ------------------------------------ | | `success` | boolean | Whether the operation was successful | | `message` | string | Success or error message | ### Approve Reddit Post/Comment (Mod) [#approve-reddit-postcomment-mod] Approve a reported or removed Reddit post or comment as a moderator #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to approve (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the approval was successful | | `message` | string | Success or error message | ### Remove Reddit Post/Comment (Mod) [#remove-reddit-postcomment-mod] Remove a Reddit post or comment as a moderator, optionally marking it as spam #### Input [#input-32] | Parameter | Type | Required | Description | | --------- | ------- | -------- | -------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to remove (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `spam` | boolean | No | Mark the item as spam to train the subreddit spam filter (default: false) | #### Output [#output-32] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the removal was successful | | `message` | string | Success or error message | ### Distinguish Reddit Post/Comment (Mod) [#distinguish-reddit-postcomment-mod] Distinguish or un-distinguish a Reddit post or comment as a moderator #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to distinguish (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | | `how` | string | Yes | Distinguish type: "yes" (moderator), "no" (remove distinction), "admin", or "special" | | `sticky` | boolean | No | Sticky the comment to the top of the comment page (comments only) | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the distinguish action was successful | | `message` | string | Success or error message | ### Lock Reddit Post/Comment (Mod) [#lock-reddit-postcomment-mod] Lock a Reddit post or comment to prevent further replies (moderator action) #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `id` | string | Yes | Thing fullname to lock (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | #### Output [#output-34] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `success` | boolean | Whether the lock was successful | | `message` | string | Success or error message | ### Unlock Reddit Post/Comment (Mod) [#unlock-reddit-postcomment-mod] Unlock a Reddit post or comment to allow replies again (moderator action) #### Input [#input-35] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | `id` | string | Yes | Thing fullname to unlock (e.g., "t3\_abc123" for post, "t1\_def456" for comment) | #### Output [#output-35] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the unlock was successful | | `message` | string | Success or error message | ### Sticky Reddit Post (Mod) [#sticky-reddit-post-mod] Sticky or unsticky a Reddit post to the top of a subreddit (moderator action) #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------------------------------ | | `id` | string | Yes | Post fullname to sticky/unsticky (e.g., "t3\_abc123") | | `state` | boolean | Yes | true to sticky the post, false to unsticky it | | `num` | number | No | Sticky slot to use, 1-4 (1 is the top slot). Only applies when stickying | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the sticky action was successful | | `message` | string | Success or error message | --- # Redis (/integrations/redis) {/* MANUAL-CONTENT-START:intro */} Use [Redis](https://redis.io/) in Agent Serve through a direct connection to a Redis instance. Workflows can read and write keys, work with hashes and lists, increment values, set expiration times, and run commands. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to any Redis instance to perform key-value, hash, list, and utility operations via a direct connection. ## Actions [#actions] ### Redis Get [#redis-get] Get the value of a key from Redis. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to retrieve | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------- | | `key` | string | The key that was retrieved | | `value` | string | The value of the key, or null if the key does not exist | ### Redis Set [#redis-set] Set the value of a key in Redis with an optional expiration time in seconds. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to set | | `value` | string | Yes | The value to store | | `ex` | number | No | Expiration time in seconds (optional) | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------ | | `key` | string | The key that was set | | `result` | string | The result of the SET operation (typically "OK") | ### Redis Delete [#redis-delete] Delete a key from Redis. #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to delete | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------- | | `key` | string | The key that was deleted | | `deletedCount` | number | Number of keys deleted (0 if key did not exist, 1 if deleted) | ### Redis Keys [#redis-keys] List all keys matching a pattern in Redis. Avoid using on large databases in production; use the Redis Command tool with SCAN for large key spaces. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `pattern` | string | No | Pattern to match keys (default: \* for all keys) | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `pattern` | string | The pattern used to match keys | | `keys` | array | List of keys matching the pattern | | `count` | number | Number of keys found | ### Redis Command [#redis-command] Execute a raw Redis command as a JSON array (e.g. \["HSET", "key", "field", "value"]). #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `command` | string | Yes | Redis command as a JSON array (e.g. \["SET", "key", "value"]) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `command` | string | The command that was executed | | `result` | json | The result of the command | ### Redis HSET [#redis-hset] Set a field in a hash stored at a key in Redis. #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The hash key | | `field` | string | Yes | The field name within the hash | | `value` | string | Yes | The value to set for the field | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------- | | `key` | string | The hash key | | `field` | string | The field that was set | | `result` | number | Number of fields added (1 if new, 0 if updated) | ### Redis HGET [#redis-hget] Get the value of a field in a hash stored at a key in Redis. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The hash key | | `field` | string | Yes | The field name to retrieve | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------- | | `key` | string | The hash key | | `field` | string | The field that was retrieved | | `value` | string | The field value, or null if the field or key does not exist | ### Redis HGETALL [#redis-hgetall] Get all fields and values of a hash stored at a key in Redis. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The hash key | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------------ | | `key` | string | The hash key | | `fields` | object | All field-value pairs in the hash as a key-value object. Empty object if the key does not exist. | | `fieldCount` | number | Number of fields in the hash | ### Redis HDEL [#redis-hdel] Delete a field from a hash stored at a key in Redis. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The hash key | | `field` | string | Yes | The field name to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------- | | `key` | string | The hash key | | `field` | string | The field that was deleted | | `deleted` | number | Number of fields removed (1 if deleted, 0 if field did not exist) | ### Redis INCR [#redis-incr] Increment the integer value of a key by one in Redis. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to increment | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `key` | string | The key that was incremented | | `value` | number | The new value after increment | ### Redis INCRBY [#redis-incrby] Increment the integer value of a key by a given amount in Redis. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to increment | | `increment` | number | Yes | Amount to increment by (negative to decrement) | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `key` | string | The key that was incremented | | `value` | number | The new value after increment | ### Redis EXPIRE [#redis-expire] Set an expiration time (in seconds) on a key in Redis. #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to set expiration on | | `seconds` | number | Yes | Timeout in seconds | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `key` | string | The key that expiration was set on | | `result` | number | 1 if the timeout was set, 0 if the key does not exist | ### Redis TTL [#redis-ttl] Get the remaining time to live (in seconds) of a key in Redis. #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to check TTL for | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------------------------------------- | | `key` | string | The key that was checked | | `ttl` | number | Remaining TTL in seconds. Positive integer if TTL set, -1 if no expiration, -2 if key does not exist. | ### Redis PERSIST [#redis-persist] Remove the expiration from a key in Redis, making it persist indefinitely. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to persist | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------- | | `key` | string | The key that was persisted | | `result` | number | 1 if the expiration was removed, 0 if the key does not exist or has no expiration | ### Redis LPUSH [#redis-lpush] Prepend a value to a list stored at a key in Redis. #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | | `value` | string | Yes | The value to prepend | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `key` | string | The list key | | `length` | number | Length of the list after the push | ### Redis RPUSH [#redis-rpush] Append a value to the end of a list stored at a key in Redis. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | | `value` | string | Yes | The value to append | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `key` | string | The list key | | `length` | number | Length of the list after the push | ### Redis LPOP [#redis-lpop] Remove and return the first element of a list stored at a key in Redis. #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------- | | `key` | string | The list key | | `value` | string | The removed element, or null if the list is empty | ### Redis RPOP [#redis-rpop] Remove and return the last element of a list stored at a key in Redis. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------- | | `key` | string | The list key | | `value` | string | The removed element, or null if the list is empty | ### Redis LLEN [#redis-llen] Get the length of a list stored at a key in Redis. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------ | | `key` | string | The list key | | `length` | number | The length of the list, or 0 if the key does not exist | ### Redis LRANGE [#redis-lrange] Get a range of elements from a list stored at a key in Redis. #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The list key | | `start` | number | Yes | Start index (0-based) | | `stop` | number | Yes | Stop index (-1 for all elements) | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `key` | string | The list key | | `values` | array | List elements in the specified range | | `count` | number | Number of elements returned | ### Redis EXISTS [#redis-exists] Check if a key exists in Redis. #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to check | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `key` | string | The key that was checked | | `exists` | boolean | Whether the key exists (true) or not (false) | ### Redis SETNX [#redis-setnx] Set the value of a key in Redis only if the key does not already exist. #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `url` | string | Yes | Redis connection URL (e.g. redis\://user:password\@host:port) | | `key` | string | Yes | The key to set | | `value` | string | Yes | The value to store | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------------- | | `key` | string | The key that was set | | `wasSet` | boolean | Whether the key was set (true) or already existed (false) | --- # Reducto (/integrations/reducto) {/* MANUAL-CONTENT-START:intro */} Use [Reducto](https://reducto.ai/) to extract content from a PDF supplied as an upload or file reference. Optionally select 1-indexed pages and choose Markdown or HTML for table output. The result includes parsed chunks and blocks, job metadata, and usage information. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Reducto Parse into the workflow. Can extract text from uploaded PDF documents or file references. ## Actions [#actions] ### Reducto PDF Parser [#reducto-pdf-parser] Parse PDF documents using Reducto OCR API #### Input [#input] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `file` | file | Yes | PDF document to be processed | | `pages` | array | No | Specific pages to process (1-indexed page numbers) | | `tableOutputFormat` | string | No | Table output format (`md` for Markdown or `html` for HTML). Defaults to `md`. | | `apiKey` | string | Yes | Reducto API key (REDUCTO\_API\_KEY) | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------- | | `job_id` | string | Unique identifier for the processing job | | `duration` | number | Processing time in seconds | | `usage` | json | Resource consumption data | | `result` | json | Parsed document content with chunks and blocks | | `pdf_url` | string | Storage URL of converted PDF | | `studio_link` | string | Link to Reducto studio interface | --- # Resend (/integrations/resend) {/* MANUAL-CONTENT-START:intro */} [Resend](https://resend.com/) is a modern email service designed for developers to send transactional and marketing emails with ease. It provides a simple, reliable API and dashboard for managing email delivery, templates, and analytics, making it a popular choice for integrating email functionality into applications and workflows. With Resend, you can: * **Send transactional emails**: Deliver password resets, notifications, confirmations, and more with high deliverability * **Manage templates**: Create and update email templates for consistent branding and messaging * **Track analytics**: Monitor delivery, open, and click rates to optimize your email performance * **Integrate easily**: Use a straightforward API and SDKs for seamless integration with your applications * **Ensure security**: Benefit from robust authentication and domain verification to protect your email reputation In Agent Serve, the Resend integration allows your agents to programmatically send emails as part of your automated workflows. This enables use cases such as sending notifications, alerts, or custom messages directly from your Agent Serve-powered agents. By connecting Agent Serve with Resend, you can automate communication tasks, ensuring timely and reliable email delivery without manual intervention. The integration leverages your Resend API key, keeping your credentials secure while enabling powerful email automation scenarios. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Resend into your workflow. Send emails, retrieve email status, manage contacts, and view domains. Requires API Key. ## Actions [#actions] ### Send Email [#send-email] Send an email using your own Resend API key and from address #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `fromAddress` | string | Yes | Email address to send from (e.g., "[sender@example.com](mailto:sender@example.com)" or "Sender Name \<[sender@example.com](mailto:sender@example.com)>") | | `to` | string | Yes | Recipient email address (e.g., "[recipient@example.com](mailto:recipient@example.com)" or "Recipient Name \<[recipient@example.com](mailto:recipient@example.com)>") | | `subject` | string | Yes | Email subject line | | `body` | string | Yes | Email body content (plain text or HTML based on contentType) | | `contentType` | string | No | Content type for the email body: "text" for plain text or "html" for HTML content | | `cc` | string | No | Carbon copy recipient email address | | `bcc` | string | No | Blind carbon copy recipient email address | | `replyTo` | string | No | Reply-to email address | | `scheduledAt` | string | No | Schedule email to be sent later in ISO 8601 format | | `tags` | string | No | Comma-separated key:value pairs for email tags (e.g., "category:welcome,type:onboarding") | | `resendApiKey` | string | Yes | Resend API key for sending emails | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether the email was sent successfully | | `id` | string | Email ID returned by Resend | | `to` | string | Recipient email address | | `subject` | string | Email subject | | `body` | string | Email body content | ### Get Email [#get-email] Retrieve details of a previously sent email by its ID #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------- | | `emailId` | string | Yes | The ID of the email to retrieve | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------- | | `id` | string | Email ID | | `from` | string | Sender email address | | `to` | array | Recipient email addresses | | `subject` | string | Email subject | | `html` | string | HTML email content | | `text` | string | Plain text email content | | `cc` | array | CC email addresses | | `bcc` | array | BCC email addresses | | `replyTo` | array | Reply-to email addresses | | `lastEvent` | string | Last event status (e.g., delivered, bounced) | | `createdAt` | string | Email creation timestamp | | `scheduledAt` | string | Scheduled send timestamp | | `tags` | array | Email tags as name-value pairs | | ↳ `name` | string | Tag name | | ↳ `value` | string | Tag value | ### Cancel Email [#cancel-email] Cancel a scheduled email before it is sent #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------- | | `cancelEmailId` | string | Yes | The ID of the scheduled email to cancel | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ----------------- | | `id` | string | Canceled email ID | ### Create Contact [#create-contact] Create a new contact in Resend #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------- | | `email` | string | Yes | Email address of the contact | | `firstName` | string | No | First name of the contact | | `lastName` | string | No | Last name of the contact | | `unsubscribed` | boolean | No | Whether the contact is unsubscribed from all broadcasts | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `id` | string | Created contact ID | ### List Contacts [#list-contacts] List all contacts in Resend #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------- | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------- | | `contacts` | array | Array of contacts | | ↳ `id` | string | Contact ID | | ↳ `email` | string | Contact email address | | ↳ `first_name` | string | Contact first name | | ↳ `last_name` | string | Contact last name | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `unsubscribed` | boolean | Whether the contact is unsubscribed | | `hasMore` | boolean | Whether there are more contacts to retrieve | ### Get Contact [#get-contact] Retrieve details of a contact by ID or email #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------- | | `contactId` | string | Yes | The contact ID or email address to retrieve | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `id` | string | Contact ID | | `email` | string | Contact email address | | `firstName` | string | Contact first name | | `lastName` | string | Contact last name | | `createdAt` | string | Contact creation timestamp | | `unsubscribed` | boolean | Whether the contact is unsubscribed | ### Update Contact [#update-contact] Update an existing contact in Resend #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------- | | `contactId` | string | Yes | The contact ID or email address to update | | `firstName` | string | No | Updated first name | | `lastName` | string | No | Updated last name | | `unsubscribed` | boolean | No | Whether the contact should be unsubscribed from all broadcasts | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------ | | `id` | string | Updated contact ID | ### Delete Contact [#delete-contact] Delete a contact from Resend by ID or email #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------- | | `contactId` | string | Yes | The contact ID or email address to delete | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `id` | string | Deleted contact ID | | `deleted` | boolean | Whether the contact was successfully deleted | ### Create Audience [#create-audience] Create a new audience in Resend #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------- | | `audienceName` | string | Yes | The name of the audience to create | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `id` | string | Created audience ID | | `name` | string | Audience name | ### Get Audience [#get-audience] Retrieve details of an audience by ID #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------- | | `audienceId` | string | Yes | The ID of the audience to retrieve | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------ | --------------------------- | | `id` | string | Audience ID | | `name` | string | Audience name | | `createdAt` | string | Audience creation timestamp | ### List Audiences [#list-audiences] List all audiences in Resend #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------- | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-10] | Parameter | Type | Description | | -------------- | ------- | -------------------------------------------- | | `audiences` | array | Array of audiences | | ↳ `id` | string | Audience ID | | ↳ `name` | string | Audience name | | ↳ `created_at` | string | Audience creation timestamp | | `hasMore` | boolean | Whether there are more audiences to retrieve | ### Delete Audience [#delete-audience] Delete an audience from Resend by ID #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | `audienceId` | string | Yes | The ID of the audience to delete | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `id` | string | Deleted audience ID | | `deleted` | boolean | Whether the audience was successfully deleted | ### Create Broadcast [#create-broadcast] Create a broadcast email for an audience in Resend #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `audienceId` | string | Yes | The ID of the audience to send the broadcast to | | `broadcastFrom` | string | Yes | Sender email address (e.g., "[sender@example.com](mailto:sender@example.com)" or "Sender Name \<[sender@example.com](mailto:sender@example.com)>") | | `broadcastSubject` | string | Yes | Broadcast email subject line | | `broadcastHtml` | string | No | HTML content of the broadcast | | `broadcastText` | string | No | Plain text content of the broadcast | | `broadcastReplyTo` | string | No | Reply-to email address | | `broadcastName` | string | No | Friendly internal name for the broadcast | | `broadcastPreviewText` | string | No | Preview text shown in the inbox before the email is opened | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | -------------------- | | `id` | string | Created broadcast ID | ### Send Broadcast [#send-broadcast] Send a broadcast immediately or schedule it for later #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `broadcastId` | string | Yes | The ID of the broadcast to send | | `broadcastScheduledAt` | string | No | Schedule delivery in natural language (e.g., "in 1 min") or ISO 8601 format. Sends immediately if omitted | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------ | ------------ | | `id` | string | Broadcast ID | ### Get Broadcast [#get-broadcast] Retrieve details of a broadcast by ID #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | `broadcastId` | string | Yes | The ID of the broadcast to retrieve | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------- | | `id` | string | Broadcast ID | | `name` | string | Broadcast name | | `audienceId` | string | Audience ID (legacy) | | `segmentId` | string | Segment ID (the current recipient field) | | `from` | string | Sender email address | | `subject` | string | Broadcast subject | | `replyTo` | string | Reply-to email address | | `previewText` | string | Inbox preview text | | `status` | string | Broadcast status (e.g., draft, sent) | | `createdAt` | string | Broadcast creation timestamp | | `scheduledAt` | string | Scheduled send timestamp | | `sentAt` | string | Timestamp the broadcast was sent | ### List Domains [#list-domains] List all verified domains in your Resend account #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------- | | `resendApiKey` | string | Yes | Resend API key | #### Output [#output-15] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------ | | `domains` | array | Array of domains | | ↳ `id` | string | Domain ID | | ↳ `name` | string | Domain name | | ↳ `status` | string | Domain verification status | | ↳ `region` | string | Region the domain is configured in | | ↳ `createdAt` | string | Domain creation timestamp | | `hasMore` | boolean | Whether there are more domains to retrieve | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Resend Email Bounced [#resend-email-bounced] Trigger workflow when an email bounces #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-16] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | | `bounceType` | string | Bounce type (e.g., Permanent) | | `bounceSubType` | string | Bounce sub-type (e.g., Suppressed) | | `bounceMessage` | string | Bounce error message | *** ### Resend Email Clicked [#resend-email-clicked] Trigger workflow when a link in an email is clicked #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-17] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | | `clickIpAddress` | string | IP address of the click | | `clickLink` | string | URL that was clicked | | `clickTimestamp` | string | Click timestamp (ISO 8601) | | `clickUserAgent` | string | Browser user agent string | *** ### Resend Email Complained [#resend-email-complained] Trigger workflow when an email is marked as spam #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | *** ### Resend Email Delivered [#resend-email-delivered] Trigger workflow when an email is delivered #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | *** ### Resend Email Failed [#resend-email-failed] Trigger workflow when an email fails to send #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | *** ### Resend Email Opened [#resend-email-opened] Trigger workflow when an email is opened #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-21] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | *** ### Resend Email Sent [#resend-email-sent] Trigger workflow when an email is sent #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-22] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | *** ### Resend Webhook (All Events) [#resend-webhook-all-events] Trigger on Resend webhook events we subscribe to (email lifecycle, contacts, domains—see Resend docs). Flattened email fields may be null for non-email events; use \data\ for the full payload. #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Resend. | #### Output [#output-23] | Parameter | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., email.sent, email.delivered) | | `created_at` | string | Webhook event creation timestamp (ISO 8601), top-level `created_at` | | `data_created_at` | string | Email record timestamp from payload `data.created_at` (ISO 8601), when present — distinct from top-level `created_at` | | `email_id` | string | Unique email identifier | | `broadcast_id` | string | Broadcast ID associated with the email, when sent as part of a broadcast | | `template_id` | string | Template ID used to send the email, when applicable | | `tags` | json | Tag key/value metadata attached to the email (payload `data.tags`) | | `from` | string | Sender email address | | `subject` | string | Email subject line | | `to` | json | Array of recipient email addresses | | `data` | json | Raw event `data` from Resend (shape varies by event type: email, contact, domain, etc.) | | `bounceType` | string | Bounce type (e.g., Permanent) | | `bounceSubType` | string | Bounce sub-type (e.g., Suppressed) | | `bounceMessage` | string | Bounce error message | | `clickIpAddress` | string | IP address of the click | | `clickLink` | string | URL that was clicked | | `clickTimestamp` | string | Click timestamp (ISO 8601) | | `clickUserAgent` | string | Browser user agent string | --- # Retell AI (/integrations/retell) ## Usage Instructions [#usage-instructions] Run outbound voice AI calls with Retell AI. Place single calls with per-call dynamic variables and metadata, launch batch calling campaigns, read transcripts, recordings, and post-call analysis (summary, sentiment, success, custom extracted data), list and filter calls, end or delete calls, and look up agents and phone numbers. Retell can also trigger workflows when a call starts, ends, or is analyzed. ## Actions [#actions] ### Retell Create Batch Call [#retell-create-batch-call] Start an outbound Retell calling campaign: one call per task, each with its own number, dynamic variables, and metadata. Send now or schedule a start time, optionally limited to calling windows. #### Input [#input] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `fromNumber` | string | Yes | Caller number in E.164 format; must be purchased from or imported to Retell | | `tasks` | json | Yes | Array of calls, e.g. \[\{"to\_number": "+12137774445", "retell\_llm\_dynamic\_variables": \{"customer\_name": "John"}}]. Each task may also set override\_agent\_id, override\_agent\_version, metadata, and custom\_sip\_headers | | `batchName` | string | No | Batch name, for your own reference | | `triggerTimestamp` | string | No | When to start, as Unix milliseconds or an ISO 8601 date-time. Leave empty to start now | | `reservedConcurrency` | number | No | Concurrency kept free for other calls, such as inbound calls | | `callTimeWindow` | json | No | Allowed calling windows, e.g. \{"windows": \[\{"start": 540, "end": 1020}], "timezone": "America/New\_York", "day": \["Monday", "Tuesday"]} (minutes since local midnight) | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------- | | `batchCallId` | string | Batch call ID; filter List Calls by it | | `name` | string | Batch name | | `fromNumber` | string | Caller number | | `scheduledTimestamp` | number | When the batch starts (epoch ms) | | `totalTaskCount` | number | Number of calls in the batch | | `callTimeWindow` | json | Calling windows, when set | ### Retell Create Phone Call [#retell-create-phone-call] Place an outbound phone call from a Retell voice AI agent. Pass per-call dynamic variables to personalize the agent prompt and metadata to tag the call. Returns the call ID used to track it. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `fromNumber` | string | Yes | Caller number in E.164 format (e.g. +14157774444); must be purchased from or imported to Retell | | `toNumber` | string | Yes | Number to call in E.164 format (e.g. +12137774445). Retell-purchased numbers can only call US numbers | | `overrideAgentId` | string | No | Agent to use for this call only, instead of the agent bound to the from number's outbound setting | | `overrideAgentVersion` | string | No | Agent version for this call only: a number or a tag such as latest, latest\_published, or prod | | `dynamicVariables` | json | No | String key-value pairs injected into the agent prompt, e.g. \{"customer\_name": "John Doe"} fills \{\{customer\_name}} | | `metadata` | json | No | Arbitrary object stored on the call (e.g. your internal customer ID); returned on the call and its webhooks | | `customSipHeaders` | json | No | Custom SIP headers as string key-value pairs | | `agentOverride` | json | No | Per-call agent configuration overrides (agent, retell\_llm, or conversation\_flow settings) | | `idempotencyKey` | string | No | Retry key (5-255 letters, digits, \_ or -). Retrying with the same key within an hour does not create another call | | `ignoreE164Validation` | boolean | No | Skip E.164 validation of the from number (custom telephony only) | | `honorInternalDnc` | boolean | No | Reject the call when the contact for the to number is marked do-not-call | #### Output [#output-1] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------- | | `callId` | string | Call ID | | `callType` | string | phone\_call or web\_call | | `agentId` | string | Agent ID | | `agentName` | string | Agent name | | `agentVersion` | number | Agent version used by the call | | `callStatus` | string | registered, not\_connected, ongoing, ended, or error | | `direction` | string | inbound or outbound | | `fromNumber` | string | Caller number | | `toNumber` | string | Callee number | | `batchCallId` | string | Batch call ID | | `metadata` | json | Metadata stored on the call | | `dynamicVariables` | json | Dynamic variables passed to the agent | | `collectedDynamicVariables` | json | Dynamic variables collected during the call | | `startTimestamp` | number | Call start (epoch ms) | | `endTimestamp` | number | Call end (epoch ms) | | `durationMs` | number | Call duration in milliseconds | | `durationSeconds` | number | Call duration in seconds | | `transcript` | string | Call transcript | | `transcriptObject` | json | Transcript utterances with timings | | `recordingUrl` | string | Call recording URL | | `recordingMultiChannelUrl` | string | Multi-channel recording URL | | `publicLogUrl` | string | Public debug log URL | | `disconnectionReason` | string | Why the call ended | | `transferDestination` | string | Transfer target | | `callAnalysis` | json | Post-call analysis (callSummary, inVoicemail, userSentiment, callSuccessful, customAnalysisData) | | `callCost` | json | Cost in cents (combinedCost, totalDurationSeconds, totalDurationUnitPrice, productCosts) | | `stopped` | boolean | Whether the call was stopped | | `deleted` | boolean | Whether the call was deleted | | `calls` | json | Calls on this page (same fields as Get Call) | | `total` | number | Total matching calls (when requested) | | `hasMore` | boolean | Whether another page is available | | `paginationKey` | string | Key for the next page | | `agents` | json | Agents (agentId, agentName, channel, isSuspended, isTransferAgent, userModifiedTimestamp, tags) | | `version` | number | Agent version returned by Get Agent | | `isPublished` | boolean | Whether the agent version is published | | `responseEngine` | json | Agent response engine | | `voiceId` | string | Agent voice ID | | `language` | json | Agent language | | `webhookUrl` | string | Agent webhook URL | | `lastModificationTimestamp` | number | Last modified (epoch ms) | | `agent` | json | Full agent object | | `phoneNumbers` | json | Phone numbers (phoneNumber, phoneNumberPretty, phoneNumberType, nickname, inboundAgents, outboundAgents, ...) | | `name` | string | Batch name | | `scheduledTimestamp` | number | Batch start (epoch ms) | | `totalTaskCount` | number | Number of calls in the batch | | `callTimeWindow` | json | Batch calling windows | ### Retell Delete Call [#retell-delete-call] Permanently delete a Retell call and its associated data (transcript, recording, and analysis). #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `callId` | string | Yes | ID of the call to delete | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `callId` | string | ID of the deleted call | | `deleted` | boolean | Whether the call was deleted | ### Retell Get Agent [#retell-get-agent] Get a Retell voice agent's configuration: name, version, publish state, response engine, voice, language, webhook URL, and the full agent object. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `agentId` | string | Yes | ID of the agent to read | | `agentVersion` | string | No | Version to read: a number or a tag such as latest or latest\_published (default latest) | #### Output [#output-3] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------------------------------------------------- | | `agentId` | string | Agent ID | | `agentName` | string | Agent name | | `version` | number | Agent version returned | | `isPublished` | boolean | Whether this version is published | | `responseEngine` | json | Response engine (type plus llm\_id, conversation\_flow\_id, or custom LLM) | | `voiceId` | string | Voice ID | | `language` | json | Language code, or a list of codes for multilingual agents | | `webhookUrl` | string | Agent-level webhook URL for call events | | `lastModificationTimestamp` | number | Last modified (epoch ms) | | `agent` | json | Full agent object as Retell returned it | ### Retell Get Call [#retell-get-call] Get a Retell call by ID: status, transcript, recording, disconnection reason, cost, and post-call analysis (summary, sentiment, success, and custom extracted data). Transcript and recording appear once the call ends; analysis once it is analyzed. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `callId` | string | Yes | Call ID returned by Create Phone Call or a call webhook | #### Output [#output-4] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------- | | `callId` | string | Call ID | | `callType` | string | phone\_call or web\_call | | `agentId` | string | Agent ID | | `agentName` | string | Agent name | | `agentVersion` | number | Agent version used by the call | | `callStatus` | string | registered, not\_connected, ongoing, ended, or error | | `direction` | string | inbound or outbound | | `fromNumber` | string | Caller number | | `toNumber` | string | Callee number | | `batchCallId` | string | Batch call ID | | `metadata` | json | Metadata stored on the call | | `dynamicVariables` | json | Dynamic variables passed to the agent | | `collectedDynamicVariables` | json | Dynamic variables collected during the call | | `startTimestamp` | number | Call start (epoch ms) | | `endTimestamp` | number | Call end (epoch ms) | | `durationMs` | number | Call duration in milliseconds | | `durationSeconds` | number | Call duration in seconds | | `transcript` | string | Call transcript | | `transcriptObject` | json | Transcript utterances with timings | | `recordingUrl` | string | Call recording URL | | `recordingMultiChannelUrl` | string | Multi-channel recording URL | | `publicLogUrl` | string | Public debug log URL | | `disconnectionReason` | string | Why the call ended | | `transferDestination` | string | Transfer target | | `callAnalysis` | json | Post-call analysis (callSummary, inVoicemail, userSentiment, callSuccessful, customAnalysisData) | | `callCost` | json | Cost in cents (combinedCost, totalDurationSeconds, totalDurationUnitPrice, productCosts) | | `stopped` | boolean | Whether the call was stopped | | `deleted` | boolean | Whether the call was deleted | | `calls` | json | Calls on this page (same fields as Get Call) | | `total` | number | Total matching calls (when requested) | | `hasMore` | boolean | Whether another page is available | | `paginationKey` | string | Key for the next page | | `agents` | json | Agents (agentId, agentName, channel, isSuspended, isTransferAgent, userModifiedTimestamp, tags) | | `version` | number | Agent version returned by Get Agent | | `isPublished` | boolean | Whether the agent version is published | | `responseEngine` | json | Agent response engine | | `voiceId` | string | Agent voice ID | | `language` | json | Agent language | | `webhookUrl` | string | Agent webhook URL | | `lastModificationTimestamp` | number | Last modified (epoch ms) | | `agent` | json | Full agent object | | `phoneNumbers` | json | Phone numbers (phoneNumber, phoneNumberPretty, phoneNumberType, nickname, inboundAgents, outboundAgents, ...) | | `name` | string | Batch name | | `scheduledTimestamp` | number | Batch start (epoch ms) | | `totalTaskCount` | number | Number of calls in the batch | | `callTimeWindow` | json | Batch calling windows | ### Retell List Agents [#retell-list-agents] List Retell agents with their IDs, names, channel (voice or chat), and suspension status, optionally searching by name or ID. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `query` | string | No | Case-insensitive search over agent name and agent ID | | `channel` | string | No | Only voice or chat agents | | `limit` | number | No | Maximum agents to return (default 50, max 1000) | | `sortOrder` | string | No | ascending or descending (default descending) | | `paginationKey` | string | No | Pagination key from the previous page | #### Output [#output-5] | Parameter | Type | Description | | ------------------------- | ------- | ------------------------------ | | `agents` | array | Agents on this page | | ↳ `agentId` | string | Agent ID | | ↳ `agentName` | string | Agent name | | ↳ `channel` | string | voice or chat | | ↳ `isSuspended` | boolean | Whether suspended | | ↳ `isTransferAgent` | boolean | Whether used for warm transfer | | ↳ `userModifiedTimestamp` | number | Last modified (epoch ms) | | ↳ `tags` | json | Version tags keyed by name | ### Retell List Calls [#retell-list-calls] List Retell calls, newest first by default, filtered by agent, status, or any documented filter (numbers, timestamps, sentiment, success, disconnection reason, metadata, custom analysis data). Items carry status, numbers, timings, recording, and analysis but not the transcript; use Get Call for that. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `agentId` | string | No | Only calls handled by this agent | | `callStatus` | string | No | Only calls with this status: not\_connected, ongoing, ended, or error | | `filterCriteria` | json | No | Raw Retell filter\_criteria object, e.g. \{"user\_sentiment": \{"type": "enum", "op": "in", "value": \["Negative"]}, "start\_timestamp": \{"type": "range", "op": "bt", "value": \[1735689600000, 1735776000000]}} | | `sortOrder` | string | No | ascending or descending by start time (default descending) | | `limit` | number | No | Maximum calls to return (default 50, max 1000) | | `skip` | number | No | Number of calls to skip | | `paginationKey` | string | No | Pagination key from the previous page | | `includeTotal` | boolean | No | Also return the total number of matching calls | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------- | | `calls` | array | Calls on this page | | `total` | number | Total matching calls (only when Include Total is on) | ### Retell List Phone Numbers [#retell-list-phone-numbers] List the phone numbers in your Retell account with their type, nickname, and the inbound and outbound agents bound to them. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `limit` | number | No | Maximum numbers to return (default 50, max 1000) | | `sortOrder` | string | No | ascending or descending (default descending) | | `paginationKey` | string | No | Pagination key from the previous page | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------- | ------ | ---------------------------------------------------------------- | | `phoneNumbers` | array | Phone numbers on this page | | ↳ `phoneNumber` | string | Number in E.164 format | | ↳ `phoneNumberPretty` | string | Formatted number | | ↳ `phoneNumberType` | string | retell-twilio, retell-telnyx, or custom | | ↳ `nickname` | string | Nickname | | ↳ `areaCode` | number | US area code | | ↳ `inboundAgents` | array | Inbound agents with weights (agent\_id, agent\_version, weight) | | ↳ `outboundAgents` | array | Outbound agents with weights (agent\_id, agent\_version, weight) | | ↳ `inboundWebhookUrl` | string | Inbound call webhook URL | | ↳ `lastModificationTimestamp` | number | Last modified (epoch ms) | ### Retell Stop Call [#retell-stop-call] End an ongoing Retell call immediately. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Retell API key (Retell dashboard → Settings → API Keys) | | `callId` | string | Yes | ID of the ongoing call to end | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `callId` | string | ID of the stopped call | | `stopped` | boolean | Whether the call was stopped | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Retell Call Event [#retell-call-event] Trigger workflow when a Retell call starts, ends, or finishes post-call analysis, with its transcript, recording, and analysis #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | | `eventFilter` | string | No | Which Retell event runs the workflow. Call Analyzed carries the transcript and post-call analysis. | | `webhookApiKey` | string | Yes | Used to verify the x-retell-signature header on each delivery. Only the API key with the webhook badge signs webhooks. | #### Output [#output-9] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------- | | `event` | string | Event name: call\_started, call\_ended, or call\_analyzed | | `callId` | string | Unique call ID | | `callType` | string | phone\_call or web\_call | | `callStatus` | string | registered, not\_connected, ongoing, ended, or error | | `direction` | string | inbound or outbound | | `agentId` | string | Agent that handled the call | | `agentName` | string | Name of the agent | | `agentVersion` | number | Agent version used | | `fromNumber` | string | Caller number (E.164) | | `toNumber` | string | Callee number (E.164) | | `batchCallId` | string | Batch call the call belongs to, if any | | `startTimestamp` | number | Call start (epoch ms) | | `endTimestamp` | number | Call end (epoch ms) | | `durationMs` | number | Call duration in milliseconds | | `durationSeconds` | number | Call duration in seconds | | `disconnectionReason` | string | Why the call ended (e.g. user\_hangup, agent\_hangup, voicemail\_reached) | | `transferDestination` | string | Transfer target, if transferred | | `transcript` | string | Call transcript (call\_ended and call\_analyzed) | | `transcriptObject` | json | Transcript utterances with role, content, and word timings | | `recordingUrl` | string | Call recording URL | | `recordingMultiChannelUrl` | string | Recording with each party on its own channel | | `publicLogUrl` | string | Public debug log URL | | `callAnalysis` | object | callAnalysis output from the tool | | ↳ `callSummary` | string | High-level summary of the call | | ↳ `inVoicemail` | boolean | Whether the call reached voicemail | | ↳ `userSentiment` | string | User sentiment: Negative, Positive, Neutral, or Unknown | | ↳ `callSuccessful` | boolean | Whether the agent finished its task without the call being cut off | | ↳ `customAnalysisData` | json | Custom post-call extraction fields configured on the agent | | `callCost` | object | callCost output from the tool | | ↳ `combinedCost` | number | Total cost in cents | | ↳ `totalDurationSeconds` | number | Billed duration in seconds | | ↳ `totalDurationUnitPrice` | number | Combined unit price in cents per second | | ↳ `productCosts` | json | Per-product costs in cents | | `metadata` | json | Metadata stored on the call | | `dynamicVariables` | json | Dynamic variables passed to the agent | | `collectedDynamicVariables` | json | Dynamic variables collected during the call | | `payload` | json | The full webhook payload as Retell delivered it | --- # RevenueCat (/integrations/revenuecat) {/* MANUAL-CONTENT-START:intro */} Use [RevenueCat](https://www.revenuecat.com/) in Agent Serve to retrieve subscriber data, manage entitlements and offerings, record purchases, update subscriber attributes, and manage Google Play subscription billing. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate RevenueCat into the workflow. Manage subscribers, entitlements, offerings, and Google Play subscriptions. Retrieve customer subscription status, grant or revoke promotional entitlements, record purchases, update subscriber attributes, and manage Google Play subscription billing. ## Actions [#actions] ### RevenueCat Get Customer [#revenuecat-get-customer] Retrieve subscriber information by app user ID #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | #### Output [#output] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The subscriber object with subscriptions and entitlements | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | | `metadata` | object | Subscriber summary metadata | | ↳ `app_user_id` | string | The app user ID | | ↳ `first_seen` | string | ISO 8601 date when the subscriber was first seen | | ↳ `active_entitlements` | number | Number of active entitlements | | ↳ `active_subscriptions` | number | Number of active subscriptions | ### RevenueCat Delete Customer [#revenuecat-delete-customer] Permanently delete a subscriber and all associated data #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber to delete | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------- | | `deleted` | boolean | Whether the subscriber was deleted | | `app_user_id` | string | The deleted app user ID | ### RevenueCat Create Purchase [#revenuecat-create-purchase] Record a purchase (receipt) for a subscriber via the REST API #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | RevenueCat API key (public or secret) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `fetchToken` | string | Yes | For iOS, the base64-encoded receipt (or JWSTransaction for StoreKit2); for Android the purchase token; for Amazon the receipt; for Stripe the subscription ID or Checkout Session ID; for Roku the transaction ID; for Paddle the subscription ID or transaction ID | | `productId` | string | No | Apple, Google, Amazon, Roku, or Paddle product identifier or SKU. Required for Google. | | `price` | number | No | Price of the product. Required if you provide a currency. | | `currency` | string | No | ISO 4217 currency code (e.g., USD, EUR). Required if you provide a price. | | `isRestore` | boolean | No | Deprecated. Triggers configured restore behavior for shared fetch tokens. | | `presentedOfferingIdentifier` | string | No | Identifier of the offering presented to the customer at the time of purchase. Attached to new transactions in this fetch token and exposed in ETL exports and webhooks. | | `paymentMode` | string | No | Payment mode for the introductory period. One of: pay\_as\_you\_go, pay\_up\_front, free\_trial. Defaults to free\_trial when an introductory period is detected and no value is provided. | | `introductoryPrice` | number | No | Introductory price paid (if any). | | `attributes` | json | No | JSON object of subscriber attributes to set alongside the purchase. Each key maps to \{"value": string, "updated\_at\_ms": number}. | | `updatedAtMs` | number | No | UNIX epoch in milliseconds used to resolve attribute conflicts at the request level. | | `platform` | string | Yes | Platform of the purchase. One of: ios, android, amazon, macos, uikitformac, stripe, roku, paddle. Sent as the X-Platform header (required by RevenueCat). | #### Output [#output-2] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `customer` | object | Customer object returned at the top level of POST /v1/receipts (first\_seen, last\_seen, original\_app\_user\_id, original\_application\_version, original\_sdk\_version, management\_url, entitlements, original\_purchase\_date, request\_date). Null when the response uses the `value`-wrapped envelope. | | `subscriber` | object | The updated subscriber object after recording the purchase | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ### RevenueCat Grant Entitlement [#revenuecat-grant-entitlement] Grant a promotional entitlement to a subscriber #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `entitlementIdentifier` | string | Yes | The entitlement identifier to grant | | `duration` | string | No | Deprecated. Duration of the entitlement. Provide either duration or endTimeMs (endTimeMs preferred). One of: daily, three\_day, weekly, two\_week, monthly, two\_month, three\_month, six\_month, yearly, lifetime | | `endTimeMs` | number | No | Absolute end time in milliseconds since Unix epoch. Use instead of duration to grant the entitlement until a specific timestamp. | | `startTimeMs` | number | No | Deprecated. Optional start time in milliseconds since Unix epoch, used with duration to determine expiration. Regardless of value, the entitlement is always granted immediately. | #### Output [#output-3] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The updated subscriber object after granting the entitlement | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ### RevenueCat Revoke Entitlement [#revenuecat-revoke-entitlement] Revoke all promotional entitlements for a specific entitlement identifier #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `entitlementIdentifier` | string | Yes | The entitlement identifier to revoke | #### Output [#output-4] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The updated subscriber object after revoking the entitlement | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ### RevenueCat List Offerings [#revenuecat-list-offerings] List all offerings configured for the project #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | RevenueCat API key | | `appUserId` | string | Yes | An app user ID to retrieve offerings for | | `platform` | string | No | X-Platform header value. One of: ios, android, amazon, stripe, roku, paddle. Required when using a legacy public API key; ignored with app-specific API keys. | #### Output [#output-5] | Parameter | Type | Description | | ------------------------------- | ------ | -------------------------------------- | | `current_offering_id` | string | The identifier of the current offering | | `offerings` | array | List of offerings | | ↳ `identifier` | string | Offering identifier | | ↳ `description` | string | Offering description | | ↳ `packages` | array | List of packages in the offering | | ↳ `identifier` | string | Package identifier | | ↳ `platform_product_identifier` | string | Platform-specific product identifier | | `metadata` | object | Offerings metadata | | ↳ `count` | number | Number of offerings returned | | ↳ `current_offering_id` | string | Current offering identifier | ### RevenueCat Update Subscriber Attributes [#revenuecat-update-subscriber-attributes] Update custom subscriber attributes (e.g., $email, $displayName, or custom key-value pairs) #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `attributes` | json | Yes | JSON object of attributes to set. Each key maps to an object with "value" (string; null or empty deletes the attribute) and "updated\_at\_ms" (Unix epoch ms used for conflict resolution — required). Example: \{"$email": \{"value": "[user@example.com](mailto:user@example.com)", "updated\_at\_ms": 1709195668093}} | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------------------------------- | | `updated` | boolean | Whether the subscriber attributes were successfully updated | | `app_user_id` | string | The app user ID of the updated subscriber | ### RevenueCat Defer Google Subscription [#revenuecat-defer-google-subscription] Defer a Google Play subscription by extending its billing date by a number of days (Google Play only) #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `productId` | string | Yes | The Google Play product identifier of the subscription to defer (use the part before the colon for products set up after Feb 2023) | | `extendByDays` | number | No | Number of days to extend the subscription by (1-365). Provide either extendByDays or expiryTimeMs. | | `expiryTimeMs` | number | No | Absolute new expiry time in milliseconds since Unix epoch. Use instead of extendByDays to set an exact expiry. | #### Output [#output-7] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The updated subscriber object after deferring the Google subscription | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ### RevenueCat Refund Google Subscription [#revenuecat-refund-google-subscription] Refund a specific store transaction by its store transaction identifier and revoke access (subscription or non-subscription, last 365 days) #### Input [#input-8] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `storeTransactionId` | string | Yes | The store transaction identifier of the purchase to refund (e.g., GPA.3309-9122-6177-45730 for Google Play) | #### Output [#output-8] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The updated subscriber object after refunding the Google subscription | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ### RevenueCat Revoke Google Subscription [#revenuecat-revoke-google-subscription] Immediately revoke access to a Google Play subscription and issue a refund (Google Play only) #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | RevenueCat secret API key (sk\_...) | | `appUserId` | string | Yes | The app user ID of the subscriber | | `productId` | string | Yes | The Google Play product identifier of the subscription to revoke | #### Output [#output-9] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------------------------------------------------------- | | `subscriber` | object | The updated subscriber object after revoking the Google subscription | | ↳ `first_seen` | string | ISO 8601 date when subscriber was first seen | | ↳ `last_seen` | string | ISO 8601 date when subscriber was last seen | | ↳ `original_app_user_id` | string | Original app user ID | | ↳ `original_application_version` | string | iOS only. First App Store version of your app the customer installed | | ↳ `original_purchase_date` | string | iOS only. Date the app was first purchased/downloaded | | ↳ `management_url` | string | URL for managing the subscriber subscriptions | | ↳ `subscriptions` | object | Map of product identifiers to subscription objects | | ↳ `store_transaction_id` | string | Store transaction identifier | | ↳ `original_transaction_id` | string | Original transaction identifier | | ↳ `purchase_date` | string | ISO 8601 purchase date | | ↳ `original_purchase_date` | string | ISO 8601 date of the original purchase | | ↳ `expires_date` | string | ISO 8601 expiration date | | ↳ `is_sandbox` | boolean | Whether this is a sandbox purchase | | ↳ `unsubscribe_detected_at` | string | ISO 8601 date when unsubscribe was detected | | ↳ `billing_issues_detected_at` | string | ISO 8601 date when billing issues were detected | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `ownership_type` | string | Ownership type (purchased, family\_shared) | | ↳ `period_type` | string | Period type (normal, trial, intro, promotional, prepaid) | | ↳ `store` | string | Store the subscription was purchased from (app\_store, play\_store, stripe, etc.) | | ↳ `refunded_at` | string | ISO 8601 date when subscription was refunded | | ↳ `auto_resume_date` | string | ISO 8601 date when a paused subscription will auto-resume | | ↳ `product_plan_identifier` | string | Google Play base plan identifier (for products set up after Feb 2023) | | ↳ `entitlements` | object | Map of entitlement identifiers to entitlement objects | | ↳ `expires_date` | string | ISO 8601 expiration date (null for non-expiring entitlements) | | ↳ `grace_period_expires_date` | string | ISO 8601 grace period expiration date | | ↳ `product_identifier` | string | Product identifier | | ↳ `purchase_date` | string | ISO 8601 date of the latest purchase or renewal | | ↳ `non_subscriptions` | object | Map of non-subscription product identifiers to arrays of purchase objects | | ↳ `other_purchases` | object | Other purchases attached to the subscriber | | ↳ `subscriber_attributes` | object | Custom attributes set on the subscriber. Only returned when using a secret API key | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### RevenueCat Cancellation [#revenuecat-cancellation] Trigger workflow when a subscriber cancels a RevenueCat subscription #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-10] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | *** ### RevenueCat Expiration [#revenuecat-expiration] Trigger workflow when a RevenueCat subscription expires #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-11] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | *** ### RevenueCat Initial Purchase [#revenuecat-initial-purchase] Trigger workflow when a subscriber makes their first purchase in RevenueCat #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-12] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | *** ### RevenueCat Non-Renewing Purchase [#revenuecat-non-renewing-purchase] Trigger workflow when a subscriber makes a non-renewing purchase in RevenueCat #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-13] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | *** ### RevenueCat Product Change [#revenuecat-product-change] Trigger workflow when a subscriber changes their RevenueCat subscription product #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-14] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | *** ### RevenueCat Renewal [#revenuecat-renewal] Trigger workflow when a RevenueCat subscription renews #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Secret API key with the project\_configuration:integrations:read\_write permission. Agent Serve uses it to create and remove the webhook in RevenueCat. | | `projectId` | string | Yes | RevenueCat project identifier the webhook integration is created in. | | `environment` | string | No | Restrict events to a single environment, or receive all of them. | #### Output [#output-15] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------- | | `type` | string | Event type (e.g., INITIAL\_PURCHASE, RENEWAL) | | `id` | string | Unique event identifier | | `app_id` | string | RevenueCat app public identifier | | `event_timestamp_ms` | number | Timestamp (ms since epoch) when the event was generated | | `app_user_id` | string | Current App User ID | | `original_app_user_id` | string | First App User ID ever used | | `aliases` | json | All App User IDs ever used by the subscriber | | `product_id` | string | Product identifier | | `new_product_id` | string | Product identifier changed to (PRODUCT\_CHANGE events only) | | `period_type` | string | Period type (TRIAL, INTRO, NORMAL, PROMOTIONAL, or PREPAID) | | `purchased_at_ms` | number | Purchase timestamp (ms since epoch) | | `expiration_at_ms` | number | Expiration timestamp (ms since epoch), nullable | | `environment` | string | Environment (SANDBOX or PRODUCTION) | | `entitlement_id` | string | Deprecated single entitlement identifier | | `entitlement_ids` | json | Associated entitlement identifiers | | `presented_offering_id` | string | Identifier of the offering presented to the user | | `transaction_id` | string | Store transaction ID | | `original_transaction_id` | string | Original subscription transaction ID | | `is_family_share` | boolean | Whether the purchase was family shared | | `country_code` | string | ISO country code of the subscriber | | `currency` | string | ISO 4217 currency code | | `price` | number | Price in USD | | `price_in_purchased_currency` | number | Price in the currency the purchase was made in | | `store` | string | Store the purchase was made on (e.g., APP\_STORE) | | `takehome_percentage` | number | Estimated percentage of the price taken home after store commission | | `tax_percentage` | number | Estimated percentage taken as tax | | `commission_percentage` | number | Estimated percentage taken by the store as commission | | `offer_code` | string | Offer code applied to the purchase, if any | | `subscriber_attributes` | json | Subscriber attributes at the time of the event | | `experiments` | json | Experiments the subscriber was enrolled in | | `cancel_reason` | string | Reason for cancellation (CANCELLATION events only) | | `expiration_reason` | string | Reason for expiration (EXPIRATION events only) | | `api_version` | string | RevenueCat webhook API version | | `event` | json | Full RevenueCat event object | --- # Rippling (/integrations/rippling) {/* MANUAL-CONTENT-START:intro */} Use [Rippling](https://www.rippling.com/) to read workforce data, manage organizational resources and custom objects, and configure custom apps and pages. Connect with an API key. Reporting actions start a report run and retrieve its result; Create Draft Hires submits employees to the onboarding flow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Rippling Platform into your workflow. Manage workers, users, departments, teams, titles, work locations, business partners, supergroups, custom objects, custom apps, custom pages, custom settings, object categories, reports, and draft hires. ## Actions [#actions] ### Rippling List Workers [#rippling-list-workers] List all workers with optional filtering and pagination #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `filter` | string | No | Filter expression | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------- | --------------------------------------------------------- | | `workers` | array | List of workers | | ↳ `id` | string | Worker ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `user_id` | string | Associated user ID | | ↳ `is_manager` | boolean | Whether the worker is a manager | | ↳ `manager_id` | string | Manager worker ID | | ↳ `legal_entity_id` | string | Legal entity ID | | ↳ `country` | string | Worker country code | | ↳ `start_date` | string | Employment start date | | ↳ `end_date` | string | Employment end date | | ↳ `number` | number | Worker number | | ↳ `work_email` | string | Work email address | | ↳ `personal_email` | string | Personal email address | | ↳ `status` | string | Worker status (INIT, HIRED, ACCEPTED, ACTIVE, TERMINATED) | | ↳ `employment_type_id` | string | Employment type ID | | ↳ `department_id` | string | Department ID | | ↳ `teams_id` | json | Array of team IDs | | ↳ `title` | string | Job title | | ↳ `level_id` | string | Level ID | | ↳ `compensation_id` | string | Compensation ID | | ↳ `overtime_exemption` | string | Overtime exemption status (EXEMPT, NON\_EXEMPT) | | ↳ `title_effective_date` | string | Title effective date | | ↳ `business_partners_id` | json | Array of business partner IDs | | ↳ `location` | json | Worker location (type, work\_location\_id) | | ↳ `gender` | string | Gender | | ↳ `date_of_birth` | string | Date of birth | | ↳ `race` | string | Race | | ↳ `ethnicity` | string | Ethnicity | | ↳ `citizenship` | string | Citizenship country code | | ↳ `termination_details` | json | Termination details | | ↳ `custom_fields` | json | Custom fields (expandable) | | ↳ `country_fields` | json | Country-specific fields | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Worker [#rippling-get-worker] Get a specific worker by ID #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-1] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------- | | `id` | string | Worker ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `user_id` | string | User ID | | `is_manager` | boolean | Is manager | | `manager_id` | string | Manager ID | | `legal_entity_id` | string | Legal entity ID | | `country` | string | Country | | `start_date` | string | Start date | | `end_date` | string | End date | | `number` | number | Worker number | | `work_email` | string | Work email | | `personal_email` | string | Personal email | | `status` | string | Status | | `employment_type_id` | string | Employment type ID | | `department_id` | string | Department ID | | `teams_id` | json | Team IDs | | `title` | string | Job title | | `level_id` | string | Level ID | | `compensation_id` | string | Compensation ID | | `overtime_exemption` | string | Overtime exemption | | `title_effective_date` | string | Title effective date | | `business_partners_id` | json | Business partner IDs | | `location` | json | Worker location | | `gender` | string | Gender | | `date_of_birth` | string | Date of birth | | `race` | string | Race | | `ethnicity` | string | Ethnicity | | `citizenship` | string | Citizenship | | `termination_details` | json | Termination details | | `custom_fields` | json | Custom fields | | `country_fields` | json | Country-specific fields | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Users [#rippling-list-users] List all users with optional pagination #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------- | | `users` | array | List of users | | ↳ `id` | string | User ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `active` | boolean | Whether the user is active | | ↳ `username` | string | Unique username | | ↳ `display_name` | string | Display name | | ↳ `preferred_language` | string | Preferred language | | ↳ `locale` | string | Locale | | ↳ `timezone` | string | Timezone (IANA format) | | ↳ `number` | string | Permanent profile number | | ↳ `name` | json | User name object (given\_name, family\_name, etc.) | | ↳ `emails` | json | Array of email objects | | ↳ `phone_numbers` | json | Array of phone number objects | | ↳ `addresses` | json | Array of address objects | | ↳ `photos` | json | Array of photo objects | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get User [#rippling-get-user] Get a specific user by ID #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------- | | `id` | string | User ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `active` | boolean | Is active | | `username` | string | Username | | `display_name` | string | Display name | | `preferred_language` | string | Preferred language | | `locale` | string | Locale | | `timezone` | string | Timezone | | `number` | string | Profile number | | `name` | json | User name object | | `emails` | json | Email addresses | | `phone_numbers` | json | Phone numbers | | `addresses` | json | Addresses | | `photos` | json | Photos | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Companies [#rippling-list-companies] List all companies #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-4] | Parameter | Type | Description | | -------------------------- | ------ | -------------------------------------- | | `companies` | array | List of companies | | ↳ `id` | string | Company ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Company name | | ↳ `legal_name` | string | Legal name | | ↳ `doing_business_as_name` | string | DBA name | | ↳ `phone` | string | Phone number | | ↳ `primary_email` | string | Primary email | | ↳ `parent_legal_entity_id` | string | Parent legal entity ID | | ↳ `legal_entities_id` | json | Array of legal entity IDs | | ↳ `physical_address` | json | Physical address of the holding entity | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Current User [#rippling-get-current-user] Get SSO information for the current user #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | ----------------------- | | `id` | string | User ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `work_email` | string | Work email | | `company_id` | string | Company ID | | `company` | json | Expanded company object | ### Rippling List Entitlements [#rippling-list-entitlements] List all entitlements #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------- | | `entitlements` | array | List of entitlements | | ↳ `id` | string | Entitlement ID | | ↳ `description` | string | Entitlement description | | ↳ `display_name` | string | Display name | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Departments [#rippling-list-departments] List all departments #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-7] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------ | | `departments` | array | List of departments | | ↳ `id` | string | Department ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Department name | | ↳ `parent_id` | string | Parent department ID | | ↳ `reference_code` | string | Reference code | | ↳ `department_hierarchy_id` | json | Array of department IDs in hierarchy | | ↳ `parent` | json | Expanded parent department | | ↳ `department_hierarchy` | json | Expanded department hierarchy | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Department [#rippling-get-department] Get a specific department by ID #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-8] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------------ | | `id` | string | Department ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `name` | string | Department name | | `parent_id` | string | Parent department ID | | `reference_code` | string | Reference code | | `department_hierarchy_id` | json | Array of department IDs in hierarchy | | `parent` | json | Expanded parent department | | `department_hierarchy` | json | Expanded department hierarchy | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Department [#rippling-create-department] Create a new department #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Department name | | `parentId` | string | No | Parent department ID | | `referenceCode` | string | No | Reference code | #### Output [#output-9] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------- | | `id` | string | Department ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `parent_id` | string | Parent department ID | | `reference_code` | string | Reference code | | `department_hierarchy_id` | json | Department hierarchy IDs | | `parent` | json | Expanded parent department | | `department_hierarchy` | json | Expanded department hierarchy | ### Rippling Update Department [#rippling-update-department] Update an existing department #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Department ID | | `name` | string | No | Department name | | `parentId` | string | No | Parent department ID | | `referenceCode` | string | No | Reference code | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------ | ----------------------------- | | `id` | string | Department ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `parent_id` | string | Parent department ID | | `reference_code` | string | Reference code | | `department_hierarchy_id` | json | Department hierarchy IDs | | `parent` | json | Expanded parent department | | `department_hierarchy` | json | Expanded department hierarchy | ### Rippling List Teams [#rippling-list-teams] List all teams #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-11] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `teams` | array | List of teams | | ↳ `id` | string | Team ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Team name | | ↳ `parent_id` | string | Parent team ID | | ↳ `parent` | json | Expanded parent team | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Team [#rippling-get-team] Get a specific team by ID #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `id` | string | Team ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `parent_id` | string | Parent team ID | | `parent` | json | Expanded parent team | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Employment Types [#rippling-list-employment-types] List all employment types #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-13] | Parameter | Type | Description | | ---------------------------- | ------ | ----------------------------------------------- | | `employmentTypes` | array | List of employmentTypes | | ↳ `id` | string | Employment type ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `label` | string | Employment type label | | ↳ `name` | string | Employment type name | | ↳ `type` | string | Type (CONTRACTOR, EMPLOYEE) | | ↳ `compensation_time_period` | string | Compensation period (HOURLY, SALARIED) | | ↳ `amount_worked` | string | Amount worked (PART-TIME, FULL-TIME, TEMPORARY) | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Employment Type [#rippling-get-employment-type] Get a specific employment type by ID #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-14] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------- | | `id` | string | Employment type ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `label` | string | Label | | `name` | string | Name | | `type` | string | Type (CONTRACTOR, EMPLOYEE) | | `compensation_time_period` | string | Compensation period (HOURLY, SALARIED) | | `amount_worked` | string | Amount worked (PART-TIME, FULL-TIME, TEMPORARY) | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Titles [#rippling-list-titles] List all titles #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-15] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `titles` | array | List of titles | | ↳ `id` | string | Title ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Title name | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Title [#rippling-get-title] Get a specific title by ID #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `id` | string | Title ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Title name | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Title [#rippling-create-title] Create a new title #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Title name | #### Output [#output-17] | Parameter | Type | Description | | ------------ | ------ | ------------- | | `id` | string | Title ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Title name | ### Rippling Update Title [#rippling-update-title] Update an existing title #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Title ID | | `name` | string | No | Title name | #### Output [#output-18] | Parameter | Type | Description | | ------------ | ------ | ------------- | | `id` | string | Title ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Title name | ### Rippling Delete Title [#rippling-delete-title] Delete a title #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Custom Fields [#rippling-list-custom-fields] List all custom fields #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------- | | `customFields` | array | List of customFields | | ↳ `id` | string | Custom field ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Field name | | ↳ `description` | string | Field description | | ↳ `required` | boolean | Whether the field is required | | ↳ `type` | string | Field type (TEXT, DATE, NUMBER, CURRENCY, etc.) | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Job Functions [#rippling-list-job-functions] List all job functions #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-21] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `jobFunctions` | array | List of jobFunctions | | ↳ `id` | string | Job function ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Job function name | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Job Function [#rippling-get-job-function] Get a specific job function by ID #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-22] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `id` | string | Job function ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Work Locations [#rippling-list-work-locations] List all work locations #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `workLocations` | array | List of workLocations | | ↳ `id` | string | Work location ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Location name | | ↳ `address` | json | Address object | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Work Location [#rippling-get-work-location] Get a specific work location by ID #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-24] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `id` | string | Location ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `address` | json | Address object | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Work Location [#rippling-create-work-location] Create a new work location #### Input [#input-25] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Location name | | `streetAddress` | string | Yes | Street address | | `locality` | string | No | City | | `region` | string | No | State/region | | `postalCode` | string | No | Postal code | | `country` | string | No | Country code | | `addressType` | string | No | Address type (HOME, WORK, OTHER) | #### Output [#output-25] | Parameter | Type | Description | | ------------ | ------ | ----------------- | | `id` | string | Location ID | | `created_at` | string | Created timestamp | | `updated_at` | string | Updated timestamp | | `name` | string | Name | | `address` | json | Address | ### Rippling Update Work Location [#rippling-update-work-location] Update a work location #### Input [#input-26] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Location ID | | `name` | string | No | Location name | | `streetAddress` | string | No | Street address | | `locality` | string | No | City | | `region` | string | No | State/region | | `postalCode` | string | No | Postal code | | `country` | string | No | Country code | | `addressType` | string | No | Address type (HOME, WORK, OTHER) | #### Output [#output-26] | Parameter | Type | Description | | ------------ | ------ | ----------------- | | `id` | string | Location ID | | `created_at` | string | Created timestamp | | `updated_at` | string | Updated timestamp | | `name` | string | Name | | `address` | json | Address | ### Rippling Delete Work Location [#rippling-delete-work-location] Delete a work location #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Business Partners [#rippling-list-business-partners] List all business partners #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `filter` | string | No | Filter expression | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-28] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------- | | `businessPartners` | array | List of businessPartners | | ↳ `id` | string | Business partner ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `business_partner_group_id` | string | Business partner group ID | | ↳ `worker_id` | string | Worker ID | | ↳ `client_group_id` | string | Client group ID | | ↳ `client_group_member_count` | number | Client group member count | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Business Partner [#rippling-get-business-partner] Get a specific business partner by ID #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-29] | Parameter | Type | Description | | --------------------------- | ------ | ----------------------------------- | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `business_partner_group_id` | string | Group ID | | `worker_id` | string | Worker ID | | `client_group_id` | string | Client group ID | | `client_group_member_count` | number | Client group member count | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Business Partner [#rippling-create-business-partner] Create a new business partner #### Input [#input-30] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Rippling API key | | `businessPartnerGroupId` | string | Yes | Business partner group ID | | `workerId` | string | Yes | Worker ID | #### Output [#output-30] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------- | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `business_partner_group_id` | string | Group ID | | `worker_id` | string | Worker ID | | `client_group_id` | string | Client group ID | | `client_group_member_count` | number | Client group member count | ### Rippling Delete Business Partner [#rippling-delete-business-partner] Delete a business partner #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Business Partner Groups [#rippling-list-business-partner-groups] List all business partner groups #### Input [#input-32] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `expand` | string | No | Comma-separated fields to expand | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-32] | Parameter | Type | Description | | ------------------------------- | ------ | ------------------------------------------- | | `businessPartnerGroups` | array | List of businessPartnerGroups | | ↳ `id` | string | Business partner group ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Group name | | ↳ `domain` | string | Domain (HR, IT, FINANCE, RECRUITING, OTHER) | | ↳ `default_business_partner_id` | string | Default business partner ID | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Business Partner Group [#rippling-get-business-partner-group] Get a specific business partner group by ID #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | | `expand` | string | No | Comma-separated fields to expand | #### Output [#output-33] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------- | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `domain` | string | Domain | | `default_business_partner_id` | string | Default partner ID | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Business Partner Group [#rippling-create-business-partner-group] Create a new business partner group #### Input [#input-34] | Parameter | Type | Required | Description | | -------------------------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Group name | | `domain` | string | No | Domain (HR, IT, FINANCE, RECRUITING, OTHER) | | `defaultBusinessPartnerId` | string | No | Default business partner ID | #### Output [#output-34] | Parameter | Type | Description | | ----------------------------- | ------ | ------------------ | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `domain` | string | Domain | | `default_business_partner_id` | string | Default partner ID | ### Rippling Delete Business Partner Group [#rippling-delete-business-partner-group] Delete a business partner group #### Input [#input-35] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-35] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Supergroups [#rippling-list-supergroups] List all supergroups #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Rippling API key | | `filter` | string | No | Filter expression (filterable fields: app\_owner\_id, group\_type) | | `orderBy` | string | No | Sort field. Prefix with - for descending | #### Output [#output-36] | Parameter | Type | Description | | ----------------------------------- | ------- | -------------------------------------------------------- | | `supergroups` | array | List of supergroups | | ↳ `id` | string | Supergroup ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `display_name` | string | Display name | | ↳ `description` | string | Description | | ↳ `app_owner_id` | string | App owner ID | | ↳ `group_type` | string | Group type | | ↳ `name` | string | Name | | ↳ `sub_group_type` | string | Sub group type | | ↳ `read_only` | boolean | Whether the group is read only | | ↳ `parent` | string | Parent group ID | | ↳ `mutually_exclusive_key` | string | Mutually exclusive key | | ↳ `cumulatively_exhaustive_default` | boolean | Whether the group is the cumulatively exhaustive default | | ↳ `include_terminated` | boolean | Whether the group includes terminated roles | | ↳ `allow_non_employees` | boolean | Whether the group allows non-employees | | ↳ `can_override_role_states` | boolean | Whether the group can override role states | | ↳ `priority` | number | Group priority | | ↳ `is_invisible` | boolean | Whether the group is invisible | | ↳ `ignore_prov_group_matching` | boolean | Whether to ignore provisioning group matching | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Supergroup [#rippling-get-supergroup] Get a specific supergroup by ID #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-37] | Parameter | Type | Description | | --------------------------------- | ------- | -------------------------------------------------------- | | `id` | string | Supergroup ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `display_name` | string | Display name | | `description` | string | Description | | `app_owner_id` | string | App owner ID | | `group_type` | string | Group type | | `name` | string | Name | | `sub_group_type` | string | Sub group type | | `read_only` | boolean | Whether the group is read only | | `parent` | string | Parent group ID | | `mutually_exclusive_key` | string | Mutually exclusive key | | `cumulatively_exhaustive_default` | boolean | Whether the group is the cumulatively exhaustive default | | `include_terminated` | boolean | Whether the group includes terminated roles | | `allow_non_employees` | boolean | Whether the group allows non-employees | | `can_override_role_states` | boolean | Whether the group can override role states | | `priority` | number | Group priority | | `is_invisible` | boolean | Whether the group is invisible | | `ignore_prov_group_matching` | boolean | Whether to ignore provisioning group matching | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Supergroup Members [#rippling-list-supergroup-members] List members of a supergroup #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `groupId` | string | Yes | Supergroup ID | | `expand` | string | No | Fields to expand (e.g., worker) | | `orderBy` | string | No | Sort field | #### Output [#output-38] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `members` | array | List of members | | ↳ `id` | string | Member ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `full_name` | string | Full name | | ↳ `work_email` | string | Work email | | ↳ `worker_id` | string | Worker ID | | ↳ `worker` | json | Expanded worker object | | `totalCount` | number | Number of members returned | | `nextLink` | string | Next page link | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Supergroup Inclusion Members [#rippling-list-supergroup-inclusion-members] List inclusion members of a supergroup #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `groupId` | string | Yes | Supergroup ID | | `expand` | string | No | Fields to expand (e.g., worker) | | `orderBy` | string | No | Sort field | #### Output [#output-39] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `members` | array | List of members | | ↳ `id` | string | Member ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `full_name` | string | Full name | | ↳ `work_email` | string | Work email | | ↳ `worker_id` | string | Worker ID | | ↳ `worker` | json | Expanded worker object | | `totalCount` | number | Number of members returned | | `nextLink` | string | Next page link | | `__meta` | json | Metadata including redacted\_fields | ### Rippling List Supergroup Exclusion Members [#rippling-list-supergroup-exclusion-members] List exclusion members of a supergroup #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `groupId` | string | Yes | Supergroup ID | | `expand` | string | No | Fields to expand (e.g., worker) | | `orderBy` | string | No | Sort field | #### Output [#output-40] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `members` | array | List of members | | ↳ `id` | string | Member ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `full_name` | string | Full name | | ↳ `work_email` | string | Work email | | ↳ `worker_id` | string | Worker ID | | ↳ `worker` | json | Expanded worker object | | `totalCount` | number | Number of members returned | | `nextLink` | string | Next page link | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Update Supergroup Inclusion Members [#rippling-update-supergroup-inclusion-members] Update inclusion members of a supergroup #### Input [#input-41] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `groupId` | string | Yes | Supergroup ID | | `operations` | json | Yes | Operations array \[\{op: "add"\|"remove", value: \[\{id: "member\_id"}]}] | #### Output [#output-41] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `ok` | boolean | Whether the operation succeeded | ### Rippling Update Supergroup Exclusion Members [#rippling-update-supergroup-exclusion-members] Update exclusion members of a supergroup #### Input [#input-42] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `groupId` | string | Yes | Supergroup ID | | `operations` | json | Yes | Operations array \[\{op: "add"\|"remove", value: \[\{id: "member\_id"}]}] | #### Output [#output-42] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `ok` | boolean | Whether the operation succeeded | ### Rippling List Custom Objects [#rippling-list-custom-objects] List all custom objects #### Input [#input-43] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | #### Output [#output-43] | Parameter | Type | Description | | ------------------------------ | ------- | ---------------------------- | | `customObjects` | array | List of customObjects | | ↳ `id` | string | Custom object ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Object name | | ↳ `description` | string | Description | | ↳ `api_name` | string | API name | | ↳ `plural_label` | string | Plural label | | ↳ `category_id` | string | Category ID | | ↳ `native_category_id` | string | Native category ID | | ↳ `managed_package_install_id` | string | Package install ID | | ↳ `owner_id` | string | Owner ID | | ↳ `enable_history` | boolean | Whether history is enabled | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | ### Rippling Get Custom Object [#rippling-get-custom-object] Get a custom object by API name #### Input [#input-44] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | custom object api name | #### Output [#output-44] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------ | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | | `api_name` | string | API name | | `plural_label` | string | Plural label | | `category_id` | string | Category ID | | `enable_history` | boolean | History enabled | | `native_category_id` | string | Native category ID | | `managed_package_install_id` | string | Package install ID | | `owner_id` | string | Owner ID | ### Rippling Create Custom Object [#rippling-create-custom-object] Create a new custom object #### Input [#input-45] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Object name | | `description` | string | No | Description | | `category` | string | No | Category | #### Output [#output-45] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------ | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | | `api_name` | string | API name | | `plural_label` | string | Plural label | | `category_id` | string | Category ID | | `enable_history` | boolean | History enabled | | `native_category_id` | string | Native category ID | | `managed_package_install_id` | string | Package install ID | | `owner_id` | string | Owner ID | ### Rippling Update Custom Object [#rippling-update-custom-object] Update a custom object #### Input [#input-46] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `name` | string | No | Name | | `description` | string | No | Description | | `category` | string | No | Category | | `pluralLabel` | string | No | Plural label | | `ownerRole` | string | No | Owner role | #### Output [#output-46] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------ | | `id` | string | ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | | `api_name` | string | API name | | `plural_label` | string | Plural label | | `category_id` | string | Category ID | | `enable_history` | boolean | History enabled | | `native_category_id` | string | Native category ID | | `managed_package_install_id` | string | Package install ID | | `owner_id` | string | Owner ID | ### Rippling Delete Custom Object [#rippling-delete-custom-object] Delete a custom object #### Input [#input-47] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | ID of the resource to delete | #### Output [#output-47] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Custom Object Fields [#rippling-list-custom-object-fields] List all fields for a custom object #### Input [#input-48] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | #### Output [#output-48] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------ | | `fields` | array | List of fields | | ↳ `id` | string | Field ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Field name | | ↳ `custom_object` | string | Parent custom object | | ↳ `description` | string | Description | | ↳ `api_name` | string | API name | | ↳ `data_type` | json | Data type configuration | | ↳ `is_unique` | boolean | Whether the field is unique | | ↳ `is_immutable` | boolean | Whether the field is immutable | | ↳ `is_standard` | boolean | Whether the field is standard | | ↳ `enable_history` | boolean | Whether history is enabled | | ↳ `managed_package_install_id` | string | Package install ID | | `totalCount` | number | Number of fields returned | | `nextLink` | string | Next page link | ### Rippling Get Custom Object Field [#rippling-get-custom-object-field] Get a specific field of a custom object #### Input [#input-49] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `fieldApiName` | string | Yes | Field API name | #### Output [#output-49] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------- | | `id` | string | Field ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `custom_object` | string | Custom object | | `description` | string | Description | | `api_name` | string | API name | | `data_type` | json | Data type configuration | | `is_unique` | boolean | Is unique | | `is_immutable` | boolean | Is immutable | | `is_standard` | boolean | Is standard | | `enable_history` | boolean | History enabled | | `managed_package_install_id` | string | Package install ID | ### Rippling Create Custom Object Field [#rippling-create-custom-object-field] Create a field on a custom object #### Input [#input-50] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `name` | string | Yes | Field name | | `description` | string | No | Description | | `dataType` | json | Yes | Data type configuration | | `required` | boolean | No | Whether the field is required | | `rqlDefinition` | json | No | RQL definition object | | `isUnique` | boolean | No | Whether field is unique | | `formulaAttrMetas` | json | No | Formula attribute metadata | | `section` | json | No | Section configuration | | `enableHistory` | boolean | No | Enable history tracking | | `derivedFieldFormula` | string | No | Derived field formula expression | | `derivedAggregatedField` | json | No | Derived aggregated field configuration | #### Output [#output-50] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------- | | `id` | string | Field ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `custom_object` | string | Custom object | | `description` | string | Description | | `api_name` | string | API name | | `data_type` | json | Data type configuration | | `is_unique` | boolean | Is unique | | `is_immutable` | boolean | Is immutable | | `is_standard` | boolean | Is standard | | `enable_history` | boolean | History enabled | | `managed_package_install_id` | string | Package install ID | ### Rippling Update Custom Object Field [#rippling-update-custom-object-field] Update a field on a custom object #### Input [#input-51] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `fieldApiName` | string | Yes | Field API name | | `name` | string | No | Field name | | `description` | string | No | Description | | `dataType` | json | No | Data type | | `required` | boolean | No | Whether the field is required | | `rqlDefinition` | json | No | RQL definition object | | `isUnique` | boolean | No | Is unique | | `formulaAttrMetas` | json | No | Formula attribute metadata | | `section` | json | No | Section configuration | | `enableHistory` | boolean | No | Enable history | | `derivedFieldFormula` | string | No | Derived field formula expression | | `nameFieldDetails` | json | No | Name field details configuration | #### Output [#output-51] | Parameter | Type | Description | | ---------------------------- | ------- | ----------------------- | | `id` | string | Field ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `custom_object` | string | Custom object | | `description` | string | Description | | `api_name` | string | API name | | `data_type` | json | Data type configuration | | `is_unique` | boolean | Is unique | | `is_immutable` | boolean | Is immutable | | `is_standard` | boolean | Is standard | | `enable_history` | boolean | History enabled | | `managed_package_install_id` | string | Package install ID | ### Rippling Delete Custom Object Field [#rippling-delete-custom-object-field] Delete a field from a custom object #### Input [#input-52] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `fieldApiName` | string | Yes | Field API name | #### Output [#output-52] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the field was deleted | ### Rippling List Custom Object Records [#rippling-list-custom-object-records] List all records for a custom object #### Input [#input-53] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | #### Output [#output-53] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------- | | `records` | array | List of records | | ↳ `id` | string | Record ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Record name | | ↳ `external_id` | string | External ID | | ↳ `created_by` | json | Created by user (id, display\_value, image) | | ↳ `last_modified_by` | json | Last modified by user (id, display\_value, image) | | ↳ `owner_role` | json | Owner role (id, display\_value, image) | | ↳ `system_updated_at` | string | System update timestamp | | ↳ `data` | json | Full record data including dynamic fields | | `totalCount` | number | Number of records returned | | `nextLink` | string | Next page link | ### Rippling Get Custom Object Record [#rippling-get-custom-object-record] Get a specific custom object record #### Input [#input-54] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `codrId` | string | Yes | Record ID | #### Output [#output-54] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------- | | `id` | string | Record ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `name` | string | Record name | | `external_id` | string | External ID | | `created_by` | json | Created by user (id, display\_value, image) | | `last_modified_by` | json | Last modified by user (id, display\_value, image) | | `owner_role` | json | Owner role (id, display\_value, image) | | `system_updated_at` | string | System update timestamp | | `data` | json | Full record data | ### Rippling Get Record By External ID [#rippling-get-record-by-external-id] Get a custom object record by external ID #### Input [#input-55] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `externalId` | string | Yes | External ID | #### Output [#output-55] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------- | | `id` | string | Record ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `name` | string | Record name | | `external_id` | string | External ID | | `created_by` | json | Created by user (id, display\_value, image) | | `last_modified_by` | json | Last modified by user (id, display\_value, image) | | `owner_role` | json | Owner role (id, display\_value, image) | | `system_updated_at` | string | System update timestamp | | `data` | json | Full record data | ### Rippling Query Custom Object Records [#rippling-query-custom-object-records] Query custom object records with filters #### Input [#input-56] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `query` | string | No | Query expression | | `limit` | number | No | Maximum number of records to return | | `cursor` | string | No | Pagination cursor | #### Output [#output-56] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------- | | `records` | array | Matching records | | ↳ `id` | string | Record ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Record name | | ↳ `external_id` | string | External ID | | ↳ `created_by` | json | Created by user (id, display\_value, image) | | ↳ `last_modified_by` | json | Last modified by user (id, display\_value, image) | | ↳ `owner_role` | json | Owner role (id, display\_value, image) | | ↳ `system_updated_at` | string | System update timestamp | | ↳ `data` | json | Full record data | | `totalCount` | number | Number of records returned | | `cursor` | string | Cursor for next page of results | ### Rippling Create Custom Object Record [#rippling-create-custom-object-record] Create a custom object record #### Input [#input-57] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `externalId` | string | No | External ID for the record | | `data` | json | Yes | Record data | #### Output [#output-57] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------- | | `id` | string | Record ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `name` | string | Record name | | `external_id` | string | External ID | | `created_by` | json | Created by user (id, display\_value, image) | | `last_modified_by` | json | Last modified by user (id, display\_value, image) | | `owner_role` | json | Owner role (id, display\_value, image) | | `system_updated_at` | string | System update timestamp | | `data` | json | Full record data | ### Rippling Update Custom Object Record [#rippling-update-custom-object-record] Update a custom object record #### Input [#input-58] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `codrId` | string | Yes | Record ID | | `externalId` | string | No | External ID for the record | | `data` | json | No | Updated record data | #### Output [#output-58] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------- | | `id` | string | Record ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `name` | string | Record name | | `external_id` | string | External ID | | `created_by` | json | Created by user (id, display\_value, image) | | `last_modified_by` | json | Last modified by user (id, display\_value, image) | | `owner_role` | json | Owner role (id, display\_value, image) | | `system_updated_at` | string | System update timestamp | | `data` | json | Full record data | ### Rippling Delete Custom Object Record [#rippling-delete-custom-object-record] Delete a custom object record #### Input [#input-59] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `codrId` | string | Yes | Record ID | #### Output [#output-59] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the record was deleted | ### Rippling Bulk Create Custom Object Records [#rippling-bulk-create-custom-object-records] Bulk create custom object records #### Input [#input-60] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `rowsToWrite` | json | Yes | Array of records to create \[\{external\_id?, data}] | | `allOrNothing` | boolean | No | If true, fail entire batch on any error | #### Output [#output-60] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------- | | `createdRecords` | array | Created custom object records | | `totalCount` | number | Number of records created | ### Rippling Bulk Update Custom Object Records [#rippling-bulk-update-custom-object-records] Bulk update custom object records #### Input [#input-61] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `rowsToUpdate` | json | Yes | Array of records to update | | `allOrNothing` | boolean | No | If true, fail entire batch on any error | #### Output [#output-61] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------- | | `updatedRecords` | array | Updated custom object records | | `totalCount` | number | Number of records updated | ### Rippling Bulk Delete Custom Object Records [#rippling-bulk-delete-custom-object-records] Bulk delete custom object records #### Input [#input-62] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `customObjectApiName` | string | Yes | Custom object API name | | `rowsToDelete` | json | Yes | Array of records to delete | | `allOrNothing` | boolean | No | If true, fail entire batch on any error | #### Output [#output-62] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `deleted` | boolean | Whether the bulk delete succeeded | ### Rippling List CustomApps [#rippling-list-customapps] List all custom apps #### Input [#input-63] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | #### Output [#output-63] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `customApps` | array | List of customApps | | ↳ `id` | string | App ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | App name | | ↳ `api_name` | string | API name | | ↳ `description` | string | Description | | ↳ `icon` | string | Icon URL | | ↳ `pages` | json | Array of page summaries | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get CustomApp [#rippling-get-customapp] Get a specific custom app #### Input [#input-64] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-64] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------- | | `id` | string | App ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `api_name` | string | API name | | `description` | string | Description | | `icon` | string | Icon URL | | `pages` | json | Array of page summaries | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Custom App [#rippling-create-custom-app] Create a new custom app #### Input [#input-65] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | App name | | `apiName` | string | Yes | API name | | `description` | string | No | Description | #### Output [#output-65] | Parameter | Type | Description | | ------------- | ------ | ----------------------- | | `id` | string | App ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `api_name` | string | API name | | `description` | string | Description | | `icon` | string | Icon URL | | `pages` | json | Array of page summaries | ### Rippling Update CustomApp [#rippling-update-customapp] Update a custom app #### Input [#input-66] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | App ID | | `name` | string | No | App name | | `apiName` | string | No | API name | | `description` | string | No | Description | #### Output [#output-66] | Parameter | Type | Description | | ------------- | ------ | ----------------------- | | `id` | string | App ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `api_name` | string | API name | | `description` | string | Description | | `icon` | string | Icon URL | | `pages` | json | Array of page summaries | ### Rippling Delete CustomApp [#rippling-delete-customapp] Delete a custom app #### Input [#input-67] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-67] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List CustomPages [#rippling-list-custompages] List all custom pages #### Input [#input-68] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | #### Output [#output-68] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------- | | `customPages` | array | List of customPages | | ↳ `id` | string | Page ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Page name | | ↳ `components` | json | Page components | | ↳ `actions` | json | Page actions | | ↳ `canvas_actions` | json | Canvas actions | | ↳ `variables` | json | Page variables | | ↳ `media` | json | Page media | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get CustomPage [#rippling-get-custompage] Get a specific custom page #### Input [#input-69] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-69] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------- | | `id` | string | Page ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `components` | json | Page components | | `actions` | json | Page actions | | `canvas_actions` | json | Canvas actions | | `variables` | json | Page variables | | `media` | json | Page media | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create CustomPage [#rippling-create-custompage] Create a new custom page #### Input [#input-70] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Page name | #### Output [#output-70] | Parameter | Type | Description | | ---------------- | ------ | --------------- | | `id` | string | Page ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `components` | json | Page components | | `actions` | json | Page actions | | `canvas_actions` | json | Canvas actions | | `variables` | json | Page variables | | `media` | json | Page media | ### Rippling Update CustomPage [#rippling-update-custompage] Update a custom page #### Input [#input-71] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Page ID | | `name` | string | No | Page name | #### Output [#output-71] | Parameter | Type | Description | | ---------------- | ------ | --------------- | | `id` | string | Page ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `components` | json | Page components | | `actions` | json | Page actions | | `canvas_actions` | json | Canvas actions | | `variables` | json | Page variables | | `media` | json | Page media | ### Rippling Delete CustomPage [#rippling-delete-custompage] Delete a custom page #### Input [#input-72] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-72] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Custom Settings [#rippling-list-custom-settings] List all custom settings #### Input [#input-73] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `orderBy` | string | No | Sort field. Prefix with - for descending | | `cursor` | string | No | Pagination cursor from previous response | #### Output [#output-73] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------- | | `customSettings` | array | List of custom settings | | ↳ `id` | string | Setting ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `display_name` | string | Display name | | ↳ `api_name` | string | API name | | ↳ `data_type` | string | Data type | | ↳ `secret_value` | string | Secret value | | ↳ `string_value` | string | String value | | ↳ `number_value` | number | Number value | | ↳ `boolean_value` | boolean | Boolean value | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Get Custom Setting [#rippling-get-custom-setting] Get a specific custom setting #### Input [#input-74] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-74] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------- | | `id` | string | Setting ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `display_name` | string | Display name | | `api_name` | string | API name | | `data_type` | string | Data type | | `secret_value` | string | Secret value | | `string_value` | string | String value | | `number_value` | number | Number value | | `boolean_value` | boolean | Boolean value | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Create Custom Setting [#rippling-create-custom-setting] Create a new custom setting #### Input [#input-75] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `displayName` | string | No | Display name | | `apiName` | string | No | Unique API name | | `dataType` | string | No | Data type of the setting | | `secretValue` | string | No | Secret value (for secret data type) | | `stringValue` | string | No | String value (for string data type) | | `numberValue` | number | No | Number value (for number data type) | | `booleanValue` | boolean | No | Boolean value (for boolean data type) | #### Output [#output-75] | Parameter | Type | Description | | --------------- | ------- | -------------------- | | `id` | string | Setting ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `display_name` | string | Display name | | `api_name` | string | API name | | `data_type` | string | Data type | | `secret_value` | string | Secret value | | `string_value` | string | String value | | `number_value` | number | Number value | | `boolean_value` | boolean | Boolean value | ### Rippling Update Custom Setting [#rippling-update-custom-setting] Update a custom setting #### Input [#input-76] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Setting ID | | `displayName` | string | No | Display name | | `apiName` | string | No | Unique API name | | `dataType` | string | No | Data type of the setting | | `secretValue` | string | No | Secret value (for secret data type) | | `stringValue` | string | No | String value (for string data type) | | `numberValue` | number | No | Number value (for number data type) | | `booleanValue` | boolean | No | Boolean value (for boolean data type) | #### Output [#output-76] | Parameter | Type | Description | | --------------- | ------- | -------------------- | | `id` | string | Setting ID | | `created_at` | string | Record creation date | | `updated_at` | string | Record update date | | `display_name` | string | Display name | | `api_name` | string | API name | | `data_type` | string | Data type | | `secret_value` | string | Secret value | | `string_value` | string | String value | | `number_value` | number | Number value | | `boolean_value` | boolean | Boolean value | ### Rippling Delete Custom Setting [#rippling-delete-custom-setting] Delete a custom setting #### Input [#input-77] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-77] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling List Object Categories [#rippling-list-object-categories] List all object categories #### Input [#input-78] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | #### Output [#output-78] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `objectCategories` | array | List of objectCategories | | ↳ `id` | string | Category ID | | ↳ `created_at` | string | Record creation date | | ↳ `updated_at` | string | Record update date | | ↳ `name` | string | Category name | | ↳ `description` | string | Description | | `totalCount` | number | Number of items returned | | `nextLink` | string | Link to next page of results | ### Rippling Get ObjectCategory [#rippling-get-objectcategory] Get a specific object category #### Input [#input-79] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Resource ID | #### Output [#output-79] | Parameter | Type | Description | | ------------- | ------ | ------------- | | `id` | string | Category ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | ### Rippling Create ObjectCategory [#rippling-create-objectcategory] Create a new object category #### Input [#input-80] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `name` | string | Yes | Category name | | `description` | string | No | Description | #### Output [#output-80] | Parameter | Type | Description | | ------------- | ------ | ------------- | | `id` | string | Category ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | ### Rippling Update ObjectCategory [#rippling-update-objectcategory] Update an object category #### Input [#input-81] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | Category ID | | `name` | string | No | Category name | | `description` | string | No | Description | #### Output [#output-81] | Parameter | Type | Description | | ------------- | ------ | ------------- | | `id` | string | Category ID | | `created_at` | string | Creation date | | `updated_at` | string | Update date | | `name` | string | Name | | `description` | string | Description | ### Rippling Delete ObjectCategory [#rippling-delete-objectcategory] Delete an object category #### Input [#input-82] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Rippling API key | | `id` | string | Yes | ID of the resource to delete | #### Output [#output-82] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | ### Rippling Get Report Run [#rippling-get-report-run] Get a report run by ID #### Input [#input-83] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | Rippling API key | | `runId` | string | Yes | run id | #### Output [#output-83] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------- | | `id` | string | Report run ID | | `report_id` | string | Report ID | | `status` | string | Run status | | `file_url` | string | URL to download the report file | | `expires_at` | string | Expiration timestamp for the file URL | | `output_type` | string | Output format (JSON or CSV) | | `__meta` | json | Metadata including redacted\_fields | ### Rippling Trigger Report Run [#rippling-trigger-report-run] Trigger a new report run #### Input [#input-84] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------- | | `apiKey` | string | Yes | Rippling API key | | `reportId` | string | Yes | Report ID to run | | `includeObjectIds` | boolean | No | Include object IDs in the report | | `includeTotalRows` | boolean | No | Include total row count | | `formatDateFields` | json | No | Date field formatting configuration | | `formatCurrencyFields` | json | No | Currency field formatting configuration | | `outputType` | string | No | Output type (JSON or CSV) | #### Output [#output-84] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------- | | `id` | string | Report run ID | | `report_id` | string | Report ID | | `status` | string | Run status | | `file_url` | string | URL to download the report file | | `expires_at` | string | Expiration timestamp for the file URL | | `output_type` | string | Output format (JSON or CSV) | ### Rippling Create Draft Hires [#rippling-create-draft-hires] Create bulk draft hires #### Input [#input-85] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | Rippling API key | | `draftHires` | json | Yes | Array of draft hire objects | #### Output [#output-85] | Parameter | Type | Description | | ------------------- | ------ | ---------------------- | | `invalidItems` | json | Failed draft hires | | `successfulResults` | json | Successful draft hires | | `totalInvalid` | number | Number of failures | | `totalSuccessful` | number | Number of successes | --- # Rocketlane (/integrations/rocketlane) {/* MANUAL-CONTENT-START:intro */} [Rocketlane](https://www.rocketlane.com/) is a professional-services automation platform for customer onboarding and project delivery. It keeps projects, phases, tasks, templates, time tracking, and billing in one system so services teams and their customers work from the same plan. With the Rocketlane integration in Agent Serve, you can: * **Manage projects**: Create, get, list, update, archive, and delete projects, and add or remove project members * **Work with templates**: Import a template into a project, then list, assign, and unassign its placeholders * **Manage tasks**: Create, get, list, update, and delete tasks, move them between phases, and manage assignees, followers, and dependencies * **Structure delivery**: Create, get, list, update, and delete project phases * **Configure custom fields**: Create, get, list, update, and delete fields, and add or update their options * **Track time**: Create, get, list, search, update, and delete time entries, and list time-entry categories * **Handle time-off**: Create, get, list, and delete time-off records * **Organize knowledge**: Create, get, list, update, and delete spaces and space documents * **Review capacity and billing**: List resource allocations, and retrieve invoices with their line items and payments In Agent Serve, the Rocketlane integration enables your agents to run onboarding as an automated process. An agent can spin up a project from a signed deal, apply the right template, assign placeholders to real people, keep tasks and phases moving, log time, and pull invoice and allocation data for reporting. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Rocketlane into your workflow. Rocketlane is a professional-services automation platform for client onboarding and project delivery. Create and manage projects, tasks, phases, custom fields, time entries, time-offs, spaces, documents, resource allocations, and invoices. ## Actions [#actions] ### Rocketlane Create Project [#rocketlane-create-project] Create a new Rocketlane project with a customer, owner, dates, team members, templates, financials, and custom fields #### Input [#input] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectName` | string | Yes | Name of the project | | `customerCompanyName` | string | Yes | Name of the customer company (case-sensitive exact match; cannot be changed after creation) | | `ownerUserId` | number | No | User ID of the project owner (either ownerUserId or ownerEmailId must be provided) | | `ownerEmailId` | string | No | Email of the project owner (either ownerUserId or ownerEmailId must be provided) | | `startDate` | string | No | Date on which the project begins (YYYY-MM-DD); required when sources are provided | | `dueDate` | string | No | Date on which the project is planned to complete (YYYY-MM-DD, on or after startDate) | | `visibility` | string | No | Who can see the project: EVERYONE or MEMBERS | | `statusValue` | number | No | Value (identifier) of the project status | | `memberUserIds` | array | No | User IDs of team members from your organization to add to the project | | `customerUserIds` | array | No | User IDs of customer stakeholders to add to the project | | `customerChampionUserId` | number | No | User ID of the customer champion | | `fields` | array | No | Custom field assignments, each with fieldId and fieldValue (string, number, or number array matching the field type) | | `sources` | array | No | Project templates to import at creation, each with templateId, startDate (YYYY-MM-DD), and optional prefix | | `placeholders` | array | No | Placeholder-to-user mappings, each with placeholderId and user (\{ userId } or \{ emailId }); ignored unless the project is built from sources | | `assignProjectOwner` | boolean | No | Automatically assign unassigned tasks to the project owner (skipped when no sources are used) | | `annualizedRecurringRevenue` | number | No | Recurring revenue of the customer subscriptions for a single calendar year | | `projectFee` | number | No | Total fee charged for the project | | `autoAllocation` | boolean | No | Whether auto allocation is enabled for the project | | `autoCreateCompany` | boolean | No | Create the customer company if it does not already exist | | `budgetedHours` | number | No | Total hours allocated for project execution (decimal, up to two places) | | `contractType` | string | No | Contract type for the project financials: FIXED\_FEE, TIME\_AND\_MATERIAL, NON\_BILLABLE, or SUBSCRIPTION | | `fixedFee` | number | No | Project fee for FIXED\_FEE contract type projects | | `projectBudget` | number | No | Project budget for TIME\_AND\_MATERIAL contract type projects | | `rateCardId` | number | No | Rate card ID for TIME\_AND\_MATERIAL contract type projects | | `subscriptionFrequency` | string | No | Subscription renewal interval for SUBSCRIPTION contracts: MONTHLY, QUARTERLY, HALF\_YEARLY, or YEARLY | | `subscriptionStartDate` | string | No | Date when the subscription interval begins (YYYY-MM-DD) | | `periodMinutes` | number | No | Budgeted minutes for each subscription period | | `periodBudget` | number | No | Fixed budget of every subscription period | | `noOfPeriods` | number | No | Number of periods in the subscription | | `currency` | string | No | Currency for the project financials (ISO code, e.g. USD); cannot be changed once set | | `externalReferenceId` | string | No | Identifier linking the project to an external system | | `includeFields` | string | No | Comma-separated extra fields to return in the response (e.g. budgetedHours,progressPercentage) | | `includeAllFields` | boolean | No | Return all fields in the response body | #### Output [#output] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The created project | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane Get Project [#rocketlane-get-project] Retrieve a Rocketlane project by its unique identifier #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | | `includeFields` | string | No | Comma-separated extra fields to return in the response (e.g. budgetedHours,progressPercentage) | | `includeAllFields` | boolean | No | Return all fields in the response body | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The requested project | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane List Projects [#rocketlane-list-projects] List Rocketlane projects with optional filters, sorting, and token-based pagination #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Maximum number of projects per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | | `includeFields` | string | No | Comma-separated extra fields to return in the response (e.g. budgetedHours,progressPercentage) | | `includeAllFields` | boolean | No | Return all fields in the response body | | `sortBy` | string | No | Field to sort by: projectName, startDate, dueDate, startDateActual, dueDateActual, annualizedRecurringRevenue, or projectFee | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | Combine filters with AND (all) or OR (any); defaults to all | | `projectNameContains` | string | No | Only return projects whose name contains this value | | `projectNameEquals` | string | No | Only return projects whose name exactly matches this value | | `statusEquals` | string | No | Only return projects with this status value | | `statusOneOf` | string | No | Comma-separated status values; returns projects matching any of them | | `customerIdEquals` | string | No | Only return projects for this customer company ID | | `customerIdOneOf` | string | No | Comma-separated customer company IDs; returns projects matching any of them | | `teamMemberIdEquals` | string | No | Only return projects that include this team member ID | | `contractTypeEquals` | string | No | Only return projects with this contract type: FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE | | `includeArchived` | boolean | No | Whether to include archived projects in the results | | `externalReferenceIdEquals` | string | No | Only return projects with this external reference ID | | `startDateAfter` | string | No | Only return projects whose start date is after this date (YYYY-MM-DD) | | `startDateBefore` | string | No | Only return projects whose start date is before this date (YYYY-MM-DD) | | `dueDateAfter` | string | No | Only return projects whose due date is after this date (YYYY-MM-DD) | | `dueDateBefore` | string | No | Only return projects whose due date is before this date (YYYY-MM-DD) | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `projects` | array | List of projects | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | | `pagination` | object | Pagination details for fetching further pages | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Project [#rocketlane-update-project] Update a Rocketlane project by ID, including name, dates, visibility, owner, status, and custom fields #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project to update | | `projectName` | string | No | New name of the project | | `startDate` | string | No | Date on which the project begins (YYYY-MM-DD) | | `dueDate` | string | No | Date on which the project is planned to complete (YYYY-MM-DD, on or after startDate) | | `visibility` | string | No | Who can see the project: EVERYONE or MEMBERS | | `ownerUserId` | number | No | User ID of the new project owner (transfers ownership and revokes access for the previous owner) | | `ownerEmailId` | string | No | Email of the new project owner | | `statusValue` | number | No | Value (identifier) of the project status | | `fields` | array | No | Custom field assignments, each with fieldId and fieldValue (string, number, or number array matching the field type) | | `annualizedRecurringRevenue` | number | No | Recurring revenue of the customer subscriptions for a single calendar year | | `projectFee` | number | No | Total fee charged for the project | | `autoAllocation` | boolean | No | Whether auto allocation is enabled for the project | | `budgetedHours` | number | No | Total hours allocated for project execution (decimal, up to two places) | | `externalReferenceId` | string | No | Identifier linking the project to an external system | | `includeFields` | string | No | Comma-separated extra fields to return in the response (e.g. budgetedHours,progressPercentage) | | `includeAllFields` | boolean | No | Return all fields in the response body | #### Output [#output-3] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The updated project | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane Archive Project [#rocketlane-archive-project] Archive a Rocketlane project by ID, making it dormant while preserving its details and history #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project to archive | #### Output [#output-4] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------------- | | `archived` | boolean | Whether the project was archived | | `projectId` | number | Unique identifier of the archived project | ### Rocketlane Delete Project [#rocketlane-delete-project] Permanently delete a Rocketlane project by ID (irreversible; only Admins, Super Users, and Project Owners can delete) #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project to delete | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------------- | | `deleted` | boolean | Whether the project was deleted | | `projectId` | number | Unique identifier of the deleted project | ### Rocketlane Add Project Members [#rocketlane-add-project-members] Add team members and customer stakeholders to a Rocketlane project #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | | `memberUserIds` | array | No | User IDs of team members from your organization to add | | `memberEmailIds` | array | No | Emails of team members from your organization to add | | `customerUserIds` | array | No | User IDs of customer stakeholders to add | | `customerEmailIds` | array | No | Emails of customer stakeholders to add | #### Output [#output-6] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The project with its updated team members | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane Remove Project Members [#rocketlane-remove-project-members] Remove team members from a Rocketlane project #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | | `memberUserIds` | array | No | User IDs of team members to remove (at least one of memberUserIds or memberEmailIds is required) | | `memberEmailIds` | array | No | Emails of team members to remove (at least one of memberUserIds or memberEmailIds is required) | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The project with its updated team members | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane Import Template [#rocketlane-import-template] Import a project template into an existing Rocketlane project #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project to import the template into | | `templateId` | number | Yes | Unique identifier of the template to import | | `startDate` | string | Yes | Date on which the template goes into effect for the project (YYYY-MM-DD) | | `prefix` | string | No | Prefix distinguishing which phase or task corresponds to this template when importing multiple templates | #### Output [#output-8] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The project after the template import (including its sources) | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | ### Rocketlane List Placeholders [#rocketlane-list-placeholders] List the placeholders of a Rocketlane project #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------- | --------------------------------------------------------- | | `placeholders` | array | Placeholders of the project | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `project` | object | Project of the placeholder | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `role` | object | Role of the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `placeholderType` | string | Type of the placeholder (NATIVE or EXTERNAL) | | ↳ `createdAt` | number | Time when the placeholder was created (epoch millis) | | ↳ `updatedAt` | number | Time when the placeholder was last updated (epoch millis) | | `pagination` | object | Pagination details for fetching further pages | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Assign Placeholders [#rocketlane-assign-placeholders] Assign a placeholder in a Rocketlane project to a user #### Input [#input-10] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | | `placeholderId` | number | Yes | Unique identifier of the placeholder to assign | | `userId` | number | No | User ID of the project member to assign (either userId or userEmailId must be provided; must be a customer user for CUSTOMER placeholders) | | `userEmailId` | string | No | Email of the project member to assign (either userId or userEmailId must be provided) | #### Output [#output-10] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The project after the placeholder assignment | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | | `placeholders` | array | Placeholder-to-user mappings on the project | | ↳ `placeholder` | object | Placeholder being mapped | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `placeholderStatus` | string | Status of the placeholder (ASSIGNED or UNASSIGNED) | | ↳ `user` | object | User assigned to the placeholder | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `role` | string | Role name of the assigned user | | ↳ `hourlyCostRate` | number | Latest hourly cost rate for the placeholder | | ↳ `costRateCurrency` | string | Currency for the cost rate | | ↳ `hourlyBillRate` | number | Latest hourly bill rate for the placeholder | | ↳ `billRateCurrency` | string | Currency for the bill rate | ### Rocketlane Unassign Placeholders [#rocketlane-unassign-placeholders] Unassign a placeholder from its user in a Rocketlane project #### Input [#input-11] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | Unique identifier of the project | | `placeholderId` | number | Yes | Unique identifier of the placeholder to unassign | #### Output [#output-11] | Parameter | Type | Description | | ----------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- | | `project` | object | The project after the placeholder was unassigned | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Date on which the project execution begins (YYYY-MM-DD) | | ↳ `dueDate` | string | Date on which the project execution is planned to complete (YYYY-MM-DD) | | ↳ `createdAt` | number | Time when the project was created (epoch millis) | | ↳ `updatedAt` | number | Time when the project was last updated (epoch millis) | | ↳ `owner` | object | Project owner | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `teamMembers` | object | Project members, customers, and customer champion | | ↳ `members` | array | Team members working on the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customers` | array | Customer stakeholders involved in the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `customerChampion` | object | Customer champion of the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Project status value and label | | ↳ `value` | number | Unique identifier of the status | | ↳ `label` | string | Name of the status | | ↳ `fields` | array | Custom project field values | | ↳ `fieldId` | number | Unique identifier of the custom field | | ↳ `fieldLabel` | string | Name of the custom project field | | ↳ `fieldValue` | string | Value assigned to the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `customer` | object | Customer company of the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `partnerCompanies` | array | Partner companies on the project | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `companyUrl` | string | Website URL of the company | | ↳ `archived` | boolean | Whether the project is archived | | ↳ `visibility` | string | Project visibility (EVERYONE, MEMBERS, or GROUP) | | ↳ `createdBy` | object | Team member who created the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the project | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `currency` | string | Currency for the project financials (ISO code) | | ↳ `financials` | object | Project financials (contract type and per-contract-type fields) | | ↳ `contractType` | string | Contract type for the project financials (FIXED\_FEE, TIME\_AND\_MATERIAL, SUBSCRIPTION, or NON\_BILLABLE) | | ↳ `revenueRecognitionType` | string | Method used for revenue recognition | | ↳ `fixedFee` | number | Project fee for Fixed fee contract type projects | | ↳ `projectBudget` | number | Budget allocated for Time & Material contract type projects | | ↳ `rateCardId` | number | Unique identifier of the rate card | | ↳ `rateCardName` | string | Name of the rate card | | ↳ `subscriptionFrequency` | string | Interval at which the subscription renews (MONTHLY, QUARTERLY, HALF\_YEARLY, YEARLY) | | ↳ `subscriptionStartDate` | string | Date when the subscription interval begins (YYYY-MM-DD) | | ↳ `periodMinutes` | number | Budgeted minutes for each subscription period | | ↳ `periodBudget` | number | Fixed budget of every subscription period | | ↳ `noOfPeriods` | number | Number of periods in the subscription | | ↳ `startDateActual` | string | Date on which the project status changed to in progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date on which the project status changed to completed (YYYY-MM-DD) | | ↳ `annualizedRecurringRevenue` | number | Recurring revenue of the customer subscriptions for a single calendar year | | ↳ `projectFee` | number | Total fee charged for the project | | ↳ `budgetedHours` | number | Total hours allocated for project execution | | ↳ `percentageBudgetedHoursConsumed` | number | Budgeted hours consumed percentage | | ↳ `percentageBudgetConsumed` | number | Budget consumed percentage | | ↳ `trackedHours` | number | Hours tracked as part of submitted time entries | | ↳ `trackedMinutes` | number | Minutes tracked as part of submitted time entries | | ↳ `allocatedHours` | number | Allocated hours against users or placeholders | | ↳ `allocatedMinutes` | number | Allocated minutes against users or placeholders | | ↳ `billableHours` | number | Hours of time entries tracked as billable | | ↳ `billableMinutes` | number | Minutes of time entries tracked as billable | | ↳ `nonBillableHours` | number | Hours of time entries tracked as non-billable | | ↳ `nonBillableMinutes` | number | Minutes of time entries tracked as non-billable | | ↳ `remainingHours` | number | Hours left to complete the project based on tracked and budgeted hours | | ↳ `remainingMinutes` | number | Minutes left to complete the project (complements remainingHours) | | ↳ `progressPercentage` | number | Progress based on completed tasks vs total tasks | | ↳ `currentPhases` | array | Phases currently marked as in progress | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `autoAllocation` | boolean | Whether auto allocation is enabled for the project | | ↳ `sources` | array | Project templates imported into the project | | ↳ `prefix` | string | Prefix distinguishing which phase or task corresponds to which template | | ↳ `startDate` | string | Date on which the template goes into effect (YYYY-MM-DD) | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `plannedDurationInDays` | number | Difference between startDate and dueDate in days | | ↳ `inferredProgress` | string | Inferred progress (ON\_TRACK, AHEAD\_OF\_TIME, RUNNING\_LATE, or NONE) | | ↳ `projectAgeInDays` | number | Age of the project in days based on actual dates | | ↳ `customersInvited` | number | Number of customers invited to the project | | ↳ `customersJoined` | number | Number of customers who joined the project | | ↳ `externalReferenceId` | string | Identifier linking the project to an external system | | `placeholders` | array | Placeholder-to-user mappings on the project | | ↳ `placeholder` | object | Placeholder being mapped | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `placeholderStatus` | string | Status of the placeholder (ASSIGNED or UNASSIGNED) | | ↳ `user` | object | User assigned to the placeholder | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `role` | string | Role name of the assigned user | | ↳ `hourlyCostRate` | number | Latest hourly cost rate for the placeholder | | ↳ `costRateCurrency` | string | Currency for the cost rate | | ↳ `hourlyBillRate` | number | Latest hourly bill rate for the placeholder | | ↳ `billRateCurrency` | string | Currency for the bill rate | ### Rocketlane Create Task [#rocketlane-create-task] Create a new task in a Rocketlane project #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskName` | string | Yes | Name of the task | | `projectId` | number | Yes | ID of the project the task belongs to | | `taskDescription` | string | No | Description of the task in HTML format | | `taskPrivateNote` | string | No | Private note visible only to team members, in HTML format | | `startDate` | string | No | Date when the task starts (YYYY-MM-DD) | | `dueDate` | string | No | Date when the task is due, on or after the start date (YYYY-MM-DD) | | `effortInMinutes` | number | No | Expected effort to complete the task, in minutes | | `progress` | number | No | Progress of the task (0-100) | | `atRisk` | boolean | No | Whether the task is marked as At Risk | | `type` | string | No | Type of the task: TASK or MILESTONE (defaults to TASK) | | `phaseId` | number | No | ID of the phase to associate the task with (must belong to the project) | | `statusValue` | number | No | Status value to set on the task | | `assigneeUserIds` | array | No | User IDs of members to assign to the task | | `assigneeEmailIds` | array | No | Email addresses of members to assign to the task | | `followerUserIds` | array | No | User IDs of members to add as followers of the task | | `followerEmailIds` | array | No | Email addresses of members to add as followers of the task | | `parentTaskId` | number | No | ID of the parent task | | `externalReferenceId` | string | No | External reference identifier linking the task to an external system | | `private` | boolean | No | Whether the task is private | | `includeFields` | array | No | Extra fields to include in the response (startDateActual, dueDateActual, type, phase, assignees, followers, dependencies, billable, csatEnabled, priority, timeEntryCategory, financialsBudget, taskPrivateNote, parent, externalReferenceId) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The created task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Get Task [#rocketlane-get-task] Retrieve detailed information about a Rocketlane task by its unique identifier #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to retrieve | | `includeFields` | array | No | Extra fields to include in the response (startDateActual, dueDateActual, type, phase, assignees, followers, dependencies, billable, csatEnabled, priority, timeEntryCategory, financialsBudget, taskPrivateNote, parent, externalReferenceId) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-13] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The requested task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane List Tasks [#rocketlane-list-tasks] Retrieve all Rocketlane tasks with optional filters, sorting, and pagination #### Input [#input-14] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Number of tasks per page (defaults to 100) | | `pageToken` | string | No | Token pointing to the next page of results, from a previous response | | `includeFields` | array | No | Extra fields to include in the response (startDateActual, dueDateActual, type, phase, assignees, followers, dependencies, billable, csatEnabled, priority, timeEntryCategory, financialsBudget, taskPrivateNote, parent, externalReferenceId) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | | `sortBy` | string | No | Field to sort by: taskName, startDate, dueDate, startDateActual, or dueDateActual | | `sortOrder` | string | No | Sort order: ASC or DESC | | `match` | string | No | How multiple filters combine: all (AND) or any (OR) | | `projectId` | number | No | Filter tasks by project ID | | `phaseId` | number | No | Filter tasks by phase ID | | `taskName` | string | No | Filter tasks whose name exactly matches this value | | `taskNameContains` | string | No | Filter tasks whose name contains this value | | `taskStatus` | string | No | Filter tasks by task status value | | `startDateFrom` | string | No | Filter tasks with a start date on or after this date (YYYY-MM-DD) | | `startDateTo` | string | No | Filter tasks with a start date on or before this date (YYYY-MM-DD) | | `dueDateFrom` | string | No | Filter tasks with a due date on or after this date (YYYY-MM-DD) | | `dueDateTo` | string | No | Filter tasks with a due date on or before this date (YYYY-MM-DD) | | `includeArchive` | boolean | No | Whether archived tasks should be included in the results | | `externalReferenceId` | string | No | Filter tasks by external reference identifier | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `tasks` | array | List of tasks matching the filters | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Task [#rocketlane-update-task] Update the properties of an existing Rocketlane task by its unique identifier #### Input [#input-15] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to update | | `taskName` | string | No | New name of the task | | `taskDescription` | string | No | Description of the task in HTML format | | `taskPrivateNote` | string | No | Private note visible only to team members, in HTML format | | `startDate` | string | No | Date when the task starts (YYYY-MM-DD) | | `dueDate` | string | No | Date when the task is due, on or after the start date (YYYY-MM-DD) | | `effortInMinutes` | number | No | Expected effort to complete the task, in minutes | | `progress` | number | No | Progress of the task (0-100) | | `atRisk` | boolean | No | Whether the task is marked as At Risk | | `type` | string | No | Type of the task: TASK or MILESTONE | | `statusValue` | number | No | Status value to set on the task | | `externalReferenceId` | string | No | External reference identifier linking the task to an external system | | `private` | boolean | No | Whether the task is private | | `includeFields` | array | No | Extra fields to include in the response (startDateActual, dueDateActual, type, phase, assignees, followers, dependencies, billable, csatEnabled, priority, timeEntryCategory, financialsBudget, taskPrivateNote, parent, externalReferenceId) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-15] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The updated task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Delete Task [#rocketlane-delete-task] Permanently delete a Rocketlane task by its unique identifier #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to delete | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `deleted` | boolean | Whether the task was deleted | | `taskId` | number | ID of the deleted task | ### Rocketlane Move Task To Phase [#rocketlane-move-task-to-phase] Move a Rocketlane task to a given phase, associating the task with that phase #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to move | | `phaseId` | number | Yes | Unique identifier of the phase to move the task to | #### Output [#output-17] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated phase | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Add Task Assignees [#rocketlane-add-task-assignees] Add members as assignees to a Rocketlane task #### Input [#input-18] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to add assignees to | | `memberUserIds` | array | No | User IDs of members to add as assignees | | `memberEmailIds` | array | No | Email addresses of members to add as assignees | #### Output [#output-18] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated assignees | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Remove Task Assignees [#rocketlane-remove-task-assignees] Remove assignees from a Rocketlane task #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to remove assignees from | | `memberUserIds` | array | No | User IDs of members to remove from the assignees | | `memberEmailIds` | array | No | Email addresses of members to remove from the assignees | #### Output [#output-19] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated assignees | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Add Task Followers [#rocketlane-add-task-followers] Add members as followers to a Rocketlane task #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to add followers to | | `memberUserIds` | array | No | User IDs of members to add as followers | | `memberEmailIds` | array | No | Email addresses of members to add as followers | #### Output [#output-20] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated followers | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Remove Task Followers [#rocketlane-remove-task-followers] Remove followers from a Rocketlane task #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to remove followers from | | `memberUserIds` | array | No | User IDs of members to remove from the followers | | `memberEmailIds` | array | No | Email addresses of members to remove from the followers | #### Output [#output-21] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated followers | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Add Task Dependencies [#rocketlane-add-task-dependencies] Add finish-to-start dependencies between a Rocketlane task and other tasks #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to add dependencies to | | `dependencyTaskIds` | array | Yes | Task IDs the task should depend on | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated dependencies | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Remove Task Dependencies [#rocketlane-remove-task-dependencies] Remove dependencies from a Rocketlane task #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `taskId` | number | Yes | Unique identifier of the task to remove dependencies from | | `dependencyTaskIds` | array | Yes | Task IDs to remove from the task dependencies | #### Output [#output-23] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------------------------------------------- | | `task` | object | The task with its updated dependencies | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `taskDescription` | string | Description of the task in HTML format | | ↳ `taskPrivateNote` | string | Private note visible only to team members, in HTML format | | ↳ `startDate` | string | Date when the task starts (YYYY-MM-DD) | | ↳ `dueDate` | string | Date when the task is due (YYYY-MM-DD) | | ↳ `startDateActual` | string | Date the task status changed to In Progress (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Date the task status changed to Completed (YYYY-MM-DD) | | ↳ `archived` | boolean | Whether the task is archived | | ↳ `effortInMinutes` | number | Expected effort to complete the task, in minutes | | ↳ `progress` | number | Progress of the task (0-100) | | ↳ `atRisk` | boolean | Whether the task is marked as At Risk | | ↳ `type` | string | Type of the task: TASK or MILESTONE | | ↳ `createdAt` | number | Time the task was created, in epoch millis | | ↳ `updatedAt` | number | Time the task was last updated, in epoch millis | | ↳ `createdBy` | object | User who created the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `project` | object | Project associated with the task | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `phase` | object | Phase associated with the task | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `status` | object | Status of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `priority` | object | Priority of the task (value and label) | | ↳ `value` | number | Unique identifier of the choice | | ↳ `label` | string | Label of the choice | | ↳ `fields` | array | Custom field values set on the task | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `assignees` | object | Assignees of the task (members and placeholders) | | ↳ `members` | array | Team members and customers assigned to the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `placeholders` | array | Placeholders assigned to the task | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role associated with the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `followers` | object | Followers of the task | | ↳ `members` | array | Team members and customers following the task | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `dependencies` | array | Tasks this task depends on (finish-to-start dependencies) | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `parent` | object | Parent task of the task | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `externalReferenceId` | string | External reference identifier linking the task to an external system | | ↳ `billable` | boolean | Whether the task is billable | | ↳ `timeEntryCategory` | object | Category in which the task time entries are added | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `financialsBudgets` | array | Financials budgets in which the task time entries are added | | ↳ `budgetId` | number | Unique identifier of the budget | | ↳ `budgetName` | string | Name of the budget | | ↳ `csatEnabled` | boolean | Whether a CSAT survey is sent on completion (milestone tasks) | | ↳ `private` | boolean | Whether the task is private | ### Rocketlane Create Phase [#rocketlane-create-phase] Create a new phase in a Rocketlane project #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `phaseName` | string | Yes | Name of the phase | | `projectId` | number | Yes | ID of the project to create the phase in | | `startDate` | string | Yes | Planned start date of the phase (YYYY-MM-DD) | | `dueDate` | string | Yes | Planned due date of the phase (YYYY-MM-DD) | | `statusValue` | number | No | Numeric status value to set on the phase | | `private` | boolean | No | Whether the phase is private | | `includeFields` | string | No | Comma-separated extra phase properties to include in the response (supported: startDateActual, dueDateActual) | | `includeAllFields` | boolean | No | Whether to return all phase properties in the response | #### Output [#output-24] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------ | | `phase` | object | The created phase | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `project` | object | Project the phase belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Planned start date of the phase (YYYY-MM-DD) | | ↳ `dueDate` | string | Planned due date of the phase (YYYY-MM-DD) | | ↳ `startDateActual` | string | Actual start date of the phase (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Actual due date of the phase (YYYY-MM-DD) | | ↳ `createdAt` | number | Time the phase was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the phase was last updated, in epoch milliseconds | | ↳ `createdBy` | object | Team member who created the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Status of the phase | | ↳ `value` | number | Numeric status value | | ↳ `label` | string | Display label of the status | | ↳ `private` | boolean | Whether the phase is private | ### Rocketlane Get Phase [#rocketlane-get-phase] Retrieve a single Rocketlane phase by ID #### Input [#input-25] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `phaseId` | number | Yes | ID of the phase to retrieve | | `includeFields` | string | No | Comma-separated extra phase properties to include in the response (supported: startDateActual, dueDateActual) | | `includeAllFields` | boolean | No | Whether to return all phase properties in the response | #### Output [#output-25] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------ | | `phase` | object | The requested phase | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `project` | object | Project the phase belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Planned start date of the phase (YYYY-MM-DD) | | ↳ `dueDate` | string | Planned due date of the phase (YYYY-MM-DD) | | ↳ `startDateActual` | string | Actual start date of the phase (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Actual due date of the phase (YYYY-MM-DD) | | ↳ `createdAt` | number | Time the phase was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the phase was last updated, in epoch milliseconds | | ↳ `createdBy` | object | Team member who created the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Status of the phase | | ↳ `value` | number | Numeric status value | | ↳ `label` | string | Display label of the status | | ↳ `private` | boolean | Whether the phase is private | ### Rocketlane List Phases [#rocketlane-list-phases] List phases of a Rocketlane project, with optional filters, sorting, and pagination #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | ID of the project to list phases for | | `pageSize` | number | No | Number of phases per page | | `pageToken` | string | No | Page token returned by a previous request (valid for 15 minutes) | | `includeFields` | string | No | Comma-separated extra phase properties to include in the response (supported: startDateActual, dueDateActual) | | `includeAllFields` | boolean | No | Whether to return all phase properties in the response | | `sortBy` | string | No | Property to sort by (phaseName, startDate, dueDate, startDateActual, dueDateActual) | | `sortOrder` | string | No | Sort order (ASC or DESC) | | `match` | string | No | Whether results must match all filters or any filter (all or any) | | `phaseName` | string | No | Filter by exact phase name | #### Output [#output-26] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------- | | `phases` | array | List of phases | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `project` | object | Project the phase belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Planned start date of the phase (YYYY-MM-DD) | | ↳ `dueDate` | string | Planned due date of the phase (YYYY-MM-DD) | | ↳ `startDateActual` | string | Actual start date of the phase (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Actual due date of the phase (YYYY-MM-DD) | | ↳ `createdAt` | number | Time the phase was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the phase was last updated, in epoch milliseconds | | ↳ `createdBy` | object | Team member who created the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Status of the phase | | ↳ `value` | number | Numeric status value | | ↳ `label` | string | Display label of the status | | ↳ `private` | boolean | Whether the phase is private | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Phase [#rocketlane-update-phase] Update the name, dates, status, or privacy of an existing Rocketlane phase #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `phaseId` | number | Yes | ID of the phase to update | | `phaseName` | string | No | New name of the phase | | `startDate` | string | No | New planned start date of the phase (YYYY-MM-DD) | | `dueDate` | string | No | New planned due date of the phase (YYYY-MM-DD) | | `statusValue` | number | No | New numeric status value for the phase | | `private` | boolean | No | Whether the phase is private | | `includeFields` | string | No | Comma-separated extra phase properties to include in the response (supported: startDateActual, dueDateActual) | | `includeAllFields` | boolean | No | Whether to return all phase properties in the response | #### Output [#output-27] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------ | | `phase` | object | The updated phase | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `project` | object | Project the phase belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `startDate` | string | Planned start date of the phase (YYYY-MM-DD) | | ↳ `dueDate` | string | Planned due date of the phase (YYYY-MM-DD) | | ↳ `startDateActual` | string | Actual start date of the phase (YYYY-MM-DD) | | ↳ `dueDateActual` | string | Actual due date of the phase (YYYY-MM-DD) | | ↳ `createdAt` | number | Time the phase was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the phase was last updated, in epoch milliseconds | | ↳ `createdBy` | object | Team member who created the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the phase | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `status` | object | Status of the phase | | ↳ `value` | number | Numeric status value | | ↳ `label` | string | Display label of the status | | ↳ `private` | boolean | Whether the phase is private | ### Rocketlane Delete Phase [#rocketlane-delete-phase] Permanently delete a Rocketlane phase by ID #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `phaseId` | number | Yes | ID of the phase to delete | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the phase was deleted | | `phaseId` | number | ID of the deleted phase | ### Rocketlane Create Field [#rocketlane-create-field] Create a custom field in your Rocketlane account, with options for SINGLE\_CHOICE and MULTIPLE\_CHOICE field types #### Input [#input-29] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldLabel` | string | Yes | Name of the field | | `fieldType` | string | Yes | Type of the field (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | `objectType` | string | Yes | Object the field is associated with (PROJECT, TASK, or USER) | | `fieldDescription` | string | No | Description of the field | | `fieldOptions` | array | No | Options for SINGLE\_CHOICE and MULTIPLE\_CHOICE fields; the order provided is preserved | | `ratingScale` | string | No | Number of stars for RATING fields (THREE, FIVE, SEVEN, TEN) | | `enabled` | boolean | No | Whether the field is enabled (defaults to true) | | `private` | boolean | No | Whether the field is private | | `includeFields` | string | No | Comma-separated extra field properties to include in the response (supported: options) | | `includeAllFields` | boolean | No | Whether to return all field properties in the response | #### Output [#output-29] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `field` | object | The created field | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the field | | ↳ `fieldDescription` | string | Description of the field | | ↳ `fieldType` | string | Type of the field (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | ↳ `objectType` | string | Object the field is associated with (PROJECT, TASK, or USER) | | ↳ `fieldOptions` | array | Options available for SINGLE\_CHOICE and MULTIPLE\_CHOICE fields | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | | ↳ `ratingScale` | string | Rating scale for RATING fields (THREE, FIVE, SEVEN, TEN) | | ↳ `createdBy` | object | Team member who created the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Time the field was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the field was last updated, in epoch milliseconds | | ↳ `enabled` | boolean | Whether the field is enabled | | ↳ `private` | boolean | Whether the field is private | ### Rocketlane Get Field [#rocketlane-get-field] Retrieve a single Rocketlane field by ID #### Input [#input-30] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldId` | number | Yes | ID of the field to retrieve | | `includeFields` | string | No | Comma-separated extra field properties to include in the response (supported: options) | | `includeAllFields` | boolean | No | Whether to return all field properties in the response | #### Output [#output-30] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `field` | object | The requested field | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the field | | ↳ `fieldDescription` | string | Description of the field | | ↳ `fieldType` | string | Type of the field (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | ↳ `objectType` | string | Object the field is associated with (PROJECT, TASK, or USER) | | ↳ `fieldOptions` | array | Options available for SINGLE\_CHOICE and MULTIPLE\_CHOICE fields | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | | ↳ `ratingScale` | string | Rating scale for RATING fields (THREE, FIVE, SEVEN, TEN) | | ↳ `createdBy` | object | Team member who created the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Time the field was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the field was last updated, in epoch milliseconds | | ↳ `enabled` | boolean | Whether the field is enabled | | ↳ `private` | boolean | Whether the field is private | ### Rocketlane List Fields [#rocketlane-list-fields] List fields in your Rocketlane account, with optional filters, sorting, and pagination #### Input [#input-31] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Number of fields per page | | `pageToken` | string | No | Page token returned by a previous request (valid for 15 minutes) | | `includeFields` | string | No | Comma-separated extra field properties to include in the response (supported: options) | | `includeAllFields` | boolean | No | Whether to return all field properties in the response | | `sortBy` | string | No | Property to sort by (supported: fieldLabel) | | `sortOrder` | string | No | Sort order (ASC or DESC) | | `match` | string | No | Whether results must match all filters or any filter (all or any) | | `objectType` | string | No | Filter by associated object type (PROJECT, TASK, or USER) | | `fieldType` | string | No | Filter by field type (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | `enabled` | boolean | No | Filter by enabled state | | `private` | boolean | No | Filter by privacy setting | #### Output [#output-31] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `fields` | array | List of fields | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the field | | ↳ `fieldDescription` | string | Description of the field | | ↳ `fieldType` | string | Type of the field (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | ↳ `objectType` | string | Object the field is associated with (PROJECT, TASK, or USER) | | ↳ `fieldOptions` | array | Options available for SINGLE\_CHOICE and MULTIPLE\_CHOICE fields | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | | ↳ `ratingScale` | string | Rating scale for RATING fields (THREE, FIVE, SEVEN, TEN) | | ↳ `createdBy` | object | Team member who created the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Time the field was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the field was last updated, in epoch milliseconds | | ↳ `enabled` | boolean | Whether the field is enabled | | ↳ `private` | boolean | Whether the field is private | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Field [#rocketlane-update-field] Update the label, description, enabled state, or privacy of an existing Rocketlane field #### Input [#input-32] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldId` | number | Yes | ID of the field to update | | `fieldLabel` | string | No | New name of the field | | `fieldDescription` | string | No | New description of the field | | `enabled` | boolean | No | Whether the field is enabled | | `private` | boolean | No | Whether the field is private | | `includeFields` | string | No | Comma-separated extra field properties to include in the response (supported: options) | | `includeAllFields` | boolean | No | Whether to return all field properties in the response | #### Output [#output-32] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `field` | object | The updated field | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the field | | ↳ `fieldDescription` | string | Description of the field | | ↳ `fieldType` | string | Type of the field (TEXT, MULTI\_LINE\_TEXT, YES\_OR\_NO, DATE, SINGLE\_CHOICE, MULTIPLE\_CHOICE, SINGLE\_USER, MULTIPLE\_USER, NUMBER, NOTE, RATING) | | ↳ `objectType` | string | Object the field is associated with (PROJECT, TASK, or USER) | | ↳ `fieldOptions` | array | Options available for SINGLE\_CHOICE and MULTIPLE\_CHOICE fields | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | | ↳ `ratingScale` | string | Rating scale for RATING fields (THREE, FIVE, SEVEN, TEN) | | ↳ `createdBy` | object | Team member who created the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | Team member who last updated the field | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Time the field was created, in epoch milliseconds | | ↳ `updatedAt` | number | Time the field was last updated, in epoch milliseconds | | ↳ `enabled` | boolean | Whether the field is enabled | | ↳ `private` | boolean | Whether the field is private | ### Rocketlane Delete Field [#rocketlane-delete-field] Permanently delete a Rocketlane field by ID #### Input [#input-33] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldId` | number | Yes | ID of the field to delete | #### Output [#output-33] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the field was deleted | | `fieldId` | number | ID of the deleted field | ### Rocketlane Add Field Option [#rocketlane-add-field-option] Add a new option to an existing SINGLE\_CHOICE or MULTIPLE\_CHOICE Rocketlane field #### Input [#input-34] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldId` | number | Yes | ID of the field to add the option to | | `optionLabel` | string | Yes | Display label of the new option | | `optionColor` | string | Yes | Color of the new option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | #### Output [#output-34] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------- | | `option` | object | The created field option | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | ### Rocketlane Update Field Option [#rocketlane-update-field-option] Update the label or color of an existing option on a SINGLE\_CHOICE or MULTIPLE\_CHOICE Rocketlane field #### Input [#input-35] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `fieldId` | number | Yes | ID of the field the option belongs to | | `optionValue` | number | Yes | Unique identifier of the option to update | | `optionLabel` | string | No | New display label of the option | | `optionColor` | string | No | New color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | #### Output [#output-35] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------- | | `option` | object | The updated field option | | ↳ `optionValue` | number | Unique identifier of the option within the field | | ↳ `optionLabel` | string | Display label of the option | | ↳ `optionColor` | string | Color of the option (RED, YELLOW, GREEN, TEAL, CYAN, BLUE, PURPLE, MAGENTA, GRAY, COOL\_GRAY) | ### Rocketlane Create Time Entry [#rocketlane-create-time-entry] Create a time entry in Rocketlane against an adhoc activity, task, project phase, or project #### Input [#input-36] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `date` | string | Yes | Date of the time entry in YYYY-MM-DD format | | `minutes` | number | Yes | Duration of the time entry in minutes (1-1440) | | `activityName` | string | No | Name of the adhoc activity to track time against. Exactly one source is required among activityName, taskId, projectPhaseId, and projectId — providing more than one results in an error | | `taskId` | number | No | ID of the task to track time against. Exactly one source is required among activityName, taskId, projectPhaseId, and projectId — providing more than one results in an error | | `projectPhaseId` | number | No | ID of the project phase to track time against. Exactly one source is required among activityName, taskId, projectPhaseId, and projectId — providing more than one results in an error | | `projectId` | number | No | ID of the project to track time against. Exactly one source is required among activityName, taskId, projectPhaseId, and projectId — providing more than one results in an error | | `billable` | boolean | No | Whether the time entry is billable (defaults to true) | | `userId` | number | No | ID of the user the time entry belongs to | | `userEmail` | string | No | Email of the user the time entry belongs to (alternative to userId) | | `notes` | string | No | Notes for the time entry | | `categoryId` | number | No | ID of the time entry category | | `includeFields` | string | No | Comma-separated extra fields to include in the response (notes, sourceType, deleted, status, submittedBy, submittedAt, approvedBy, approvedAt, rejectedBy, rejectedAt, costRate, billRate) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-36] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timeEntry` | object | The created time entry | | ↳ `timeEntryId` | number | Unique identifier of the time entry | | ↳ `date` | string | Date of the time entry (YYYY-MM-DD) | | ↳ `minutes` | number | Duration of the time entry in minutes | | ↳ `activityName` | string | Name of the adhoc activity, when the entry is tracked against an activity | | ↳ `project` | object | Project associated with the time entry | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `task` | object | Task associated with the time entry | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `projectPhase` | object | Project phase associated with the time entry | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `billable` | boolean | Whether the time entry is billable | | ↳ `user` | object | User the time entry belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `notes` | string | Notes for the time entry | | ↳ `category` | object | Category associated with the time entry | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `sourceType` | string | Source of the time entry (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | ↳ `status` | string | Approval status of the time entry (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | ↳ `createdAt` | number | Creation timestamp in epoch milliseconds | | ↳ `updatedAt` | number | Last-updated timestamp in epoch milliseconds | | ↳ `createdBy` | object | User who created the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedBy` | object | User who submitted the time entry (may be null even for approved/rejected entries) | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedAt` | number | Submission timestamp in epoch milliseconds | | ↳ `approvedBy` | object | User who approved the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `approvedAt` | number | Approval timestamp in epoch milliseconds | | ↳ `rejectedBy` | object | User who rejected the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `rejectedAt` | number | Rejection timestamp in epoch milliseconds | | ↳ `deleted` | boolean | Whether the time entry is deleted | | ↳ `costRate` | object | Hourly cost rate assigned to the user for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `billRate` | object | Hourly rate billed to the customer for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `fields` | array | Custom fields associated with the time entry | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field | | ↳ `fieldValueLabel` | string | String representation of the field value | ### Rocketlane Get Time Entry [#rocketlane-get-time-entry] Get a single Rocketlane time entry by ID #### Input [#input-37] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `timeEntryId` | number | Yes | ID of the time entry to retrieve | | `includeFields` | string | No | Comma-separated extra fields to include in the response (notes, sourceType, deleted, status, submittedBy, submittedAt, approvedBy, approvedAt, rejectedBy, rejectedAt, costRate, billRate) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-37] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timeEntry` | object | The requested time entry | | ↳ `timeEntryId` | number | Unique identifier of the time entry | | ↳ `date` | string | Date of the time entry (YYYY-MM-DD) | | ↳ `minutes` | number | Duration of the time entry in minutes | | ↳ `activityName` | string | Name of the adhoc activity, when the entry is tracked against an activity | | ↳ `project` | object | Project associated with the time entry | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `task` | object | Task associated with the time entry | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `projectPhase` | object | Project phase associated with the time entry | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `billable` | boolean | Whether the time entry is billable | | ↳ `user` | object | User the time entry belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `notes` | string | Notes for the time entry | | ↳ `category` | object | Category associated with the time entry | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `sourceType` | string | Source of the time entry (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | ↳ `status` | string | Approval status of the time entry (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | ↳ `createdAt` | number | Creation timestamp in epoch milliseconds | | ↳ `updatedAt` | number | Last-updated timestamp in epoch milliseconds | | ↳ `createdBy` | object | User who created the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedBy` | object | User who submitted the time entry (may be null even for approved/rejected entries) | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedAt` | number | Submission timestamp in epoch milliseconds | | ↳ `approvedBy` | object | User who approved the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `approvedAt` | number | Approval timestamp in epoch milliseconds | | ↳ `rejectedBy` | object | User who rejected the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `rejectedAt` | number | Rejection timestamp in epoch milliseconds | | ↳ `deleted` | boolean | Whether the time entry is deleted | | ↳ `costRate` | object | Hourly cost rate assigned to the user for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `billRate` | object | Hourly rate billed to the customer for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `fields` | array | Custom fields associated with the time entry | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field | | ↳ `fieldValueLabel` | string | String representation of the field value | ### Rocketlane List Time Entries [#rocketlane-list-time-entries] List Rocketlane time entries with optional filters, sorting, and cursor-based pagination #### Input [#input-38] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `dateEq` | string | No | Only entries on this exact date (YYYY-MM-DD) | | `dateGt` | string | No | Only entries after this date (YYYY-MM-DD) | | `dateGe` | string | No | Only entries on or after this date (YYYY-MM-DD) | | `dateLt` | string | No | Only entries before this date (YYYY-MM-DD) | | `dateLe` | string | No | Only entries on or before this date (YYYY-MM-DD) | | `projectIdEq` | number | No | Only entries for this project ID | | `taskIdEq` | number | No | Only entries for this task ID | | `projectPhaseIdEq` | number | No | Only entries for this project phase ID | | `categoryIdEq` | number | No | Only entries with this category ID | | `userIdEq` | number | No | Only entries belonging to this user ID | | `emailIdEq` | string | No | Only entries belonging to the user with this exact email | | `emailIdCn` | string | No | Only entries whose user email contains this text | | `sourceTypeEq` | string | No | Only entries with this source type (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | `activityNameEq` | string | No | Only entries with this exact activity name | | `activityNameCn` | string | No | Only entries whose activity name contains this text | | `approvalStatusEq` | string | No | Only entries with this approval status (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | `billableEq` | boolean | No | Only billable (true) or non-billable (false) entries | | `includeDeletedEq` | boolean | No | Whether deleted time entries are included in the response | | `submittedByEq` | number | No | Only entries submitted by this user ID | | `approvedByEq` | number | No | Only entries approved by this user ID | | `rejectedByEq` | number | No | Only entries rejected by this user ID | | `createdAtGt` | number | No | Only entries created after this epoch-millisecond timestamp | | `createdAtLt` | number | No | Only entries created before this epoch-millisecond timestamp | | `updatedAtGt` | number | No | Only entries updated after this epoch-millisecond timestamp | | `updatedAtLt` | number | No | Only entries updated before this epoch-millisecond timestamp | | `match` | string | No | How to combine filters: all (AND, default) or any (OR) | | `sortBy` | string | No | Field to sort by (minutes, date, id, billable) | | `sortOrder` | string | No | Sort order: ASC or DESC (default DESC) | | `includeFields` | string | No | Comma-separated extra fields to include in the response (notes, sourceType, deleted, status, submittedBy, submittedAt, approvedBy, approvedAt, rejectedBy, rejectedAt, costRate, billRate) | | `pageSize` | number | No | Maximum number of entries per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response for fetching the next page | #### Output [#output-38] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timeEntries` | array | List of time entries matching the filters | | ↳ `timeEntryId` | number | Unique identifier of the time entry | | ↳ `date` | string | Date of the time entry (YYYY-MM-DD) | | ↳ `minutes` | number | Duration of the time entry in minutes | | ↳ `activityName` | string | Name of the adhoc activity, when the entry is tracked against an activity | | ↳ `project` | object | Project associated with the time entry | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `task` | object | Task associated with the time entry | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `projectPhase` | object | Project phase associated with the time entry | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `billable` | boolean | Whether the time entry is billable | | ↳ `user` | object | User the time entry belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `notes` | string | Notes for the time entry | | ↳ `category` | object | Category associated with the time entry | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `sourceType` | string | Source of the time entry (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | ↳ `status` | string | Approval status of the time entry (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | ↳ `createdAt` | number | Creation timestamp in epoch milliseconds | | ↳ `updatedAt` | number | Last-updated timestamp in epoch milliseconds | | ↳ `createdBy` | object | User who created the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedBy` | object | User who submitted the time entry (may be null even for approved/rejected entries) | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedAt` | number | Submission timestamp in epoch milliseconds | | ↳ `approvedBy` | object | User who approved the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `approvedAt` | number | Approval timestamp in epoch milliseconds | | ↳ `rejectedBy` | object | User who rejected the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `rejectedAt` | number | Rejection timestamp in epoch milliseconds | | ↳ `deleted` | boolean | Whether the time entry is deleted | | ↳ `costRate` | object | Hourly cost rate assigned to the user for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `billRate` | object | Hourly rate billed to the customer for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `fields` | array | Custom fields associated with the time entry | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Search Time Entries [#rocketlane-search-time-entries] Search Rocketlane time entries with filters, sorting, and pagination (deprecated by Rocketlane in favor of listing time entries with filters) #### Input [#input-39] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `dateEq` | string | No | Only entries on this exact date (YYYY-MM-DD) | | `dateGt` | string | No | Only entries after this date (YYYY-MM-DD) | | `dateGe` | string | No | Only entries on or after this date (YYYY-MM-DD) | | `dateLt` | string | No | Only entries before this date (YYYY-MM-DD) | | `dateLe` | string | No | Only entries on or before this date (YYYY-MM-DD) | | `projectEq` | number | No | Only entries for this project ID | | `taskEq` | number | No | Only entries for this task ID | | `projectPhaseIdEq` | number | No | Only entries for this project phase ID | | `categoryIdEq` | number | No | Only entries with this category ID | | `userIdEq` | number | No | Only entries belonging to this user ID | | `sourceTypeEq` | string | No | Only entries with this source type (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | `activityNameEq` | string | No | Only entries with this exact activity name | | `activityNameCn` | string | No | Only entries whose activity name contains this text | | `approvalStatusEq` | string | No | Only entries with this approval status (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | `match` | string | No | How to combine filters: all (AND, default) or any (OR) | | `sortBy` | string | No | Field to sort by (minutes, date, id, billable) | | `sortOrder` | string | No | Sort order: ASC or DESC (default DESC) | | `includeFields` | string | No | Comma-separated extra fields to include in the response (notes, sourceType, deleted, status, submittedBy, submittedAt, approvedBy, approvedAt, rejectedBy, rejectedAt, costRate, billRate) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | | `pageSize` | number | No | Maximum number of entries per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response for fetching the next page | #### Output [#output-39] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timeEntries` | array | List of time entries matching the search filters | | ↳ `timeEntryId` | number | Unique identifier of the time entry | | ↳ `date` | string | Date of the time entry (YYYY-MM-DD) | | ↳ `minutes` | number | Duration of the time entry in minutes | | ↳ `activityName` | string | Name of the adhoc activity, when the entry is tracked against an activity | | ↳ `project` | object | Project associated with the time entry | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `task` | object | Task associated with the time entry | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `projectPhase` | object | Project phase associated with the time entry | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `billable` | boolean | Whether the time entry is billable | | ↳ `user` | object | User the time entry belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `notes` | string | Notes for the time entry | | ↳ `category` | object | Category associated with the time entry | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `sourceType` | string | Source of the time entry (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | ↳ `status` | string | Approval status of the time entry (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | ↳ `createdAt` | number | Creation timestamp in epoch milliseconds | | ↳ `updatedAt` | number | Last-updated timestamp in epoch milliseconds | | ↳ `createdBy` | object | User who created the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedBy` | object | User who submitted the time entry (may be null even for approved/rejected entries) | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedAt` | number | Submission timestamp in epoch milliseconds | | ↳ `approvedBy` | object | User who approved the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `approvedAt` | number | Approval timestamp in epoch milliseconds | | ↳ `rejectedBy` | object | User who rejected the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `rejectedAt` | number | Rejection timestamp in epoch milliseconds | | ↳ `deleted` | boolean | Whether the time entry is deleted | | ↳ `costRate` | object | Hourly cost rate assigned to the user for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `billRate` | object | Hourly rate billed to the customer for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `fields` | array | Custom fields associated with the time entry | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field | | ↳ `fieldValueLabel` | string | String representation of the field value | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Time Entry [#rocketlane-update-time-entry] Update a Rocketlane time entry by ID. The activityName, notes, billable, and minutes properties can be updated #### Input [#input-40] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `timeEntryId` | number | Yes | ID of the time entry to update | | `date` | string | Yes | Date of the time entry in YYYY-MM-DD format (mandatory so the total time for the date does not exceed 24 hours) | | `minutes` | number | Yes | Duration of the time entry in minutes (1-1440) | | `activityName` | string | No | New name for the adhoc activity | | `notes` | string | No | New notes for the time entry | | `billable` | boolean | No | Whether the time entry is billable | | `categoryId` | number | No | ID of the time entry category | | `includeFields` | string | No | Comma-separated extra fields to include in the response (notes, sourceType, deleted, status, submittedBy, submittedAt, approvedBy, approvedAt, rejectedBy, rejectedAt, costRate, billRate) | | `includeAllFields` | boolean | No | Whether all fields should be returned in the response | #### Output [#output-40] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `timeEntry` | object | The updated time entry | | ↳ `timeEntryId` | number | Unique identifier of the time entry | | ↳ `date` | string | Date of the time entry (YYYY-MM-DD) | | ↳ `minutes` | number | Duration of the time entry in minutes | | ↳ `activityName` | string | Name of the adhoc activity, when the entry is tracked against an activity | | ↳ `project` | object | Project associated with the time entry | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `task` | object | Task associated with the time entry | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `projectPhase` | object | Project phase associated with the time entry | | ↳ `phaseId` | number | Unique identifier of the phase | | ↳ `phaseName` | string | Name of the phase | | ↳ `billable` | boolean | Whether the time entry is billable | | ↳ `user` | object | User the time entry belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `notes` | string | Notes for the time entry | | ↳ `category` | object | Category associated with the time entry | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | ↳ `sourceType` | string | Source of the time entry (GOOGLE\_CALENDAR, OUTLOOK\_CALENDAR, TASK, PROJECT, PHASE, ADHOC, MILESTONE) | | ↳ `status` | string | Approval status of the time entry (NOT\_SUBMITTED, SUBMITTED, APPROVED, REJECTED) | | ↳ `createdAt` | number | Creation timestamp in epoch milliseconds | | ↳ `updatedAt` | number | Last-updated timestamp in epoch milliseconds | | ↳ `createdBy` | object | User who created the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | User who last updated the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedBy` | object | User who submitted the time entry (may be null even for approved/rejected entries) | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `submittedAt` | number | Submission timestamp in epoch milliseconds | | ↳ `approvedBy` | object | User who approved the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `approvedAt` | number | Approval timestamp in epoch milliseconds | | ↳ `rejectedBy` | object | User who rejected the time entry | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `rejectedAt` | number | Rejection timestamp in epoch milliseconds | | ↳ `deleted` | boolean | Whether the time entry is deleted | | ↳ `costRate` | object | Hourly cost rate assigned to the user for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `billRate` | object | Hourly rate billed to the customer for this entry | | ↳ `rate` | number | Hourly monetary rate | | ↳ `currency` | string | Three-letter ISO currency code | | ↳ `fields` | array | Custom fields associated with the time entry | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field | | ↳ `fieldValueLabel` | string | String representation of the field value | ### Rocketlane Delete Time Entry [#rocketlane-delete-time-entry] Permanently delete a Rocketlane time entry by ID #### Input [#input-41] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `timeEntryId` | number | Yes | ID of the time entry to delete | #### Output [#output-41] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------- | | `deleted` | boolean | Whether the time entry was deleted | | `timeEntryId` | number | ID of the deleted time entry | ### Rocketlane List Time Entry Categories [#rocketlane-list-time-entry-categories] List the time entry categories configured in Rocketlane #### Input [#input-42] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Maximum number of categories per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response for fetching the next page | #### Output [#output-42] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------- | | `categories` | array | List of time entry categories | | ↳ `categoryId` | number | Unique identifier of the category | | ↳ `categoryName` | string | Name of the category | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Create Time-Off [#rocketlane-create-time-off] Create a time-off for a team member in Rocketlane. Holidays and weekends within the date range are automatically excluded from the duration. #### Input [#input-43] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `userId` | number | No | User ID of the team member taking the time-off (provide this or the user email) | | `userEmail` | string | No | Email of the team member taking the time-off (provide this or the user ID) | | `startDate` | string | Yes | Time-off start date in YYYY-MM-DD format | | `endDate` | string | Yes | Time-off end date in YYYY-MM-DD format (on or after the start date) | | `type` | string | Yes | Type of the time-off: FULL\_DAY, HALF\_DAY, or CUSTOM | | `durationInMinutes` | number | No | Duration in minutes per day; required when type is CUSTOM | | `note` | string | No | Note or comment about the time-off | | `notifyProjectOwners` | boolean | No | Notify project owners of projects the user is part of | | `notifyUserIds` | array | No | User IDs of additional users to notify about the time-off | | `notifyUserEmails` | array | No | Emails of additional users to notify about the time-off | | `includeFields` | array | No | Optional fields to include in the response: note, notifyUsers | | `includeAllFields` | boolean | No | Return all fields in the response | #### Output [#output-43] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------- | | `timeOff` | object | The created time-off | | ↳ `timeOffId` | number | Unique identifier of the time-off | | ↳ `user` | object | The team member the time-off belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `note` | string | Note or comment about the time-off | | ↳ `startDate` | string | Time-off start date (YYYY-MM-DD) | | ↳ `endDate` | string | Time-off end date (YYYY-MM-DD) | | ↳ `durationInMinutes` | number | Duration in minutes per day for the time-off interval | | ↳ `type` | string | Type of the time-off (FULL\_DAY, HALF\_DAY, or CUSTOM) | | ↳ `notifyUsers` | object | Users notified about the time-off | | ↳ `projectOwners` | boolean | Whether project owners of projects the user is part of are notified | | ↳ `others` | array | Other users notified about the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Timestamp when the time-off was created (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | ### Rocketlane Get Time-Off [#rocketlane-get-time-off] Retrieve a Rocketlane time-off by its ID #### Input [#input-44] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `timeOffId` | number | Yes | Unique identifier of the time-off | | `includeFields` | array | No | Optional fields to include in the response: note, notifyUsers | | `includeAllFields` | boolean | No | Return all fields in the response | #### Output [#output-44] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------- | | `timeOff` | object | The requested time-off | | ↳ `timeOffId` | number | Unique identifier of the time-off | | ↳ `user` | object | The team member the time-off belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `note` | string | Note or comment about the time-off | | ↳ `startDate` | string | Time-off start date (YYYY-MM-DD) | | ↳ `endDate` | string | Time-off end date (YYYY-MM-DD) | | ↳ `durationInMinutes` | number | Duration in minutes per day for the time-off interval | | ↳ `type` | string | Type of the time-off (FULL\_DAY, HALF\_DAY, or CUSTOM) | | ↳ `notifyUsers` | object | Users notified about the time-off | | ↳ `projectOwners` | boolean | Whether project owners of projects the user is part of are notified | | ↳ `others` | array | Other users notified about the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Timestamp when the time-off was created (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | ### Rocketlane List Time-Offs [#rocketlane-list-time-offs] List time-offs in Rocketlane with optional date, type, and user filters, sorting, and pagination #### Input [#input-45] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Maximum number of time-offs per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | | `includeFields` | array | No | Optional fields to include in the response: note, notifyUsers | | `includeAllFields` | boolean | No | Return all fields in the response | | `sortBy` | string | No | Field to sort by: startDate, endDate, or createdAt | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | Combine filters with AND (all) or OR (any); defaults to all | | `startDateGt` | string | No | Return time-offs with start dates greater than this date (YYYY-MM-DD) | | `startDateEq` | string | No | Return time-offs with start dates equal to this date (YYYY-MM-DD) | | `startDateLt` | string | No | Return time-offs with start dates lesser than this date (YYYY-MM-DD) | | `startDateGe` | string | No | Return time-offs with start dates greater than or equal to this date (YYYY-MM-DD) | | `startDateLe` | string | No | Return time-offs with start dates lesser than or equal to this date (YYYY-MM-DD) | | `endDateGt` | string | No | Return time-offs with end dates greater than this date (YYYY-MM-DD) | | `endDateEq` | string | No | Return time-offs with end dates equal to this date (YYYY-MM-DD) | | `endDateLt` | string | No | Return time-offs with end dates lesser than this date (YYYY-MM-DD) | | `endDateGe` | string | No | Return time-offs with end dates greater than or equal to this date (YYYY-MM-DD) | | `endDateLe` | string | No | Return time-offs with end dates lesser than or equal to this date (YYYY-MM-DD) | | `typeEq` | string | No | Return time-offs matching this type: FULL\_DAY, HALF\_DAY, or CUSTOM | | `typeOneOf` | string | No | Comma-separated time-off types to match any of (FULL\_DAY, HALF\_DAY, CUSTOM) | | `typeNoneOf` | string | No | Comma-separated time-off types to match none of (FULL\_DAY, HALF\_DAY, CUSTOM) | | `userIdEq` | string | No | Return time-offs that exactly match this user ID | | `userIdOneOf` | string | No | Comma-separated user IDs to match any of | | `userIdNoneOf` | string | No | Comma-separated user IDs to match none of | | `emailIdEq` | string | No | Return time-offs that exactly match this user email | | `emailIdOneOf` | string | No | Comma-separated user emails to match any of | | `emailIdNoneOf` | string | No | Comma-separated user emails to match none of | #### Output [#output-45] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------- | | `timeOffs` | array | List of time-offs | | ↳ `timeOffId` | number | Unique identifier of the time-off | | ↳ `user` | object | The team member the time-off belongs to | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `note` | string | Note or comment about the time-off | | ↳ `startDate` | string | Time-off start date (YYYY-MM-DD) | | ↳ `endDate` | string | Time-off end date (YYYY-MM-DD) | | ↳ `durationInMinutes` | number | Duration in minutes per day for the time-off interval | | ↳ `type` | string | Type of the time-off (FULL\_DAY, HALF\_DAY, or CUSTOM) | | ↳ `notifyUsers` | object | Users notified about the time-off | | ↳ `projectOwners` | boolean | Whether project owners of projects the user is part of are notified | | ↳ `others` | array | Other users notified about the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `createdAt` | number | Timestamp when the time-off was created (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the time-off | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Delete Time-Off [#rocketlane-delete-time-off] Permanently delete a Rocketlane time-off by its ID #### Input [#input-46] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `timeOffId` | number | Yes | Unique identifier of the time-off to delete | #### Output [#output-46] | Parameter | Type | Description | | ----------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the time-off was deleted | | `timeOffId` | number | ID of the deleted time-off | ### Rocketlane Get User [#rocketlane-get-user] Retrieve a Rocketlane user by their ID #### Input [#input-47] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `userId` | number | Yes | ID of the user to retrieve | | `includeFields` | string | No | Comma-separated extra fields to include: role, company, permission, holidayCalendar, capacityInMinutes, profilePictureUrl | | `includeAllFields` | boolean | No | Whether to include all fields in the response | #### Output [#output-47] | Parameter | Type | Description | | --------------------- | ------ | ------------------------------------------------------------------------ | | `user` | object | The requested user | | ↳ `userId` | number | Unique identifier of the user | | ↳ `email` | string | Email address of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `type` | string | Type of the user (TEAM\_MEMBER, PARTNER, CUSTOMER, or EXTERNAL\_PARTNER) | | ↳ `status` | string | Status of the user (INACTIVE, INVITED, ACTIVE, or PASSIVE) | | ↳ `role` | object | Role of the user | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `company` | object | Company of the user | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `permission` | object | Permission of the user | | ↳ `permissionId` | number | Unique identifier of the permission | | ↳ `permissionName` | string | Name of the permission | | ↳ `fields` | array | Custom user field values | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the custom user field | | ↳ `fieldValue` | string | Value of the custom user field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `capacityInMinutes` | number | Capacity of the user in minutes | | ↳ `holidayCalendar` | object | Holiday calendar of the user | | ↳ `calenderId` | number | Unique identifier of the holiday calendar | | ↳ `calenderName` | string | Name of the holiday calendar | | ↳ `profilePictureUrl` | string | URL of the user's profile picture | | ↳ `createdAt` | number | Timestamp when the user was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the user | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the user was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the user | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | ### Rocketlane List Users [#rocketlane-list-users] List users in your Rocketlane account, with optional filters, sorting, and pagination #### Input [#input-48] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Maximum number of users per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous request (valid for 15 minutes) | | `includeFields` | string | No | Comma-separated extra fields to include: role, company, permission, holidayCalendar, capacityInMinutes, profilePictureUrl | | `includeAllFields` | boolean | No | Whether to include all fields in the response | | `sortBy` | string | No | Field to sort by: email, firstName, lastName, type, status, or capacityInMinutes | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | How to combine filters: all (AND) or any (OR); defaults to all | | `firstNameEq` | string | No | Only include users whose first name exactly matches this value | | `firstNameCn` | string | No | Only include users whose first name contains this value | | `firstNameNc` | string | No | Exclude users whose first name contains this value | | `lastNameEq` | string | No | Only include users whose last name exactly matches this value | | `lastNameCn` | string | No | Only include users whose last name contains this value | | `lastNameNc` | string | No | Exclude users whose last name contains this value | | `emailEq` | string | No | Only include users whose email exactly matches this value | | `emailCn` | string | No | Only include users whose email contains this value | | `emailNc` | string | No | Exclude users whose email contains this value | | `statusEq` | string | No | Only include users with this status: INACTIVE, INVITED, ACTIVE, or PASSIVE | | `statusOneOf` | string | No | Comma-separated statuses; only include users matching one of them (INACTIVE, INVITED, ACTIVE, PASSIVE) | | `statusNoneOf` | string | No | Comma-separated statuses; exclude users matching any of them (INACTIVE, INVITED, ACTIVE, PASSIVE) | | `typeEq` | string | No | Only include users of this type: TEAM\_MEMBER, PARTNER, CUSTOMER, or EXTERNAL\_PARTNER | | `typeOneOf` | string | No | Comma-separated types; only include users matching one of them (TEAM\_MEMBER, PARTNER, CUSTOMER, EXTERNAL\_PARTNER) | | `roleIdEq` | string | No | Only include users with this role ID | | `roleIdOneOf` | string | No | Comma-separated role IDs; only include users matching one of them | | `roleIdNoneOf` | string | No | Comma-separated role IDs; exclude users matching any of them | | `permissionIdEq` | string | No | Only include users with this permission ID | | `permissionIdOneOf` | string | No | Comma-separated permission IDs; only include users matching one of them | | `permissionIdNoneOf` | string | No | Comma-separated permission IDs; exclude users matching any of them | | `capacityInMinutesEq` | number | No | Only include users whose capacity in minutes equals this value | | `capacityInMinutesGt` | number | No | Only include users whose capacity in minutes is greater than this value | | `capacityInMinutesGe` | number | No | Only include users whose capacity in minutes is greater than or equal to this value | | `capacityInMinutesLt` | number | No | Only include users whose capacity in minutes is less than this value | | `capacityInMinutesLe` | number | No | Only include users whose capacity in minutes is less than or equal to this value | | `createdAtGt` | number | No | Only include users created after this time (epoch millis) | | `createdAtEq` | number | No | Only include users created at exactly this time (epoch millis) | | `createdAtLt` | number | No | Only include users created before this time (epoch millis) | | `createdAtGe` | number | No | Only include users created at or after this time (epoch millis) | | `createdAtLe` | number | No | Only include users created at or before this time (epoch millis) | | `updatedAtGt` | number | No | Only include users updated after this time (epoch millis) | | `updatedAtEq` | number | No | Only include users updated at exactly this time (epoch millis) | | `updatedAtLt` | number | No | Only include users updated before this time (epoch millis) | | `updatedAtGe` | number | No | Only include users updated at or after this time (epoch millis) | | `updatedAtLe` | number | No | Only include users updated at or before this time (epoch millis) | #### Output [#output-48] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------------ | | `users` | array | List of users | | ↳ `userId` | number | Unique identifier of the user | | ↳ `email` | string | Email address of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `type` | string | Type of the user (TEAM\_MEMBER, PARTNER, CUSTOMER, or EXTERNAL\_PARTNER) | | ↳ `status` | string | Status of the user (INACTIVE, INVITED, ACTIVE, or PASSIVE) | | ↳ `role` | object | Role of the user | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `company` | object | Company of the user | | ↳ `companyId` | number | Unique identifier of the company | | ↳ `companyName` | string | Name of the company | | ↳ `permission` | object | Permission of the user | | ↳ `permissionId` | number | Unique identifier of the permission | | ↳ `permissionName` | string | Name of the permission | | ↳ `fields` | array | Custom user field values | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Name of the custom user field | | ↳ `fieldValue` | string | Value of the custom user field | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `capacityInMinutes` | number | Capacity of the user in minutes | | ↳ `holidayCalendar` | object | Holiday calendar of the user | | ↳ `calenderId` | number | Unique identifier of the holiday calendar | | ↳ `calenderName` | string | Name of the holiday calendar | | ↳ `profilePictureUrl` | string | URL of the user's profile picture | | ↳ `createdAt` | number | Timestamp when the user was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the user | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the user was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the user | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | `pagination` | object | Pagination details | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Create Space [#rocketlane-create-space] Create a new space in a Rocketlane project #### Input [#input-49] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | ID of the project the space belongs to | | `spaceName` | string | Yes | Name of the space | | `private` | boolean | No | Whether the space is private or shared (defaults to false) | #### Output [#output-49] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------- | | `space` | object | The created space | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `project` | object | Project the space belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `createdAt` | number | Timestamp when the space was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space is private or shared | ### Rocketlane Get Space [#rocketlane-get-space] Retrieve a Rocketlane space by its ID #### Input [#input-50] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceId` | number | Yes | ID of the space to retrieve | #### Output [#output-50] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------- | | `space` | object | The requested space | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `project` | object | Project the space belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `createdAt` | number | Timestamp when the space was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space is private or shared | ### Rocketlane List Spaces [#rocketlane-list-spaces] List spaces in a Rocketlane project, with optional filters, sorting, and pagination #### Input [#input-51] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | ID of the project whose spaces to list | | `pageSize` | number | No | Maximum number of spaces per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous request (valid for 15 minutes) | | `sortBy` | string | No | Field to sort by (spaceName) | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | How to combine filters: all (AND) or any (OR); defaults to all | | `spaceNameEq` | string | No | Only include spaces whose name exactly matches this value | | `spaceNameCn` | string | No | Only include spaces whose name contains this value | | `spaceNameNc` | string | No | Exclude spaces whose name contains this value | | `createdAtGt` | number | No | Only include spaces created after this time (epoch millis) | | `createdAtEq` | number | No | Only include spaces created at exactly this time (epoch millis) | | `createdAtLt` | number | No | Only include spaces created before this time (epoch millis) | | `createdAtGe` | number | No | Only include spaces created at or after this time (epoch millis) | | `createdAtLe` | number | No | Only include spaces created at or before this time (epoch millis) | | `updatedAtGt` | number | No | Only include spaces updated after this time (epoch millis) | | `updatedAtEq` | number | No | Only include spaces updated at exactly this time (epoch millis) | | `updatedAtLt` | number | No | Only include spaces updated before this time (epoch millis) | | `updatedAtGe` | number | No | Only include spaces updated at or after this time (epoch millis) | | `updatedAtLe` | number | No | Only include spaces updated at or before this time (epoch millis) | #### Output [#output-51] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------------- | | `spaces` | array | List of spaces | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `project` | object | Project the space belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `createdAt` | number | Timestamp when the space was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space is private or shared | | `pagination` | object | Pagination details | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Space [#rocketlane-update-space] Update a Rocketlane space by its ID #### Input [#input-52] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceId` | number | Yes | ID of the space to update | | `spaceName` | string | No | New name of the space | #### Output [#output-52] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------- | | `space` | object | The updated space | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `project` | object | Project the space belongs to | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `createdAt` | number | Timestamp when the space was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space is private or shared | ### Rocketlane Delete Space [#rocketlane-delete-space] Permanently delete a Rocketlane space by its ID #### Input [#input-53] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceId` | number | Yes | ID of the space to delete | #### Output [#output-53] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the space was deleted | | `spaceId` | number | ID of the deleted space | ### Rocketlane Create Space Document [#rocketlane-create-space-document] Create a new space document in a Rocketlane space #### Input [#input-54] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceId` | number | Yes | ID of the space the document belongs to | | `spaceDocumentType` | string | Yes | Type of the space document: ROCKETLANE\_DOCUMENT or EMBEDDED\_DOCUMENT | | `spaceDocumentName` | string | No | Name of the space document (defaults to Untitled) | | `url` | string | No | URL to embed in the space document (for embedded documents) | | `templateId` | number | No | ID of the document template to create the document from | #### Output [#output-54] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------- | | `spaceDocument` | object | The created space document | | ↳ `spaceDocumentId` | number | Unique identifier of the space document | | ↳ `spaceDocumentName` | string | Name of the space document | | ↳ `space` | object | Space the document belongs to | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `spaceDocumentType` | string | Type of the space document (ROCKETLANE\_DOCUMENT or EMBEDDED\_DOCUMENT) | | ↳ `url` | string | URL embedded in the space document | | ↳ `source` | object | Document template the space document was created from | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `createdAt` | number | Timestamp when the space document was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space document was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space document is private or shared | ### Rocketlane Get Space Document [#rocketlane-get-space-document] Retrieve a Rocketlane space document by its ID #### Input [#input-55] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `spaceDocumentId` | number | Yes | ID of the space document to retrieve | #### Output [#output-55] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------- | | `spaceDocument` | object | The requested space document | | ↳ `spaceDocumentId` | number | Unique identifier of the space document | | ↳ `spaceDocumentName` | string | Name of the space document | | ↳ `space` | object | Space the document belongs to | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `spaceDocumentType` | string | Type of the space document (ROCKETLANE\_DOCUMENT or EMBEDDED\_DOCUMENT) | | ↳ `url` | string | URL embedded in the space document | | ↳ `source` | object | Document template the space document was created from | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `createdAt` | number | Timestamp when the space document was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space document was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space document is private or shared | ### Rocketlane List Space Documents [#rocketlane-list-space-documents] List space documents in a Rocketlane project, with optional filters, sorting, and pagination #### Input [#input-56] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `projectId` | number | Yes | ID of the project whose space documents to list | | `pageSize` | number | No | Maximum number of space documents per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous request (valid for 15 minutes) | | `sortBy` | string | No | Field to sort by (spaceTabName) | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | How to combine filters: all (AND) or any (OR); defaults to all | | `spaceDocumentNameEq` | string | No | Only include space documents whose name exactly matches this value | | `spaceDocumentNameCn` | string | No | Only include space documents whose name contains this value | | `spaceDocumentNameNc` | string | No | Exclude space documents whose name contains this value | | `spaceIdEq` | number | No | Only include space documents in the space with this ID | | `createdAtGt` | number | No | Only include space documents created after this time (epoch millis) | | `createdAtEq` | number | No | Only include space documents created at exactly this time (epoch millis) | | `createdAtLt` | number | No | Only include space documents created before this time (epoch millis) | | `createdAtGe` | number | No | Only include space documents created at or after this time (epoch millis) | | `createdAtLe` | number | No | Only include space documents created at or before this time (epoch millis) | | `updatedAtGt` | number | No | Only include space documents updated after this time (epoch millis) | | `updatedAtEq` | number | No | Only include space documents updated at exactly this time (epoch millis) | | `updatedAtLt` | number | No | Only include space documents updated before this time (epoch millis) | | `updatedAtGe` | number | No | Only include space documents updated at or after this time (epoch millis) | | `updatedAtLe` | number | No | Only include space documents updated at or before this time (epoch millis) | #### Output [#output-56] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------- | | `spaceDocuments` | array | List of space documents | | ↳ `spaceDocumentId` | number | Unique identifier of the space document | | ↳ `spaceDocumentName` | string | Name of the space document | | ↳ `space` | object | Space the document belongs to | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `spaceDocumentType` | string | Type of the space document (ROCKETLANE\_DOCUMENT or EMBEDDED\_DOCUMENT) | | ↳ `url` | string | URL embedded in the space document | | ↳ `source` | object | Document template the space document was created from | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `createdAt` | number | Timestamp when the space document was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space document was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space document is private or shared | | `pagination` | object | Pagination details | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Update Space Document [#rocketlane-update-space-document] Update a Rocketlane space document by its ID #### Input [#input-57] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceDocumentId` | number | Yes | ID of the space document to update | | `spaceDocumentName` | string | No | New name of the space document | | `url` | string | No | New URL to embed in the space document (for embedded documents) | #### Output [#output-57] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------- | | `spaceDocument` | object | The updated space document | | ↳ `spaceDocumentId` | number | Unique identifier of the space document | | ↳ `spaceDocumentName` | string | Name of the space document | | ↳ `space` | object | Space the document belongs to | | ↳ `spaceId` | number | Unique identifier of the space | | ↳ `spaceName` | string | Name of the space | | ↳ `spaceDocumentType` | string | Type of the space document (ROCKETLANE\_DOCUMENT or EMBEDDED\_DOCUMENT) | | ↳ `url` | string | URL embedded in the space document | | ↳ `source` | object | Document template the space document was created from | | ↳ `templateId` | number | Unique identifier of the template | | ↳ `templateName` | string | Name of the template | | ↳ `createdAt` | number | Timestamp when the space document was created (epoch millis) | | ↳ `createdBy` | object | Team member who created the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedAt` | number | Timestamp when the space document was last updated (epoch millis) | | ↳ `updatedBy` | object | Team member who last updated the space document | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `private` | boolean | Whether the space document is private or shared | ### Rocketlane Delete Space Document [#rocketlane-delete-space-document] Permanently delete a Rocketlane space document by its ID #### Input [#input-58] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `spaceDocumentId` | number | Yes | ID of the space document to delete | #### Output [#output-58] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------- | | `deleted` | boolean | Whether the space document was deleted | | `spaceDocumentId` | number | ID of the deleted space document | ### Rocketlane List Resource Allocations [#rocketlane-list-resource-allocations] List resource allocations in Rocketlane within a date range, with optional member, project, and placeholder filters, sorting, and pagination #### Input [#input-59] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `startDate` | string | Yes | Return allocations that start on or after this date (YYYY-MM-DD) | | `endDate` | string | Yes | Return allocations that end on or before this date (YYYY-MM-DD) | | `pageSize` | number | No | Maximum number of allocations per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | | `includeFields` | array | No | Optional fields to include in the response: member, task, placeholder, duration | | `includeAllFields` | boolean | No | Return all fields in the response | | `sortBy` | string | No | Field to sort by: startDate, endDate, allocationType, or allocationFor | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | Combine filters with AND (all) or OR (any); defaults to all | | `memberIdEq` | string | No | Return allocations that exactly match this member ID | | `memberIdOneOf` | string | No | Comma-separated member IDs to match any of | | `memberIdNoneOf` | string | No | Comma-separated member IDs to exclude | | `projectIdEq` | string | No | Return allocations that exactly match this project ID | | `projectIdOneOf` | string | No | Comma-separated project IDs to match any of | | `projectIdNoneOf` | string | No | Comma-separated project IDs to exclude | | `placeholderIdEq` | string | No | Return allocations that exactly match this placeholder ID | | `placeholderIdOneOf` | string | No | Comma-separated placeholder IDs to match any of | | `placeholderIdNoneOf` | string | No | Comma-separated placeholder IDs to exclude | #### Output [#output-59] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------- | | `allocations` | array | List of resource allocations | | ↳ `startDate` | string | Allocation start date (YYYY-MM-DD) | | ↳ `endDate` | string | Allocation end date (YYYY-MM-DD) | | ↳ `secondsPerDay` | number | Allocated seconds per day | | ↳ `minutesPerDay` | number | Allocated minutes per day | | ↳ `hoursPerDay` | number | Allocated hours per day | | ↳ `duration` | object | Total allocation duration between the start and end dates | | ↳ `daysConsider` | number | Number of week days considered for the duration computation | | ↳ `seconds` | number | Total allocation seconds | | ↳ `minutes` | number | Total allocation minutes | | ↳ `hours` | number | Total allocation hours | | ↳ `allocationType` | string | Type of allocation (SOFT or HARD) | | ↳ `allocationFor` | string | Who the allocation is for (TEAM\_MEMBER or PLACEHOLDER) | | ↳ `project` | object | The project associated with the allocation | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `tasks` | array | Tasks associated with the allocation | | ↳ `taskId` | number | Unique identifier of the task | | ↳ `taskName` | string | Name of the task | | ↳ `member` | object | The team member allocated when allocationFor is TEAM\_MEMBER | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `role` | object | Role of the member | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `placeholder` | object | The placeholder allocated when allocationFor is PLACEHOLDER | | ↳ `placeholderId` | number | Unique identifier of the placeholder | | ↳ `placeholderName` | string | Name of the placeholder | | ↳ `role` | object | Role of the placeholder | | ↳ `roleId` | number | Unique identifier of the role | | ↳ `roleName` | string | Name of the role | | ↳ `createdAt` | number | Timestamp when the allocation was created (epoch milliseconds) | | ↳ `updatedAt` | number | Timestamp when the allocation was last updated (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the allocation | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | The team member who last updated the allocation | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Get Invoice [#rocketlane-get-invoice] Retrieve a Rocketlane invoice by its ID #### Input [#input-60] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `invoiceId` | number | Yes | Unique identifier of the invoice | | `includeFields` | array | No | Optional fields to include in the response: notes, attachments | | `includeAllFields` | boolean | No | Return all fields in the response | #### Output [#output-60] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `invoice` | object | The requested invoice | | ↳ `invoiceId` | number | Unique identifier of the invoice | | ↳ `invoiceNumber` | string | Invoice number assigned to this invoice | | ↳ `dateOfIssue` | string | Date when the invoice was issued (YYYY-MM-DD) | | ↳ `dueDate` | string | Due date for the invoice payment (YYYY-MM-DD) | | ↳ `currency` | string | Currency of the invoice amount (e.g. USD) | | ↳ `status` | string | Current status of the invoice | | ↳ `amount` | number | Total amount of the invoice including tax | | ↳ `tax` | number | Tax amount applied to the invoice | | ↳ `subTotal` | number | Total amount of the invoice excluding tax | | ↳ `amountOutstanding` | number | Balance amount remaining to be paid | | ↳ `amountPaid` | number | Total amount paid for this invoice | | ↳ `amountWrittenOff` | number | Total amount written off for this invoice | | ↳ `notes` | string | Notes or additional information about the invoice | | ↳ `createdAt` | number | Timestamp when the invoice was created (epoch milliseconds) | | ↳ `updatedAt` | number | Timestamp when the invoice was last updated (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the invoice | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | The team member who last updated the invoice | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `company` | object | Customer company details for the invoice | | ↳ `companyId` | number | Unique identifier of the customer company | | ↳ `companyName` | string | Name of the customer company | | ↳ `companyUrl` | string | URL of the customer company website | | ↳ `projects` | array | Projects mapped to this invoice | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `fields` | array | Custom invoice fields with their values | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array depending on field type) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `attachments` | array | Attachments associated with the invoice | | ↳ `attachmentId` | number | Unique identifier of the attachment | | ↳ `attachmentName` | string | Name of the attachment | | ↳ `createdAt` | number | Timestamp when the attachment was created (epoch milliseconds) | | ↳ `location` | string | URL of the attachment | | ↳ `thumbLocation` | string | Thumbnail URL of the attachment | | ↳ `visibility` | boolean | Visibility of the attachment | ### Rocketlane List Invoices [#rocketlane-list-invoices] Search invoices in Rocketlane with date, amount, company, invoice-number, and status filters, sorting, and pagination #### Input [#input-61] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rocketlane API key | | `pageSize` | number | No | Maximum number of invoices per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | | `includeFields` | array | No | Optional fields to include in the response: notes, attachments | | `includeAllFields` | boolean | No | Return all fields in the response | | `sortBy` | string | No | Field to sort by: createdAt or invoiceNumber | | `sortOrder` | string | No | Sort order: ASC or DESC (defaults to DESC) | | `match` | string | No | Combine filters with AND (all) or OR (any); defaults to all | | `dateOfIssueEq` | string | No | Filter by date of issue equal to this date (YYYY-MM-DD) | | `dateOfIssueGt` | string | No | Filter by date of issue greater than this date (YYYY-MM-DD) | | `dateOfIssueGe` | string | No | Filter by date of issue greater than or equal to this date (YYYY-MM-DD) | | `dateOfIssueLt` | string | No | Filter by date of issue less than this date (YYYY-MM-DD) | | `dateOfIssueLe` | string | No | Filter by date of issue less than or equal to this date (YYYY-MM-DD) | | `dueDateEq` | string | No | Filter by due date equal to this date (YYYY-MM-DD) | | `dueDateGt` | string | No | Filter by due date greater than this date (YYYY-MM-DD) | | `dueDateGe` | string | No | Filter by due date greater than or equal to this date (YYYY-MM-DD) | | `dueDateLt` | string | No | Filter by due date less than this date (YYYY-MM-DD) | | `dueDateLe` | string | No | Filter by due date less than or equal to this date (YYYY-MM-DD) | | `amountEq` | number | No | Filter by total amount equal to this value | | `amountGt` | number | No | Filter by total amount greater than this value | | `amountGe` | number | No | Filter by total amount greater than or equal to this value | | `amountLt` | number | No | Filter by total amount less than this value | | `amountLe` | number | No | Filter by total amount less than or equal to this value | | `amountOutstandingEq` | number | No | Filter by amount outstanding equal to this value | | `amountOutstandingGt` | number | No | Filter by amount outstanding greater than this value | | `amountOutstandingGe` | number | No | Filter by amount outstanding greater than or equal to this value | | `amountOutstandingLt` | number | No | Filter by amount outstanding less than this value | | `amountOutstandingLe` | number | No | Filter by amount outstanding less than or equal to this value | | `amountPaidEq` | number | No | Filter by amount paid equal to this value | | `amountPaidGt` | number | No | Filter by amount paid greater than this value | | `amountPaidGe` | number | No | Filter by amount paid greater than or equal to this value | | `amountPaidLt` | number | No | Filter by amount paid less than this value | | `amountPaidLe` | number | No | Filter by amount paid less than or equal to this value | | `amountWrittenOffEq` | number | No | Filter by amount written off equal to this value | | `amountWrittenOffGt` | number | No | Filter by amount written off greater than this value | | `amountWrittenOffGe` | number | No | Filter by amount written off greater than or equal to this value | | `amountWrittenOffLt` | number | No | Filter by amount written off less than this value | | `amountWrittenOffLe` | number | No | Filter by amount written off less than or equal to this value | | `createdAtEq` | number | No | Filter by created timestamp equal to this value (epoch milliseconds) | | `createdAtGt` | number | No | Filter by created timestamp greater than this value (epoch milliseconds) | | `createdAtGe` | number | No | Filter by created timestamp greater than or equal to this value (epoch milliseconds) | | `createdAtLt` | number | No | Filter by created timestamp less than this value (epoch milliseconds) | | `createdAtLe` | number | No | Filter by created timestamp less than or equal to this value (epoch milliseconds) | | `companyIdEq` | string | No | Return invoices that exactly match this customer company ID | | `companyIdOneOf` | string | No | Comma-separated customer company IDs to match any of | | `companyIdNoneOf` | string | No | Comma-separated customer company IDs to match none of | | `invoiceNumberEq` | string | No | Return invoices whose invoice number equals this value | | `invoiceNumberCn` | string | No | Return invoices whose invoice number contains this text | | `invoiceNumberNc` | string | No | Return invoices whose invoice number does not contain this text | | `statusEq` | string | No | Return invoices that equal this status (e.g. DRAFT) | | `statusOneOf` | string | No | Comma-separated statuses to match any of (e.g. DRAFT,PAID) | | `statusNoneOf` | string | No | Comma-separated statuses to match none of (e.g. DRAFT,PAID) | #### Output [#output-61] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `invoices` | array | List of invoices | | ↳ `invoiceId` | number | Unique identifier of the invoice | | ↳ `invoiceNumber` | string | Invoice number assigned to this invoice | | ↳ `dateOfIssue` | string | Date when the invoice was issued (YYYY-MM-DD) | | ↳ `dueDate` | string | Due date for the invoice payment (YYYY-MM-DD) | | ↳ `currency` | string | Currency of the invoice amount (e.g. USD) | | ↳ `status` | string | Current status of the invoice | | ↳ `amount` | number | Total amount of the invoice including tax | | ↳ `tax` | number | Tax amount applied to the invoice | | ↳ `subTotal` | number | Total amount of the invoice excluding tax | | ↳ `amountOutstanding` | number | Balance amount remaining to be paid | | ↳ `amountPaid` | number | Total amount paid for this invoice | | ↳ `amountWrittenOff` | number | Total amount written off for this invoice | | ↳ `notes` | string | Notes or additional information about the invoice | | ↳ `createdAt` | number | Timestamp when the invoice was created (epoch milliseconds) | | ↳ `updatedAt` | number | Timestamp when the invoice was last updated (epoch milliseconds) | | ↳ `createdBy` | object | The team member who created the invoice | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `updatedBy` | object | The team member who last updated the invoice | | ↳ `userId` | number | Unique identifier of the user | | ↳ `firstName` | string | First name of the user | | ↳ `lastName` | string | Last name of the user | | ↳ `emailId` | string | Email address of the user | | ↳ `company` | object | Customer company details for the invoice | | ↳ `companyId` | number | Unique identifier of the customer company | | ↳ `companyName` | string | Name of the customer company | | ↳ `companyUrl` | string | URL of the customer company website | | ↳ `projects` | array | Projects mapped to this invoice | | ↳ `projectId` | number | Unique identifier of the project | | ↳ `projectName` | string | Name of the project | | ↳ `fields` | array | Custom invoice fields with their values | | ↳ `fieldId` | number | Unique identifier of the field | | ↳ `fieldLabel` | string | Label of the field | | ↳ `fieldValue` | json | Value of the field (string, number, or array depending on field type) | | ↳ `fieldValueLabel` | string | String representation of the field value | | ↳ `attachments` | array | Attachments associated with the invoice | | ↳ `attachmentId` | number | Unique identifier of the attachment | | ↳ `attachmentName` | string | Name of the attachment | | ↳ `createdAt` | number | Timestamp when the attachment was created (epoch milliseconds) | | ↳ `location` | string | URL of the attachment | | ↳ `thumbLocation` | string | Thumbnail URL of the attachment | | ↳ `visibility` | boolean | Visibility of the attachment | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Get Invoice Line Items [#rocketlane-get-invoice-line-items] List line items of a Rocketlane invoice #### Input [#input-62] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `invoiceId` | number | Yes | Unique identifier of the invoice | | `pageSize` | number | No | Maximum number of line items per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | #### Output [#output-62] | Parameter | Type | Description | | ---------------------- | ------- | ---------------------------------------------------------------------- | | `lineItems` | array | List of invoice line items | | ↳ `invoiceLineItemId` | number | Unique identifier of the invoice line item | | ↳ `description` | string | Description of the line item or service provided | | ↳ `quantity` | number | Quantity of the item or service | | ↳ `unitPrice` | number | Unit price for the item or service | | ↳ `amount` | number | Total amount for this line item (quantity times unit price) | | ↳ `sourceId` | number | Unique identifier of the source entity (e.g. project ID) | | ↳ `sourceType` | string | Type of source entity this line item is associated with (e.g. PROJECT) | | ↳ `taxCode` | object | Tax code information for this line item | | ↳ `taxCodeId` | number | Unique identifier of the tax code | | ↳ `taxCodeName` | string | Name of the tax code | | ↳ `taxCodeRate` | number | Tax rate percentage for the tax code | | ↳ `taxCodeAmount` | number | Tax amount calculated for this tax code | | ↳ `taxComponents` | array | Tax components that make up the tax code | | ↳ `taxComponentId` | number | Unique identifier of the tax component | | ↳ `taxComponentName` | string | Name of the tax component | | ↳ `taxComponentRate` | number | Tax rate percentage for the tax component | | ↳ `taxComponentAmount` | number | Tax amount calculated for this tax component | | ↳ `taxComponentType` | string | Type of the tax component (e.g. GST, VAT) | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | ### Rocketlane Get Invoice Payments [#rocketlane-get-invoice-payments] List payments recorded against a Rocketlane invoice #### Input [#input-63] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Rocketlane API key | | `invoiceId` | number | Yes | Unique identifier of the invoice | | `pageSize` | number | No | Maximum number of payments per page (defaults to 100) | | `pageToken` | string | No | Page token from a previous response (valid for 15 minutes) | #### Output [#output-63] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------- | | `payments` | array | List of payments recorded against the invoice | | ↳ `paymentId` | number | Unique identifier of the payment record | | ↳ `paymentRecordType` | string | Type of the payment record (PAID or WRITE\_OFF) | | ↳ `currency` | string | Currency of the payment amount (e.g. USD) | | ↳ `paymentDate` | string | Date when the payment was made (YYYY-MM-DD) | | ↳ `amount` | number | Amount of the payment | | ↳ `notes` | string | Additional notes or comments regarding the payment | | `pagination` | object | Pagination details for the result set | | ↳ `pageSize` | number | Page size used for the current request | | ↳ `hasMore` | boolean | Whether more results are available | | ↳ `totalRecordCount` | number | Total number of records matching the request | | ↳ `nextPageToken` | string | Token for fetching the next page (valid for 15 minutes) | --- # Rootly (/integrations/rootly) {/* MANUAL-CONTENT-START:intro */} Use [Rootly](https://rootly.com/) in Agent Serve with a Rootly API key to manage incidents and alerts, add timeline events, and look up services, severities, teams, environments, and incident types. Alert operations support deduplication; retrospective operations retrieve post-incident records for review. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Rootly incident management into workflows. Create and manage incidents, alerts, services, severities, and retrospectives. ## Actions [#actions] ### Rootly Create Incident [#rootly-create-incident] Create a new incident in Rootly with optional severity, services, and teams. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `title` | string | No | The title of the incident (auto-generated if not provided) | | `summary` | string | No | A summary of the incident | | `severityId` | string | No | Severity ID to attach to the incident | | `status` | string | No | Incident status (in\_triage, started, detected, acknowledged, mitigated, resolved, closed, cancelled, scheduled, in\_progress, completed) | | `kind` | string | No | Incident kind (normal, normal\_sub, test, test\_sub, example, example\_sub, backfilled, scheduled, scheduled\_sub) | | `serviceIds` | string | No | Comma-separated service IDs to attach | | `environmentIds` | string | No | Comma-separated environment IDs to attach | | `groupIds` | string | No | Comma-separated team/group IDs to attach | | `incidentTypeIds` | string | No | Comma-separated incident type IDs to attach | | `functionalityIds` | string | No | Comma-separated functionality IDs to attach | | `labels` | string | No | Labels as JSON object, e.g. \{"platform":"osx","version":"1.29"} | | `private` | boolean | No | Create as a private incident (cannot be undone) | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `incident` | object | The created incident | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Get Incident [#rootly-get-incident] Retrieve a single incident by ID from Rootly. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `incident` | object | The incident details | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Update Incident [#rootly-update-incident] Update an existing incident in Rootly (status, severity, summary, etc.). #### Input [#input-2] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to update | | `title` | string | No | Updated incident title | | `summary` | string | No | Updated incident summary | | `severityId` | string | No | Updated severity ID | | `status` | string | No | Updated status (in\_triage, started, detected, acknowledged, mitigated, resolved, closed, cancelled, scheduled, in\_progress, completed) | | `kind` | string | No | Incident kind (normal, normal\_sub, test, test\_sub, example, example\_sub, backfilled, scheduled, scheduled\_sub) | | `private` | boolean | No | Set incident as private (cannot be undone) | | `serviceIds` | string | No | Comma-separated service IDs | | `environmentIds` | string | No | Comma-separated environment IDs | | `groupIds` | string | No | Comma-separated team/group IDs | | `incidentTypeIds` | string | No | Comma-separated incident type IDs to attach | | `functionalityIds` | string | No | Comma-separated functionality IDs to attach | | `labels` | string | No | Labels as JSON object, e.g. \{"platform":"osx","version":"1.29"} | | `mitigationMessage` | string | No | How was the incident mitigated? | | `resolutionMessage` | string | No | How was the incident resolved? | | `cancellationMessage` | string | No | Why was the incident cancelled? | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `incident` | object | The updated incident | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly List Incidents [#rootly-list-incidents] List incidents from Rootly with optional filtering by status, severity, and more. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rootly API key | | `status` | string | No | Filter by status (in\_triage, started, detected, acknowledged, mitigated, resolved, closed, cancelled, scheduled, in\_progress, completed) | | `severity` | string | No | Filter by severity slug | | `search` | string | No | Search term to filter incidents | | `services` | string | No | Filter by service slugs (comma-separated) | | `teams` | string | No | Filter by team slugs (comma-separated) | | `environments` | string | No | Filter by environment slugs (comma-separated) | | `sort` | string | No | Sort order (e.g., -created\_at, created\_at, -started\_at) | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------- | ---------------------------------- | | `incidents` | array | List of incidents | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | | `totalCount` | number | Total number of incidents returned | ### Rootly Create Alert [#rootly-create-alert] Create a new alert in Rootly for on-call notification and routing. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `summary` | string | Yes | The summary of the alert | | `description` | string | No | A detailed description of the alert | | `source` | string | No | The source of the alert (e.g., api, manual, datadog, pagerduty) | | `status` | string | No | Alert status on creation (open, triggered) | | `serviceIds` | string | No | Comma-separated service IDs to attach | | `groupIds` | string | No | Comma-separated team/group IDs to attach | | `environmentIds` | string | No | Comma-separated environment IDs to attach | | `externalId` | string | No | External ID for the alert | | `externalUrl` | string | No | External URL for the alert | | `deduplicationKey` | string | No | Alerts sharing the same deduplication key are treated as a single alert | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | ----------------- | | `alert` | object | The created alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly List Alerts [#rootly-list-alerts] List alerts from Rootly with optional filtering by status, source, and services. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `status` | string | No | Filter by status (open, triggered, acknowledged, resolved) | | `source` | string | No | Filter by source (e.g., api, datadog, pagerduty) | | `services` | string | No | Filter by service slugs (comma-separated) | | `environments` | string | No | Filter by environment slugs (comma-separated) | | `groups` | string | No | Filter by team/group slugs (comma-separated) | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------- | | `alerts` | array | List of alerts | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | | `totalCount` | number | Total number of alerts returned | ### Rootly Add Incident Event [#rootly-add-incident-event] Add a timeline event to an existing incident in Rootly. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to add the event to | | `event` | string | Yes | The summary/description of the event | | `visibility` | string | No | Event visibility (internal or external) | #### Output [#output-6] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------- | | `eventId` | string | The ID of the created event | | `event` | string | The event summary | | `visibility` | string | Event visibility (internal or external) | | `occurredAt` | string | When the event occurred | | `createdAt` | string | Creation date | | `updatedAt` | string | Last update date | ### Rootly List Services [#rootly-list-services] List services from Rootly with optional search filtering. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter services | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | --------------------------------- | | `services` | array | List of services | | ↳ `id` | string | Unique service ID | | ↳ `name` | string | Service name | | ↳ `slug` | string | Service slug | | ↳ `description` | string | Service description | | ↳ `color` | string | Service color | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of services returned | ### Rootly List Severities [#rootly-list-severities] List severity levels configured in Rootly. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter severities | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------- | | `severities` | array | List of severity levels | | ↳ `id` | string | Unique severity ID | | ↳ `name` | string | Severity name | | ↳ `slug` | string | Severity slug | | ↳ `description` | string | Severity description | | ↳ `severity` | string | Severity level (critical, high, medium, low) | | ↳ `color` | string | Severity color | | ↳ `position` | number | Display position | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of severities returned | ### Rootly List Teams [#rootly-list-teams] List teams (groups) configured in Rootly. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter teams | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `teams` | array | List of teams | | ↳ `id` | string | Unique team ID | | ↳ `name` | string | Team name | | ↳ `slug` | string | Team slug | | ↳ `description` | string | Team description | | ↳ `color` | string | Team color | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of teams returned | ### Rootly List Environments [#rootly-list-environments] List environments configured in Rootly. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter environments | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-10] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `environments` | array | List of environments | | ↳ `id` | string | Unique environment ID | | ↳ `name` | string | Environment name | | ↳ `slug` | string | Environment slug | | ↳ `description` | string | Environment description | | ↳ `color` | string | Environment color | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of environments returned | ### Rootly List Incident Types [#rootly-list-incident-types] List incident types configured in Rootly. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Filter incident types by name | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `incidentTypes` | array | List of incident types | | ↳ `id` | string | Unique incident type ID | | ↳ `name` | string | Incident type name | | ↳ `slug` | string | Incident type slug | | ↳ `description` | string | Incident type description | | ↳ `color` | string | Incident type color | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of incident types returned | ### Rootly List Functionalities [#rootly-list-functionalities] List functionalities configured in Rootly. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter functionalities | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-12] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------- | | `functionalities` | array | List of functionalities | | ↳ `id` | string | Unique functionality ID | | ↳ `name` | string | Functionality name | | ↳ `slug` | string | Functionality slug | | ↳ `description` | string | Functionality description | | ↳ `color` | string | Functionality color | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of functionalities returned | ### Rootly List Retrospectives [#rootly-list-retrospectives] List incident retrospectives (post-mortems) from Rootly. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `status` | string | No | Filter by status (draft, published) | | `search` | string | No | Search term to filter retrospectives | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-13] | Parameter | Type | Description | | ---------------- | ------ | --------------------------------------- | | `retrospectives` | array | List of retrospectives | | ↳ `id` | string | Unique retrospective ID | | ↳ `title` | string | Retrospective title | | ↳ `status` | string | Status (draft or published) | | ↳ `url` | string | URL to the retrospective | | ↳ `startedAt` | string | Incident start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of retrospectives returned | ### Rootly Delete Incident [#rootly-delete-incident] Delete an incident by ID from Rootly. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to delete | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `success` | boolean | Whether the deletion succeeded | | `message` | string | Result message | ### Rootly Get Alert [#rootly-get-alert] Retrieve a single alert by ID from Rootly. #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to retrieve | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------ | ----------------- | | `alert` | object | The alert details | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly Update Alert [#rootly-update-alert] Update an existing alert in Rootly. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to update | | `summary` | string | No | Updated alert summary | | `description` | string | No | Updated alert description | | `source` | string | No | Updated alert source | | `serviceIds` | string | No | Comma-separated service IDs to attach | | `groupIds` | string | No | Comma-separated team/group IDs to attach | | `environmentIds` | string | No | Comma-separated environment IDs to attach | | `externalId` | string | No | Updated external ID | | `externalUrl` | string | No | Updated external URL | | `deduplicationKey` | string | No | Updated deduplication key | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------ | ----------------- | | `alert` | object | The updated alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly Acknowledge Alert [#rootly-acknowledge-alert] Acknowledge an alert in Rootly. #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to acknowledge | #### Output [#output-17] | Parameter | Type | Description | | -------------------- | ------ | ---------------------- | | `alert` | object | The acknowledged alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly Resolve Alert [#rootly-resolve-alert] Resolve an alert in Rootly. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | --------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to resolve | | `resolutionMessage` | string | No | Message describing how the alert was resolved | | `resolveRelatedIncidents` | boolean | No | Whether to also resolve related incidents | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ------ | ------------------ | | `alert` | object | The resolved alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly Create Action Item [#rootly-create-action-item] Create a new action item for an incident in Rootly. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to add the action item to | | `summary` | string | Yes | The title of the action item | | `description` | string | No | A detailed description of the action item | | `kind` | string | No | The kind of action item (task, follow\_up) | | `priority` | string | No | Priority level (high, medium, low) | | `status` | string | No | Action item status (open, in\_progress, cancelled, done) | | `assignedToUserId` | string | No | The user ID to assign the action item to | | `dueDate` | string | No | Due date for the action item | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `actionItem` | object | The created action item | | ↳ `id` | string | Unique action item ID | | ↳ `summary` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `kind` | string | Action item kind (task, follow\_up) | | ↳ `priority` | string | Priority level | | ↳ `status` | string | Action item status | | ↳ `dueDate` | string | Due date | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | ### Rootly List Action Items [#rootly-list-action-items] List action items for an incident in Rootly. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to list action items for | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------- | | `actionItems` | array | List of action items | | ↳ `id` | string | Unique action item ID | | ↳ `summary` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `kind` | string | Action item kind (task, follow\_up) | | ↳ `priority` | string | Priority level | | ↳ `status` | string | Action item status | | ↳ `dueDate` | string | Due date | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of action items returned | ### Rootly List Users [#rootly-list-users] List users from Rootly with optional search and email filtering. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter users | | `email` | string | No | Filter users by email address | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------ | ------------------------------ | | `users` | array | List of users | | ↳ `id` | string | Unique user ID | | ↳ `email` | string | User email address | | ↳ `firstName` | string | User first name | | ↳ `lastName` | string | User last name | | ↳ `fullName` | string | User full name | | ↳ `timeZone` | string | User time zone | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of users returned | ### Rootly List On-Calls [#rootly-list-on-calls] List current on-call entries from Rootly with optional filtering. #### Input [#input-22] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `scheduleIds` | string | No | Comma-separated schedule IDs to filter by | | `escalationPolicyIds` | string | No | Comma-separated escalation policy IDs to filter by | | `userIds` | string | No | Comma-separated user IDs to filter by | | `serviceIds` | string | No | Comma-separated service IDs to filter by | #### Output [#output-22] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------- | | `onCalls` | array | List of on-call entries | | ↳ `id` | string | Unique on-call entry ID | | ↳ `userId` | string | ID of the on-call user | | ↳ `userName` | string | Name of the on-call user | | ↳ `scheduleId` | string | ID of the associated schedule | | ↳ `scheduleName` | string | Name of the associated schedule | | ↳ `escalationPolicyId` | string | ID of the associated escalation policy | | ↳ `startTime` | string | On-call start time | | ↳ `endTime` | string | On-call end time | | `totalCount` | number | Total number of on-call entries returned | ### Rootly List Schedules [#rootly-list-schedules] List on-call schedules from Rootly with optional search filtering. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter schedules | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-23] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------- | | `schedules` | array | List of schedules | | ↳ `id` | string | Unique schedule ID | | ↳ `name` | string | Schedule name | | ↳ `description` | string | Schedule description | | ↳ `allTimeCoverage` | boolean | Whether schedule provides 24/7 coverage | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of schedules returned | ### Rootly List Escalation Policies [#rootly-list-escalation-policies] List escalation policies from Rootly with optional search filtering. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter escalation policies | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-24] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------- | | `escalationPolicies` | array | List of escalation policies | | ↳ `id` | string | Unique escalation policy ID | | ↳ `name` | string | Escalation policy name | | ↳ `description` | string | Escalation policy description | | ↳ `repeatCount` | number | Number of times to repeat escalation | | ↳ `groupIds` | array | Associated group IDs | | ↳ `serviceIds` | array | Associated service IDs | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of escalation policies returned | ### Rootly List Causes [#rootly-list-causes] List causes from Rootly with optional search filtering. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter causes | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `causes` | array | List of causes | | ↳ `id` | string | Unique cause ID | | ↳ `name` | string | Cause name | | ↳ `slug` | string | Cause slug | | ↳ `description` | string | Cause description | | ↳ `position` | number | Cause position | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of causes returned | ### Rootly List Playbooks [#rootly-list-playbooks] List playbooks from Rootly with pagination support. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------- | | `playbooks` | array | List of playbooks | | ↳ `id` | string | Unique playbook ID | | ↳ `title` | string | Playbook title | | ↳ `summary` | string | Playbook summary | | ↳ `externalUrl` | string | External URL | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of playbooks returned | ### Rootly Mitigate Incident [#rootly-mitigate-incident] Transition a Rootly incident to the mitigated state. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to mitigate | | `mitigationMessage` | string | No | How was the incident mitigated? | #### Output [#output-27] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `incident` | object | The mitigated incident | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Resolve Incident [#rootly-resolve-incident] Transition a Rootly incident to the resolved state. #### Input [#input-28] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident to resolve | | `resolutionMessage` | string | No | How was the incident resolved? | #### Output [#output-28] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `incident` | object | The resolved incident | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Assign Incident Role [#rootly-assign-incident-role] Assign an incident role (e.g. commander) to a user on a Rootly incident. #### Input [#input-29] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `userId` | string | Yes | The ID of the user to assign (use List Users to find IDs) | | `incidentRoleId` | string | Yes | The ID of the incident role (use List Incident Roles to find IDs) | #### Output [#output-29] | Parameter | Type | Description | | ---------------- | ------- | -------------------------------------- | | `incident` | object | The incident after the role assignment | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Unassign Incident Role [#rootly-unassign-incident-role] Remove an incident role assignment from a user on a Rootly incident. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `userId` | string | Yes | The ID of the user to unassign (use List Users to find IDs) | | `incidentRoleId` | string | Yes | The ID of the incident role to remove (use List Incident Roles to find IDs) | #### Output [#output-30] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------ | | `incident` | object | The incident after the role was unassigned | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Add Subscribers [#rootly-add-subscribers] Subscribe users to a Rootly incident so they receive updates. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `userIds` | string | Yes | Comma-separated user IDs to subscribe (use List Users to find IDs) | #### Output [#output-31] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------- | | `incident` | object | The incident after subscribers were added | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Remove Subscribers [#rootly-remove-subscribers] Unsubscribe users from a Rootly incident. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `userIds` | string | Yes | Comma-separated user IDs to unsubscribe (use List Users to find IDs) | #### Output [#output-32] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------- | | `incident` | object | The incident after subscribers were removed | | ↳ `id` | string | Unique incident ID | | ↳ `sequentialId` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `private` | boolean | Whether the incident is private | | ↳ `url` | string | URL to the incident | | ↳ `shortUrl` | string | Short URL to the incident | | ↳ `severityName` | string | Severity name | | ↳ `severityId` | string | Severity ID | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `mitigatedAt` | string | Mitigation date | | ↳ `resolvedAt` | string | Resolution date | | ↳ `closedAt` | string | Closed date | ### Rootly Create Status Page Event [#rootly-create-status-page-event] Post a public status page update for a Rootly incident. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `event` | string | Yes | The status page update message to publish | | `statusPageId` | string | No | The ID of the status page to post to | | `status` | string | No | Status to set (investigating, identified, monitoring, resolved, scheduled, in\_progress, completed) | | `notifySubscribers` | boolean | No | Whether to notify status page subscribers | | `shouldTweet` | boolean | No | Whether to post the update to the linked Twitter/X account | #### Output [#output-33] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------- | | `statusPageEvent` | object | The created status page event | | ↳ `id` | string | Unique status page event ID | | ↳ `event` | string | The published update message | | ↳ `statusPageId` | string | Status page ID | | ↳ `status` | string | Status that was set | | ↳ `notifySubscribers` | boolean | Whether subscribers were notified | | ↳ `shouldTweet` | boolean | Whether the update was tweeted | | ↳ `startedAt` | string | When the event started | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | ### Rootly Update Action Item [#rootly-update-action-item] Update a Rootly incident action item (status, priority, assignee, etc.). #### Input [#input-34] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `actionItemId` | string | Yes | The ID of the action item to update | | `summary` | string | No | Updated action item title | | `description` | string | No | Updated description | | `kind` | string | No | The kind of action item (task, follow\_up) | | `priority` | string | No | Priority level (high, medium, low) | | `status` | string | No | Action item status (open, in\_progress, cancelled, done) | | `assignedToUserId` | string | No | The user ID to assign the action item to | | `dueDate` | string | No | Due date for the action item | #### Output [#output-34] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------- | | `actionItem` | object | The updated action item | | ↳ `id` | string | Unique action item ID | | ↳ `summary` | string | Action item title | | ↳ `description` | string | Action item description | | ↳ `kind` | string | Action item kind (task, follow\_up) | | ↳ `priority` | string | Priority level | | ↳ `status` | string | Action item status | | ↳ `dueDate` | string | Due date | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | ### Rootly Delete Action Item [#rootly-delete-action-item] Delete a Rootly incident action item. #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `actionItemId` | string | Yes | The ID of the action item to delete | #### Output [#output-35] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `success` | boolean | Whether the action item was deleted | | `message` | string | Result message | ### Rootly Snooze Alert [#rootly-snooze-alert] Snooze a Rootly alert for a set number of minutes. #### Input [#input-36] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to snooze | | `delayMinutes` | number | Yes | Number of minutes to snooze the alert | #### Output [#output-36] | Parameter | Type | Description | | -------------------- | ------ | ----------------- | | `alert` | object | The snoozed alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly Escalate Alert [#rootly-escalate-alert] Escalate a Rootly alert, optionally to a specific escalation policy or level. #### Input [#input-37] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rootly API key | | `alertId` | string | Yes | The ID of the alert to escalate | | `escalationPolicyId` | string | No | Escalation policy ID to escalate to (use List Escalation Policies to find IDs) | | `escalationPolicyLevel` | number | No | Escalation policy level to escalate to | #### Output [#output-37] | Parameter | Type | Description | | -------------------- | ------ | ------------------- | | `alert` | object | The escalated alert | | ↳ `id` | string | Unique alert ID | | ↳ `shortId` | string | Short alert ID | | ↳ `summary` | string | Alert summary | | ↳ `description` | string | Alert description | | ↳ `source` | string | Alert source | | ↳ `status` | string | Alert status | | ↳ `externalId` | string | External ID | | ↳ `externalUrl` | string | External URL | | ↳ `deduplicationKey` | string | Deduplication key | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | ↳ `startedAt` | string | Start date | | ↳ `endedAt` | string | End date | ### Rootly List Incident Events [#rootly-list-incident-events] List the timeline events for a Rootly incident. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `incidentId` | string | Yes | The ID of the incident | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-38] | Parameter | Type | Description | | -------------- | ------ | --------------------------------------- | | `events` | array | List of incident timeline events | | ↳ `id` | string | Unique event ID | | ↳ `event` | string | The event description | | ↳ `visibility` | string | Event visibility (internal or external) | | ↳ `occurredAt` | string | When the event occurred | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of events returned | ### Rootly Run Workflow [#rootly-run-workflow] Trigger a Rootly automation workflow, optionally scoped to an incident or alert. #### Input [#input-39] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Rootly API key | | `workflowId` | string | Yes | The ID of the workflow to run | | `incidentId` | string | No | Incident ID to run the workflow against | | `alertId` | string | No | Alert ID to run the workflow against | | `immediate` | boolean | No | Run immediately (true) or respect the workflow wait time (false). Default true | | `checkConditions` | boolean | No | Whether to evaluate the workflow conditions before running. Default false | #### Output [#output-39] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------------- | | `workflowRun` | object | The triggered workflow run | | ↳ `id` | string | Unique workflow run ID | | ↳ `workflowId` | string | ID of the workflow that ran | | ↳ `status` | string | Run status (queued, started, completed, completed\_with\_errors, failed, canceled) | | ↳ `statusMessage` | string | Status detail message | | ↳ `triggeredBy` | string | What triggered the run (system, user, workflow) | | ↳ `incidentId` | string | Associated incident ID | | ↳ `alertId` | string | Associated alert ID | | ↳ `startedAt` | string | When the run started | | ↳ `completedAt` | string | When the run completed | | ↳ `failedAt` | string | When the run failed | | ↳ `canceledAt` | string | When the run was canceled | ### Rootly List Incident Roles [#rootly-list-incident-roles] List incident roles configured in Rootly (e.g. commander, scribe). #### Input [#input-40] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Rootly API key | | `search` | string | No | Search term to filter incident roles | | `pageSize` | number | No | Number of items per page (default: 20) | | `pageNumber` | number | No | Page number for pagination | #### Output [#output-40] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------- | | `incidentRoles` | array | List of incident roles | | ↳ `id` | string | Unique incident role ID | | ↳ `name` | string | Role name | | ↳ `slug` | string | Role slug | | ↳ `summary` | string | Role summary | | ↳ `description` | string | Role description | | ↳ `position` | number | Display position | | ↳ `optional` | boolean | Whether the role is optional | | ↳ `enabled` | boolean | Whether the role is enabled | | ↳ `createdAt` | string | Creation date | | ↳ `updatedAt` | string | Last update date | | `totalCount` | number | Total number of incident roles returned | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Rootly Alert Created [#rootly-alert-created] Trigger workflow when a new alert is created in Rootly #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-41] | Parameter | Type | Description | | --------------------------- | ------ | -------------------------------------- | | `eventId` | string | Unique webhook event ID | | `eventType` | string | Rootly event type (e.g. alert.created) | | `issuedAt` | string | When the event was issued (ISO 8601) | | `data` | object | data output from the tool | | ↳ `id` | string | Alert ID | | ↳ `team_id` | number | Team ID | | ↳ `source` | string | Alert source (e.g. pagerduty) | | ↳ `summary` | string | Alert summary | | ↳ `labels` | json | Alert labels | | ↳ `data` | json | Raw alert payload data | | ↳ `external_id` | string | External alert ID | | ↳ `external_url` | string | External alert URL | | ↳ `webhook_type` | string | Webhook type | | ↳ `webhook_id` | string | Webhook ID | | ↳ `webhook_idempotency_key` | string | Webhook idempotency key | | ↳ `started_at` | string | When the alert started | | ↳ `ended_at` | string | When the alert ended | | ↳ `deleted_at` | string | When the alert was deleted | | ↳ `created_at` | string | Alert creation timestamp | | ↳ `updated_at` | string | Alert last update timestamp | *** ### Rootly Incident Created [#rootly-incident-created] Trigger workflow when a new incident is created in Rootly #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-42] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------- | | `eventId` | string | Unique webhook event ID | | `eventType` | string | Rootly event type (e.g. incident.created) | | `issuedAt` | string | When the event was issued (ISO 8601) | | `data` | object | data output from the tool | | ↳ `id` | string | Incident ID | | ↳ `sequential_id` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `public_title` | string | Public-facing incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind (normal, test, etc.) | | ↳ `private` | boolean | Whether the incident is private | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `url` | string | Incident URL in Rootly | | ↳ `short_url` | string | Shortened incident URL | | ↳ `mitigation_message` | string | Mitigation message | | ↳ `resolution_message` | string | Resolution message | | ↳ `cancellation_message` | string | Cancellation message | | ↳ `slack_channel_name` | string | Linked Slack channel name | | ↳ `slack_channel_id` | string | Linked Slack channel ID | | ↳ `slack_channel_url` | string | Linked Slack channel URL | | ↳ `started_at` | string | When the incident started | | ↳ `detected_at` | string | When the incident was detected | | ↳ `acknowledged_at` | string | When the incident was acknowledged | | ↳ `mitigated_at` | string | When the incident was mitigated | | ↳ `resolved_at` | string | When the incident was resolved | | ↳ `cancelled_at` | string | When the incident was cancelled | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `updated_at` | string | Incident last update timestamp | | ↳ `labels` | json | Incident labels (key-value pairs) | | ↳ `severity` | json | Incident severity object | | ↳ `user` | json | User who owns the incident | | ↳ `started_by` | json | User who started the incident | | ↳ `mitigated_by` | json | User who mitigated the incident | | ↳ `resolved_by` | json | User who resolved the incident | | ↳ `cancelled_by` | json | User who cancelled the incident | | ↳ `roles` | json | Assigned incident roles | | ↳ `environments` | json | Affected environments | | ↳ `incident_types` | json | Incident types | | ↳ `services` | json | Affected services | | ↳ `functionalities` | json | Affected functionalities | | ↳ `groups` | json | Associated teams/groups | | ↳ `events` | json | Timeline events | | ↳ `action_items` | json | Action items | | ↳ `incident_post_mortem` | json | Retrospective/post-mortem object | *** ### Rootly Incident Resolved [#rootly-incident-resolved] Trigger workflow when an incident is resolved in Rootly #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-43] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------- | | `eventId` | string | Unique webhook event ID | | `eventType` | string | Rootly event type (e.g. incident.created) | | `issuedAt` | string | When the event was issued (ISO 8601) | | `data` | object | data output from the tool | | ↳ `id` | string | Incident ID | | ↳ `sequential_id` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `public_title` | string | Public-facing incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind (normal, test, etc.) | | ↳ `private` | boolean | Whether the incident is private | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `url` | string | Incident URL in Rootly | | ↳ `short_url` | string | Shortened incident URL | | ↳ `mitigation_message` | string | Mitigation message | | ↳ `resolution_message` | string | Resolution message | | ↳ `cancellation_message` | string | Cancellation message | | ↳ `slack_channel_name` | string | Linked Slack channel name | | ↳ `slack_channel_id` | string | Linked Slack channel ID | | ↳ `slack_channel_url` | string | Linked Slack channel URL | | ↳ `started_at` | string | When the incident started | | ↳ `detected_at` | string | When the incident was detected | | ↳ `acknowledged_at` | string | When the incident was acknowledged | | ↳ `mitigated_at` | string | When the incident was mitigated | | ↳ `resolved_at` | string | When the incident was resolved | | ↳ `cancelled_at` | string | When the incident was cancelled | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `updated_at` | string | Incident last update timestamp | | ↳ `labels` | json | Incident labels (key-value pairs) | | ↳ `severity` | json | Incident severity object | | ↳ `user` | json | User who owns the incident | | ↳ `started_by` | json | User who started the incident | | ↳ `mitigated_by` | json | User who mitigated the incident | | ↳ `resolved_by` | json | User who resolved the incident | | ↳ `cancelled_by` | json | User who cancelled the incident | | ↳ `roles` | json | Assigned incident roles | | ↳ `environments` | json | Affected environments | | ↳ `incident_types` | json | Incident types | | ↳ `services` | json | Affected services | | ↳ `functionalities` | json | Affected functionalities | | ↳ `groups` | json | Associated teams/groups | | ↳ `events` | json | Timeline events | | ↳ `action_items` | json | Action items | | ↳ `incident_post_mortem` | json | Retrospective/post-mortem object | *** ### Rootly Incident Updated [#rootly-incident-updated] Trigger workflow when an incident is updated in Rootly #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `apiKey` | string | Yes | API Key | #### Output [#output-44] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------- | | `eventId` | string | Unique webhook event ID | | `eventType` | string | Rootly event type (e.g. incident.created) | | `issuedAt` | string | When the event was issued (ISO 8601) | | `data` | object | data output from the tool | | ↳ `id` | string | Incident ID | | ↳ `sequential_id` | number | Sequential incident number | | ↳ `title` | string | Incident title | | ↳ `public_title` | string | Public-facing incident title | | ↳ `slug` | string | Incident slug | | ↳ `kind` | string | Incident kind (normal, test, etc.) | | ↳ `private` | boolean | Whether the incident is private | | ↳ `summary` | string | Incident summary | | ↳ `status` | string | Incident status | | ↳ `url` | string | Incident URL in Rootly | | ↳ `short_url` | string | Shortened incident URL | | ↳ `mitigation_message` | string | Mitigation message | | ↳ `resolution_message` | string | Resolution message | | ↳ `cancellation_message` | string | Cancellation message | | ↳ `slack_channel_name` | string | Linked Slack channel name | | ↳ `slack_channel_id` | string | Linked Slack channel ID | | ↳ `slack_channel_url` | string | Linked Slack channel URL | | ↳ `started_at` | string | When the incident started | | ↳ `detected_at` | string | When the incident was detected | | ↳ `acknowledged_at` | string | When the incident was acknowledged | | ↳ `mitigated_at` | string | When the incident was mitigated | | ↳ `resolved_at` | string | When the incident was resolved | | ↳ `cancelled_at` | string | When the incident was cancelled | | ↳ `created_at` | string | Incident creation timestamp | | ↳ `updated_at` | string | Incident last update timestamp | | ↳ `labels` | json | Incident labels (key-value pairs) | | ↳ `severity` | json | Incident severity object | | ↳ `user` | json | User who owns the incident | | ↳ `started_by` | json | User who started the incident | | ↳ `mitigated_by` | json | User who mitigated the incident | | ↳ `resolved_by` | json | User who resolved the incident | | ↳ `cancelled_by` | json | User who cancelled the incident | | ↳ `roles` | json | Assigned incident roles | | ↳ `environments` | json | Affected environments | | ↳ `incident_types` | json | Incident types | | ↳ `services` | json | Affected services | | ↳ `functionalities` | json | Affected functionalities | | ↳ `groups` | json | Associated teams/groups | | ↳ `events` | json | Timeline events | | ↳ `action_items` | json | Action items | | ↳ `incident_post_mortem` | json | Retrospective/post-mortem object | --- # S3 (/integrations/s3) {/* MANUAL-CONTENT-START:intro */} Use [Amazon S3](https://aws.amazon.com/s3/) to manage objects and buckets from a workflow. Upload, download, copy, or delete objects, inspect metadata, and create time-limited presigned URLs. Configure an AWS access key and secret access key. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate S3 into the workflow. Upload, download, copy, and delete objects (individually or in batches), inspect object metadata, generate time-limited presigned URLs, list bucket contents, and create, list, or delete buckets. Requires AWS access key and secret access key. ## Actions [#actions] ### S3 Put Object [#s3-put-object] Upload a file to an AWS S3 bucket #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `objectKey` | string | Yes | Object key/path in S3 (e.g., folder/filename.ext) | | `file` | file | No | File to upload | | `content` | string | No | Text content to upload (alternative to file) | | `contentType` | string | No | Content-Type header (auto-detected from file if not provided) | | `acl` | string | No | Access control list (e.g., private, public-read) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------- | | `url` | string | URL of the uploaded S3 object | | `uri` | string | S3 URI of the uploaded object (s3://bucket/key) | | `metadata` | object | Upload metadata including ETag and location | ### S3 Get Object [#s3-get-object] Retrieve an object from an AWS S3 bucket #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | No | Optional region override when URL does not include region (e.g., us-east-1, eu-west-1) | | `s3Uri` | string | Yes | S3 Object URL (e.g., [https://bucket.s3.region.amazonaws.com/path/to/file](https://bucket.s3.region.amazonaws.com/path/to/file)) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ---------------------------------------------------------------- | | `url` | string | Pre-signed URL for downloading the S3 object | | `file` | file | Downloaded file stored in execution files | | `metadata` | object | File metadata including type, size, name, and last modified date | ### S3 List Objects [#s3-list-objects] List objects in an AWS S3 bucket #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------ | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `prefix` | string | No | Prefix to filter objects (e.g., folder/, images/2024/) | | `maxKeys` | number | No | Maximum number of objects to return (default: 1000) | | `continuationToken` | string | No | Token for pagination from previous list response | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `objects` | array | List of S3 objects | | ↳ `key` | string | Object key | | ↳ `size` | number | Object size in bytes | | ↳ `lastModified` | string | Last modified timestamp | | ↳ `etag` | string | Entity tag | | `metadata` | object | Listing metadata including pagination info | ### S3 Delete Object [#s3-delete-object] Delete an object from an AWS S3 bucket #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `objectKey` | string | Yes | Object key/path to delete (e.g., folder/file.txt) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `deleted` | boolean | Whether the object was successfully deleted | | `metadata` | object | Deletion metadata | ### S3 Copy Object [#s3-copy-object] Copy an object within or between AWS S3 buckets #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `sourceBucket` | string | Yes | Source bucket name (e.g., my-bucket) | | `sourceKey` | string | Yes | Source object key/path (e.g., folder/file.txt) | | `destinationBucket` | string | Yes | Destination bucket name (e.g., my-other-bucket) | | `destinationKey` | string | Yes | Destination object key/path (e.g., backup/file.txt) | | `acl` | string | No | Access control list for the copied object (e.g., private, public-read) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------- | | `url` | string | URL of the copied S3 object | | `uri` | string | S3 URI of the copied object (s3://bucket/key) | | `metadata` | object | Copy operation metadata | ### S3 List Buckets [#s3-list-buckets] List the S3 buckets owned by the authenticated AWS account #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region to address the request to (e.g., us-east-1) | | `prefix` | string | No | Limit the response to bucket names that begin with this prefix | | `maxBuckets` | number | No | Maximum number of buckets to return (1-10000) | | `continuationToken` | string | No | Token for pagination from a previous list buckets response | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------- | | `buckets` | array | List of S3 buckets owned by the account | | ↳ `name` | string | Bucket name | | ↳ `creationDate` | string | Bucket creation timestamp | | ↳ `region` | string | AWS region where the bucket is located | | `metadata` | object | Listing metadata including owner and pagination info | ### S3 Head Object [#s3-head-object] Retrieve metadata for an S3 object without downloading its body #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `objectKey` | string | Yes | Object key/path to inspect (e.g., folder/file.txt) | | `versionId` | string | No | Specific object version ID to inspect (for versioned buckets) | #### Output [#output-6] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------------------------------------- | | `exists` | boolean | Whether the object exists and was reachable | | `metadata` | object | Object metadata including size, content type, ETag, and last modified date | ### S3 Create Bucket [#s3-create-bucket] Create a new AWS S3 bucket in the specified region #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------ | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region to create the bucket in (e.g., us-east-1) | | `bucketName` | string | Yes | Name for the new S3 bucket (must be globally unique) | | `acl` | string | No | Canned ACL for the bucket (e.g., private, public-read) | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------- | | `metadata` | object | Created bucket metadata including name and location | ### S3 Delete Bucket [#s3-delete-bucket] Delete an empty AWS S3 bucket #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region where the bucket is located (e.g., us-east-1) | | `bucketName` | string | Yes | Name of the S3 bucket to delete (must be empty) | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `deleted` | boolean | Whether the bucket was successfully deleted | | `metadata` | object | Deletion metadata including bucket name | ### S3 Presigned URL [#s3-presigned-url] Generate a time-limited presigned URL to download or upload an S3 object #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region where the bucket is located (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `objectKey` | string | Yes | Object key/path for the presigned URL (e.g., folder/file.txt) | | `method` | string | Yes | Operation the URL grants: get (download) or put (upload) | | `expiresIn` | number | No | URL validity in seconds (1-604800, default 3600) | | `contentType` | string | No | Content-Type the upload must use (only applies to put URLs) | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------------------ | | `url` | string | The generated presigned URL | | `metadata` | object | Presigned URL metadata including method and expiration | ### S3 Delete Objects [#s3-delete-objects] Delete multiple objects from an AWS S3 bucket in a single batch request #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------- | | `accessKeyId` | string | Yes | Your AWS Access Key ID | | `secretAccessKey` | string | Yes | Your AWS Secret Access Key | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `bucketName` | string | Yes | S3 bucket name (e.g., my-bucket) | | `keys` | json | Yes | Array of object keys to delete (e.g., \["a.txt", "folder/b.txt"]). Max 1000. | | `quiet` | boolean | No | Return only deletion errors, omitting successfully deleted keys | #### Output [#output-10] | Parameter | Type | Description | | ---------------- | ------- | --------------------------------------- | | `deleted` | array | Objects that were successfully deleted | | ↳ `key` | string | Deleted object key | | ↳ `versionId` | string | Version ID of the deleted object | | ↳ `deleteMarker` | boolean | Whether a delete marker was created | | `errors` | array | Objects that failed to delete | | ↳ `key` | string | Object key that failed | | ↳ `code` | string | Error code | | ↳ `message` | string | Error message | | `metadata` | object | Batch deletion summary including counts | --- # SailPoint (/integrations/sailpoint) {/* MANUAL-CONTENT-START:intro */} The SailPoint integration connects Agent Serve workflows to SailPoint Identity Security Cloud (ISC) with a Personal Access Token (PAT). Enter the tenant name from your ISC URL—or the full `*.api.identitynow.com` / `*.api.identitynowgov.com` host—plus the PAT client ID and client secret. Agent Serve exchanges those credentials at the tenant's `/oauth/token` endpoint and calls SailPoint's current service-versioned endpoints, such as `/identities/v1`, `/access-requests/v1`, and `/certifications/v1`. There is no global API-version setting. Create the PAT with the least-privileged scopes required by the actions in your workflow. Common read scopes include `sp:search:read`, `idn:identity:read`, `idn:accounts:read`, `idn:entitlement:read`, `idn:role-unchecked:read` or `idn:role-checked:read`, `idn:access-profile:read`, `idn:sources:read`, `idn:campaign:read`, `idn:access-request-status:read`, `idn:access-request-config:read`, `idn:task-management:read`, and `idn:access-request-approvals:read`. SailPoint lists `idn:access-request:manage` and `idn:access-request-self:manage` for access-request submission, `idn:access-request:create` for account-selection discovery, `idn:access-request:manage` for cancellation, `idn:campaign:manage` for certification decisions and sign-off, `idn:access-request-approvals:manage` for approval actions, `idn:sources:manage` for account import, and `idn:entitlement:manage` for entitlement import and entitlement request configuration. Some identity-governance endpoints require a user-context PAT and an appropriate SailPoint user authority in addition to an OAuth scope; scopes never grant authority beyond the PAT owner's ISC permissions. List actions return one bounded page. Standard collections accept up to 250 records per call; role collections accept up to 50; Search accepts up to 10,000. Use `offset`, `sorters`, or Search's `searchAfter` cursor to continue. Enable `count` only when you need the provider's `X-Total-Count` header. Omitting Search `indices` searches every index allowed by SailPoint; complex Search request fields are available as structured JSON inputs. Access requests are asynchronous. A successful submission returns SailPoint's `newRequests` and `existingRequests` tracking records, including the access-request IDs needed by the status tools. The standard request form applies the same requested items to every identity; use `requestedForWithRequestedItems` when identities need different items, dates, forms, or account selections. Use **Get Account Selections** before a machine grant/modify or a human multi-account request, then copy the returned source/account selection into **Request Access**. Account-selection discovery accepts at most 25 flat requested items. An entitlement revoke is limited to one entitlement per request, while entitlement grants are limited to 25 entitlements and 10 identities. Agent Serve also caps other request recipient/item arrays at 250 to keep execution payloads bounded. Use **Get Access Request Config** to inspect the tenant's request-on-behalf-of and machine-identity settings. Use **Get Entitlement Request Config** to inspect one entitlement's grant, revocation, duration, approval, and form requirements before constructing a request. These configuration reads help a workflow avoid offering a request shape the tenant or entitlement does not permit. Account and entitlement imports upload a CSV to a source and return a task that can be followed with **Get Task Status**. Agent Serve caps each uploaded CSV at 25 MiB and does not automatically poll the task. The file must be available to the workflow owner, and the source must support the corresponding import operation. The 40 actions cover six connected workflows: search and entity lookup; account, entitlement, role, access-profile, and source inventory; access-request configuration and account-selection discovery; access request submission, cancellation, approval, rejection, and status; campaign and certification review, decision, and sign-off; and CSV import plus task monitoring. Provider-defined objects such as account attributes and Search documents remain JSON because their fields depend on the tenant, source, index, and field projection. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect SailPoint Identity Security Cloud with a Personal Access Token to search identity-governance data, manage access requests and approvals, review certifications, and import source data. The token owner and scopes determine the operations available to the integration. ## Actions [#actions] ### SailPoint Approve Access Request [#sailpoint-approve-access-request] Approve one pending access-request approval. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `approvalId` | string | Yes | Approval ID | | `comment` | string | No | Optional reviewer comment | #### Output [#output] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------------- | | `accepted` | boolean | Whether SailPoint accepted the asynchronous action | | `status` | number | Provider response status (normally 202) | ### SailPoint Cancel Access Request [#sailpoint-cancel-access-request] Cancel an access request that has not passed approval. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `accountActivityId` | string | Yes | Account activity / identity request ID | | `comment` | string | Yes | Cancellation reason | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------------- | | `accepted` | boolean | Whether SailPoint accepted the asynchronous action | | `status` | number | Provider response status (normally 202) | ### SailPoint Decide Certification Review Items [#sailpoint-decide-certification-review-items] Approve or revoke 1-250 review items in an identity certification. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Certification ID | | `decisions` | array | Yes | Array of \{id, decision: APPROVE\|REVOKE, bulk, proposedEndDate?, recommendation?, comments?} | #### Output [#output-2] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------ | | `certification` | object | Updated identity certification | | ↳ `id` | string | Certification ID | | ↳ `name` | string | Certification name | | ↳ `campaign` | json | Campaign reference | | ↳ `completed` | boolean | Whether all decisions are complete | | ↳ `identitiesCompleted` | number | Identities fully reviewed | | ↳ `identitiesTotal` | number | Total identities | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `decisionsMade` | number | Decisions made | | ↳ `decisionsTotal` | number | Total decisions | | ↳ `due` | string | Certification due timestamp | | ↳ `signed` | string | Sign-off timestamp | | ↳ `reviewer` | json | Reviewer reference | | ↳ `reassignment` | json | Reassignment details | | ↳ `hasErrors` | boolean | Whether the certification has errors | | ↳ `errorMessage` | string | Certification error message | | ↳ `phase` | string | Certification phase | ### SailPoint Get Access Profile [#sailpoint-get-access-profile] Get an access profile by ID. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Access profile ID | #### Output [#output-3] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------- | | `accessProfile` | object | SailPoint access profile | | ↳ `id` | string | Access profile ID | | ↳ `name` | string | Access profile name | | ↳ `description` | string | Access profile description | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `enabled` | boolean | Whether the access profile is enabled | | ↳ `owner` | json | Primary owner reference | | ↳ `source` | json | Source reference | | ↳ `entitlements` | array | Entitlement references | | ↳ `requestable` | boolean | Whether the access profile is requestable | | ↳ `accessRequestConfig` | json | Access-request configuration | | ↳ `revocationRequestConfig` | json | Revocation-request configuration | | ↳ `segments` | array | Segment IDs | | ↳ `accessModelMetadata` | json | Access-model metadata | | ↳ `provisioningCriteria` | json | Multi-account provisioning criteria | | ↳ `additionalOwners` | array | Additional owner references | ### SailPoint Get Access Profile Entitlements [#sailpoint-get-access-profile-entitlements] List entitlements in one access profile. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Access profile ID | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-4] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------- | | `items` | array | Entitlements in this access profile | | ↳ `id` | string | Entitlement ID | | ↳ `name` | string | Entitlement name | | ↳ `attribute` | string | Source entitlement attribute | | ↳ `value` | string | Source entitlement value | | ↳ `sourceSchemaObjectType` | string | Source schema object type | | ↳ `description` | string | Entitlement description | | ↳ `privileged` | boolean | Whether the entitlement is privileged | | ↳ `cloudGoverned` | boolean | Whether SailPoint governs the entitlement | | ↳ `requestable` | boolean | Whether the entitlement is requestable | | ↳ `owner` | object | Primary owner reference | | ↳ `id` | string | Identity ID | | ↳ `type` | string | IDENTITY | | ↳ `name` | string | Identity display name | | ↳ `additionalOwners` | array | Additional owner references | | ↳ `type` | string | IDENTITY or GOVERNANCE\_GROUP | | ↳ `id` | string | Identity or governance-group ID | | ↳ `name` | string | Display name | | ↳ `manuallyUpdatedFields` | json | Fields manually updated in SailPoint | | ↳ `accessModelMetadata` | object | Access-model metadata | | ↳ `attributes` | array | Access-model metadata attributes | | ↳ `key` | string | Metadata type identifier | | ↳ `name` | string | Metadata type display name | | ↳ `multiselect` | boolean | Whether the metadata accepts multiple values | | ↳ `status` | string | Metadata item status | | ↳ `type` | string | Metadata item type | | ↳ `objectTypes` | array | Applicable object types | | ↳ `description` | string | Metadata item description | | ↳ `values` | array | Metadata values | | ↳ `value` | string | Metadata value | | ↳ `name` | string | Metadata value display name | | ↳ `status` | string | Metadata value status | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `source` | object | Source reference | | ↳ `id` | string | Source ID | | ↳ `type` | string | SOURCE | | ↳ `name` | string | Source name | | ↳ `attributes` | json | Source-defined entitlement attributes | | ↳ `segments` | array | Segment IDs | | ↳ `directPermissions` | array | Direct permissions | | ↳ `rights` | array | Rights granted on the target | | ↳ `target` | string | Permission target | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint Get Access Request Config [#sailpoint-get-access-request-config] Get tenant access-request, request-on-behalf-of, and machine-identity configuration. #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | #### Output [#output-5] | Parameter | Type | Description | | -------------------------------------------- | ------- | -------------------------------------------------------------------------- | | `accessRequestConfig` | object | Tenant access-request configuration | | ↳ `approvalsMustBeExternal` | boolean | Whether approvals must be handled externally | | ↳ `reauthorizationEnabled` | boolean | Whether reauthorization is enabled | | ↳ `requestOnBehalfOfConfig` | object | Request-on-behalf-of policy | | ↳ `allowRequestOnBehalfOfAnyoneByAnyone` | boolean | Whether anyone may request for anyone | | ↳ `allowRequestOnBehalfOfEmployeeByManager` | boolean | Whether managers may request for their employees | | ↳ `allowRequestOnBehalfOfForMachineIdentity` | boolean | Whether anyone may request for a machine identity | | ↳ `allowRequestForMachineByOwner` | boolean | Whether machine owners may request for their machines | | ↳ `entitlementRequestConfig` | object | Tenant entitlement request configuration | | ↳ `accessRequestConfig` | object | Entitlement grant request configuration | | ↳ `approvalSchemes` | array | Ordered approval schemes | | ↳ `approverType` | string | ENTITLEMENT\_OWNER, SOURCE\_OWNER, MANAGER, GOVERNANCE\_GROUP, or WORKFLOW | | ↳ `approverId` | string | Governance group or workflow approver ID | | ↳ `requestCommentRequired` | boolean | Whether a request comment is required | | ↳ `denialCommentRequired` | boolean | Whether a denial comment is required | | ↳ `reauthorizationRequired` | boolean | Whether reauthorization is required | | ↳ `requireEndDate` | boolean | Whether an end date is required | | ↳ `maxPermittedAccessDuration` | object | Maximum permitted access duration | | ↳ `value` | number | Duration value | | ↳ `timeUnit` | string | HOURS, DAYS, WEEKS, or MONTHS | | ↳ `formDefinitionId` | string | Request form definition ID | | ↳ `revocationRequestConfig` | object | Entitlement revocation request configuration | | ↳ `approvalSchemes` | array | Ordered revocation approval schemes | | ↳ `approverType` | string | ENTITLEMENT\_OWNER, SOURCE\_OWNER, MANAGER, GOVERNANCE\_GROUP, or WORKFLOW | | ↳ `approverId` | string | Governance group or workflow approver ID | | ↳ `govGroupVisibilityEnabled` | boolean | Whether governance group visibility is enabled | | ↳ `machineIdentityAccessRequestEnabled` | boolean | Whether machine identity access requests are enabled | ### SailPoint Get Access Request Status [#sailpoint-get-access-request-status] List requested-item status records for access requests. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `requestedFor` | string | No | Identity ID for whom the access was requested | | `requestedBy` | string | No | Identity ID that submitted the access request | | `regardingIdentity` | string | No | Identity ID that is either the requester or the request target | | `assignedTo` | string | No | Identity ID assigned to the access-request work item | | `requestState` | string | No | EXECUTING | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-6] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------ | | `items` | array | Requested item status records in this page | | ↳ `id` | string | Requested item status ID | | ↳ `name` | string | Requested item name | | ↳ `type` | string | Requested item type | | ↳ `cancelledRequestDetails` | json | Cancellation details | | ↳ `errorMessages` | array | Localized request errors | | ↳ `state` | string | Request state | | ↳ `approvalDetails` | array | Approval details | | ↳ `approvalIds` | array | Approval IDs | | ↳ `manualWorkItemDetails` | array | Manual provisioning work items | | ↳ `accountActivityItemId` | string | Account activity item ID | | ↳ `requestType` | string | Access request type | | ↳ `modified` | string | Last modification timestamp | | ↳ `created` | string | Creation timestamp | | ↳ `requester` | json | Requester reference | | ↳ `requestedFor` | json | Requested-for identity reference | | ↳ `identityType` | string | HUMAN or MACHINE | | ↳ `requesterComment` | json | Requester comment | | ↳ `sodViolationContext` | json | Separation-of-duties violation context | | ↳ `provisioningDetails` | json | Provisioning details | | ↳ `preApprovalTriggerDetails` | json | Pre-approval trigger details | | ↳ `accessRequestPhases` | array | Request lifecycle phases | | ↳ `description` | string | Requested object description | | ↳ `startDate` | string | Requested start date | | ↳ `removeDate` | string | Requested removal date | | ↳ `cancelable` | boolean | Whether the request can be cancelled | | ↳ `accessRequestId` | string | Access request ID | | ↳ `clientMetadata` | json | Caller-provided string metadata | | ↳ `requestedAccounts` | array | Selected account references | | ↳ `privilegeLevel` | string | Requested object privilege level | | ↳ `jitDetails` | array | Just-in-time access details | | ↳ `form` | json | Completed request form | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint Get Account [#sailpoint-get-account] Get an account from the current /accounts/v1 service by ID. #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Account ID | #### Output [#output-7] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------- | | `account` | object | SailPoint account | | ↳ `id` | string | Account ID | | ↳ `name` | string | Account name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `sourceId` | string | Source ID | | ↳ `sourceName` | string | Source name | | ↳ `identityId` | string | Correlated identity ID | | ↳ `cloudLifecycleState` | string | Cloud lifecycle state | | ↳ `identityState` | string | Identity state | | ↳ `connectionType` | string | Source connection type | | ↳ `isMachine` | boolean | Whether this is a machine account | | ↳ `recommendation` | json | Correlation recommendation | | ↳ `attributes` | json | Source-defined account attributes | | ↳ `authoritative` | boolean | Whether the account is authoritative | | ↳ `description` | string | Account description | | ↳ `disabled` | boolean | Whether the account is disabled | | ↳ `locked` | boolean | Whether the account is locked | | ↳ `nativeIdentity` | string | Native account identifier | | ↳ `systemAccount` | boolean | Whether this is a system account | | ↳ `uncorrelated` | boolean | Whether the account is uncorrelated | | ↳ `uuid` | string | Account UUID | | ↳ `manuallyCorrelated` | boolean | Whether the account was manually correlated | | ↳ `hasEntitlements` | boolean | Whether the account has entitlements | | ↳ `identity` | json | Correlated identity reference | | ↳ `sourceOwner` | json | Source owner reference | | ↳ `features` | string | Account features | | ↳ `origin` | string | Account origin | | ↳ `ownerIdentity` | json | Owner identity reference | ### SailPoint Get Account Activity [#sailpoint-get-account-activity] Get an account activity by ID. #### Input [#input-8] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Account activity ID | #### Output [#output-8] | Parameter | Type | Description | | ---------------------------- | ------ | ------------------------------- | | `accountActivity` | object | SailPoint account activity | | ↳ `id` | string | Account activity ID | | ↳ `name` | string | Account activity name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `completed` | string | Completion timestamp | | ↳ `completionStatus` | string | Completion status | | ↳ `type` | string | Activity type | | ↳ `requesterIdentitySummary` | json | Requester identity summary | | ↳ `targetIdentitySummary` | json | Target identity summary | | ↳ `errors` | array | Provisioning errors | | ↳ `warnings` | array | Provisioning warnings | | ↳ `items` | array | Account activity items | | ↳ `executionStatus` | string | Execution status | | ↳ `clientMetadata` | json | Caller-provided string metadata | ### SailPoint Get Account Entitlements [#sailpoint-get-account-entitlements] List entitlements granted to one account. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Account ID | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-9] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------- | | `items` | array | Entitlements on this account | | ↳ `id` | string | Entitlement ID | | ↳ `name` | string | Entitlement name | | ↳ `attribute` | string | Source entitlement attribute | | ↳ `value` | string | Source entitlement value | | ↳ `sourceSchemaObjectType` | string | Source schema object type | | ↳ `description` | string | Entitlement description | | ↳ `privileged` | boolean | Whether the entitlement is privileged | | ↳ `cloudGoverned` | boolean | Whether SailPoint governs the entitlement | | ↳ `requestable` | boolean | Whether the entitlement is requestable | | ↳ `owner` | object | Primary owner reference | | ↳ `id` | string | Identity ID | | ↳ `type` | string | IDENTITY | | ↳ `name` | string | Identity display name | | ↳ `additionalOwners` | array | Additional owner references | | ↳ `type` | string | IDENTITY or GOVERNANCE\_GROUP | | ↳ `id` | string | Identity or governance-group ID | | ↳ `name` | string | Display name | | ↳ `manuallyUpdatedFields` | json | Fields manually updated in SailPoint | | ↳ `accessModelMetadata` | object | Access-model metadata | | ↳ `attributes` | array | Access-model metadata attributes | | ↳ `key` | string | Metadata type identifier | | ↳ `name` | string | Metadata type display name | | ↳ `multiselect` | boolean | Whether the metadata accepts multiple values | | ↳ `status` | string | Metadata item status | | ↳ `type` | string | Metadata item type | | ↳ `objectTypes` | array | Applicable object types | | ↳ `description` | string | Metadata item description | | ↳ `values` | array | Metadata values | | ↳ `value` | string | Metadata value | | ↳ `name` | string | Metadata value display name | | ↳ `status` | string | Metadata value status | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `source` | object | Source reference | | ↳ `id` | string | Source ID | | ↳ `type` | string | SOURCE | | ↳ `name` | string | Source name | | ↳ `attributes` | json | Source-defined entitlement attributes | | ↳ `segments` | array | Segment IDs | | ↳ `directPermissions` | array | Direct permissions | | ↳ `rights` | array | Rights granted on the target | | ↳ `target` | string | Permission target | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint Get Account Selections [#sailpoint-get-account-selections] Resolve eligible source accounts before submitting a machine or multi-account access request. #### Input [#input-10] | Parameter | Type | Required | Description | | -------------------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `requestType` | string | No | GRANT\_ACCESS (default), REVOKE\_ACCESS, or MODIFY\_ACCESS | | `requestedFor` | array | No | Human identity IDs for the flat request shape | | `requestedItems` | array | No | Flat human request items | | `requestedForWithRequestedItems` | array | No | Per-identity request items for account selection and all machine identity requests | | `clientMetadata` | json | No | Arbitrary string-to-string metadata returned by related APIs | #### Output [#output-10] | Parameter | Type | Description | | ---------------------------------- | ------- | ------------------------------------------------------------------ | | `accountSelections` | object | Eligible account selections grouped by identity and requested item | | ↳ `identities` | array | Identity-specific eligible account selections | | ↳ `requestedItems` | array | Requested items and their eligible accounts | | ↳ `description` | string | Requested item description | | ↳ `accountsSelectionBlocked` | boolean | Whether account selection is blocked | | ↳ `accountsSelectionBlockedReason` | string | Provider reason account selection is blocked | | ↳ `type` | string | ACCESS\_PROFILE, ROLE, or ENTITLEMENT | | ↳ `id` | string | Requested item ID | | ↳ `name` | string | Requested item name | | ↳ `sources` | array | Sources and eligible accounts for this item | | ↳ `type` | string | SOURCE or provider reference type | | ↳ `id` | string | Source ID | | ↳ `name` | string | Source name | | ↳ `accounts` | array | Eligible accounts on this source | | ↳ `uuid` | string | Account UUID | | ↳ `nativeIdentity` | string | Native account identifier | | ↳ `type` | string | ACCOUNT or provider reference type | | ↳ `id` | string | Account reference ID | | ↳ `name` | string | Account name | | ↳ `accountsSelectionRequired` | boolean | Whether this identity requires account selection | | ↳ `type` | string | IDENTITY, MACHINE\_IDENTITY, or provider reference type | | ↳ `id` | string | Identity ID | | ↳ `name` | string | Identity name | ### SailPoint Get Campaign [#sailpoint-get-campaign] Get a certification campaign by ID. #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Campaign ID | | `detail` | string | No | SLIM or FULL | #### Output [#output-11] | Parameter | Type | Description | | --------------------------------- | ------- | -------------------------------------------- | | `campaign` | object | SailPoint certification campaign | | ↳ `id` | string | Campaign ID | | ↳ `name` | string | Campaign name | | ↳ `description` | string | Campaign description | | ↳ `deadline` | string | Campaign deadline | | ↳ `type` | string | Campaign type | | ↳ `status` | string | Campaign status | | ↳ `correlatedStatus` | string | Campaign correlation status | | ↳ `mandatoryCommentRequirement` | string | Decision comment requirement | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `recommendationsEnabled` | boolean | Whether recommendations are enabled | | ↳ `emailNotificationEnabled` | boolean | Whether email notifications are enabled | | ↳ `autoRevokeAllowed` | boolean | Whether automatic revocation is allowed | | ↳ `totalCertifications` | number | Total certifications | | ↳ `completedCertifications` | number | Completed certifications | | ↳ `alerts` | array | Campaign alerts | | ↳ `filter` | json | Campaign filter reference | | ↳ `sunsetCommentsRequired` | boolean | Whether sunset-date changes require comments | | ↳ `sourceOwnerCampaignInfo` | json | Source-owner campaign configuration | | ↳ `searchCampaignInfo` | json | Search campaign configuration | | ↳ `roleCompositionCampaignInfo` | json | Role-composition campaign configuration | | ↳ `machineAccountCampaignInfo` | json | Machine-account campaign configuration | | ↳ `sourcesWithOrphanEntitlements` | array | Sources containing orphan entitlements | ### SailPoint Get Certification [#sailpoint-get-certification] Get an identity certification by ID. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Certification ID | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------ | | `certification` | object | SailPoint identity certification | | ↳ `id` | string | Certification ID | | ↳ `name` | string | Certification name | | ↳ `campaign` | json | Campaign reference | | ↳ `completed` | boolean | Whether all decisions are complete | | ↳ `identitiesCompleted` | number | Identities fully reviewed | | ↳ `identitiesTotal` | number | Total identities | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `decisionsMade` | number | Decisions made | | ↳ `decisionsTotal` | number | Total decisions | | ↳ `due` | string | Certification due timestamp | | ↳ `signed` | string | Sign-off timestamp | | ↳ `reviewer` | json | Reviewer reference | | ↳ `reassignment` | json | Reassignment details | | ↳ `hasErrors` | boolean | Whether the certification has errors | | ↳ `errorMessage` | string | Certification error message | | ↳ `phase` | string | Certification phase | ### SailPoint Get Entitlement [#sailpoint-get-entitlement] Get an entitlement by ID. #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Entitlement ID | #### Output [#output-13] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------- | | `entitlement` | object | SailPoint entitlement | | ↳ `id` | string | Entitlement ID | | ↳ `name` | string | Entitlement name | | ↳ `attribute` | string | Source entitlement attribute | | ↳ `value` | string | Source entitlement value | | ↳ `sourceSchemaObjectType` | string | Source schema object type | | ↳ `description` | string | Entitlement description | | ↳ `privilegeLevel` | object | Privilege-level details | | ↳ `direct` | string | Direct privilege level assigned to the entitlement | | ↳ `setBy` | string | User or process that set the privilege level | | ↳ `setByType` | string | Method by which the privilege level was set | | ↳ `inherited` | string | Inherited privilege level on the entitlement | | ↳ `effective` | string | Effective privilege level assigned to the entitlement | | ↳ `tags` | array | Entitlement tags | | ↳ `cloudGoverned` | boolean | Whether SailPoint governs the entitlement | | ↳ `requestable` | boolean | Whether the entitlement is requestable | | ↳ `owner` | object | Primary owner reference | | ↳ `id` | string | Identity ID | | ↳ `type` | string | IDENTITY | | ↳ `name` | string | Identity display name | | ↳ `manuallyUpdatedFields` | json | Fields manually updated in SailPoint | | ↳ `accessModelMetadata` | object | Access-model metadata | | ↳ `attributes` | array | Access-model metadata attributes | | ↳ `key` | string | Metadata type identifier | | ↳ `name` | string | Metadata type display name | | ↳ `multiselect` | boolean | Whether the metadata accepts multiple values | | ↳ `status` | string | Metadata item status | | ↳ `type` | string | Metadata item type | | ↳ `objectTypes` | array | Applicable object types | | ↳ `description` | string | Metadata item description | | ↳ `values` | array | Metadata values | | ↳ `value` | string | Metadata value | | ↳ `name` | string | Metadata value display name | | ↳ `status` | string | Metadata value status | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `source` | object | Source reference | | ↳ `id` | string | Source ID | | ↳ `type` | string | SOURCE | | ↳ `name` | string | Source name | | ↳ `attributes` | json | Source-defined entitlement attributes | | ↳ `segments` | array | Segment IDs | | ↳ `directPermissions` | array | Direct permissions | | ↳ `rights` | array | Rights granted on the target | | ↳ `target` | string | Permission target | ### SailPoint Get Entitlement Request Config [#sailpoint-get-entitlement-request-config] Get grant, revocation, duration, approval, and form settings for an entitlement. #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Entitlement ID | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------ | ------- | -------------------------------------------------------------------------- | | `entitlementRequestConfig` | object | Entitlement request configuration | | ↳ `accessRequestConfig` | object | Entitlement grant request configuration | | ↳ `approvalSchemes` | array | Ordered approval schemes | | ↳ `approverType` | string | ENTITLEMENT\_OWNER, SOURCE\_OWNER, MANAGER, GOVERNANCE\_GROUP, or WORKFLOW | | ↳ `approverId` | string | Governance group or workflow approver ID | | ↳ `requestCommentRequired` | boolean | Whether a request comment is required | | ↳ `denialCommentRequired` | boolean | Whether a denial comment is required | | ↳ `reauthorizationRequired` | boolean | Whether reauthorization is required | | ↳ `requireEndDate` | boolean | Whether an end date is required | | ↳ `maxPermittedAccessDuration` | object | Maximum permitted access duration | | ↳ `value` | number | Duration value | | ↳ `timeUnit` | string | HOURS, DAYS, WEEKS, or MONTHS | | ↳ `formDefinitionId` | string | Request form definition ID | | ↳ `revocationRequestConfig` | object | Entitlement revocation request configuration | | ↳ `approvalSchemes` | array | Ordered revocation approval schemes | | ↳ `approverType` | string | ENTITLEMENT\_OWNER, SOURCE\_OWNER, MANAGER, GOVERNANCE\_GROUP, or WORKFLOW | | ↳ `approverId` | string | Governance group or workflow approver ID | ### SailPoint Get Identity [#sailpoint-get-identity] Get an identity from the current /identities/v1 service by ID. #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Identity ID | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------- | | `identity` | object | SailPoint identity | | ↳ `id` | string | Identity ID | | ↳ `name` | string | Identity name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `alias` | string | Identity alias | | ↳ `emailAddress` | string | Identity email address | | ↳ `processingState` | string | Identity processing state | | ↳ `identityStatus` | string | Identity status | | ↳ `managerRef` | json | Manager reference | | ↳ `isManager` | boolean | Whether the identity manages other identities | | ↳ `lastRefresh` | string | Last identity refresh timestamp | | ↳ `attributes` | json | Tenant-defined identity attributes | | ↳ `lifecycleState` | json | Lifecycle-state reference | ### SailPoint Get Role [#sailpoint-get-role] Get a role by ID. #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Role ID | #### Output [#output-16] | Parameter | Type | Description | | --------------------------- | ------- | -------------------------------- | | `role` | object | SailPoint role | | ↳ `id` | string | Role ID | | ↳ `name` | string | Role name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `description` | string | Role description | | ↳ `owner` | json | Primary owner reference | | ↳ `additionalOwners` | array | Additional owner references | | ↳ `accessProfiles` | array | Access profile references | | ↳ `entitlements` | array | Entitlement references | | ↳ `membership` | json | Role membership selector | | ↳ `legacyMembershipInfo` | json | Legacy membership information | | ↳ `enabled` | boolean | Whether the role is enabled | | ↳ `requestable` | boolean | Whether the role is requestable | | ↳ `accessRequestConfig` | json | Access-request configuration | | ↳ `revocationRequestConfig` | json | Revocation-request configuration | | ↳ `segments` | array | Segment IDs | | ↳ `dimensional` | boolean | Whether the role is dimensional | | ↳ `dimensionRefs` | array | Dimension references | | ↳ `accessModelMetadata` | json | Access-model metadata | | ↳ `privilegeLevel` | string | Role privilege level | ### SailPoint Get Role Entitlements [#sailpoint-get-role-entitlements] List entitlements in one role using the current non-experimental roles service. #### Input [#input-17] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Role ID | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum roles for this page (0-50; default 50) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-17] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------- | | `items` | array | Entitlements in this role | | ↳ `id` | string | Entitlement ID | | ↳ `name` | string | Entitlement name | | ↳ `attribute` | string | Source entitlement attribute | | ↳ `value` | string | Source entitlement value | | ↳ `sourceSchemaObjectType` | string | Source schema object type | | ↳ `description` | string | Entitlement description | | ↳ `privileged` | boolean | Whether the entitlement is privileged | | ↳ `cloudGoverned` | boolean | Whether SailPoint governs the entitlement | | ↳ `requestable` | boolean | Whether the entitlement is requestable | | ↳ `owner` | object | Primary owner reference | | ↳ `id` | string | Identity ID | | ↳ `type` | string | IDENTITY | | ↳ `name` | string | Identity display name | | ↳ `additionalOwners` | array | Additional owner references | | ↳ `type` | string | IDENTITY or GOVERNANCE\_GROUP | | ↳ `id` | string | Identity or governance-group ID | | ↳ `name` | string | Display name | | ↳ `manuallyUpdatedFields` | json | Fields manually updated in SailPoint | | ↳ `accessModelMetadata` | object | Access-model metadata | | ↳ `attributes` | array | Access-model metadata attributes | | ↳ `key` | string | Metadata type identifier | | ↳ `name` | string | Metadata type display name | | ↳ `multiselect` | boolean | Whether the metadata accepts multiple values | | ↳ `status` | string | Metadata item status | | ↳ `type` | string | Metadata item type | | ↳ `objectTypes` | array | Applicable object types | | ↳ `description` | string | Metadata item description | | ↳ `values` | array | Metadata values | | ↳ `value` | string | Metadata value | | ↳ `name` | string | Metadata value display name | | ↳ `status` | string | Metadata value status | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `source` | object | Source reference | | ↳ `id` | string | Source ID | | ↳ `type` | string | SOURCE | | ↳ `name` | string | Source name | | ↳ `attributes` | json | Source-defined entitlement attributes | | ↳ `segments` | array | Segment IDs | | ↳ `directPermissions` | array | Direct permissions | | ↳ `rights` | array | Rights granted on the target | | ↳ `target` | string | Permission target | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint Get Source [#sailpoint-get-source] Get an identity source by ID. #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Source ID | #### Output [#output-18] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------- | | `source` | object | SailPoint identity source | | ↳ `id` | string | Source ID | | ↳ `name` | string | Source name | | ↳ `description` | string | Source description | | ↳ `owner` | json | Source owner reference | | ↳ `cluster` | json | Virtual appliance cluster reference | | ↳ `accountCorrelationConfig` | json | Account correlation configuration | | ↳ `accountCorrelationRule` | json | Account correlation rule reference | | ↳ `managerCorrelationMapping` | json | Manager correlation mapping | | ↳ `managerCorrelationRule` | json | Manager correlation rule reference | | ↳ `beforeProvisioningRule` | json | Before-provisioning rule reference | | ↳ `schemas` | array | Source schemas | | ↳ `passwordPolicies` | array | Password policy references | | ↳ `features` | array | Source features | | ↳ `type` | string | Source type | | ↳ `connector` | string | Connector name | | ↳ `connectorClass` | string | Connector implementation class | | ↳ `connectorAttributes` | json | Connector-specific attributes | | ↳ `deleteThreshold` | number | Account deletion threshold | | ↳ `authoritative` | boolean | Whether the source is authoritative | | ↳ `managementWorkgroup` | json | Management workgroup reference | | ↳ `healthy` | boolean | Whether the source is healthy | | ↳ `status` | string | Source status | | ↳ `since` | string | Status start timestamp | | ↳ `connectorId` | string | Connector ID | | ↳ `connectorName` | string | Connector display name | | ↳ `connectionType` | string | Connection type | | ↳ `connectorImplementationId` | string | Connector implementation ID | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `credentialProviderEnabled` | boolean | Whether a credential provider is enabled | | ↳ `category` | string | Source category | ### SailPoint Get Task Status [#sailpoint-get-task-status] Get the current status of a SailPoint background task by ID. #### Input [#input-19] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Task ID | #### Output [#output-19] | Parameter | Type | Description | | ------------------------- | ------ | ------------------------------- | | `task` | object | SailPoint task status | | ↳ `id` | string | Task ID | | ↳ `type` | string | Task type | | ↳ `uniqueName` | string | Task unique name | | ↳ `description` | string | Task description | | ↳ `parentName` | string | Parent task name | | ↳ `launcher` | string | Task launcher | | ↳ `target` | object | Task target | | ↳ `id` | string | Target ID | | ↳ `type` | string | APPLICATION or IDENTITY | | ↳ `name` | string | Target name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `launched` | string | Launch timestamp | | ↳ `completed` | string | Completion timestamp | | ↳ `completionStatus` | string | Task completion status | | ↳ `messages` | array | Task messages | | ↳ `type` | string | INFO, WARN, or ERROR | | ↳ `localizedText` | object | Localized task message | | ↳ `locale` | string | Message locale | | ↳ `message` | string | Message text | | ↳ `key` | string | Message key | | ↳ `parameters` | array | Internationalization parameters | | ↳ `returns` | array | Task return descriptors | | ↳ `name` | string | Return value display name | | ↳ `attributeName` | string | Task attribute name | | ↳ `attributes` | json | Task-specific attributes | | ↳ `progress` | string | Human-readable progress | | ↳ `percentComplete` | number | Completion percentage | | ↳ `taskDefinitionSummary` | object | Task definition summary | | ↳ `id` | string | Task-definition ID | | ↳ `uniqueName` | string | Task-definition unique name | | ↳ `description` | string | Task-definition description | | ↳ `parentName` | string | Parent task-definition name | | ↳ `executor` | string | Task-definition executor | | ↳ `arguments` | json | Task-definition arguments | ### SailPoint List Access Profiles [#sailpoint-list-access-profiles] List access profiles with current visibility and segmentation controls. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `forSubadmin` | string | No | Subadmin identity ID or 'me' whose visible resources should be returned | | `forSegmentIds` | string | No | Comma-separated segment IDs used to restrict the returned resources | | `includeUnsegmented` | boolean | No | Include resources not assigned to a segment (default true) | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-20] | Parameter | Type | Description | | --------------------------- | ------- | ----------------------------------------- | | `items` | array | Access profiles in this page | | ↳ `id` | string | Access profile ID | | ↳ `name` | string | Access profile name | | ↳ `description` | string | Access profile description | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `enabled` | boolean | Whether the access profile is enabled | | ↳ `owner` | json | Primary owner reference | | ↳ `source` | json | Source reference | | ↳ `entitlements` | array | Entitlement references | | ↳ `requestable` | boolean | Whether the access profile is requestable | | ↳ `accessRequestConfig` | json | Access-request configuration | | ↳ `revocationRequestConfig` | json | Revocation-request configuration | | ↳ `segments` | array | Segment IDs | | ↳ `accessModelMetadata` | json | Access-model metadata | | ↳ `provisioningCriteria` | json | Multi-account provisioning criteria | | ↳ `additionalOwners` | array | Additional owner references | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Account Activities [#sailpoint-list-account-activities] List provisioning activities with identity, filter, sort, and page controls. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `requestedFor` | string | No | Target identity ID or 'me'; mutually exclusive with regardingIdentity | | `requestedBy` | string | No | Requester identity ID or 'me'; mutually exclusive with regardingIdentity | | `regardingIdentity` | string | No | Requester-or-target identity ID or 'me'; excludes requestedFor/requestedBy | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-21] | Parameter | Type | Description | | ---------------------------- | ------ | --------------------------------------- | | `items` | array | Account activities in this page | | ↳ `id` | string | Account activity ID | | ↳ `name` | string | Account activity name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `completed` | string | Completion timestamp | | ↳ `completionStatus` | string | Completion status | | ↳ `type` | string | Activity type | | ↳ `requesterIdentitySummary` | json | Requester identity summary | | ↳ `targetIdentitySummary` | json | Target identity summary | | ↳ `errors` | array | Provisioning errors | | ↳ `warnings` | array | Provisioning warnings | | ↳ `items` | array | Account activity items | | ↳ `executionStatus` | string | Execution status | | ↳ `clientMetadata` | json | Caller-provided string metadata | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Accounts [#sailpoint-list-accounts] List accounts with documented filtering, sorting, detail, and pagination. #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `detailLevel` | string | No | SLIM or FULL (default FULL) | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------- | | `items` | array | Accounts in this page | | ↳ `id` | string | Account ID | | ↳ `name` | string | Account name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `sourceId` | string | Source ID | | ↳ `sourceName` | string | Source name | | ↳ `identityId` | string | Correlated identity ID | | ↳ `cloudLifecycleState` | string | Cloud lifecycle state | | ↳ `identityState` | string | Identity state | | ↳ `connectionType` | string | Source connection type | | ↳ `isMachine` | boolean | Whether this is a machine account | | ↳ `recommendation` | json | Correlation recommendation | | ↳ `attributes` | json | Source-defined account attributes | | ↳ `authoritative` | boolean | Whether the account is authoritative | | ↳ `description` | string | Account description | | ↳ `disabled` | boolean | Whether the account is disabled | | ↳ `locked` | boolean | Whether the account is locked | | ↳ `nativeIdentity` | string | Native account identifier | | ↳ `systemAccount` | boolean | Whether this is a system account | | ↳ `uncorrelated` | boolean | Whether the account is uncorrelated | | ↳ `uuid` | string | Account UUID | | ↳ `manuallyCorrelated` | boolean | Whether the account was manually correlated | | ↳ `hasEntitlements` | boolean | Whether the account has entitlements | | ↳ `identity` | json | Correlated identity reference | | ↳ `sourceOwner` | json | Source owner reference | | ↳ `features` | string | Account features | | ↳ `origin` | string | Account origin | | ↳ `ownerIdentity` | json | Owner identity reference | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Campaigns [#sailpoint-list-campaigns] List certification campaigns with detail, filtering, sorting, and pagination. #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `detail` | string | No | SLIM (default) or FULL | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-23] | Parameter | Type | Description | | --------------------------------- | ------- | -------------------------------------------- | | `items` | array | Certification campaigns in this page | | ↳ `id` | string | Campaign ID | | ↳ `name` | string | Campaign name | | ↳ `description` | string | Campaign description | | ↳ `deadline` | string | Campaign deadline | | ↳ `type` | string | Campaign type | | ↳ `status` | string | Campaign status | | ↳ `correlatedStatus` | string | Campaign correlation status | | ↳ `mandatoryCommentRequirement` | string | Decision comment requirement | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `recommendationsEnabled` | boolean | Whether recommendations are enabled | | ↳ `emailNotificationEnabled` | boolean | Whether email notifications are enabled | | ↳ `autoRevokeAllowed` | boolean | Whether automatic revocation is allowed | | ↳ `totalCertifications` | number | Total certifications | | ↳ `completedCertifications` | number | Completed certifications | | ↳ `alerts` | array | Campaign alerts | | ↳ `filter` | json | Campaign filter reference | | ↳ `sunsetCommentsRequired` | boolean | Whether sunset-date changes require comments | | ↳ `sourceOwnerCampaignInfo` | json | Source-owner campaign configuration | | ↳ `searchCampaignInfo` | json | Search campaign configuration | | ↳ `roleCompositionCampaignInfo` | json | Role-composition campaign configuration | | ↳ `machineAccountCampaignInfo` | json | Machine-account campaign configuration | | ↳ `sourcesWithOrphanEntitlements` | array | Sources containing orphan entitlements | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Certification Review Items [#sailpoint-list-certification-review-items] List access-review items in one identity certification. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Certification ID | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `entitlements` | string | No | Comma-separated entitlement IDs | | `accessProfiles` | string | No | Comma-separated access profile IDs | | `roles` | string | No | Comma-separated role IDs | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-24] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------- | | `items` | array | Certification access-review items in this page | | ↳ `accessSummary` | json | Reviewed access summary | | ↳ `identitySummary` | json | Reviewed identity summary | | ↳ `id` | string | Review item ID | | ↳ `completed` | boolean | Whether review is complete | | ↳ `newAccess` | boolean | Whether this is newly granted access | | ↳ `decision` | string | Current certification decision | | ↳ `comments` | string | Reviewer comments | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Certifications [#sailpoint-list-certifications] List identity certifications assigned to a reviewer. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `reviewerIdentity` | string | No | Reviewer identity ID or 'me' | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-25] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------- | | `items` | array | Identity certifications in this page | | ↳ `id` | string | Certification ID | | ↳ `name` | string | Certification name | | ↳ `campaign` | json | Campaign reference | | ↳ `completed` | boolean | Whether all decisions are complete | | ↳ `identitiesCompleted` | number | Identities fully reviewed | | ↳ `identitiesTotal` | number | Total identities | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `decisionsMade` | number | Decisions made | | ↳ `decisionsTotal` | number | Total decisions | | ↳ `due` | string | Certification due timestamp | | ↳ `signed` | string | Sign-off timestamp | | ↳ `reviewer` | json | Reviewer reference | | ↳ `reassignment` | json | Reassignment details | | ↳ `hasErrors` | boolean | Whether the certification has errors | | ↳ `errorMessage` | string | Certification error message | | ↳ `phase` | string | Certification phase | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Entitlements [#sailpoint-list-entitlements] List entitlements with current segmentation, cursor, filter, and page controls. #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `segmentedForIdentity` | string | No | Identity ID whose visible segments restrict the results | | `forSegmentIds` | string | No | Comma-separated segment IDs used to restrict the returned resources | | `includeUnsegmented` | boolean | No | Include resources not assigned to a segment (default true) | | `searchAfter` | string | No | Opaque search-after cursor from the previous entitlement page | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-26] | Parameter | Type | Description | | -------------------------- | ------- | ----------------------------------------------------- | | `items` | array | Entitlements in this page | | ↳ `id` | string | Entitlement ID | | ↳ `name` | string | Entitlement name | | ↳ `attribute` | string | Source entitlement attribute | | ↳ `value` | string | Source entitlement value | | ↳ `sourceSchemaObjectType` | string | Source schema object type | | ↳ `description` | string | Entitlement description | | ↳ `privilegeLevel` | object | Privilege-level details | | ↳ `direct` | string | Direct privilege level assigned to the entitlement | | ↳ `setBy` | string | User or process that set the privilege level | | ↳ `setByType` | string | Method by which the privilege level was set | | ↳ `inherited` | string | Inherited privilege level on the entitlement | | ↳ `effective` | string | Effective privilege level assigned to the entitlement | | ↳ `tags` | array | Entitlement tags | | ↳ `cloudGoverned` | boolean | Whether SailPoint governs the entitlement | | ↳ `requestable` | boolean | Whether the entitlement is requestable | | ↳ `owner` | object | Primary owner reference | | ↳ `id` | string | Identity ID | | ↳ `type` | string | IDENTITY | | ↳ `name` | string | Identity display name | | ↳ `manuallyUpdatedFields` | json | Fields manually updated in SailPoint | | ↳ `accessModelMetadata` | object | Access-model metadata | | ↳ `attributes` | array | Access-model metadata attributes | | ↳ `key` | string | Metadata type identifier | | ↳ `name` | string | Metadata type display name | | ↳ `multiselect` | boolean | Whether the metadata accepts multiple values | | ↳ `status` | string | Metadata item status | | ↳ `type` | string | Metadata item type | | ↳ `objectTypes` | array | Applicable object types | | ↳ `description` | string | Metadata item description | | ↳ `values` | array | Metadata values | | ↳ `value` | string | Metadata value | | ↳ `name` | string | Metadata value display name | | ↳ `status` | string | Metadata value status | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `source` | object | Source reference | | ↳ `id` | string | Source ID | | ↳ `type` | string | SOURCE | | ↳ `name` | string | Source name | | ↳ `attributes` | json | Source-defined entitlement attributes | | ↳ `segments` | array | Segment IDs | | ↳ `directPermissions` | array | Direct permissions | | ↳ `rights` | array | Rights granted on the target | | ↳ `target` | string | Permission target | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Identities [#sailpoint-list-identities] List identities with documented filtering, sorting, and pagination. #### Input [#input-27] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `defaultFilter` | string | No | CORRELATED\_ONLY (default) or NONE | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-27] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------- | | `items` | array | Identities in this page | | ↳ `id` | string | Identity ID | | ↳ `name` | string | Identity name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `alias` | string | Identity alias | | ↳ `emailAddress` | string | Identity email address | | ↳ `processingState` | string | Identity processing state | | ↳ `identityStatus` | string | Identity status | | ↳ `managerRef` | json | Manager reference | | ↳ `isManager` | boolean | Whether the identity manages other identities | | ↳ `lastRefresh` | string | Last identity refresh timestamp | | ↳ `attributes` | json | Tenant-defined identity attributes | | ↳ `lifecycleState` | json | Lifecycle-state reference | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Identity Entitlements [#sailpoint-list-identity-entitlements] List tagged entitlement references held by one identity. #### Input [#input-28] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Identity ID | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-28] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------- | | `items` | array | Entitlements held by this identity | | ↳ `objectRef` | json | Tagged entitlement reference | | ↳ `tags` | array | Tags applied to the entitlement | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Pending Access Request Approvals [#sailpoint-list-pending-access-request-approvals] List pending access-request approvals visible to the caller. #### Input [#input-29] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `ownerId` | string | No | Approval owner identity ID or 'me'; admins may omit it for all approvals | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-29] | Parameter | Type | Description | | ------------------------------- | ------- | ------------------------------------------------ | | `items` | array | Pending access-request approvals in this page | | ↳ `id` | string | Approval ID | | ↳ `accessRequestId` | string | Access request ID | | ↳ `name` | string | Approval name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `requestCreated` | string | Access-request creation timestamp | | ↳ `requestType` | string | GRANT\_ACCESS, REVOKE\_ACCESS, or MODIFY\_ACCESS | | ↳ `identityType` | string | HUMAN or MACHINE | | ↳ `requester` | json | Requester reference | | ↳ `requestedFor` | json | Requested-for identity reference | | ↳ `owner` | json | Access item owner | | ↳ `requestedObject` | json | Requested access object | | ↳ `requesterComment` | json | Requester comment | | ↳ `previousReviewersComments` | array | Previous reviewer comments | | ↳ `forwardHistory` | array | Approval forwarding history | | ↳ `commentRequiredWhenRejected` | boolean | Whether rejection requires a comment | | ↳ `actionInProcess` | string | Asynchronous action in progress | | ↳ `removeDate` | string | Requested removal date | | ↳ `removeDateUpdateRequested` | boolean | Whether this request changes the removal date | | ↳ `currentRemoveDate` | string | Removal date at request time | | ↳ `startDate` | string | Requested start date | | ↳ `startUpdateRequested` | boolean | Whether this request changes the start date | | ↳ `currentStartDate` | string | Start date at request time | | ↳ `sodViolationContext` | json | Separation-of-duties violation context | | ↳ `clientMetadata` | json | Caller-provided metadata | | ↳ `requestedAccounts` | array | Selected account references | | ↳ `privilegeLevel` | string | Requested object privilege level | | ↳ `maxPermittedAccessDuration` | json | Maximum allowed access duration | | ↳ `jitDetails` | array | Just-in-time access details | | ↳ `form` | json | Completed request form | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Roles [#sailpoint-list-roles] List roles with current visibility, segmentation, filtering, and pagination controls. #### Input [#input-30] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `forSubadmin` | string | No | Subadmin identity ID or 'me' whose visible resources should be returned | | `forSegmentIds` | string | No | Comma-separated segment IDs used to restrict the returned resources | | `includeUnsegmented` | boolean | No | Include resources not assigned to a segment (default true) | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `limit` | number | No | Maximum roles for this page (0-50; default 50) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-30] | Parameter | Type | Description | | --------------------------- | ------- | --------------------------------------- | | `items` | array | Roles in this page | | ↳ `id` | string | Role ID | | ↳ `name` | string | Role name | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `description` | string | Role description | | ↳ `owner` | json | Primary owner reference | | ↳ `additionalOwners` | array | Additional owner references | | ↳ `accessProfiles` | array | Access profile references | | ↳ `entitlements` | array | Entitlement references | | ↳ `membership` | json | Role membership selector | | ↳ `legacyMembershipInfo` | json | Legacy membership information | | ↳ `enabled` | boolean | Whether the role is enabled | | ↳ `requestable` | boolean | Whether the role is requestable | | ↳ `accessRequestConfig` | json | Access-request configuration | | ↳ `revocationRequestConfig` | json | Revocation-request configuration | | ↳ `segments` | array | Segment IDs | | ↳ `dimensional` | boolean | Whether the role is dimensional | | ↳ `dimensionRefs` | array | Dimension references | | ↳ `accessModelMetadata` | json | Access-model metadata | | ↳ `privilegeLevel` | string | Role privilege level | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint List Sources [#sailpoint-list-sources] List identity sources with visibility, filtering, sorting, and pagination controls. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `filters` | string | No | SailPoint standard collection filter expression for this operation | | `sorters` | string | No | Comma-separated supported sort fields, prefixed with - for descending order | | `forSubadmin` | string | No | Subadmin identity ID or 'me' whose visible resources should be returned | | `includeIDNSource` | boolean | No | Include the built-in IdentityNow source (default false) | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-31] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------- | | `items` | array | Sources in this page | | ↳ `id` | string | Source ID | | ↳ `name` | string | Source name | | ↳ `description` | string | Source description | | ↳ `owner` | json | Source owner reference | | ↳ `cluster` | json | Virtual appliance cluster reference | | ↳ `accountCorrelationConfig` | json | Account correlation configuration | | ↳ `accountCorrelationRule` | json | Account correlation rule reference | | ↳ `managerCorrelationMapping` | json | Manager correlation mapping | | ↳ `managerCorrelationRule` | json | Manager correlation rule reference | | ↳ `beforeProvisioningRule` | json | Before-provisioning rule reference | | ↳ `schemas` | array | Source schemas | | ↳ `passwordPolicies` | array | Password policy references | | ↳ `features` | array | Source features | | ↳ `type` | string | Source type | | ↳ `connector` | string | Connector name | | ↳ `connectorClass` | string | Connector implementation class | | ↳ `connectorAttributes` | json | Connector-specific attributes | | ↳ `deleteThreshold` | number | Account deletion threshold | | ↳ `authoritative` | boolean | Whether the source is authoritative | | ↳ `managementWorkgroup` | json | Management workgroup reference | | ↳ `healthy` | boolean | Whether the source is healthy | | ↳ `status` | string | Source status | | ↳ `since` | string | Status start timestamp | | ↳ `connectorId` | string | Connector ID | | ↳ `connectorName` | string | Connector display name | | ↳ `connectionType` | string | Connection type | | ↳ `connectorImplementationId` | string | Connector implementation ID | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `credentialProviderEnabled` | boolean | Whether a credential provider is enabled | | ↳ `category` | string | Source category | | `count` | number | Number of records returned in this page | | `totalCount` | number | Total matching records when count=true | ### SailPoint Load Accounts [#sailpoint-load-accounts] Start account aggregation for a source, optionally using a CSV file. #### Input [#input-32] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `sourceId` | string | Yes | Source ID | | `file` | file | No | Delimited-file source account CSV | | `disableOptimization` | boolean | No | Reprocess every account instead of using optimized aggregation | #### Output [#output-32] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------------- | | `success` | boolean | Whether SailPoint successfully created the task | | `task` | object | Account aggregation task | | ↳ `id` | string | Task ID | | ↳ `type` | string | Task type | | ↳ `name` | string | Task name | | ↳ `description` | string | Task description | | ↳ `launcher` | string | Task launcher | | ↳ `created` | string | Creation timestamp | | ↳ `launched` | string | Launch timestamp | | ↳ `completed` | string | Completion timestamp | | ↳ `completionStatus` | string | Task completion status | | ↳ `parentName` | string | Parent task name | | ↳ `messages` | array | Task messages | | ↳ `type` | string | INFO, WARN, or ERROR | | ↳ `error` | boolean | Whether the message is an error | | ↳ `warning` | boolean | Whether the message is a warning | | ↳ `key` | string | Message key | | ↳ `localizedText` | string | Localized message text | | ↳ `progress` | string | Human-readable progress | | ↳ `attributes` | json | Task-specific attributes | | ↳ `returns` | array | Task return descriptors | | ↳ `displayLabel` | string | Return value display label | | ↳ `attributeName` | string | Task attribute name | ### SailPoint Load Entitlements [#sailpoint-load-entitlements] Start entitlement aggregation for a source, optionally using a CSV file. #### Input [#input-33] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `sourceId` | string | Yes | Source ID | | `file` | file | No | Delimited-file source entitlement CSV | #### Output [#output-33] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------- | | `task` | object | Entitlement aggregation task | | ↳ `id` | string | Task ID | | ↳ `type` | string | Task type | | ↳ `uniqueName` | string | Task unique name | | ↳ `description` | string | Task description | | ↳ `launcher` | string | Task launcher | | ↳ `created` | string | Creation timestamp | | ↳ `returns` | array | Task return descriptors | | ↳ `displayLabel` | string | Return value display label | | ↳ `attributeName` | string | Task attribute name | ### SailPoint Reject Access Request [#sailpoint-reject-access-request] Reject one pending access-request approval with a reviewer comment. #### Input [#input-34] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `approvalId` | string | Yes | Approval ID | | `comment` | string | Yes | Reviewer rejection comment | #### Output [#output-34] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------------------- | | `accepted` | boolean | Whether SailPoint accepted the asynchronous action | | `status` | number | Provider response status (normally 202) | ### SailPoint Request Access [#sailpoint-request-access] Submit a current human or machine identity access request. #### Input [#input-35] | Parameter | Type | Required | Description | | -------------------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `requestType` | string | No | GRANT\_ACCESS (default), REVOKE\_ACCESS, or MODIFY\_ACCESS | | `requestedFor` | array | No | Human identity IDs for the flat request shape | | `requestedItems` | array | No | Flat human request items | | `requestedForWithRequestedItems` | array | No | Per-identity request items for account selection and all machine identity requests | | `clientMetadata` | json | No | Arbitrary string-to-string metadata returned by related APIs | #### Output [#output-35] | Parameter | Type | Description | | ------------------------- | ------- | -------------------------------------------------- | | `accepted` | boolean | Whether SailPoint accepted the asynchronous action | | `status` | number | Provider response status (normally 202) | | `newRequests` | array | New access request tracking records | | ↳ `requestedFor` | string | Requested-for identity ID | | ↳ `requestedItemsDetails` | array | Requested item references | | ↳ `type` | string | ACCESS\_PROFILE, ROLE, or ENTITLEMENT | | ↳ `id` | string | Requested item ID | | ↳ `attributesHash` | number | Stable request attributes hash | | ↳ `accessRequestIds` | array | Access request tracking IDs | | `existingRequests` | array | Already-existing request tracking records | | ↳ `requestedFor` | string | Requested-for identity ID | | ↳ `requestedItemsDetails` | array | Requested item references | | ↳ `type` | string | ACCESS\_PROFILE, ROLE, or ENTITLEMENT | | ↳ `id` | string | Requested item ID | | ↳ `attributesHash` | number | Stable request attributes hash | | ↳ `accessRequestIds` | array | Access request tracking IDs | ### SailPoint Search [#sailpoint-search] Search current SailPoint indices with every documented search query mode. #### Input [#input-36] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `indices` | array | No | Indices to search: accessprofiles, accountactivities, entitlements, events, identities, roles, or \*. Omit to search all. | | `queryType` | string | No | SAILPOINT (default), DSL, TEXT, or TYPEAHEAD | | `queryVersion` | string | No | Elasticsearch query language version (default 5.2) | | `query` | object | No | SAILPOINT query object: \{query?, fields?, timeZone?, innerHit?} | | `queryDsl` | json | No | Elasticsearch Query DSL object used with queryType=DSL | | `textQuery` | object | No | TEXT query object with required terms\[] and fields\[] | | `typeAheadQuery` | object | No | TYPEAHEAD query with query, field, optional nestedType, maxExpansions (1-1000), size, sort, and sortByValue | | `includeNested` | boolean | No | Include nested objects in search results (default true) | | `queryResultFilter` | object | No | Result projection object with includes\[] and/or excludes\[] | | `aggregationType` | string | No | Aggregation query language: DSL (default) or SAILPOINT | | `aggregationsVersion` | string | No | Elasticsearch aggregation language version (default 5.2) | | `aggregationsDsl` | json | No | Dynamic Elasticsearch aggregations DSL object | | `aggregations` | json | No | Typed SailPoint aggregation specification | | `sort` | array | No | Ordered search fields; prefix + or - for direction | | `searchAfter` | array | No | String values from the final sorted record of the previous search page | | `filters` | json | No | Map of result field names to filter objects | | `limit` | number | No | Maximum search documents for this page (0-10,000; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-36] | Parameter | Type | Description | | ------------ | ------ | ---------------------------------------- | | `results` | array | Index-dependent search documents | | `count` | number | Documents returned in this page | | `totalCount` | number | Total matching documents when count=true | ### SailPoint Search Aggregate [#sailpoint-search-aggregate] Run an Elasticsearch DSL or SailPoint aggregation over current search indices. #### Input [#input-37] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `indices` | array | No | Indices to search: accessprofiles, accountactivities, entitlements, events, identities, roles, or \*. Omit to search all. | | `queryType` | string | No | SAILPOINT (default), DSL, TEXT, or TYPEAHEAD | | `queryVersion` | string | No | Elasticsearch query language version (default 5.2) | | `query` | object | No | SAILPOINT query object: \{query?, fields?, timeZone?, innerHit?} | | `queryDsl` | json | No | Elasticsearch Query DSL object used with queryType=DSL | | `textQuery` | object | No | TEXT query object with required terms\[] and fields\[] | | `typeAheadQuery` | object | No | TYPEAHEAD query with query, field, optional nestedType, maxExpansions (1-1000), size, sort, and sortByValue | | `includeNested` | boolean | No | Include nested objects in search results (default true) | | `queryResultFilter` | object | No | Result projection object with includes\[] and/or excludes\[] | | `aggregationType` | string | No | Aggregation query language: DSL (default) or SAILPOINT | | `aggregationsVersion` | string | No | Elasticsearch aggregation language version (default 5.2) | | `aggregationsDsl` | json | No | Dynamic Elasticsearch aggregations DSL object | | `aggregations` | json | No | Typed SailPoint aggregation specification | | `sort` | array | No | Ordered search fields; prefix + or - for direction | | `searchAfter` | array | No | String values from the final sorted record of the previous search page | | `filters` | json | No | Map of result field names to filter objects | | `limit` | number | No | Maximum records for this page (0-250; default 250) | | `offset` | number | No | Zero-based record offset (default 0) | | `count` | boolean | No | Return the total matching count in X-Total-Count (default false) | #### Output [#output-37] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------- | | `aggregations` | json | Dynamic Elasticsearch aggregation result document | | `hits` | array | Index-dependent aggregation hits | | `totalCount` | number | Total matching documents when count=true | ### SailPoint Search Count [#sailpoint-search-count] Count documents matching a complete SailPoint search body. #### Input [#input-38] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `indices` | array | No | Indices to search: accessprofiles, accountactivities, entitlements, events, identities, roles, or \*. Omit to search all. | | `queryType` | string | No | SAILPOINT (default), DSL, TEXT, or TYPEAHEAD | | `queryVersion` | string | No | Elasticsearch query language version (default 5.2) | | `query` | object | No | SAILPOINT query object: \{query?, fields?, timeZone?, innerHit?} | | `queryDsl` | json | No | Elasticsearch Query DSL object used with queryType=DSL | | `textQuery` | object | No | TEXT query object with required terms\[] and fields\[] | | `typeAheadQuery` | object | No | TYPEAHEAD query with query, field, optional nestedType, maxExpansions (1-1000), size, sort, and sortByValue | | `includeNested` | boolean | No | Include nested objects in search results (default true) | | `queryResultFilter` | object | No | Result projection object with includes\[] and/or excludes\[] | | `aggregationType` | string | No | Aggregation query language: DSL (default) or SAILPOINT | | `aggregationsVersion` | string | No | Elasticsearch aggregation language version (default 5.2) | | `aggregationsDsl` | json | No | Dynamic Elasticsearch aggregations DSL object | | `aggregations` | json | No | Typed SailPoint aggregation specification | | `sort` | array | No | Ordered search fields; prefix + or - for direction | | `searchAfter` | array | No | String values from the final sorted record of the previous search page | | `filters` | json | No | Map of result field names to filter objects | #### Output [#output-38] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `total` | number | Number of matching documents | ### SailPoint Sign Off Certification [#sailpoint-sign-off-certification] Sign off a completed identity certification. #### Input [#input-39] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `clientId` | string | Yes | SailPoint Personal Access Token client ID | | `clientSecret` | string | Yes | SailPoint Personal Access Token client secret | | `tenant` | string | Yes | SailPoint tenant name or full \*.api.identitynow\.com / \*.api.identitynowgov.com host | | `id` | string | Yes | Certification ID | #### Output [#output-39] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------ | | `certification` | object | Signed-off identity certification | | ↳ `id` | string | Certification ID | | ↳ `name` | string | Certification name | | ↳ `campaign` | json | Campaign reference | | ↳ `completed` | boolean | Whether all decisions are complete | | ↳ `identitiesCompleted` | number | Identities fully reviewed | | ↳ `identitiesTotal` | number | Total identities | | ↳ `created` | string | Creation timestamp | | ↳ `modified` | string | Last modification timestamp | | ↳ `decisionsMade` | number | Decisions made | | ↳ `decisionsTotal` | number | Total decisions | | ↳ `due` | string | Certification due timestamp | | ↳ `signed` | string | Sign-off timestamp | | ↳ `reviewer` | json | Reviewer reference | | ↳ `reassignment` | json | Reassignment details | | ↳ `hasErrors` | boolean | Whether the certification has errors | | ↳ `errorMessage` | string | Certification error message | | ↳ `phase` | string | Certification phase | --- # Salesforce Integration Users (/integrations/salesforce-service-account) Connect Salesforce through an External Client App and a dedicated integration user. Agent Serve supports client credentials and JWT bearer authentication; API calls use the selected integration user's profile and permission sets. An **API-only** integration user cannot complete interactive OAuth. Both server-to-server flows support that user type. Agent Serve supports both server-to-server flows. Pick one: | Feature | **Client credentials** | **JWT bearer** | | ----------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------- | | What Agent Serve stores | Consumer key + **consumer secret** | Consumer key + **private key** | | Who calls run as | The app's **Run As** user | The **username** you name in Agent Serve | | Salesforce setup | Enable Client Credentials Flow, set Run As | Upload a certificate, pre-authorize the user | | Pick it when | You want the simplest setup | Your security policy forbids shared secrets, or you want one app to serve several integration users | Both are equivalent in what they can do — every Salesforce tool works on either, subject to the integration user's permissions. ## Prerequisites [#prerequisites] You need a Salesforce **admin** to create the External Client App and the integration user. Every API call Agent Serve makes runs with the integration user's permissions, so plan that user's profile and permission sets deliberately. ## Setting Up the External Client App [#setting-up-the-external-client-app] ### 1. Create a Dedicated Integration User [#1-create-a-dedicated-integration-user] In Salesforce, go to **Setup** → **Users** → **New User**. Set **License** to **Salesforce Integration** (the free API-only license) and **Profile** to **Minimum Access - API Only Integrations** {/* TODO(screenshot): New User form with the Salesforce Integration license and API-only profile selected */} Create a permission set backed by the **Salesforce API Integration** permission set license, grant it the object and field permissions your workflows need (least privilege), and assign it to the user If your org doesn't have Salesforce Integration licenses, any standard user with the **API Enabled** permission works too — but a dedicated API-only user keeps the credential's access explicit and auditable. ### 2. Create the External Client App [#2-create-the-external-client-app] External Client Apps are Salesforce's current-generation connected apps and the default way to create new OAuth apps. Go to **Setup** → **External Client App Manager** → **New External Client App**, give the app a name and contact email, and keep it local to your org (not packaged for distribution) {/* TODO(screenshot): New External Client App form with the basic details filled in */} Open the app's **Edit Settings** → **API (Enable OAuth Settings)** section and turn on **Enable OAuth** Enter any placeholder **Callback URL** (e.g. `https://login.salesforce.com/services/oauth2/callback`) — it's required by the form but unused by this flow Add the OAuth scopes **Manage user data via APIs (api)** and **Access unique user identifiers (openid)** — `api` is required for the flow, and `openid` lets Agent Serve look up the integration user's name via the userinfo endpoint (the instance URL comes back in the token response itself) **Client credentials only:** enable the **Client Credentials Flow** in the OAuth settings and acknowledge the warning. Skip this if you're setting up JWT bearer — that flow has its own toggle (see below) Create the app {/* TODO(screenshot): OAuth settings with Enable Client Credentials Flow checked */} ### 3. Configure the Run As User [#3-configure-the-run-as-user] Open your app in **External Client App Manager** and edit its **Policies** Under **OAuth Policies** → **Client Credentials Flow**, set **Run As** to the integration user from step 1, then save. That page holds only the Run As picker — the **Enable Client Credentials Flow** checkbox itself lives in **Edit Settings** → **OAuth Settings**, where you set it in step 2 {/* TODO(screenshot): OAuth Policies with the Run As integration user set under Client Credentials Flow */} Every API call Agent Serve makes executes with this user's permissions. ### 4. Copy the Consumer Key and Secret [#4-copy-the-consumer-key-and-secret] Open the app's **Settings** → **OAuth Settings** and click **Consumer Key and Secret** (Salesforce prompts for identity verification). Copy the **Consumer Key** and **Consumer Secret**. {/* TODO(screenshot): OAuth Settings page showing the Consumer Key and Consumer Secret */} The Consumer Secret plus the Run As configuration is full API access as the integration user. Treat both values like passwords — do not commit them to source control or share them publicly. Agent Serve encrypts them at rest. ### Using an Existing Connected App (Legacy) [#using-an-existing-connected-app-legacy] Creating **new** Connected Apps is blocked by default: since Summer '25 new orgs ship with Connected App creation disabled, and Spring '26 turned it off across all orgs — re-enabling it requires a request to Salesforce Support. Use an External Client App for new setups. If you already have a classic Connected App, it keeps working and the credential fields are identical — the token endpoint and Agent Serve configuration don't change. Configure it the classic way: In **Setup** → **App Manager**, confirm the app has **Enable OAuth Settings**, the **Manage user data via APIs (api)** and **Access unique user identifiers (openid)** scopes, and **Enable Client Credentials Flow** checked From **App Manager**, open the app's **Manage** page, click **Edit Policies**, and set **Run As** under **Client Credentials Flow** to your integration user. Permitted Users policies don't apply to the Client Credentials Flow's execution user, so no pre-authorization is needed Open the app with **View** and click **Manage Consumer Details** to copy the **Consumer Key** and **Consumer Secret** ### Using the JWT Bearer Flow Instead [#using-the-jwt-bearer-flow-instead] The JWT Bearer Flow authenticates with an uploaded certificate rather than a shared secret, and runs as a username you name in Agent Serve rather than the app's Run As user. Set this up **instead of** steps 3 and 4 above. Steps 1, 2, and 5 are the same — but in step 2, skip the Client Credentials Flow substep; JWT bearer does not use that flow. Generate a key pair. `server.key` stays with Agent Serve; `server.crt` is uploaded to Salesforce: ```bash openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \ -keyout server.key -out server.crt -subj "/CN=agentserve-salesforce" ``` Keep `server.key` somewhere safe — Agent Serve stores it encrypted and never shows it again. Salesforce requires an **RSA** key of at least 2048 bits for this flow; an ECDSA key is rejected. The uploaded certificate must also stay under 4 KB, which a 2048-bit self-signed cert comfortably is. In **External Client App Manager** → your app → **Edit Settings** → **OAuth Settings**, turn on **Enable OAuth** (the JWT toggle does not appear until it is on), then **Enable JWT Bearer Flow**, and use **Upload Files** to upload `server.crt`. On a legacy Connected App the equivalent is **Use digital signatures** with the same file Edit the app's **Policies** → **OAuth Policies** and set **Permitted Users** to **Admin approved users are pre-authorized** This step is mandatory. The JWT flow requires prior approval of the app, and an API-only integration user can never grant that approval interactively — there is no UI for them to log in to. Without pre-authorization every token request fails with `user hasn't approved this consumer`. Assign the integration user's **profile** or a **permission set** to the app, so that user is covered by the pre-authorization Assign it through the **profile**, or through a **second permission set that does *not* carry the Salesforce API Integration permission set license**. A permission set backed by that license cannot hold an **Assigned Connected Apps** / **Assigned External Client Apps** section at all, so the app can never be assigned from the same permission set that grants the user its object access. Getting this wrong produces exactly the `user hasn't approved this consumer` failure this step exists to prevent. Copy the **Consumer Key** as in step 4. There is no consumer secret to copy — the JWT flow doesn't use one ### 5. Find Your My Domain Host [#5-find-your-my-domain-host] Go to **Setup** and search for **My Domain**. The host is required — Salesforce rejects the Client Credentials Flow at `login.salesforce.com` and `test.salesforce.com`. Depending on your org type it looks like: * **Production:** `yourorg.my.salesforce.com` * **Sandbox:** `yourorg--sandboxname.sandbox.my.salesforce.com` * **Developer Edition:** `yourorg.develop.my.salesforce.com` (Salesforce appends `-dev-ed` only when it generated the name for you) Agent Serve also accepts other partitioned My Domain hosts (`scratch`, `demo`, `patch`, `trailblaze`, `free`). Use the `my.salesforce.com` host, not the `my.salesforce-setup.com` host you see in the address bar while working in Setup, and not `lightning.force.com`. Government Cloud Plus domains (`*.my.salesforce.mil`) are not currently supported. ## Permissions Instead of Scopes [#permissions-instead-of-scopes] There's no scope picking beyond the **api** and **openid** scopes on the app — what the credential can actually do is the integration user's profile plus permission sets. In particular: * Object and field access for every object your workflows read or write, plus **API Enabled** * **Customize Application** for tools that manage custom fields and custom objects (Tooling API) — a Minimum Access API-only user passes validation but fails these specific tools without it * **Run Reports** and folder access for report and dashboard tools A permissions gap surfaces at run time as a Salesforce API error; fix it on the integration user's permission sets — no changes are needed in Agent Serve. On the **Salesforce Integration** (API-only) license specifically, SOQL and CRUD on standard objects are well supported, but two areas are not safe to assume: * **Reports and dashboards** are unverified on this license. Salesforce documents neither a grant nor a prohibition. Test them in a sandbox before depending on them, and remember the user also needs access to the report or dashboard **folder**. * **Anything Apex-related is blocked** — Apex Class Access is one of the permissions this license cannot hold, so Tooling API calls touching `ApexClass` will fail. Custom field and custom object management is unaffected. If a workflow must run reports, a standard-seat integration user is the safe choice. ## Adding the Integration User App to Agent Serve [#adding-the-integration-user-app-to-agent-serve] Open **Integrations** from your workspace sidebar Search for "Salesforce" and open it, then click **Add to Agent Serve** and choose **Add integration user app** {/* TODO(screenshot): Salesforce integration page with the Add integration user app connect option */} In the **Add Salesforce integration user app** dialog, pick the **Authentication method** you configured. The dialog then asks only for that flow's fields: * **Client credentials** — **Consumer key** and **Consumer secret** * **JWT bearer** — **Consumer key**, the **Private key** (paste the whole `server.key` file, `-----BEGIN` line included), and the **Run as username** (the integration user's Salesforce username, e.g. `integration.user@yourorg.com`) Then paste your **My Domain host** (e.g. `yourorg.my.salesforce.com`) and optionally set a display name and description {/* TODO(screenshot): Add Salesforce integration user app dialog with the authentication method selector */} Click **Add integration user app**. Agent Serve verifies the credentials by minting a real access token against your My Domain host. A host that doesn't resolve gets its own error message; every other misconfiguration surfaces as a general authentication error — re-check the values and the app's OAuth policies. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Salesforce block to your workflow. In the credential dropdown, select the saved Salesforce integration user app. Select it and configure the block as you normally would. {/* TODO(screenshot): Salesforce block in a workflow with the Salesforce service account selected as the credential */} The block calls your org's REST API with a freshly minted access token — the same requests as the OAuth flow, so every Salesforce tool works, subject to the integration user's permissions. ## Token Behavior [#token-behavior] Access tokens from both flows have no fixed lifetime in the response — an opaque token stays valid until the Run As user's session times out (2 hours by default; configurable from 15 minutes to 24 hours in Session Settings). There is no refresh token; Agent Serve mints a new token whenever one is needed, so session timeouts are invisible to your workflows. Deactivating or freezing the integration user — the Run As user for client credentials, or the run-as username for JWT bearer — stops all token minting with an `invalid_grant` error, halting every workflow that uses the credential. Password policies that expire the user's API access have the same effect. Treat the integration user as production infrastructure. --- # Salesforce (/integrations/salesforce) {/* MANUAL-CONTENT-START:intro */} Use [Salesforce](https://www.salesforce.com/) in Agent Serve to manage accounts, contacts, leads, opportunities, cases, and tasks, run reports and SOQL queries, and create custom fields and objects through the Tooling API. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Salesforce into your workflow. Manage accounts, contacts, leads, opportunities, cases, and tasks, run reports and SOQL queries, and manage org schema by creating custom fields and objects via the Tooling API. ## Actions [#actions] ### Get Accounts from Salesforce [#get-accounts-from-salesforce] Retrieve accounts from Salesforce CRM #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `limit` | string | No | Maximum number of results (default: 100, max: 2000) | | `fields` | string | No | Comma-separated field API names (e.g., "Id,Name,Industry,Phone") | | `orderBy` | string | No | Field and direction for sorting (e.g., "Name ASC" or "CreatedDate DESC") | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Accounts data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `accounts` | array | Array of account objects | | ↳ `success` | boolean | Salesforce operation success | ### Create Account in Salesforce [#create-account-in-salesforce] Create a new account in Salesforce CRM #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------ | | `name` | string | Yes | Account name (required) | | `type` | string | No | Account type (e.g., Customer, Partner, Prospect) | | `industry` | string | No | Industry (e.g., Technology, Healthcare, Finance) | | `phone` | string | No | Phone number | | `website` | string | No | Website URL | | `billingStreet` | string | No | Billing street address | | `billingCity` | string | No | Billing city | | `billingState` | string | No | Billing state/province | | `billingPostalCode` | string | No | Billing postal code | | `billingCountry` | string | No | Billing country | | `description` | string | No | Account description | | `annualRevenue` | string | No | Annual revenue as a number | | `numberOfEmployees` | string | No | Number of employees as an integer | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created account data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Account in Salesforce [#update-account-in-salesforce] Update an existing account in Salesforce CRM #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `accountId` | string | Yes | Salesforce Account ID to update (18-character string starting with 001) | | `name` | string | No | Account name | | `type` | string | No | Account type (e.g., Customer, Partner, Prospect) | | `industry` | string | No | Industry (e.g., Technology, Healthcare, Finance) | | `phone` | string | No | Phone number | | `website` | string | No | Website URL | | `billingStreet` | string | No | Billing street address | | `billingCity` | string | No | Billing city | | `billingState` | string | No | Billing state/province | | `billingPostalCode` | string | No | Billing postal code | | `billingCountry` | string | No | Billing country | | `description` | string | No | Account description | | `annualRevenue` | string | No | Annual revenue as a number | | `numberOfEmployees` | string | No | Number of employees as an integer | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated account data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Account from Salesforce [#delete-account-from-salesforce] Delete an account from Salesforce CRM #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `accountId` | string | Yes | Salesforce Account ID to delete (18-character string starting with 001) | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted account data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### Get Contacts from Salesforce [#get-contacts-from-salesforce] Get contact(s) from Salesforce - single contact if ID provided, or list if not #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `contactId` | string | No | Salesforce Contact ID (18-character string starting with 003) to get a single contact | | `limit` | string | No | Maximum number of results (default: 100, max: 2000). Only for list query. | | `fields` | string | No | Comma-separated field API names (e.g., "Id,FirstName,LastName,Email,Phone") | | `orderBy` | string | No | Field and direction for sorting (e.g., "LastName ASC"). Only for list query. | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Contact(s) data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `contacts` | array | Array of contacts (list query) | | ↳ `contact` | object | Single contact (by ID) | | ↳ `singleContact` | boolean | Whether single contact was returned | | ↳ `success` | boolean | Salesforce operation success | ### Create Contact in Salesforce [#create-contact-in-salesforce] Create a new contact in Salesforce CRM #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------- | | `lastName` | string | Yes | Last name (required) | | `firstName` | string | No | First name | | `email` | string | No | Email address | | `phone` | string | No | Phone number | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `title` | string | No | Job title | | `department` | string | No | Department | | `mailingStreet` | string | No | Mailing street | | `mailingCity` | string | No | Mailing city | | `mailingState` | string | No | Mailing state | | `mailingPostalCode` | string | No | Mailing postal code | | `mailingCountry` | string | No | Mailing country | | `description` | string | No | Contact description | #### Output [#output-5] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created contact data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Contact in Salesforce [#update-contact-in-salesforce] Update an existing contact in Salesforce CRM #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------- | | `contactId` | string | Yes | Salesforce Contact ID to update (18-character string starting with 003) | | `lastName` | string | No | Last name | | `firstName` | string | No | First name | | `email` | string | No | Email address | | `phone` | string | No | Phone number | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `title` | string | No | Job title | | `department` | string | No | Department | | `mailingStreet` | string | No | Mailing street | | `mailingCity` | string | No | Mailing city | | `mailingState` | string | No | Mailing state | | `mailingPostalCode` | string | No | Mailing postal code | | `mailingCountry` | string | No | Mailing country | | `description` | string | No | Contact description | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated contact data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Contact from Salesforce [#delete-contact-from-salesforce] Delete a contact from Salesforce CRM #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------- | | `contactId` | string | Yes | Salesforce Contact ID to delete (18-character string starting with 003) | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted contact data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### Get Leads from Salesforce [#get-leads-from-salesforce] Retrieve lead(s) from Salesforce CRM #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------- | | `leadId` | string | No | Salesforce Lead ID (18-character string starting with 00Q) to get a single lead | | `limit` | string | No | Maximum number of results to return (default: 100) | | `fields` | string | No | Comma-separated list of field API names to return | | `orderBy` | string | No | Field and direction for sorting (e.g., LastName ASC) | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Lead data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `lead` | object | Single lead object (when leadId provided) | | ↳ `leads` | array | Array of lead objects (when listing) | | ↳ `singleLead` | boolean | Whether single lead was returned | | ↳ `success` | boolean | Operation success status | ### Create Lead in Salesforce [#create-lead-in-salesforce] Create a new lead #### Input [#input-9] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------- | | `lastName` | string | Yes | Last name (required) | | `company` | string | Yes | Company name (required) | | `firstName` | string | No | First name | | `email` | string | No | Email address | | `phone` | string | No | Phone number | | `status` | string | No | Lead status (e.g., Open, Working, Closed) | | `leadSource` | string | No | Lead source (e.g., Web, Referral, Campaign) | | `title` | string | No | Job title | | `description` | string | No | Lead description | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created lead data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Lead in Salesforce [#update-lead-in-salesforce] Update an existing lead #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------- | | `leadId` | string | Yes | Salesforce Lead ID to update (18-character string starting with 00Q) | | `lastName` | string | No | Last name | | `company` | string | No | Company name | | `firstName` | string | No | First name | | `email` | string | No | Email address | | `phone` | string | No | Phone number | | `status` | string | No | Lead status (e.g., Open, Working, Closed) | | `leadSource` | string | No | Lead source (e.g., Web, Referral, Campaign) | | `title` | string | No | Job title | | `description` | string | No | Lead description | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated lead data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Lead from Salesforce [#delete-lead-from-salesforce] Delete a lead #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `leadId` | string | Yes | Salesforce Lead ID to delete (18-character string starting with 00Q) | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted lead data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### Get Opportunities from Salesforce [#get-opportunities-from-salesforce] Get opportunity(ies) from Salesforce #### Input [#input-12] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `opportunityId` | string | No | Salesforce Opportunity ID (18-character string starting with 006) to get a single opportunity | | `limit` | string | No | Maximum number of results to return (default: 100) | | `fields` | string | No | Comma-separated list of field API names to return | | `orderBy` | string | No | Field and direction for sorting (e.g., CloseDate DESC) | #### Output [#output-12] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Opportunity data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `opportunity` | object | Single opportunity object (when opportunityId provided) | | ↳ `opportunities` | array | Array of opportunity objects (when listing) | | ↳ `success` | boolean | Operation success status | ### Create Opportunity in Salesforce [#create-opportunity-in-salesforce] Create a new opportunity #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------- | | `name` | string | Yes | Opportunity name (required) | | `stageName` | string | Yes | Stage name (required, e.g., Prospecting, Qualification, Closed Won) | | `closeDate` | string | Yes | Close date in YYYY-MM-DD format (required) | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `amount` | string | No | Deal amount as a number | | `probability` | string | No | Win probability as integer (0-100) | | `description` | string | No | Opportunity description | #### Output [#output-13] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created opportunity data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Opportunity in Salesforce [#update-opportunity-in-salesforce] Update an existing opportunity #### Input [#input-14] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------- | | `opportunityId` | string | Yes | Salesforce Opportunity ID to update (18-character string starting with 006) | | `name` | string | No | Opportunity name | | `stageName` | string | No | Stage name (e.g., Prospecting, Qualification, Closed Won) | | `closeDate` | string | No | Close date in YYYY-MM-DD format | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `amount` | string | No | Deal amount as a number | | `probability` | string | No | Win probability as integer (0-100) | | `description` | string | No | Opportunity description | #### Output [#output-14] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated opportunity data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Opportunity from Salesforce [#delete-opportunity-from-salesforce] Delete an opportunity #### Input [#input-15] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------- | | `opportunityId` | string | Yes | Salesforce Opportunity ID to delete (18-character string starting with 006) | #### Output [#output-15] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted opportunity data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### Get Cases from Salesforce [#get-cases-from-salesforce] Get case(s) from Salesforce #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------- | | `caseId` | string | No | Salesforce Case ID (18-character string starting with 500) to get a single case | | `limit` | string | No | Maximum number of results to return (default: 100) | | `fields` | string | No | Comma-separated list of field API names to return | | `orderBy` | string | No | Field and direction for sorting (e.g., CreatedDate DESC) | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Case data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `case` | object | Single case object (when caseId provided) | | ↳ `cases` | array | Array of case objects (when listing) | | ↳ `success` | boolean | Operation success status | ### Create Case in Salesforce [#create-case-in-salesforce] Create a new case #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------- | | `subject` | string | Yes | Case subject (required) | | `status` | string | No | Status (e.g., New, Working, Escalated) | | `priority` | string | No | Priority (e.g., Low, Medium, High) | | `origin` | string | No | Origin (e.g., Phone, Email, Web) | | `contactId` | string | No | Salesforce Contact ID (18-character string starting with 003) | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `description` | string | No | Case description | #### Output [#output-17] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created case data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Case in Salesforce [#update-case-in-salesforce] Update an existing case #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------- | | `caseId` | string | Yes | Salesforce Case ID to update (18-character string starting with 500) | | `subject` | string | No | Case subject | | `status` | string | No | Status (e.g., New, Working, Escalated, Closed) | | `priority` | string | No | Priority (e.g., Low, Medium, High) | | `origin` | string | No | Origin (e.g., Phone, Email, Web) | | `contactId` | string | No | Salesforce Contact ID (18-character string starting with 003) | | `accountId` | string | No | Salesforce Account ID (18-character string starting with 001) | | `description` | string | No | Case description | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated case data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Case from Salesforce [#delete-case-from-salesforce] Delete a case #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `caseId` | string | Yes | Salesforce Case ID to delete (18-character string starting with 500) | #### Output [#output-19] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted case data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### Get Tasks from Salesforce [#get-tasks-from-salesforce] Get task(s) from Salesforce #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------- | | `taskId` | string | No | Salesforce Task ID (18-character string starting with 00T) to get a single task | | `limit` | string | No | Maximum number of results to return (default: 100) | | `fields` | string | No | Comma-separated list of field API names to return | | `orderBy` | string | No | Field and direction for sorting (e.g., ActivityDate DESC) | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Task data | | ↳ `paging` | object | Pagination information from Salesforce API | | ↳ `nextRecordsUrl` | string | URL to fetch the next batch of records (present when done is false) | | ↳ `totalSize` | number | Total number of records matching the query (may exceed records returned) | | ↳ `done` | boolean | Whether all records have been returned (false if more batches exist) | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `task` | object | Single task object (when taskId provided) | | ↳ `tasks` | array | Array of task objects (when listing) | | ↳ `success` | boolean | Operation success status | ### Create Task in Salesforce [#create-task-in-salesforce] Create a new task #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `subject` | string | Yes | Task subject (required) | | `status` | string | No | Status (e.g., Not Started, In Progress, Completed) | | `priority` | string | No | Priority (e.g., Low, Normal, High) | | `activityDate` | string | No | Due date in YYYY-MM-DD format | | `whoId` | string | No | Related Contact ID (003...) or Lead ID (00Q...) | | `whatId` | string | No | Related Account ID (001...) or Opportunity ID (006...) | | `description` | string | No | Task description | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Created task data | | ↳ `id` | string | The Salesforce ID of the newly created record | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the record was created (always true on success) | ### Update Task in Salesforce [#update-task-in-salesforce] Update an existing task #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------- | | `taskId` | string | Yes | Salesforce Task ID to update (18-character string starting with 00T) | | `subject` | string | No | Task subject | | `status` | string | No | Status (e.g., Not Started, In Progress, Completed) | | `priority` | string | No | Priority (e.g., Low, Normal, High) | | `activityDate` | string | No | Due date in YYYY-MM-DD format | | `whoId` | string | No | Related Contact ID (003...) or Lead ID (00Q...) | | `whatId` | string | No | Related Account ID (001...) or Opportunity ID (006...) | | `description` | string | No | Task description | #### Output [#output-22] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Updated task data | | ↳ `id` | string | The Salesforce ID of the updated record | | ↳ `updated` | boolean | Whether the record was updated (always true on success) | ### Delete Task from Salesforce [#delete-task-from-salesforce] Delete a task #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------- | | `taskId` | string | Yes | Salesforce Task ID to delete (18-character string starting with 00T) | #### Output [#output-23] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Deleted task data | | ↳ `id` | string | The Salesforce ID of the deleted record | | ↳ `deleted` | boolean | Whether the record was deleted (always true on success) | ### List Reports from Salesforce [#list-reports-from-salesforce] Get a list of up to 200 recently viewed reports for the current user #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `searchTerm` | string | No | Filter reports by name (case-insensitive partial match) | #### Output [#output-24] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Reports data | | ↳ `totalReturned` | number | Number of items returned | | ↳ `success` | boolean | Salesforce operation success | | ↳ `reports` | array | Array of report objects | ### Get Report Metadata from Salesforce [#get-report-metadata-from-salesforce] Get the describe (definition and metadata) for a specific report #### Input [#input-25] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------ | | `reportId` | string | Yes | Salesforce Report ID (18-character string starting with 00O) | #### Output [#output-25] | Parameter | Type | Description | | ------------ | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Report metadata | | ↳ `report` | object | Report metadata object | | ↳ `reportId` | string | Report ID | | ↳ `success` | boolean | Salesforce operation success | ### Run Report in Salesforce [#run-report-in-salesforce] Execute a report and retrieve the results #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------ | | `reportId` | string | Yes | Salesforce Report ID (18-character string starting with 00O) | | `includeDetails` | string | No | Include detail rows (true/false, default: true) | | `filters` | string | No | JSON array of report filter objects to apply | #### Output [#output-26] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Report results | | ↳ `reportId` | string | Report ID | | ↳ `reportMetadata` | object | Report metadata including name, format, and filter definitions | | ↳ `reportExtendedMetadata` | object | Extended metadata for aggregate columns and groupings | | ↳ `factMap` | object | Report data organized by groupings with aggregates and row data | | ↳ `groupingsDown` | object | Row grouping hierarchy and values | | ↳ `groupingsAcross` | object | Column grouping hierarchy and values | | ↳ `hasDetailRows` | boolean | Whether the report includes detail-level row data | | ↳ `allData` | boolean | Whether all data is returned (false if truncated due to size limits) | | ↳ `reportName` | string | Display name of the report | | ↳ `reportFormat` | string | Report format type (TABULAR, SUMMARY, MATRIX, JOINED) | | ↳ `success` | boolean | Salesforce operation success | ### List Report Types from Salesforce [#list-report-types-from-salesforce] Get a list of available report types #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-27] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Report types data | | ↳ `totalReturned` | number | Number of items returned | | ↳ `success` | boolean | Salesforce operation success | | ↳ `reportTypes` | array | Array of report type objects | ### List Dashboards from Salesforce [#list-dashboards-from-salesforce] Get a list of recently used dashboards for the current user #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-28] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------- | | `success` | boolean | Operation success status | | `output` | object | Dashboards data | | ↳ `totalReturned` | number | Number of items returned | | ↳ `success` | boolean | Salesforce operation success | | ↳ `dashboards` | array | Array of dashboard objects | ### Get Dashboard from Salesforce [#get-dashboard-from-salesforce] Get details and results for a specific dashboard #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `dashboardId` | string | Yes | Salesforce Dashboard ID (18-character string starting with 01Z) | #### Output [#output-29] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Dashboard data | | ↳ `dashboard` | object | Full dashboard details object | | ↳ `dashboardId` | string | Dashboard ID | | ↳ `components` | array | Array of dashboard component data with visualizations and filters | | ↳ `dashboardName` | string | Display name of the dashboard | | ↳ `dashboardMetadata` | object | Structured dashboard metadata (attributes, component definitions, layout) | | ↳ `runningUser` | object | User context under which the dashboard data was retrieved | | ↳ `success` | boolean | Salesforce operation success | ### Refresh Dashboard in Salesforce [#refresh-dashboard-in-salesforce] Refresh a dashboard to get the latest data #### Input [#input-30] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `dashboardId` | string | Yes | Salesforce Dashboard ID (18-character string starting with 01Z) | #### Output [#output-30] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Refreshed dashboard data | | ↳ `dashboard` | object | Full dashboard details object | | ↳ `dashboardId` | string | Dashboard ID | | ↳ `components` | array | Array of dashboard component data with fresh visualizations | | ↳ `status` | object | Dashboard refresh status (dashboardStatus), when returned by the refresh | | ↳ `statusUrl` | string | URL of the status resource to poll for refresh completion | | ↳ `dashboardName` | string | Display name of the dashboard | | ↳ `dashboardMetadata` | object | Structured dashboard metadata (attributes, component definitions, layout) | | ↳ `success` | boolean | Salesforce operation success | ### Run SOQL Query in Salesforce [#run-soql-query-in-salesforce] Execute a custom SOQL query to retrieve data from Salesforce #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------- | | `query` | string | Yes | SOQL query to execute (e.g., SELECT Id, Name FROM Account LIMIT 10) | #### Output [#output-31] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Query results | | ↳ `records` | array | Array of sObject records matching the query | | ↳ `query` | string | The executed SOQL query | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `success` | boolean | Salesforce operation success | ### Get More Query Results from Salesforce [#get-more-query-results-from-salesforce] Retrieve additional query results using the nextRecordsUrl from a previous query #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `nextRecordsUrl` | string | Yes | The nextRecordsUrl value from a previous query response (e.g., /services/data/v59.0/query/01g...) | #### Output [#output-32] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Query results | | ↳ `records` | array | Array of sObject records matching the query | | ↳ `metadata` | object | Response metadata | | ↳ `totalReturned` | number | Number of records returned in this response | | ↳ `hasMore` | boolean | Whether more records exist (inverse of done) | | ↳ `success` | boolean | Salesforce operation success | ### Describe Salesforce Object [#describe-salesforce-object] Get metadata and field information for a Salesforce object #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------ | | `objectName` | string | Yes | Salesforce object API name (e.g., Account, Contact, Lead, Custom\_Object\_\_c) | #### Output [#output-33] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Object metadata | | ↳ `objectName` | string | API name of the object (e.g., Account, Contact) | | ↳ `label` | string | Human-readable singular label for the object | | ↳ `labelPlural` | string | Human-readable plural label for the object | | ↳ `fields` | array | Array of field metadata objects | | ↳ `name` | string | API name of the field | | ↳ `label` | string | Display label of the field | | ↳ `type` | string | Field data type (string, boolean, int, double, date, etc.) | | ↳ `length` | number | Maximum length for text fields | | ↳ `precision` | number | Precision for numeric fields | | ↳ `scale` | number | Scale for numeric fields | | ↳ `nillable` | boolean | Whether the field can be null | | ↳ `unique` | boolean | Whether values must be unique | | ↳ `createable` | boolean | Whether field can be set on create | | ↳ `updateable` | boolean | Whether field can be updated | | ↳ `defaultedOnCreate` | boolean | Whether field has default value on create | | ↳ `calculated` | boolean | Whether field is a formula field | | ↳ `autoNumber` | boolean | Whether field is auto-number | | ↳ `externalId` | boolean | Whether field is an external ID | | ↳ `idLookup` | boolean | Whether field can be used in ID lookup | | ↳ `inlineHelpText` | string | Help text for the field | | ↳ `picklistValues` | array | Available picklist values for picklist fields | | ↳ `referenceTo` | array | Objects this field can reference (for lookup fields) | | ↳ `relationshipName` | string | Relationship name for lookup fields | | ↳ `custom` | boolean | Whether this is a custom field | | ↳ `filterable` | boolean | Whether field can be used in SOQL filter | | ↳ `groupable` | boolean | Whether field can be used in GROUP BY | | ↳ `sortable` | boolean | Whether field can be used in ORDER BY | | ↳ `keyPrefix` | string | Three-character prefix used in record IDs (e.g., "001" for Account) | | ↳ `queryable` | boolean | Whether the object can be queried via SOQL | | ↳ `createable` | boolean | Whether records can be created for this object | | ↳ `updateable` | boolean | Whether records can be updated for this object | | ↳ `deletable` | boolean | Whether records can be deleted for this object | | ↳ `childRelationships` | array | Array of child relationship metadata for related objects | | ↳ `recordTypeInfos` | array | Array of record type information for the object | | ↳ `fieldCount` | number | Total number of fields on the object | | ↳ `success` | boolean | Salesforce operation success | ### List Salesforce Objects [#list-salesforce-objects] Get a list of all available Salesforce objects #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-34] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `output` | object | Objects list | | ↳ `objects` | array | Array of sObject metadata | | ↳ `name` | string | API name of the object | | ↳ `label` | string | Display label of the object | | ↳ `labelPlural` | string | Plural display label | | ↳ `keyPrefix` | string | Three-character ID prefix | | ↳ `custom` | boolean | Whether this is a custom object | | ↳ `queryable` | boolean | Whether object can be queried | | ↳ `createable` | boolean | Whether records can be created | | ↳ `updateable` | boolean | Whether records can be updated | | ↳ `deletable` | boolean | Whether records can be deleted | | ↳ `searchable` | boolean | Whether object is searchable | | ↳ `triggerable` | boolean | Whether triggers are supported | | ↳ `layoutable` | boolean | Whether page layouts are supported | | ↳ `replicateable` | boolean | Whether object can be replicated | | ↳ `retrieveable` | boolean | Whether records can be retrieved | | ↳ `undeletable` | boolean | Whether records can be undeleted | | ↳ `urls` | object | URLs for accessing object resources | | ↳ `encoding` | string | Character encoding for the organization (e.g., UTF-8) | | ↳ `maxBatchSize` | number | Maximum number of records that can be returned in a single query batch (typically 200) | | ↳ `totalReturned` | number | Number of objects returned | | ↳ `success` | boolean | Salesforce operation success | ### Create Custom Field in Salesforce [#create-custom-field-in-salesforce] Create a custom field on a Salesforce object (e.g., Account) using the Tooling API #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `objectName` | string | Yes | API name of the object to add the field to (e.g., Account, Contact, Lead, MyObject\_\_c) | | `fieldName` | string | Yes | API name of the new field; the \_\_c suffix is added automatically (e.g., Region) | | `label` | string | No | Display label shown in the UI (defaults to the field name when omitted) | | `fieldType` | string | Yes | Field data type: Text, TextArea, LongTextArea, Html, Number, Currency, Percent, Checkbox, Date, DateTime, Time, Phone, Email, Url, Picklist, or MultiselectPicklist | | `length` | number | No | Maximum length for Text (1-255), LongTextArea, Html, or MultiselectPicklist fields | | `precision` | number | No | Total number of digits for Number, Currency, or Percent fields (1-18) | | `scale` | number | No | Number of digits to the right of the decimal for numeric fields | | `visibleLines` | number | No | Number of visible lines for LongTextArea, Html, or MultiselectPicklist fields | | `required` | boolean | No | Whether the field is required on record create/edit | | `unique` | boolean | No | Whether the field enforces unique values | | `externalId` | boolean | No | Whether the field is an external ID (for Text, Number, or Email fields) | | `defaultValue` | string | No | Default value; for Checkbox fields use true or false | | `description` | string | No | Internal description of the field | | `inlineHelpText` | string | No | Help text shown next to the field in the UI | | `picklistValues` | string | No | Comma-separated values for Picklist or MultiselectPicklist fields | #### Output [#output-35] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Created custom field metadata | | ↳ `id` | string | Tooling API Id of the newly created custom field | | ↳ `fullName` | string | Full API name of the field, including object (e.g., Account.Region\_\_c) | | ↳ `success` | boolean | Whether the create operation was successful | | ↳ `created` | boolean | Whether the field was created (always true on success) | ### Update Custom Field in Salesforce [#update-custom-field-in-salesforce] Update an existing custom field on a Salesforce object using the Tooling API #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | --------------------------------------------------------------------------------------------------- | | `fieldId` | string | Yes | Tooling API Id of the custom field to update (find it via the Tooling Query tool) | | `label` | string | No | Display label shown in the UI | | `length` | number | No | Maximum length for Text, LongTextArea, Html, or MultiselectPicklist fields | | `precision` | number | No | Total number of digits for Number, Currency, or Percent fields | | `scale` | number | No | Number of digits to the right of the decimal for numeric fields | | `visibleLines` | number | No | Number of visible lines for LongTextArea, Html, or MultiselectPicklist fields | | `required` | boolean | No | Whether the field is required on record create/edit | | `unique` | boolean | No | Whether the field enforces unique values | | `externalId` | boolean | No | Whether the field is an external ID | | `defaultValue` | string | No | Default value; for Checkbox fields use true or false | | `description` | string | No | Internal description of the field | | `inlineHelpText` | string | No | Help text shown next to the field in the UI | | `picklistValues` | string | No | Comma-separated values to add to a Picklist or MultiselectPicklist field (existing values are kept) | #### Output [#output-36] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Updated custom field metadata | | ↳ `id` | string | Tooling API Id of the updated custom field | | ↳ `updated` | boolean | Whether the field was updated (always true on success) | ### Delete Custom Field in Salesforce [#delete-custom-field-in-salesforce] Delete a custom field from a Salesforce object using the Tooling API #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------- | | `fieldId` | string | Yes | Tooling API Id of the custom field to delete (find it via the Tooling Query tool) | #### Output [#output-37] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------------ | | `success` | boolean | Operation success status | | `output` | object | Deleted custom field metadata | | ↳ `id` | string | Tooling API Id of the deleted custom field | | ↳ `deleted` | boolean | Whether the field was deleted (always true on success) | ### Create Custom Object in Salesforce [#create-custom-object-in-salesforce] Create a custom object in Salesforce using the Tooling API #### Input [#input-38] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `objectName` | string | Yes | API name of the new object; the \_\_c suffix is added automatically (e.g., Project) | | `label` | string | Yes | Singular display label for the object (e.g., Project) | | `pluralLabel` | string | Yes | Plural display label for the object (e.g., Projects) | | `nameFieldLabel` | string | No | Label for the standard Name field (defaults to "\